(def-constant alt%failure_q
"lambda(f:[uu, sets[sets[action]]],
forall(u:uu,x,y:sets[action], y in f(u) and x subseteq y implies x in f(u))
and
e in support(f)
and
forall(u,v:uu, u in support(f) and v prefix u implies v in support(f))
and
forall(u:uu, a:action, x:sets[action],
x in f(u) and
forall(m:uu, germ(m)=a implies not (u**m) in support(f))
implies
(x union singleton{a}) in f(u))
and
total_q{f,[uu -> sets[sets[action]]]}
and
forall(u:uu,s:sets[action], s in f(u) implies not (germ(e)) in s))"
(theory directed-monoid-theory))
(def-theorem failure-alt-failure-equivalence
"forall(f:[uu, sets[sets[action]]], failure_q(f) iff alt%failure_q(f))"
(theory monoid-transition-system)
(proof
(
unfold-defined-constants
direct-and-antecedent-inference-strategy
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (0 0 0 0 0 0 0)")
(backchain "with(p:prop,forall(u:uu,x,y:sets[action],p));")
auto-instantiate-existential)
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (0 0 2 0 0 0 0)")
(backchain "with(p:prop,forall(u,v:uu,p));")
auto-instantiate-existential)
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (0 0 3 0 0 0 0)")
(backchain "with(p:prop,forall(u:uu,a:action,p));")
direct-and-antecedent-inference-strategy
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (0)")
(unfold-single-defined-constant (0) support)
simplify-insistently
auto-instantiate-existential)
(backchain "with(p:prop,forall(m:uu,p implies p));"))
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (0 1 5 0 0 0)")
(backchain "with(p:prop,forall(u:uu,x,y:sets[action],p));")
(backchain "with(p:prop,forall(u:uu,s:sets[action],p));")
auto-instantiate-existential)
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (0 1 0 0 0 0 0)")
(backchain "with(p:prop,forall(u:uu,x,y:sets[action],p));")
auto-instantiate-existential)
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (0 1 2 0 0 0 0)")
(backchain "with(p:prop,forall(u,v:uu,p));")
auto-instantiate-existential)
(block
(script-comment "`direct-and-antecedent-inference-strategy' at (0 1 3 0 0 0 0 0 0)")
(backchain "with(p:prop,forall(u:uu,a:action,x:sets[action],p));")
direct-and-antecedent-inference-strategy
(backchain "with(p:prop,forall(m:uu,p or p));"))
)))