Skip to content

Commit 88bd91a

Browse files
committed
more standard equalities
1 parent 7317320 commit 88bd91a

2 files changed

Lines changed: 109 additions & 18 deletions

File tree

classical.v

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,37 @@ contradict un.
9595
apply U_next; trivial.
9696
Qed.
9797

98+
Lemma not_release_until :
99+
forall (J P : infseq T -> Prop) (s : infseq T),
100+
~ release (~_ J) (~_ P) s -> until J P s.
101+
Proof.
102+
intros J P s rl.
103+
case (classic (until J P s)); trivial.
104+
intros un.
105+
contradict rl.
106+
revert s un.
107+
cofix c.
108+
intros s un.
109+
case (classic (P s)).
110+
intros Ps.
111+
contradict un.
112+
apply U0.
113+
assumption.
114+
intros Ps.
115+
case (classic (J s)).
116+
intros Js.
117+
destruct s as [x s].
118+
apply R_tl; trivial.
119+
simpl.
120+
apply c.
121+
intros unn.
122+
contradict un.
123+
apply U_next; trivial.
124+
intros Js.
125+
destruct s as [x s].
126+
apply R0; unfold not_tl; assumption.
127+
Qed.
128+
98129
Lemma not_inf_often_continuously_not :
99130
forall (P : infseq T -> Prop) (s : infseq T),
100131
~ inf_often P s -> continuously (~_ P) s.
@@ -144,6 +175,7 @@ Arguments weak_until_until_or_always [T J P s] _.
144175
Arguments not_eventually_not_always [T P s] _.
145176
Arguments not_always_eventually_not [T P s] _.
146177
Arguments not_until_release [T J P s] _.
178+
Arguments not_release_until [T J P s] _.
147179
Arguments not_inf_often_continuously_not [T P s] _.
148180
Arguments not_continously_inf_often_not [T P s] _.
149181
Arguments not_tl_and_tl_or_tl [T P Q s] _.

infseq.v

Lines changed: 77 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,28 @@ Proof.
165165
intros (x, s). simpl. apply always_invar.
166166
Qed.
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+
168190
Lemma 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.
194216
Qed.
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+
196248
Lemma always_inf_often :
197249
forall (P: infseq T -> Prop) (s : infseq T), always P s -> inf_often P s.
198250
Proof.
@@ -220,22 +272,6 @@ change (P (Cons x s) \/ (J (Cons x s) /\ weak_until J P (tl (Cons x s)))).
220272
destruct un; intuition.
221273
Qed.
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-
239275
Lemma 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.
678714
case rl; trivial.
679715
Qed.
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] _.
733788
Arguments always_now [T x s P] _.
734789
Arguments always_invar [T x s P] _.
735790
Arguments always_tl [T s P] _.
791+
Arguments always_not_false [T s].
792+
Arguments always_true [T s].
736793
Arguments always_and_tl [T P Q s] _ _.
737794
Arguments always_always1 [T P s].
795+
Arguments always_weak_until [T J P s] _.
796+
Arguments always_release [T J P s] _.
738797
Arguments always_inf_often [T P s] _.
739798
Arguments always_continuously [T P s] _.
740799

741800
Arguments weak_until_Cons [T x s J P] _.
742-
Arguments always_weak_until [T J P s] _.
743801
Arguments until_weak_until [T J P s] _.
744802
Arguments eventually_Cons [T x s P] _.
745803
Arguments eventually_trans [T P Q inv] _ _ [s] _ _.
@@ -775,6 +833,7 @@ Arguments always_not_eventually_not [T P s] _ _.
775833
Arguments continuously_not_inf_often [T P s] _ _.
776834
Arguments inf_often_not_continuously [T P s] _ _.
777835
Arguments release_not_until [T J P s] _ _.
836+
Arguments until_not_release [T J P s] _ _.
778837

779838
Arguments and_tl_comm [T P Q s].
780839
Arguments and_tl_assoc [T P Q R s].

0 commit comments

Comments
 (0)