Langlib

Langlib.Grammars.Indexed.NormalForm.Aho.RowSystem.Trace

Logical-slot traces for Aho's row checker #

This module gives the proof-relevant trace relation behind the finite checker. A trace records every aligned old/new logical slot and scan phase, enforces canonical some* none* padding on both tracks, and connects accepting traces to the executable slot evaluator.

Logical-slot traces #

def IndexedGrammar.Aho.advanceWorkState {T✝ : Type} {g : IndexedGrammar T✝} (state : WorkScanState g) (old new : Option (WorkSlot g)) (next : WorkPhase) :
Equations
  • One or more equations did not get rendered due to their size.
Instances For
    def IndexedGrammar.Aho.ValidWorkEdge {T : Type} (g : IndexedGrammar T) [Fintype g.nt] (cert : CompositeCert g) (state : WorkScanState g) (old new : Option (WorkSlot g)) (next : WorkPhase) :
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[simp]
      theorem IndexedGrammar.Aho.workSlotStep_of_valid {T : Type} (g : IndexedGrammar T) [Fintype g.nt] (cert : CompositeCert g) (state : WorkScanState g) (old new : Option (WorkSlot g)) (next : WorkPhase) (h : ValidWorkEdge g cert state old new next) :
      workSlotStep g cert state old new next = advanceWorkState state old new next
      theorem IndexedGrammar.Aho.valid_of_workSlotStep_phase_ne_dead {T : Type} (g : IndexedGrammar T) [Fintype g.nt] (cert : CompositeCert g) (state : WorkScanState g) (old new : Option (WorkSlot g)) (next : WorkPhase) (h : (workSlotStep g cert state old new next).phase WorkPhase.dead) :
      ValidWorkEdge g cert state old new next
      @[simp]
      theorem IndexedGrammar.Aho.workSlotStep_phase_dead {T : Type} (g : IndexedGrammar T) [Fintype g.nt] (cert : CompositeCert g) (state : WorkScanState g) (old new : Option (WorkSlot g)) (next : WorkPhase) (h : state.phase = WorkPhase.dead) :
      (workSlotStep g cert state old new next).phase = WorkPhase.dead
      theorem IndexedGrammar.Aho.evalWorkSlots_phase_dead {T : Type} (g : IndexedGrammar T) [Fintype g.nt] (cert : CompositeCert g) (state : WorkScanState g) (rows : List (Option (WorkSlot g) × Option (WorkSlot g) × WorkPhase)) (h : state.phase = WorkPhase.dead) :
      (evalWorkSlots g cert state (List.map (fun (r : Option (WorkSlot g) × Option (WorkSlot g) × WorkPhase) => r.1) rows) (List.map (fun (r : Option (WorkSlot g) × Option (WorkSlot g) × WorkPhase) => r.2.1) rows) (List.map (fun (r : Option (WorkSlot g) × Option (WorkSlot g) × WorkPhase) => r.2.2) rows)).phase = WorkPhase.dead

      The exact some* none* discipline enforced independently on each padded work track.

      Instances For
        theorem IndexedGrammar.Aho.PaddingStream.tail {T : Type} {g : IndexedGrammar T} {ended : Bool} {x : Option (WorkSlot g)} {xs : List (Option (WorkSlot g))} (h : PaddingStream g ended (x :: xs)) :
        PaddingStream g (ended || x.isNone) xs
        theorem IndexedGrammar.Aho.PaddingStream.head {T : Type} {g : IndexedGrammar T} {ended : Bool} {x : Option (WorkSlot g)} {xs : List (Option (WorkSlot g))} (h : PaddingStream g ended (x :: xs)) :
        paddingOK ended x
        theorem IndexedGrammar.Aho.PaddingStream.append_none {T : Type} {g : IndexedGrammar T} {ended : Bool} {xs : List (Option (WorkSlot g))} (h : PaddingStream g ended xs) :
        PaddingStream g ended (xs ++ [none])

        A successful aligned slot trace, retaining every local edge fact needed for inversion.

        Instances For
          theorem IndexedGrammar.Aho.evalWorkSlots_of_trace {T : Type} (g : IndexedGrammar T) [Fintype g.nt] (cert : CompositeCert g) {state result : WorkScanState g} {rows : List (Option (WorkSlot g) × Option (WorkSlot g) × WorkPhase)} (h : WorkTrace g cert state rows result) :
          evalWorkSlots g cert state (List.map (fun (r : Option (WorkSlot g) × Option (WorkSlot g) × WorkPhase) => r.1) rows) (List.map (fun (r : Option (WorkSlot g) × Option (WorkSlot g) × WorkPhase) => r.2.1) rows) (List.map (fun (r : Option (WorkSlot g) × Option (WorkSlot g) × WorkPhase) => r.2.2) rows) = result
          theorem IndexedGrammar.Aho.trace_of_evalWorkSlots_phase_ne_dead {T : Type} (g : IndexedGrammar T) [Fintype g.nt] (cert : CompositeCert g) (state : WorkScanState g) (rows : List (Option (WorkSlot g) × Option (WorkSlot g) × WorkPhase)) (hne : (evalWorkSlots g cert state (List.map (fun (r : Option (WorkSlot g) × Option (WorkSlot g) × WorkPhase) => r.1) rows) (List.map (fun (r : Option (WorkSlot g) × Option (WorkSlot g) × WorkPhase) => r.2.1) rows) (List.map (fun (r : Option (WorkSlot g) × Option (WorkSlot g) × WorkPhase) => r.2.2) rows)).phase WorkPhase.dead) :
          WorkTrace g cert state rows (evalWorkSlots g cert state (List.map (fun (r : Option (WorkSlot g) × Option (WorkSlot g) × WorkPhase) => r.1) rows) (List.map (fun (r : Option (WorkSlot g) × Option (WorkSlot g) × WorkPhase) => r.2.1) rows) (List.map (fun (r : Option (WorkSlot g) × Option (WorkSlot g) × WorkPhase) => r.2.2) rows))

          Acceptance of two already-aligned logical-slot streams.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem IndexedGrammar.Aho.evalWorkSlots_of_accepts {T : Type} (g : IndexedGrammar T) [Fintype g.nt] (cert : CompositeCert g) {old new : List (Option (WorkSlot g))} (h : WorkTraceAccepts g cert old new) :
            ∃ (phases : List WorkPhase) (result : WorkScanState g), phases.length = old.length new.length = old.length evalWorkSlots g cert (initialWorkScan g) old new phases = result workScanDone result = true