@@ -14,10 +14,11 @@ Require Import LanguageModel.
14
14
Require Import TraceModel.
15
15
Require Import Properties.
16
16
Require Import ChainModel.
17
- Require Import NonRobustDef .
18
- Require Import NonRobustTraceCriterion.
17
+ Require Import Def .
18
+ Require Import TraceCriterion.
19
19
20
- Hypothesis prop_extensionality : forall A B : Prop, (A <-> B) -> A = B.
20
+ Require Import PropExtensionality.
21
+ Definition prop_extensionality := propositional_extensionality.
21
22
22
23
Section ANI.
23
24
@@ -48,7 +49,7 @@ Section ANI.
48
49
Local Notation "W ↓" := (cmp W) (at level 50).
49
50
50
51
Variable rel : trace__S -> trace__T -> Prop.
51
- Variable H_rel : more_obs_rel rel.
52
+ Variable H_rel : more_obs_rel rel.
52
53
53
54
Local Definition ins : Galois_Insertion trace__S trace__T :=
54
55
induced_insertion_swap H_rel.
@@ -99,18 +100,25 @@ Section ANI.
99
100
100
101
Definition ANI {X : Set } (ϕ ρ : @Uco X) : (X -> Prop ) -> Prop :=
101
102
fun π : X -> Prop =>
102
- forall x1 x2, (uco ϕ) (single x1) = (uco ϕ) (single x2) ->
103
+ forall x1 x2, π x1 -> π x2 ->
104
+ (uco ϕ) (single x1) = (uco ϕ) (single x2) ->
103
105
(uco ρ) (single x1) = (uco ρ) (single x2).
104
106
105
107
Theorem compiling_ANI (W : prg__S) (ϕ ρ : @Uco trace__S):
106
- hsat__S W (ANI ϕ ρ) -> hsat__T (W ↓) (ANI (ϕ ♯) (ρ ♯)).
108
+ rel_TC ->
109
+ hsat__S W (ANI ϕ ρ) ->
110
+ hsat__T (W ↓) (ANI (ϕ ♯) (ρ ♯)).
107
111
Proof .
108
- move => Hsrc t1 t2 H_ϕ_sharp.
112
+ move => CCtilde Hsrc t1 t2 semWcmp1 semWcmp2 H_ϕ_sharp.
109
113
destruct H_rel as [Hfun Htot].
110
- destruct (Hfun t1) as [s1 [Hrel1 Hunique1]].
111
- destruct (Hfun t2) as [s2 [Hrel2 Hunique2]]. clear Hunique1 Hunique2.
114
+ destruct (Hfun t1) as [s1 [Hrel1 Hunique1]]. (* *)
115
+ destruct (Hfun t2) as [s2 [Hrel2 Hunique2]].
116
+ destruct (CCtilde W t1 semWcmp1) as [ss1 [relss1t1 Wsem1]].
117
+ destruct (CCtilde W t2 semWcmp2) as [ss2 [relss2t2 Wsem2]].
118
+ move: (Hunique1 ss1 relss1t1) => Heq1.
119
+ move: (Hunique2 ss2 relss2t2) => Heq2. subst.
112
120
move: (ϕ_sharp_ϕ Hrel1 Hrel2 H_ϕ_sharp) => Hϕ.
113
- move: (Hsrc s1 s2 Hϕ). exact (ρ_ρ_sharp Hrel1 Hrel2).
121
+ move: (Hsrc ss1 ss2 Wsem1 Wsem2 Hϕ). exact (ρ_ρ_sharp Hrel1 Hrel2).
114
122
Qed .
115
123
116
124
(* CA: notice that ϕ_sharp_ϕ and ρ_ρ_sharp together provide an equivalence
0 commit comments