Skip to content

Commit 4ca191b

Browse files
committed
Added ldrf/ to compilation and fixed bugs there.
1 parent f1e62a7 commit 4ca191b

2 files changed

Lines changed: 27 additions & 25 deletions

File tree

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
COQMODULE := imm
2-
COQTHEORIES := src/basic/*.v src/imm/*.v src/hardware/*.v src/rc11/*.v src/c11/*.v src/jsmm/*.v src/ocamlmm/*.v src/traversal/*.v src/travorder/*.v src/simhelpers/*.v
2+
COQTHEORIES := src/basic/*.v src/imm/*.v src/hardware/*.v src/rc11/*.v src/c11/*.v src/jsmm/*.v src/ocamlmm/*.v src/traversal/*.v src/travorder/*.v src/simhelpers/*.v src/ldrf/*.v
33

44
.PHONY: all theories clean tounicode
55

src/ldrf/LDRF_Fsc.v

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ Hypothesis WATF2: W ∩₁ AT ⊆₁ dom_rel (immediate sb ⨾ ⦗F ∩₁ Sc⦘
108108

109109
Lemma mode_split (S: actid -> Prop) (HASLOC: forall x, S x -> exists l, loc x = Some l):
110110
S ≡₁ (S ∩₁ NA) ∪₁ (S ∩₁ AT).
111-
Proof using.
111+
Proof using LOCMODE.
112112
red. split; [| basic_solver].
113113
rewrite <- set_inter_union_r.
114114
apply set_subset_inter_r. split; [basic_solver| ].
@@ -121,7 +121,7 @@ Qed.
121121

122122
Lemma sb_f_helper T M (TF: T ⊆₁ codom_rel (⦗F ∩₁ M⦘ ⨾ immediate sb)):
123123
⦗RW⦘ ⨾ sb ⨾ ⦗T⦘ ⊆ ⦗RW⦘ ⨾ sb ⨾ ⦗F ∩₁ M⦘ ⨾ sb ⨾ ⦗T⦘.
124-
Proof using.
124+
Proof using WNAF WF WATF2 WATF1 RWMODE RATF2 RATF1 NA AT.
125125
unfolder. intros e a H. destruct H as [RWe [SBew Ta]]. split; auto.
126126
red in TF. specialize (@TF a).
127127
pose proof (TF Ta) as [f HH].
@@ -141,7 +141,7 @@ Qed.
141141

142142
Lemma sb_f_w:
143143
⦗RW⦘ ⨾ sb ⨾ ⦗W⦘ ⊆ ⦗RW⦘ ⨾ sb ⨾ ⦗F ∩₁ Sc⦘ ⨾ sb ⨾ ⦗W ∩₁ AT⦘ ∪ ⦗RW⦘ ⨾ sb ⨾ ⦗F ∩₁ Acqrel⦘ ⨾ sb ⨾ ⦗W ∩₁ NA⦘.
144-
Proof using.
144+
Proof using All.
145145
assert (FENCE: forall MW MF (COMP: W ∩₁ MW
146146
⊆₁ codom_rel (⦗F ∩₁ MF⦘ ⨾ immediate sb) ∪₁ Init),
147147
⦗RW⦘ ⨾ sb ⨾ ⦗W ∩₁ MW⦘ ⊆ ⦗RW⦘ ⨾ sb ⨾ ⦗F ∩₁ MF⦘ ⨾ sb ⨾ ⦗W ∩₁ MW⦘).
@@ -160,7 +160,7 @@ Proof using.
160160
Qed.
161161

162162
Lemma sb_rf_acyclic: acyclic (sb ⨾ rfe).
163-
Proof using.
163+
Proof using All.
164164
rewrite ((wf_rfeD WF)). arewrite (R ⊆₁ RW).
165165
rewrite <- !seqA, acyclic_rotl, !seqA.
166166
sin_rewrite sb_f_w.
@@ -172,18 +172,20 @@ Proof using.
172172
sin_rewrite sb_to_f_in_bob. sin_rewrite sb_from_f_in_bob. basic_solver. }
173173
do 2 sin_rewrite FBOB.
174174
rewrite !inclusion_seq_eqv_r, !inclusion_seq_eqv_l.
175-
arewrite (rfe ⊆ ar). arewrite (bob ⊆ ar).
175+
arewrite (rfe ⊆ ar).
176+
arewrite (bob ⊆ ar).
177+
{ unfold ar, ar_int. eauto with hahn. }
176178
rewrite unionK, seqA.
177179
red.
178180
red in Cext0.
179181
arewrite (ar ⨾ ar ⨾ ar ⊆ ar^+).
180-
{ do 2 rewrite <- ct_unit. rewrite seqA. basic_solver 10. }
182+
{ do 2 rewrite <- ct_unit. rewrite seqA. now rewrite <- ct_step. }
181183
rewrite ct_of_ct. auto.
182184
Qed.
183185

184186

185187
Lemma sb_rfe_crt_hb: (⦗RW⦘ ⨾ sb ⨾ rfe)^* ⨾ sb ⨾ ⦗F ∩₁ Sc⦘ ⊆ hb.
186-
Proof using.
188+
Proof using All.
187189
rewrite (dom_l (wf_rfeD WF)).
188190
sin_rewrite sb_f_w.
189191
arewrite (F ∩₁ Sc ⊆₁ F ∩₁ Acqrel) by mode_solver.
@@ -218,7 +220,7 @@ Qed.
218220

219221
Lemma sl_mode r (SL: r ⊆ same_loc):
220222
⦗RW⦘ ⨾ r ⨾ ⦗RW⦘ ⊆ restr_rel NA r ∪ restr_rel AT r.
221-
Proof using.
223+
Proof using All.
222224
unfolder. ins. destruct H as [RWx [RELxy RWy]].
223225
assert (exists l, Loc_ l x) as [l Lx].
224226
{ unfold Events.loc. unfold is_f in *.
@@ -233,7 +235,7 @@ Proof using.
233235
Qed.
234236

235237
Lemma sb_f_at: RW ∩₁ AT ∩₁ NInit ⊆₁ codom_rel (⦗F ∩₁ Sc⦘ ⨾ immediate sb).
236-
Proof using.
238+
Proof using All.
237239
do 2 rewrite set_inter_union_l.
238240
apply set_subset_union_l.
239241
split.
@@ -244,7 +246,7 @@ Qed.
244246

245247

246248
Lemma f_sb_at: RW ∩₁ AT ∩₁ NInit ⊆₁ dom_rel (immediate sb ⨾ ⦗F ∩₁ Sc⦘).
247-
Proof using.
249+
Proof using All.
248250
do 2 rewrite set_inter_union_l.
249251
apply set_subset_union_l.
250252
split.
@@ -256,7 +258,7 @@ Qed.
256258

257259
Lemma ct_dom_start: forall (A: Type) (r: relation A) (dom: A -> Prop),
258260
⦗dom⦘ ⨾ (r ⨾ ⦗dom⦘)^+ ≡ (⦗dom⦘ ⨾ r ⨾ ⦗dom⦘)^+.
259-
Proof using.
261+
Proof using All.
260262
intros A r dom.
261263
rewrite ct_rotl.
262264
rewrite <- (seqA ⦗dom⦘ r ⦗dom⦘). rewrite ct_rotl.
@@ -266,20 +268,20 @@ Proof using.
266268
Qed.
267269

268270
Lemma acyclic_empty: forall (A: Type), @acyclic A ∅₂.
269-
Proof using.
271+
Proof using All.
270272
intros A. red.
271273
rewrite ct_of_trans; [| basic_solver].
272274
basic_solver.
273275
Qed.
274276

275277
Lemma sb_eco_sb_psc: ⦗F ∩₁ Sc⦘ ⨾ sb ⨾ eco ⨾ sb ⨾ ⦗F ∩₁ Sc⦘ ⊆ psc G.
276-
Proof using. unfold psc. rewrite sb_in_hb. basic_solver 10. Qed.
278+
Proof using All. unfold psc. rewrite sb_in_hb. basic_solver 10. Qed.
277279

278280
Lemma RFE1: rfe^+ ≡ rfe.
279-
Proof using. apply ct_no_step. rewrite (wf_rfeD WF). type_solver. Qed.
281+
Proof using All. apply ct_no_step. rewrite (wf_rfeD WF). type_solver. Qed.
280282

281283
Lemma no_eco_to_init: eco ≡ eco ⨾ ⦗NInit⦘.
282-
Proof using.
284+
Proof using All.
283285
split; [| basic_solver].
284286
arewrite (eco ≡ eco ⨾ ⦗codom_rel eco⦘) at 1 by basic_solver.
285287
apply seq_mori; [basic_solver|].
@@ -293,8 +295,8 @@ Proof using.
293295
Qed.
294296

295297
Lemma acyclic_sb_rf_eco: acyclic (sb ∪ restr_rel NA rf ∪ restr_rel AT eco).
296-
Proof using.
297-
rewrite rfi_union_rfe, <- union_restr, <- unionA.
298+
Proof using All.
299+
rewrite rfi_union_rfe, restr_union, <- unionA.
298300
arewrite (restr_rel NA rfi ⊆ sb). rewrite unionK.
299301
assert (na_at_rels_empty: restr_rel NA rfe ⨾ restr_rel AT eco ≡ ∅₂).
300302
{ generalize DIFMODE. basic_solver. }
@@ -386,14 +388,14 @@ Qed.
386388

387389
Lemma imm_to_ocaml_causal:
388390
acyclic (sb ∪ rfe ∪ restr_rel AT (coe ∪ fre G)).
389-
Proof using.
391+
Proof using All.
390392
arewrite (rfe ⊆ rf).
391393
arewrite (rf ⊆ restr_rel NA rf ∪ restr_rel AT rf).
392394
{ rewrite (wf_rfD WF) at 1. arewrite (R ⊆₁ RW). arewrite (W ⊆₁ RW) at 1.
393395
rewrite sl_mode; [basic_solver | apply (wf_rfl WF)]. }
394396

395397
do 2 rewrite unionA.
396-
rewrite union_restr.
398+
rewrite <- restr_union.
397399
arewrite ((rf ∪ (coe ∪ fre G)) ⊆ eco).
398400
{ unfold Execution_eco.eco, Execution.rf, Execution.coe, Execution.fre. basic_solver 10. }
399401
rewrite <- unionA. apply acyclic_sb_rf_eco.
@@ -403,7 +405,7 @@ Qed.
403405
Lemma f_sb_helper T M (TF: T ⊆₁ dom_rel (immediate sb ⨾ ⦗F ∩₁ M⦘))
404406
(NIT: T ∩₁ is_init ≡₁ ∅):
405407
⦗T⦘ ⨾ sb ⨾ ⦗RW⦘ ⊆ ⦗T⦘ ⨾ sb ⨾ ⦗F ∩₁ M⦘ ⨾ sb ⨾ ⦗RW⦘.
406-
Proof using.
408+
Proof using All.
407409
unfolder. intros a e [Ta [SBae RWe]]. split; auto.
408410
red in TF. specialize (@TF a).
409411
pose proof (TF Ta) as [f HH].
@@ -423,13 +425,13 @@ Proof using.
423425
Qed.
424426

425427
Lemma ac_irr: forall A (r: relation A), acyclic r <-> irreflexive r^+.
426-
Proof using. intros A r. basic_solver. Qed.
428+
Proof using All. intros A r. basic_solver. Qed.
427429

428430
Definition ae := (⦗AT⦘ ⨾ (rfe ∪ co) ⨾ ⦗AT⦘).
429431

430432

431433
Lemma imm_to_ocaml_coherent: irreflexive ((sb ∪ ae)^+ ⨾ (co ∪ fr)).
432-
Proof using.
434+
Proof using All.
433435
arewrite (co ∪ fr ⊆ eco) by unfold Execution_eco.eco; basic_solver 10.
434436
rewrite ct_unionE.
435437
assert (ae_in_eco: ae ⊆ eco).
@@ -534,7 +536,7 @@ Qed.
534536

535537
Theorem ldrf_condition_ext:
536538
acyclic(sb ∪ rf ∪ ⦗F ∩₁ Sc⦘ ⨾ sb ⨾ eco ⨾ sb ⨾ ⦗F ∩₁ Sc⦘).
537-
Proof using.
539+
Proof using All.
538540
apply acyclic_union1.
539541
{ rewrite (wf_rfD WF). arewrite (W ⊆₁ RW). arewrite (R ⊆₁ RW) at 2 .
540542
rewrite (sl_mode); [| apply (wf_rfl WF)].
@@ -585,7 +587,7 @@ Proof using.
585587
Qed.
586588

587589
Theorem ldrf_condition: acyclic(sb ∪ rf ∪ ⦗AT⦘ ⨾ sb ⨾ eco ⨾ sb ⨾ ⦗AT⦘).
588-
Proof using.
590+
Proof using All.
589591
arewrite (sb ∪ rf ∪ ⦗AT⦘ ⨾ sb ⨾ eco ⨾ sb ⨾ ⦗AT⦘ ⊆ (sb ∪ rf ∪ ⦗AT⦘ ⨾ sb ⨾ eco ⨾ sb ⨾ ⦗AT⦘) ⨾ ⦗NInit⦘).
590592
{ rewrite (no_sb_to_init G) at 1. rewrite (no_sb_to_init G) at 3.
591593
rewrite (no_rf_to_init WF) at 1.

0 commit comments

Comments
 (0)