fact: CoInductive cexecinf: store -> com -> Prop := | cexecinf_seq_1: forall c1 c2 s, cexecinf s c1 -> cexecinf s (SEQ c1 c2) | cexecinf_seq_2: forall c1 c2 s s', cexec s c1 s' -> cexecinf s' c2 -> cexecinf s (SEQ c1 c2) | cexecinf_ifthenelse: forall b c1 c2 s, cexecinf s (if beval b s then c1 else c2) -> cexecinf s (IFTHENELSE b c1 c2) | cexecinf_while_1: forall b c s, beval b s = true -> cexecinf s c -> cexecinf s (WHILE b c) | cexecinf_while_2: forall b c s s', beval b s = true -> cexec s c s' -> cexecinf s' (WHILE b c) -> cexecinf s (WHILE b c).
imports: Coq(Arith ZArith Psatz Bool String List) CDF(Sequences IMP Compil) Coq(Classical Description)