Skip to content

Commit dead626

Browse files
author
Carmine Abate
committed
sadly realize that tau1 \cap tau2 is not continuous and hence involution lemma does not hold and composition neither
1 parent 695f494 commit dead626

File tree

1 file changed

+54
-34
lines changed

1 file changed

+54
-34
lines changed

Diff/Composition.v

+54-34
Original file line numberDiff line numberDiff line change
@@ -102,33 +102,49 @@ Section Conjunction.
102102
Local Definition CCtilde_cap := rel_TC compilation_chain Source_Semantics Target_Semantics rel_cap.
103103
Local Definition τTP := τTP compilation_chain Source_Semantics Target_Semantics τ.
104104

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. *)
132148

133149
Theorem TPtau_for_conjunction :
134150
CCtilde1 /\ CCtilde2 -> τTP.
@@ -140,13 +156,17 @@ Section Conjunction.
140156
by apply: (Hτ1 W). by apply: (Hτ2 W).
141157
Qed.
142158

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) *)
143162

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. *)
151170

171+
152172
End Conjunction.

0 commit comments

Comments
 (0)