X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fmatita%2Fcontribs%2Fformal_topology%2Foverlap%2Fo-concrete_spaces.ma;h=5b08b59170acbd478bc720c8f646e102ba09b256;hb=2d7053c212c790d528e82ba37c3e927070de7ae5;hp=4e989cb14f6489c02bb5d9330354e33292ad4b55;hpb=4dfb1305a9c4a7c292f4b1957de1454d46c1ab8a;p=helm.git diff --git a/helm/software/matita/contribs/formal_topology/overlap/o-concrete_spaces.ma b/helm/software/matita/contribs/formal_topology/overlap/o-concrete_spaces.ma index 4e989cb14..5b08b5917 100644 --- a/helm/software/matita/contribs/formal_topology/overlap/o-concrete_spaces.ma +++ b/helm/software/matita/contribs/formal_topology/overlap/o-concrete_spaces.ma @@ -17,30 +17,38 @@ include "o-saturations.ma". notation "□ \sub b" non associative with precedence 90 for @{'box $b}. notation > "□_term 90 b" non associative with precedence 90 for @{'box $b}. -interpretation "Universal image ⊩⎻*" 'box x = (or_f_minus_star _ _ (rel x)). +interpretation "Universal image ⊩⎻*" 'box x = (fun_1 _ _ (or_f_minus_star _ _) (rel x)). notation "◊ \sub b" non associative with precedence 90 for @{'diamond $b}. notation > "◊_term 90 b" non associative with precedence 90 for @{'diamond $b}. -interpretation "Existential image ⊩" 'diamond x = (or_f _ _ (rel x)). +interpretation "Existential image ⊩" 'diamond x = (fun_1 _ _ (or_f _ _) (rel x)). notation "'Rest' \sub b" non associative with precedence 90 for @{'rest $b}. notation > "'Rest'⎽term 90 b" non associative with precedence 90 for @{'rest $b}. -interpretation "Universal pre-image ⊩*" 'rest x = (or_f_star _ _ (rel x)). +interpretation "Universal pre-image ⊩*" 'rest x = (fun_1 _ _ (or_f_star _ _) (rel x)). notation "'Ext' \sub b" non associative with precedence 90 for @{'ext $b}. notation > "'Ext'⎽term 90 b" non associative with precedence 90 for @{'ext $b}. -interpretation "Existential pre-image ⊩⎻" 'ext x = (or_f_minus _ _ (rel x)). +interpretation "Existential pre-image ⊩⎻" 'ext x = (fun_1 _ _ (or_f_minus _ _) (rel x)). + +lemma hint : ∀p,q.arrows1 OA p q → ORelation_setoid p q. +intros; assumption; +qed. + +coercion hint nocomposites. definition A : ∀b:BP. unary_morphism (oa_P (form b)) (oa_P (form b)). -intros; constructor 1; [ apply (λx.□_b (Ext⎽b x)); | intros; apply (†(†H));] qed. +intros; constructor 1; + [ apply (λx.□_b (Ext⎽b x)); + | do 2 unfold uncurry_arrows; intros; apply (†(†H));] +qed. lemma xxx : ∀x.carr x → carr1 (setoid1_of_setoid x). intros; assumption; qed. -coercion xxx. +coercion xxx nocomposites. -definition d_p_i : - ∀S:setoid.∀I:setoid.∀d:unary_morphism S S.∀p:ums I S.ums I S. -intros; constructor 1; [ apply (λi:I. u (c i));| intros; apply (†(†H));]. -qed. +lemma down_p : ∀S,I:SET.∀u:S⇒S.∀c:arrows1 SET I S.∀a:I.∀a':I.a=a'→u (c a)=u (c a'). +intros; unfold uncurry_arrows; apply (†(†H)); +qed. alias symbol "eq" = "setoid eq". alias symbol "and" = "o-algebra binary meet". @@ -52,25 +60,40 @@ record concrete_space : Type ≝ converges: ∀q1,q2. (Ext⎽bp q1 ∧ (Ext⎽bp q2)) = (Ext⎽bp ((downarrow q1) ∧ (downarrow q2))); all_covered: Ext⎽bp (oa_one (form bp)) = oa_one (concr bp); - il2: ∀I:setoid.∀p:ums I (oa_P (form bp)). - downarrow (oa_join ? I (d_p_i ?? downarrow p)) = - oa_join ? I (d_p_i ?? downarrow p); + il2: ∀I:SET.∀p:arrows1 SET I (oa_P (form bp)). + downarrow (∨ { x ∈ I | downarrow (p x) | down_p ???? }) = + ∨ { x ∈ I | downarrow (p x) | down_p ???? }; il1: ∀q.downarrow (A ? q) = A ? q }. -interpretation "o-concrete space downarrow" 'downarrow x = (fun_1 __ (downarrow _) x). +interpretation "o-concrete space downarrow" 'downarrow x = + (fun_1 __ (downarrow _) x). definition bp': concrete_space → basic_pair ≝ λc.bp c. coercion bp'. +lemma setoid_OF_OA : OA → setoid. +intros; apply (oa_P o); +qed. + +coercion setoid_OF_OA. + +definition binary_downarrow : + ∀C:concrete_space.binary_morphism1 (form C) (form C) (form C). +intros; constructor 1; +[ intros; apply (↓ c ∧ ↓ c1); +| intros; apply ((†H)‡(†H1));] +qed. + +interpretation "concrete_space binary ↓" 'fintersects a b = (fun1 _ _ _ (binary_downarrow _) a b). + record convergent_relation_pair (CS1,CS2: concrete_space) : Type ≝ { rp:> arrows1 ? CS1 CS2; respects_converges: - ∀b,c. - extS ?? rp \sub\c (BPextS CS2 (b ↓ c)) = - BPextS CS1 ((extS ?? rp \sub\f b) ↓ (extS ?? rp \sub\f c)); + ∀b,c. eq1 ? (rp\sub\c⎻ (Ext⎽CS2 (b ↓ c))) (Ext⎽CS1 (rp\sub\f⎻ b ↓ rp\sub\f⎻ c)); respects_all_covered: - extS ?? rp\sub\c (BPextS CS2 (form CS2)) = BPextS CS1 (form CS1) + eq1 ? (rp\sub\c⎻ (Ext⎽CS2 (oa_one (form CS2)))) + (Ext⎽CS1 (oa_one (form CS1))) }. definition rp' : ∀CS1,CS2. convergent_relation_pair CS1 CS2 → relation_pair CS1 CS2 ≝ @@ -99,34 +122,27 @@ definition convergent_relation_space_composition: ∀o1,o2,o3: concrete_space. binary_morphism1 (convergent_relation_space_setoid o1 o2) - (convergent_relation_space_setoid o2 o3) + (convergentin ⊢ (? (? ? ? (? ? ? (? ? ? ? ? (? ? ? (? ? ? (% ? ?))) ?)) ?) ? ? ?)_relation_space_setoid o2 o3) (convergent_relation_space_setoid o1 o3). intros; constructor 1; [ intros; whd in c c1 ⊢ %; constructor 1; - [ apply (fun1 ??? (comp1 BP ???)); [apply (bp o2) |*: apply rp; assumption] - | intros; - change in ⊢ (? ? ? (? ? ? (? ? ? %) ?) ?) with (c1 \sub \c ∘ c \sub \c); - change in ⊢ (? ? ? ? (? ? ? ? (? ? ? ? ? (? ? ? (? ? ? %) ?) ?))) - with (c1 \sub \f ∘ c \sub \f); - change in ⊢ (? ? ? ? (? ? ? ? (? ? ? ? ? ? (? ? ? (? ? ? %) ?)))) - with (c1 \sub \f ∘ c \sub \f); - apply (.= (extS_com ??????)); - apply (.= (†(respects_converges ?????))); - apply (.= (respects_converges ?????)); - apply (.= (†(((extS_com ??????) \sup -1)‡(extS_com ??????)\sup -1))); + [ apply (c1 ∘ c); + | intros; + change in ⊢ (? ? ? % ?) with (c\sub\c⎻ (c1\sub\c⎻ (Ext⎽o3 (b↓c2)))); + alias symbol "trans" = "trans1". + apply (.= († (respects_converges : ?))); + apply (.= (respects_converges : ?)); apply refl1; - | change in ⊢ (? ? ? (? ? ? (? ? ? %) ?) ?) with (c1 \sub \c ∘ c \sub \c); - apply (.= (extS_com ??????)); - apply (.= (†(respects_all_covered ???))); - apply (.= respects_all_covered ???); + | change in ⊢ (? ? ? % ?) with (c\sub\c⎻ (c1\sub\c⎻ (Ext⎽o3 (oa_one (form o3))))); + apply (.= (†(respects_all_covered :?))); + apply (.= (respects_all_covered :?)); apply refl1] | intros; - change with (b ∘ a = b' ∘ a'); + change with (b ∘ a = b' ∘ a'); change in H with (rp'' ?? a = rp'' ?? a'); change in H1 with (rp'' ?? b = rp ?? b'); - apply (.= (H‡H1)); - apply refl1] + apply ( (H‡H1));] qed. definition CSPA: category1. @@ -135,25 +151,16 @@ definition CSPA: category1. | apply convergent_relation_space_setoid | intro; constructor 1; [ apply id1 - | intros; - unfold id; simplify; - apply (.= (equalset_extS_id_X_X ??)); - apply (.= (†((equalset_extS_id_X_X ??)\sup -1‡ - (equalset_extS_id_X_X ??)\sup -1))); - apply refl1; - | apply (.= (equalset_extS_id_X_X ??)); - apply refl1] + | intros; apply refl1; + | apply refl1] | apply convergent_relation_space_composition | intros; simplify; change with (a34 ∘ (a23 ∘ a12) = (a34 ∘ a23) ∘ a12); - apply (.= ASSOC1); - apply refl1 + apply ASSOC1; | intros; simplify; change with (a ∘ id1 ? o1 = a); - apply (.= id_neutral_right1 ????); - apply refl1 + apply (id_neutral_right1 : ?); | intros; simplify; change with (id1 ? o2 ∘ a = a); - apply (.= id_neutral_left1 ????); - apply refl1] + apply (id_neutral_left1 : ?);] qed.