(* *)
(**************************************************************************)
-include "logic/cprop_connectives.ma".
include "categories.ma".
-record powerset_carrier (A: SET) : Type1 ≝ { mem_operator: unary_morphism1 A CPROP }.
+record powerset_carrier (A: objs1 SET) : Type1 ≝ { mem_operator: unary_morphism1 A CPROP }.
-definition subseteq_operator: ∀A: SET. powerset_carrier A → powerset_carrier A → CProp2 ≝
- λA:SET.λU,V.∀a:A. mem_operator ? U a → mem_operator ? V a.
+definition subseteq_operator: ∀A: SET. powerset_carrier A → powerset_carrier A → CProp0 ≝
+ λA:objs1 SET.λU,V.∀a:A. mem_operator ? U a → mem_operator ? V a.
theorem transitive_subseteq_operator: ∀A. transitive2 ? (subseteq_operator A).
intros 6; intros 2;
interpretation "subseteq" 'subseteq U V = (fun21 ___ (subseteq _) U V).
+
+
theorem subseteq_refl: ∀A.∀S:Ω \sup A.S ⊆ S.
intros 4; assumption.
qed.
definition overlaps: ∀A. binary_morphism1 (Ω \sup A) (Ω \sup A) CPROP.
intros;
constructor 1;
- [ apply (λA.λU,V:Ω \sup A.exT2 ? (λx:A.x ∈ U) (λx:A.x ∈ V))
+ (* Se metto x al posto di ? ottengo una universe inconsistency *)
+ [ apply (λA:objs1 SET.λU,V:Ω \sup A.(exT2 ? (λx:A.?(*x*) ∈ U) (λx:A.?(*x*) ∈ V) : CProp0))
| intros;
- constructor 1; intro; cases H; exists; [1,4: apply w]
- [ apply (. #‡e); assumption
- | apply (. #‡e1); assumption
- | apply (. #‡(e \sup -1)); assumption;
- | apply (. #‡(e1 \sup -1)); assumption]]
+ constructor 1; intro; cases e2; exists; [1,4: apply w]
+ [ apply (. #‡e^-1); assumption
+ | apply (. #‡e1^-1); assumption
+ | apply (. #‡e); assumption;
+ | apply (. #‡e1); assumption]]
qed.
interpretation "overlaps" 'overlaps U V = (fun21 ___ (overlaps _) U V).
intros; simplify; apply (.= (e‡#)‡(e‡#)); apply refl1;
| intros;
split; intros 2; simplify in f ⊢ %;
- [ apply (. (#‡e)‡(#‡e1)); assumption
- | apply (. (#‡(e \sup -1))‡(#‡(e1 \sup -1))); assumption]]
+ [ apply (. (#‡e^-1)‡(#‡e1^-1)); assumption
+ | apply (. (#‡e)‡(#‡e1)); assumption]]
qed.
interpretation "intersects" 'intersects U V = (fun21 ___ (intersects _) U V).
intros; simplify; apply (.= (e‡#)‡(e‡#)); apply refl1
| intros;
split; intros 2; simplify in f ⊢ %;
- [ apply (. (#‡e)‡(#‡e1)); assumption
- | apply (. (#‡(e \sup -1))‡(#‡(e1 \sup -1))); assumption]]
+ [ apply (. (#‡e^-1)‡(#‡e1^-1)); assumption
+ | apply (. (#‡e)‡(#‡e1)); assumption]]
qed.
interpretation "union" 'union U V = (fun21 ___ (union _) U V).
+(* qua non riesco a mettere set *)
definition singleton: ∀A:setoid. unary_morphism1 A (Ω \sup A).
intros; constructor 1;
- [ apply (λa:A.{b | eq ? a b}); unfold setoid1_of_setoid; simplify;
+ [ apply (λa:A.{b | a =_0 b}); unfold setoid1_of_setoid; simplify;
intros; simplify;
split; intro;
apply (.= e1);
[ apply a |4: apply a'] try assumption; apply sym; assumption]
qed.
-interpretation "singleton" 'singl a = (fun11 __ (singleton _) a).
\ No newline at end of file
+interpretation "singleton" 'singl a = (fun11 __ (singleton _) a).
+
+definition big_intersects:
+ ∀A:SET.∀I:SET.unary_morphism2 (setoid1_of_setoid I ⇒ Ω \sup A) (setoid2_of_setoid1 (Ω \sup A)).
+ intros; constructor 1;
+ [ intro; whd; whd in I;
+ apply ({x | ∀i:I. x ∈ c i});
+ simplify; intros; split; intros; [ apply (. (e^-1‡#)); | apply (. e‡#); ]
+ apply f;
+ | intros; split; intros 2; simplify in f ⊢ %; intro;
+ [ apply (. (#‡(e i)^-1)); apply f;
+ | apply (. (#‡e i)); apply f]]
+qed.
+
+definition big_union:
+ ∀A:SET.∀I:SET.unary_morphism2 (setoid1_of_setoid I ⇒ Ω \sup A) (setoid2_of_setoid1 (Ω \sup A)).
+ intros; constructor 1;
+ [ intro; whd; whd in A; whd in I;
+ apply ({x | ∃i:I. x ∈ c i });
+ simplify; intros; split; intros; cases e1; clear e1; exists; [1,3:apply w]
+ [ apply (. (e^-1‡#)); | apply (. (e‡#)); ]
+ apply x;
+ | intros; split; intros 2; simplify in f ⊢ %; cases f; clear f; exists; [1,3:apply w]
+ [ apply (. (#‡(e w)^-1)); apply x;
+ | apply (. (#‡e w)); apply x]]
+qed.