Skip to content

Commit 7b6e3ce

Browse files
committed
added release operator
1 parent ef0452c commit 7b6e3ce

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

infseq.v

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
6872
Inductive 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].
9599
Implicit Arguments eventually [T].
96100
Implicit Arguments weak_until [T].
97101
Implicit Arguments until [T].
102+
Implicit Arguments release [T].
98103
Implicit Arguments inf_often [T].
99104
Implicit Arguments continuously [T].
100105

@@ -302,6 +307,17 @@ induction unP.
302307
apply E_next; assumption.
303308
Qed.
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

307323
Lemma inf_often_invar :
@@ -646,6 +662,8 @@ Implicit Arguments weak_until_eventually [T P Q s J].
646662
Implicit Arguments until_Cons [T x s J P].
647663
Implicit Arguments until_eventually [T s J P].
648664

665+
Implicit Arguments release_Cons [T x s J P].
666+
649667
Implicit Arguments inf_often_invar [T x s P].
650668
Implicit Arguments continuously_invar [T x s P].
651669
Implicit Arguments continuously_and_tl [T P Q s].

0 commit comments

Comments
 (0)