Documentation

Regex.Compiler.Lemmas.Patch

@[simp]
Equations
  • One or more equations did not get rendered due to their size.
Instances For
    @[simp]
    theorem Compiler.Lemmas.patchAssignable_of_eq {sid : NFA.Unchecked.StateID} (s1 s2 : Array NFA.Unchecked.State) (h1 : patchAssignable s1 sid) (h2 : sid < s1.size) (h3 : sid < s2.size) (h4 : s1[sid] = s2[sid]) :
    @[simp]
    theorem Compiler.Lemmas.patch2Assignable_of_eq {sid : NFA.Unchecked.StateID} (s1 s2 : Array NFA.Unchecked.State) (h1 : patch2Assignable s1 sid) (h2 : sid < s1.size) (h3 : sid < s2.size) (h4 : s1[sid] = s2[sid]) :
    theorem Compiler.Lemmas.patch_spec_constant («from» to : NFA.Unchecked.StateID) (states : Array NFA.Unchecked.State) :
    ⦃fun (s : Array NFA.Unchecked.State) => ⌜s = states ∧ NextOfLt states ∧ «from» < states.size ∧ to < states.size⌝⦄ Code.patch «from» to ⦃(fun (x : Unit) (r : Array NFA.Unchecked.State) => ⌜stateIdNextOfEqLt states to r ∧ ∀ (sid : Fin r.size) (x : ↑sid < states.size), ↑sid ≠ «from» → r[sid] = states[sid]⌝, fun (x : String) => ⌜True⌝, PUnit.unit)⦄
    theorem Compiler.Lemmas.patch2_spec_constant («from» to₁ to₂ : NFA.Unchecked.StateID) (states : Array NFA.Unchecked.State) :
    ⦃fun (s : Array NFA.Unchecked.State) => ⌜s = states ∧ NextOfLt states ∧ «from» < states.size ∧ to₁ < states.size ∧ to₂ < states.size⌝⦄ Code.patch2 «from» to₁ to₂ ⦃(fun (x : Unit) (r : Array NFA.Unchecked.State) => ⌜stateIdNextOfEqLt states to₁ r ∧ ∀ (sid : Fin r.size) (x : ↑sid < states.size), ↑sid ≠ «from» → r[sid] = states[sid]⌝, fun (x : String) => ⌜True⌝, PUnit.unit)⦄
    theorem Compiler.Lemmas.patch2_spec_assignable («from» to₁ to₂ : NFA.Unchecked.StateID) (states : Array NFA.Unchecked.State) :
    ⦃fun (s : Array NFA.Unchecked.State) => ⌜s = states ∧ «from» < states.size ∧ to₁ < states.size ∧ to₂ < states.size⌝⦄ Code.patch2 «from» to₁ to₂ ⦃(fun (x : Unit) (r : Array NFA.Unchecked.State) => ⌜patch2Assignable r «from»⌝, fun (x : String) => ⌜True⌝, PUnit.unit)⦄
    @[simp]
    theorem Compiler.Lemmas.patch2Assignable_of_patch_eq {f t1 t2 : NFA.Unchecked.StateID} {e : Unit} (s1 s2 : Array NFA.Unchecked.State) (h : Code.patch2 f t1 t2 s1 = EStateM.Result.ok e s2) (hf : f < s1.size) (ht1 : t1 < s1.size) (ht2 : t2 < s1.size) :
    theorem Compiler.Lemmas.patch2_spec («from» : NFA.Unchecked.StateID) {to₁ to₂ : NFA.Unchecked.StateID} {states : Array NFA.Unchecked.State} :
    ⦃fun (s : Array NFA.Unchecked.State) => ⌜s = states ∧ NextOfLt states ∧ «from» < states.size ∧ to₁ < states.size ∧ to₂ < states.size ∧ patch2Assignable states «from»⌝⦄ Code.patch2 «from» to₁ to₂ ⦃(fun (x : Unit) (r : Array NFA.Unchecked.State) => ⌜stateIdNextOfEqLt states to₁ r ∧ to₂ < r.size ∧ assignableIf states r⌝, fun (x : String) => ⌜False⌝, PUnit.unit)⦄