# `aristo show fn <name>` — function selector + multi-match disambiguation

Source: `../aretta-sdk/docs/mockups/06-cross-cutting-cli/examples.md` § F3 → "By function name" + "Multi-match disambiguation".

Covers F3-d: a single-match returns attached AND inside-body (β-form) annotations; a multi-match lists all sites with file:line for disambiguation.

## Single match — attached + β-form annotations both surfaced

```console
$ aristo show fn balance_non_root

Found 1 site matching `fn balance_non_root` in core/storage/btree.rs:[..].

Attached to fn:
  aristos:balance_no_duplicate_cells (intent, verify=full, status=verified)
    "For all B-tree balance operations, no cells are duplicated…"
  cell_array_indices_in_bounds (intent, verify=test, status=tested)
    "All accesses to cell_array are bounds-checked…"

Inside fn body (β-form annotations):
  cells_extracted_without_aliasing (intent, verify=full, status=verified)
    @ btree.rs:[..] — before for-loop
    "Each cell pushed here is a distinct memory reference…"
  cumulative_counts_disjoint (intent, verify=full, status=verified)
    @ btree.rs:[..] — before assignment
    "After this assignment, cell_count_per_page_cumulative[i] equals…"

```

## Multi-match disambiguation (F3-d)

```console
$ aristo show fn seek

Found 3 sites matching `fn seek`. Disambiguate by id, file:line, or item path:

  cursor_trait_seek_postcondition  (intent, verify=full)
    core/storage/btree.rs:[..]   — fn seek (trait CursorTrait method declaration)

  btree_cursor_seek_impl_safety  (intent, verify=test, status=tested)
    core/storage/btree.rs:[..]  — fn seek (impl BTreeCursor)

  index_cursor_seek_impl  (intent, verify=neural, status=neural)
    core/index/cursor.rs:[..]    — fn seek (impl IndexCursor)

To show one, run: `aristo show <id>` or `aristo show <file>:<line>`

```
