Documentation

Regex.Compiler.Lemmas.Compile

Lemmas #

Proof that Compiler.Code.compile gives an array with the Compiler.NextOfLt and Capture.Valid property and has no exceptions

theorem Compiler.Lemmas.c_bounded.fold.patch.pre_spec (compiled : ThompsonRef) (prev_end : NFA.Unchecked.StateID) (greedy : Bool) (states : Array NFA.Unchecked.State) :
fun (s : Array NFA.Unchecked.State) => s = states tRefLt compiled states prev_end < states.size NextOfLt states patchAssignable states prev_end Code.c_bounded.fold.patch.pre compiled prev_end greedy (fun (r : NFA.Unchecked.StateID) (s : Array NFA.Unchecked.State) => stateIdNextOfLt states r s assignableIf states s patchAssignable s r, fun (x : String) => False, ())
theorem Compiler.Lemmas.c_bounded.fold.patch_spec (compiled : ThompsonRef) (prev_end empty : NFA.Unchecked.StateID) (greedy possessive : Bool) (states : Array NFA.Unchecked.State) :
fun (s : Array NFA.Unchecked.State) => s = states tRefLt compiled states prev_end < states.size empty < states.size NextOfLt states patchAssignable states prev_end patchAssignable states compiled.end Code.c_bounded.fold.patch compiled prev_end empty greedy possessive (fun (r : NFA.Unchecked.StateID) (s : Array NFA.Unchecked.State) => stateIdNextOfLt states r s assignableIf states s patchAssignable s r, fun (x : String) => False, ())
theorem Compiler.Lemmas.c_bounded.fold.patch_lift_spec (compiled : ThompsonRef) (prev_end empty : NFA.Unchecked.StateID) (greedy possessive : Bool) (states : Array NFA.Unchecked.State) (captures : Array NFA.Capture) :
fun (s : Array NFA.Unchecked.State × Array NFA.Capture × Array Nat) => (s.fst = states tRefLt compiled states prev_end < states.size empty < states.size NextOfLt states patchAssignable states prev_end patchAssignable states compiled.end) s.snd.fst = captures cValid captures liftM (Code.c_bounded.fold.patch compiled prev_end empty greedy possessive) (fun (r : NFA.Unchecked.StateID) (s : Array NFA.Unchecked.State × Array NFA.Capture × Array Nat) => (stateIdNextOfLt states r s.fst assignableIf states s.fst patchAssignable s.fst r) s.snd.fst = captures cMemAndValid captures s.snd.fst, fun (x : String) => False, ())
@[irreducible]
theorem Compiler.Lemmas.c_alt_iter_fold_spec (hirs : Array Syntax.Hir) (union «end» : NFA.Unchecked.StateID) (states : Array NFA.Unchecked.State) (captures : Array NFA.Capture) :
fun (s : Array NFA.Unchecked.State × Array NFA.Capture × Array Nat) => s.fst = states union < states.size «end» < states.size NextOfLt states patchAssignable states union s.snd.fst = captures cValid captures Code.c_alt_iter.fold hirs union «end» (fun (x : Unit) (s : Array NFA.Unchecked.State × Array NFA.Capture × Array Nat) => statesNextOfLeLt states s.fst assignableIf states s.fst cMemAndValid captures s.snd.fst, fun (x : String) => False, ())
@[irreducible]
theorem Compiler.Lemmas.c_bounded_spec (hir : Syntax.Hir) (min max : Nat) (greedy possessive : Bool) (states : Array NFA.Unchecked.State) (captures : Array NFA.Capture) :
@[irreducible]
theorem Compiler.Lemmas.c_at_least_spec (hir : Syntax.Hir) (n : Nat) (greedy possessive : Bool) (states : Array NFA.Unchecked.State) (captures : Array NFA.Capture) :
@[irreducible]
theorem Compiler.Lemmas.c_bounded_fold_spec (hir : Syntax.Hir) (n : Nat) («prefix» : ThompsonRef) (empty : NFA.Unchecked.StateID) (greedy possessive : Bool) (states : Array NFA.Unchecked.State) (captures : Array NFA.Capture) :
fun (s : Array NFA.Unchecked.State × Array NFA.Capture × Array Nat) => s.fst = states tRefLt «prefix» states empty < states.size NextOfLt states patchAssignable states «prefix».end s.snd.fst = captures cValid captures Code.c_bounded.fold hir n «prefix» empty greedy possessive (fun (r : NFA.Unchecked.StateID) (s : Array NFA.Unchecked.State × Array NFA.Capture × Array Nat) => stateIdNextOfLeLt states r s.fst assignableIf states s.fst patchAssignable s.fst r cMemAndValid captures s.snd.fst, fun (x : String) => False, ())
theorem Compiler.Lemmas.compile_nextOf_lt {states : Array NFA.Unchecked.State} {captures : Array NFA.Capture} {groups : Array Nat} {anchored : Bool} {expr : Syntax.Hir} (h : Code.compile anchored expr (#[], #[], #[]) = EStateM.Result.ok () (states, captures, groups)) :
NextOfLt states
theorem Compiler.Lemmas.compile_captures_valid {states : Array NFA.Unchecked.State} {captures : Array NFA.Capture} {groups : Array Nat} {anchored : Bool} {expr : Syntax.Hir} (h : Code.compile anchored expr (#[], #[], #[]) = EStateM.Result.ok () (states, captures, groups)) :