Documentation

Regex.Compiler.Lemmas.AddState

Equations
Instances For
    @[simp]
    theorem Compiler.Lemmas.push'_lt (state : NFA.Unchecked.State) (states : Array NFA.Unchecked.State) :
    states.size < (Code.push' state states).snd.size
    @[simp]
    theorem Compiler.Lemmas.append_of_push {state : NFA.Unchecked.State} (s s_1 : Array NFA.Unchecked.State) (r : NFA.Unchecked.StateID) (h_1 : r < s_1.size) (h_2 : s_1 = s.push state) (h_3 : s_1[r]? = some state) :
    ∃ (state : NFA.Unchecked.State), s_1 = s.push state ∧ s_1[r]? = some state
    @[simp]
    theorem Compiler.Lemmas.assignableIfP_of_push {state : NFA.Unchecked.State} (s s_1 : Array NFA.Unchecked.State) (r : NFA.Unchecked.StateID) (h_1 : r < s_1.size) (hs : State.patchAssignable state) (h_2 : s_1 = s.push state) (h_3 : s_1[r]? = some state) :
    (∃ (state : NFA.Unchecked.State), s_1 = s.push state ∧ s_1[r]? = some state) ∧ (∀ (sid : Fin s_1.size), patchAssignable s ↑sid → patchAssignable s_1 ↑sid) ∧ ∀ (sid : Fin s_1.size), ¬↑sid = s.size → patch2Assignable s ↑sid → patch2Assignable s_1 ↑sid
    @[simp]
    theorem Compiler.Lemmas.assignableIfP_of_push' {state : NFA.Unchecked.State} (s s_1 : Array NFA.Unchecked.State) (r : ThompsonRef) (h_2 : r.end < s_1.size) (hs : State.patchAssignable state) (h_4 : s_1 = s.push state) (h_5 : s_1[r.end]? = some state) :
    (∃ (state : NFA.Unchecked.State), s_1 = s.push state ∧ s_1[r.end]? = some state) ∧ (∀ (sid : Fin s_1.size), patchAssignable s ↑sid → patchAssignable s_1 ↑sid) ∧ ∀ (sid : Fin s_1.size), ¬↑sid = s.size → patch2Assignable s ↑sid → patch2Assignable s_1 ↑sid
    @[simp]
    theorem Compiler.Lemmas.patch2Assignable_of_eat_state {mode : NFA.Unchecked.EatMode} (states : Array NFA.Unchecked.State) (sid sid' : NFA.Unchecked.StateID) (hlt : sid < states.size) (heq : states[sid]? = some (NFA.Unchecked.State.Eat mode sid')) :
    patch2Assignable states sid
    @[simp]
    theorem Compiler.Lemmas.patch2Assignable_of_state {state : NFA.Unchecked.State} (states : Array NFA.Unchecked.State) (sid : NFA.Unchecked.StateID) (hlt : sid < states.size) (h : State.patch2Assignable state) (heq : states[sid]? = some state) :
    patch2Assignable states sid
    theorem Compiler.Lemmas.c_at_least_set_spec (possible_empty_capture_group : Option Nat) (greedy : Bool) (states : Array NFA.Unchecked.State) (captures : Array NFA.Capture) {groups : Array Nat} :
    ⦃fun (s : Array NFA.Unchecked.State × Array NFA.Capture × Array Nat) => ⌜s.fst = states ∧ s.snd.fst = captures ∧ s.snd.snd = groups⌝⦄ Code.c_at_least_set possible_empty_capture_group greedy ⦃(fun (x : Unit) (s : Array NFA.Unchecked.State × Array NFA.Capture × Array Nat) => ⌜states = s.fst ∧ s.snd.fst = captures ∧ groups.size ≤ s.snd.snd.size ∧ assignableIf states s.fst⌝, fun (x : String) => ⌜False⌝, PUnit.unit)⦄
    theorem Compiler.Lemmas.c_at_least_0_post_spec (compiled : ThompsonRef) (plus : NFA.Unchecked.StateID) (greedy possessive : Bool) (states : Array NFA.Unchecked.State) :
    ⦃fun (s : Array NFA.Unchecked.State) => ⌜s = states ∧ plus < states.size ∧ compiled.start < states.size ∧ NextOfLt states ∧ patchAssignable states compiled.end ∧ patchAssignable states plus⌝⦄ Code.c_at_least_0_post compiled plus greedy possessive ⦃(fun (r : ThompsonRef) (s : Array NFA.Unchecked.State) => ⌜tRefNextOfLeLt states r s ∧ assignableIf states s ∧ patchAssignable s r.end⌝, fun (x : String) => ⌜False⌝, PUnit.unit)⦄
    theorem Compiler.Lemmas.c_at_least_0_post_lift_spec (compiled : ThompsonRef) (plus : 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 ∧ plus < states.size ∧ compiled.start < states.size ∧ NextOfLt states ∧ patchAssignable states compiled.end ∧ patchAssignable states plus) ∧ s.snd.fst = captures ∧ cValid captures⌝⦄ liftM (Code.c_at_least_0_post compiled plus greedy possessive) ⦃(fun (r : ThompsonRef) (s : Array NFA.Unchecked.State × Array NFA.Capture × Array Nat) => ⌜(tRefNextOfLeLt states r s.fst ∧ assignableIf states s.fst ∧ patchAssignable s.fst r.end) ∧ s.snd.fst = captures ∧ cMemAndValid captures s.snd.fst⌝, fun (x : String) => ⌜False⌝, PUnit.unit)⦄
    theorem Compiler.Lemmas.c_at_least_0_spec (compiled : ThompsonRef) (possible_empty_capture_group : Option Nat) (greedy : 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 ∧ NextOfLt states ∧ patchAssignable states compiled.end ∧ s.snd.fst = captures ∧ cValid captures⌝⦄ Code.c_at_least_0 compiled possible_empty_capture_group greedy ⦃(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⌝, PUnit.unit)⦄
    theorem Compiler.Lemmas.c_at_least_1_post_spec (compiled : ThompsonRef) (union : NFA.Unchecked.StateID) (possessive : Bool) (states : Array NFA.Unchecked.State) :
    ⦃fun (s : Array NFA.Unchecked.State) => ⌜s = states ∧ union < states.size ∧ tRefLt compiled states ∧ NextOfLt states ∧ patchAssignable states compiled.end ∧ patchAssignable states union⌝⦄ Code.c_at_least_1_post compiled union possessive ⦃(fun (r : ThompsonRef) (s : Array NFA.Unchecked.State) => ⌜tRefNextOfLeLt states r s ∧ assignableIf states s ∧ patchAssignable s r.end⌝, fun (x : String) => ⌜False⌝, PUnit.unit)⦄
    theorem Compiler.Lemmas.c_at_least_1_post_lift_spec (compiled : ThompsonRef) (union : NFA.Unchecked.StateID) (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 ∧ union < states.size ∧ tRefLt compiled states ∧ NextOfLt states ∧ patchAssignable states compiled.end ∧ patchAssignable states union) ∧ s.snd.fst = captures ∧ cValid captures⌝⦄ liftM (Code.c_at_least_1_post compiled union possessive) ⦃(fun (r : ThompsonRef) (s : Array NFA.Unchecked.State × Array NFA.Capture × Array Nat) => ⌜(tRefNextOfLeLt states r s.fst ∧ assignableIf states s.fst ∧ patchAssignable s.fst r.end) ∧ s.snd.fst = captures ∧ cMemAndValid captures s.snd.fst⌝, fun (x : String) => ⌜False⌝, PUnit.unit)⦄
    theorem Compiler.Lemmas.c_at_least_1_spec (possible_empty_capture_group : Option Nat) (greedy : Bool) (states : Array NFA.Unchecked.State) (captures : Array NFA.Capture) :
    theorem Compiler.Lemmas.c_at_least_2_spec («prefix» last : ThompsonRef) (greedy possessive : Bool) (states : Array NFA.Unchecked.State) :
    ⦃fun (s : Array NFA.Unchecked.State) => ⌜s = states ∧ tRefLt «prefix» states ∧ tRefLt last states ∧ NextOfLt states ∧ patchAssignable states «prefix».end ∧ patchAssignable states last.end⌝⦄ Code.c_at_least_2 «prefix» last greedy possessive ⦃(fun (r : ThompsonRef) (s : Array NFA.Unchecked.State) => ⌜tRefNextOfLeLt states r s ∧ assignableIf states s ∧ patchAssignable s r.end⌝, fun (x : String) => ⌜False⌝, PUnit.unit)⦄
    theorem Compiler.Lemmas.c_at_least_2_lift_spec («prefix» last : ThompsonRef) (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 ∧ tRefLt last states ∧ NextOfLt states ∧ patchAssignable states «prefix».end ∧ patchAssignable states last.end) ∧ s.snd.fst = captures ∧ cValid captures⌝⦄ liftM (Code.c_at_least_2 «prefix» last greedy possessive) ⦃(fun (r : ThompsonRef) (s : Array NFA.Unchecked.State × Array NFA.Capture × Array Nat) => ⌜(tRefNextOfLeLt states r s.fst ∧ assignableIf states s.fst ∧ patchAssignable s.fst r.end) ∧ s.snd.fst = captures ∧ cMemAndValid captures s.snd.fst⌝, fun (x : String) => ⌜False⌝, PUnit.unit)⦄