BFS STATE MACHINE // ARC OPTIC NERVE

IRF-ARC-DSL-003 · flood_fill_bfs · PTTE V9 · EOSE Fleet
ARB-838 · Section 19

γ₁ = 14.134725141734693
GRID — DRAW + RUN BFS
10 × 10
MED
READY
LEAN 4 PROOF STATUS
adjacent4_cells
def — compiles
adjacent4_cells_spec
sorry ×2 (IRF-BFS-ADJ)
flood_fill_bfs
well-founded — termination_by
flood_fill_terminates
sorry (IRF-BFS-TERM)
is_monochrome
⚡ delegates to flood_fill_bfs_monochrome
is_connected
sorry (IRF-BFS-CONN)
is_maximal
sorry (IRF-BFS-MAX)
extract_objects_run
delegates to impl — no sorry
BFS STATE MACHINE — LIVE
IDLE — AWAITING RUN
0
VISITED
0
QUEUE DEPTH
0
OBJECTS FOUND
900
UNVISITED (↓)
QUEUE FRONTIER:
[ empty ]
BFS LOG:
[ awaiting run ]
EXTRACTED ARC_OBJECTS
Run BFS to extract objects...
DIMENSIONALITY COLLAPSE
Grid: — × — = — cells
↓ BFS extract_objects
→ — ARC_Objects
Collapse ratio:
BFS TERMINATION ARGUMENT
fuel := |allCells \ visited|
each step: visited grows ∨
  queue shrinks (skip)
total steps ≤ H × W
∴ terminates ✓
unvisited: —
LEAN 4 CORE — flood_fill_bfs
partial def flood_fill_bfs
  (g : ARC_Grid H W)
  (color : ARC_Color) :
  List (ARC_Cell H W) →
  Finset (ARC_Cell H W) →
  StateM (BFS_State H W)
    (Finset (ARC_Cell H W))
| [], comp => return comp
| (p :: rest), comp => do
  if p ∈ visited then
    loop rest comp -- skip
  else
    modify (insert p)
    if g p = color then
      loop (rest ++ nbrs)
        (comp.insert p)
    else loop rest comp
NEXT BOSS FIGHTS
🔴 IRF-BFS-ADJ — adjacent4_cells spec
🔴 IRF-BFS-TERM — remove `partial`
🔴 IRF-BFS-MONO — is_monochrome proof
🔴 IRF-BFS-CONN — is_connected proof
🔴 IRF-BFS-MAX — is_maximal proof
— then —
🔴 IRF-ARC-DSL-006 — synthesis engine
extract_objects: ✅ no sorry
(delegates to impl)