Lean migration: Phase 5 (language, CFGs, traces, Program)
- Spa.Language.Base: Expr/BasicStmt/Stmt + HasVar relations; StringSet
lifts to Finset String
- Spa.Language.Semantics: Value/Env/Env.Mem, big-step relations,
LatticeInterpretation (respects-≈ field drops out with =)
- Spa.Language.Graphs: Graph with nodes : Fin size → List BasicStmt
(Vec lookup lemmas lift to Fin.append_left/right), comp/link/loop/
skipto/singleton/wrap/buildCfg, predecessors via List.finRange
- Spa.Language.Traces: Trace + EndToEndTrace (Prop-valued)
- Spa.Language.Properties: trace embeddings, loop lemmas,
buildCfg_sufficient; the 80-line Fin-disjointness block reduces to
castAdd_ne_natAdd + mathlib list lemmas
- Spa.Language: Program (vars via Finset.sort — toList is noncomputable)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>