Documentation

RegexCorrectness.NFA.Compile

theorem Regex.NFA.ge_pushRegex_start {nfa : NFA} {next : } {e : Data.Expr} {result : NFA} (eq : nfa.pushRegex next e = result) :
nfa.size result.start
theorem Regex.NFA.eq_or_ge_of_step_pushRegex {nfa : NFA} {next : } {e : Data.Expr} {result : NFA} {i j : } (eq : nfa.pushRegex next e = result) (h₁ : nfa.size i) (h₂ : i < result.size) (step : (∃ (c : Char), j result[i].charStep c) j result[i].εStep) :
j = next nfa.size j
theorem Regex.NFA.mem_save_of_mem_tags_pushRegex {nfa : NFA} {next : } {e : Data.Expr} {tag : } (h : tag e.tags) :
∃ (i : Fin (nfa.pushRegex next e).size) (offset : ), (nfa.pushRegex next e)[i] = Node.save (2 * tag + 1) offset
theorem Regex.NFA.mem_save_of_mem_tags_compile {e : Data.Expr} {tag : } (h : tag e.tags) :
∃ (i : Fin (compile e).size) (offset : ), (compile e)[i] = Node.save (2 * tag + 1) offset
theorem Regex.NFA.lt_of_mem_tags_compile {e : Data.Expr} {tag : } (h : tag e.tags) :
2 * tag < (compile e).maxTag
theorem Regex.NFA.ne_done_of_pushRegex_ge {nfa : NFA} {next : } {e : Data.Expr} (i : ) (h₁ : nfa.size i) (h₂ : i < (nfa.pushRegex next e).size) :
(nfa.pushRegex next e)[i] Node.done