def nfa.run
bend-osdev-apparmor@0.1.0.0 · PROOF.bend:2982
import bend-osdev-apparmor@0.1.0.0/PROOF.bend as PROOF
import Base
import bend-osdev-apparmor@0.1.0.0/glob.bend as G
2982
2983def nfa.run(+s: List<&2, U32>, +a: Bool, +seq: List<&2, G.AaGTok>, +bs: List<&2, Bool>, +e: {G.AaGNfa.alive(bs) == a : Bool}) -> {G.AaGNfa.run(s, a, seq, bs) == G.AaGNfa.sem(seq, bs, s) : Bool}:
2984 match s:
2985 case Nil{}:
2986 {==}
2987 case Con{h, t}:
2988 match a:
2989 case False{}:
2990 Equal.sym(Bool, G.AaGNfa.sem(seq, bs, Con{h, t}), False{}, nfa.dead(seq, bs, Con{h, t}, e))
2991 case True{}:
2992 Equal.trans(Bool, G.AaGNfa.run(t, G.AaGNfa.alive(G.AaGNfa.next(seq, bs, False{}, False{}, h)), seq, G.AaGNfa.next(seq, bs, False{}, False{}, h)), G.AaGNfa.sem(seq, G.AaGNfa.next(seq, bs, False{}, False{}, h), t), G.AaGNfa.sem(seq, bs, Con{h, t}), nfa.run(t, G.AaGNfa.alive(G.AaGNfa.next(seq, bs, False{}, False{}, h)), seq, G.AaGNfa.next(seq, bs, False{}, False{}, h), {==}), nfa.step(seq, bs, False{}, False{}, h, t))