fact: Fixpoint evalb (s: form) := match s with | fF => xpred0 | fV x => flabel x | fImp s t => (fun v => evalb s v ==> evalb t v) | fAX p s => (fun v => [forall (w | reachb p v w), evalb s w]) end with reachb (p: prog) : M -> M -> bool := match p with | pV a => ftrans a | pSeq p0 p1 => (fun v w => [exists u, reachb p0 v u && reachb p1 u w]) | pCh p0 p1 => (fun v w => reachb p0 v w || reachb p1 v w) | pStar p => connect (reachb p) | pTest s => fun v w => (w == v) && evalb s v | pConv p => fun v w => reachb p w v end.
imports: Relations Lia Setoid Morphisms mathcomp(all_ssreflect) CompDecModal.libs(edone bcase fset base modular_hilbert sltype rewrite_inequality fset_tac)