@@ -102,33 +102,49 @@ Section Conjunction.
102
102
Local Definition CCtilde_cap := rel_TC compilation_chain Source_Semantics Target_Semantics rel_cap.
103
103
Local Definition τTP := τTP compilation_chain Source_Semantics Target_Semantics τ.
104
104
105
- Lemma CCtilde_cap_τTP : CCtilde_cap <-> τTP.
106
- Proof .
107
- rewrite /CCtilde_cap -rel_is_relcap.
108
- setoid_rewrite contra_τTP. split.
109
- - move => Htilde W π [t [Hsemt Hτ]].
110
- destruct (Htilde W t Hsemt) as [s [Hrel_s_t Hsems]].
111
- exists s. split; auto. move => s_in_π. apply: Hτ.
112
- move: Hrel_s_t. rewrite /rel /τ /τ1 /τ2 /α /= /low_rel => Hrel.
113
- move: Hrel => [[y1 [Heq1 Hrel1]] [y2 [Heq2 Hrel2]]]. subst.
114
- split; by exists s.
115
- - move => Hτ W t HsemWt.
116
- have H : (forall s1 s2, sem__S W s1 -> sem__S W s2 -> rel1 s1 t -> rel2 s2 t -> s1 <> s2) \/
117
- (exists s1 s2, sem__S W s1 /\ sem__S W s2 /\ rel1 s1 t /\ rel2 s2 t /\ s1 = s2) by admit.
118
- (* just classical reasoning *)
119
- case: H.
120
- move => H. exfalso.
121
- have cc1 : CCtilde1 by admit. have cc2 : CCtilde2 by admit.
122
- destruct (cc1 W t HsemWt) as [s1 [HsemWs1 Hrel1]].
123
- destruct (cc2 W t HsemWt) as [s2 [HsemWs2 Hrel2]].
124
- case: (Hτ W (fun s => ~ rel s t /\ sem__S W s)).
125
- { admit. (* W↓ does not satisfies τ{π__S} = ∅! *) }
126
- move => s [HsemWs K]. move /de_morgan1: K. rewrite -dne.
127
- rewrite rel_is_relcap /rel_cap. move => [[k11 k12]| k2]; try now auto.
128
- by apply: (H s s).
129
- (* 2nd case *)
130
- by firstorder.
131
- Admitted .
105
+ (* Lemma CCtilde_cap_τTP : CCtilde_cap <-> τTP. *)
106
+ (* Proof. *)
107
+ (* rewrite /CCtilde_cap -rel_is_relcap. *)
108
+ (* setoid_rewrite contra_τTP. split. *)
109
+ (* - move => Htilde W π [t [Hsemt Hτ]]. *)
110
+ (* destruct (Htilde W t Hsemt) as [s [Hrel_s_t Hsems]]. *)
111
+ (* exists s. split; auto. move => s_in_π. apply: Hτ. *)
112
+ (* move: Hrel_s_t. rewrite /rel /τ /τ1 /τ2 /α /= /low_rel => Hrel. *)
113
+ (* move: Hrel => [[y1 [Heq1 Hrel1]] [y2 [Heq2 Hrel2]]]. subst. *)
114
+ (* split; by exists s. *)
115
+ (* - move => Hτ W t HsemWt. *)
116
+ (* have H : (forall s1 s2, sem__S W s1 -> sem__S W s2 -> rel1 s1 t -> rel2 s2 t -> s1 <> s2) \/ *)
117
+ (* (exists s1 s2, sem__S W s1 /\ sem__S W s2 /\ rel1 s1 t /\ rel2 s2 t /\ s1 = s2). *)
118
+ (* { case: (classic (forall s1 s2, sem__S W s1 -> sem__S W s2 -> rel1 s1 t -> rel2 s2 t -> s1 <> s2)); auto. *)
119
+ (* rewrite not_forall_ex_not. move => [s1 H]. move /not_forall_ex_not : H => [s2 H]. *)
120
+ (* right. exists s1, s2. *)
121
+ (* repeat (move /not_imp: H => [h H]; split; auto; clear h). *)
122
+ (* by apply: NNPP. } *)
123
+ (* case: H. *)
124
+ (* move => H. exfalso. *)
125
+ (* have cc1 : CCtilde1. *)
126
+ (* { setoid_rewrite trinity1. setoid_rewrite contra_τTP. *)
127
+ (* move => Ws π__S [t0 [H1 H2]]. destruct (Hτ Ws π__S) as [s Hs]. *)
128
+ (* exists t0. split; auto. rewrite /τ. move => [Htau1 Htau2]. *)
129
+ (* by apply: H2. *)
130
+ (* exists s; auto. } *)
131
+ (* have cc2 : CCtilde2. *)
132
+ (* { setoid_rewrite trinity2. setoid_rewrite contra_τTP. *)
133
+ (* move => Ws π__S [t0 [H1 H2]]. destruct (Hτ Ws π__S) as [s Hs]. *)
134
+ (* exists t0. split; auto. rewrite /τ. move => [Htau1 Htau2]. *)
135
+ (* by apply: H2. *)
136
+ (* exists s; auto. } *)
137
+ (* destruct (cc1 W t HsemWt) as [s1 [HsemWs1 Hrel1]]. *)
138
+ (* destruct (cc2 W t HsemWt) as [s2 [HsemWs2 Hrel2]]. *)
139
+ (* have not_t : ~ (τ (fun s => rel s t )) t by admit. *)
140
+ (* case: (Hτ W (fun s => rel s t )). *)
141
+ (* { exists t. split; auto. } *)
142
+ (* move => s [HsemWs K]. move /de_morgan1: K. rewrite -dne. *)
143
+ (* rewrite rel_is_relcap /rel_cap. move => [[k11 k12]| k2]; try now auto. *)
144
+ (* by apply: (H s s). *)
145
+ (* (* 2nd case *) *)
146
+ (* by firstorder. *)
147
+ (* Admitted. *)
132
148
133
149
Theorem TPtau_for_conjunction :
134
150
CCtilde1 /\ CCtilde2 -> τTP.
@@ -140,13 +156,17 @@ Section Conjunction.
140
156
by apply: (Hτ1 W). by apply: (Hτ2 W).
141
157
Qed .
142
158
159
+ (* The problem is that τ does not coincide with the abstraction of
160
+ the galois connection induced by ~ So that in general no involution in possible
161
+ (see Lemma 2.9 in the paper) *)
143
162
144
- Theorem conjunction_intersection : CCtilde1 /\ CCtilde2 <-> CCtilde_cap.
145
- Proof .
146
- rewrite CCtilde_cap_τTP. split.
147
- - exact TPtau_for_conjunction.
148
- - setoid_rewrite trinity1. setoid_rewrite trinity2.
149
- by firstorder.
150
- Qed .
163
+ (* Theorem conjunction_intersection : CCtilde1 /\ CCtilde2 <-> CCtilde_cap. *)
164
+ (* Proof. *)
165
+ (* rewrite CCtilde_cap_τTP. split. *)
166
+ (* - exact TPtau_for_conjunction. *)
167
+ (* - setoid_rewrite trinity1. setoid_rewrite trinity2. *)
168
+ (* by firstorder. *)
169
+ (* Qed. *)
151
170
171
+
152
172
End Conjunction.
0 commit comments