@@ -165,6 +165,28 @@ Proof.
165165intros (x, s). simpl. apply always_invar.
166166Qed .
167167
168+ Lemma always_not_false :
169+ forall s : infseq T, always (~_ False_tl) s.
170+ Proof .
171+ cofix c.
172+ intros [x s].
173+ apply Always.
174+ unfold not_tl, False_tl.
175+ intros H.
176+ trivial.
177+ apply c.
178+ Qed .
179+
180+ Lemma always_true :
181+ forall s : infseq T, always True_tl s.
182+ Proof .
183+ cofix c.
184+ intros [x s].
185+ apply Always.
186+ unfold True_tl; trivial.
187+ apply c.
188+ Qed .
189+
168190Lemma always_and_tl :
169191 forall (P Q : infseq T -> Prop),
170192 forall s, always P s -> always Q s -> always (P /\_ Q) s.
@@ -193,6 +215,36 @@ intros P s. split; genclear s.
193215 apply alwn; assumption.
194216Qed .
195217
218+ Lemma always_weak_until :
219+ forall (J P : infseq T -> Prop) (s : infseq T), always J s -> weak_until J P s.
220+ Proof .
221+ intros J P.
222+ cofix c.
223+ intros [x s] alJ.
224+ apply W_tl.
225+ apply always_now in alJ.
226+ assumption.
227+ simpl.
228+ apply c.
229+ apply always_invar in alJ.
230+ assumption.
231+ Qed .
232+
233+ Lemma always_release :
234+ forall (J P : infseq T -> Prop) (s : infseq T), always P s -> release J P s.
235+ Proof .
236+ intros J P.
237+ cofix c.
238+ intros [x s] al.
239+ apply R_tl.
240+ apply always_now in al.
241+ assumption.
242+ simpl.
243+ apply c.
244+ apply always_invar in al.
245+ assumption.
246+ Qed .
247+
196248Lemma always_inf_often :
197249 forall (P: infseq T -> Prop) (s : infseq T), always P s -> inf_often P s.
198250Proof .
@@ -220,22 +272,6 @@ change (P (Cons x s) \/ (J (Cons x s) /\ weak_until J P (tl (Cons x s)))).
220272destruct un; intuition.
221273Qed .
222274
223- Lemma always_weak_until :
224- forall (J P : infseq T -> Prop) (s : infseq T),
225- always J s -> weak_until J P s.
226- Proof .
227- intros J P.
228- cofix c.
229- intros [x s] alJ.
230- apply W_tl.
231- apply always_now in alJ.
232- assumption.
233- simpl.
234- apply c.
235- apply always_invar in alJ.
236- assumption.
237- Qed .
238-
239275Lemma until_weak_until :
240276 forall (J P : infseq T -> Prop) (s : infseq T),
241277 until J P s -> weak_until J P s.
@@ -678,7 +714,26 @@ unfold not_tl in Js.
678714case rl; trivial.
679715Qed .
680716
681-
717+ Lemma until_not_release :
718+ forall (J P : infseq T -> Prop) (s : infseq T),
719+ until J P s -> ~ release (~_ J) (~_ P) s.
720+ Proof .
721+ intros J P s un rl.
722+ induction un.
723+ destruct s as [x s].
724+ apply release_Cons in rl.
725+ destruct rl as [Ps rl].
726+ unfold not_tl in Ps.
727+ contradict Ps.
728+ assumption.
729+ apply release_Cons in rl.
730+ destruct rl as [Ps rl].
731+ case rl; trivial.
732+ unfold not_tl.
733+ intros Js.
734+ contradict Js.
735+ assumption.
736+ Qed .
682737
683738(* connector facts *)
684739
@@ -733,13 +788,16 @@ Arguments always_Cons [T x s P] _.
733788Arguments always_now [T x s P] _.
734789Arguments always_invar [T x s P] _.
735790Arguments always_tl [T s P] _.
791+ Arguments always_not_false [T s].
792+ Arguments always_true [T s].
736793Arguments always_and_tl [T P Q s] _ _.
737794Arguments always_always1 [T P s].
795+ Arguments always_weak_until [T J P s] _.
796+ Arguments always_release [T J P s] _.
738797Arguments always_inf_often [T P s] _.
739798Arguments always_continuously [T P s] _.
740799
741800Arguments weak_until_Cons [T x s J P] _.
742- Arguments always_weak_until [T J P s] _.
743801Arguments until_weak_until [T J P s] _.
744802Arguments eventually_Cons [T x s P] _.
745803Arguments eventually_trans [T P Q inv] _ _ [s] _ _.
@@ -775,6 +833,7 @@ Arguments always_not_eventually_not [T P s] _ _.
775833Arguments continuously_not_inf_often [T P s] _ _.
776834Arguments inf_often_not_continuously [T P s] _ _.
777835Arguments release_not_until [T J P s] _ _.
836+ Arguments until_not_release [T J P s] _ _.
778837
779838Arguments and_tl_comm [T P Q s].
780839Arguments and_tl_assoc [T P Q R s].
0 commit comments