@@ -65,6 +65,10 @@ Inductive until (J P: infseq T->Prop) : infseq T -> Prop :=
6565 | U0 : forall s, P s -> until J P s
6666 | U_next : forall x s, J (Cons x s) -> until J P s -> until J P (Cons x s).
6767
68+ CoInductive release (J P: infseq T->Prop ) : infseq T -> Prop :=
69+ | R0 : forall s, P s -> J s -> release J P s
70+ | R_tl : forall s, P s -> release J P (tl s) -> release J P s.
71+
6872Inductive eventually (P: infseq T->Prop ) : infseq T -> Prop :=
6973 | E0 : forall s, P s -> eventually P s
7074 | E_next : forall x s, eventually P s -> eventually P (Cons x s).
@@ -95,6 +99,7 @@ Implicit Arguments always1 [T].
9599Implicit Arguments eventually [T].
96100Implicit Arguments weak_until [T].
97101Implicit Arguments until [T].
102+ Implicit Arguments release [T].
98103Implicit Arguments inf_often [T].
99104Implicit Arguments continuously [T].
100105
@@ -302,6 +307,17 @@ induction unP.
302307apply E_next; assumption.
303308Qed .
304309
310+ (* release facts *)
311+
312+ Lemma release_Cons :
313+ forall (x: T) (s: infseq T) J P,
314+ release J P (Cons x s) -> P (Cons x s) /\ (J (Cons x s) \/ release J P s).
315+ Proof .
316+ intros x s J P rl.
317+ change (P (Cons x s) /\ (J (Cons x s) \/ release J P (tl (Cons x s)))).
318+ destruct rl; intuition.
319+ Qed .
320+
305321(* inf_often and continuously facts *)
306322
307323Lemma inf_often_invar :
@@ -646,6 +662,8 @@ Implicit Arguments weak_until_eventually [T P Q s J].
646662Implicit Arguments until_Cons [T x s J P].
647663Implicit Arguments until_eventually [T s J P].
648664
665+ Implicit Arguments release_Cons [T x s J P].
666+
649667Implicit Arguments inf_often_invar [T x s P].
650668Implicit Arguments continuously_invar [T x s P].
651669Implicit Arguments continuously_and_tl [T P Q s].
0 commit comments