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=6a9d7794db701429f657746dc1b41dc4922aad58;hb=02ce2fd650a68d04fff678441cca9086c8310005;hp=80ee4649fee1f149370a456e5c81d28f9375d26e;hpb=8b7ad9b29b3448b72e476ba077e2d0faad86c058;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 80ee4649f..6a9d7794d 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,78 +17,69 @@ 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 = (fun_1 _ _ (or_f_minus_star _ _) (rel x)). +interpretation "Universal image ⊩⎻*" 'box x = (fun12 _ _ (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 = (fun_1 _ _ (or_f _ _) (rel x)). +interpretation "Existential image ⊩" 'diamond x = (fun12 _ _ (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 = (fun_1 _ _ (or_f_star _ _) (rel x)). +interpretation "Universal pre-image ⊩*" 'rest x = (fun12 _ _ (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 = (fun_1 _ _ (or_f_minus _ _) (rel x)). +interpretation "Existential pre-image ⊩⎻" 'ext x = (fun12 _ _ (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)). +definition A : ∀b:BP. unary_morphism1 (form b) (form b). intros; constructor 1; [ apply (λx.□_b (Ext⎽b x)); - | do 2 unfold uncurry_arrows; intros; apply (†(†H));] + | do 2 unfold FunClass_1_OF_Type_OF_setoid21; intros; apply (†(†e));] qed. -lemma xxx : ∀x.carr x → carr1 (setoid1_of_setoid x). intros; assumption; qed. -coercion xxx nocomposites. - -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)); +lemma down_p : ∀S:SET1.∀I:SET.∀u:S⇒S.∀c:arrows2 SET1 I S.∀a:I.∀a':I.a=a'→u (c a)=u (c a'). +intros; apply (†(†e)); qed. -alias symbol "eq" = "setoid eq". -alias symbol "and" = "o-algebra binary meet". -record concrete_space : Type ≝ +record concrete_space : Type2 ≝ { bp:> BP; (*distr : is_distributive (form bp);*) - downarrow: unary_morphism (oa_P (form bp)) (oa_P (form bp)); + downarrow: unary_morphism1 (form bp) (form bp); downarrow_is_sat: is_saturation ? downarrow; 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:SET.∀p:arrows1 SET I (oa_P (form bp)). + il2: ∀I:SET.∀p:arrows2 SET1 I (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). + (fun11 __ (downarrow _) x). definition bp': concrete_space → basic_pair ≝ λc.bp c. coercion bp'. -lemma setoid_OF_OA : OA → setoid. -intros; apply (oa_P o); +definition bp'': concrete_space → objs2 BP. + intro; apply (bp' c); qed. - -coercion setoid_OF_OA. +coercion bp''. 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));] +[ intros; apply (↓ t ∧ ↓ t1); +| intros; + alias symbol "prop2" = "prop21". + alias symbol "prop1" = "prop11". + apply ((†e)‡(†e1));] qed. -interpretation "concrete_space binary ↓" 'fintersects a b = (fun1 _ _ _ (binary_downarrow _) a b). +interpretation "concrete_space binary ↓" 'fintersects a b = (fun21 _ _ _ (binary_downarrow _) a b). -record convergent_relation_pair (CS1,CS2: concrete_space) : Type ≝ - { rp:> arrows1 ? CS1 CS2; +record convergent_relation_pair (CS1,CS2: concrete_space) : Type2 ≝ + { rp:> arrows2 ? CS1 CS2; respects_converges: ∀b,c. eq1 ? (rp\sub\c⎻ (Ext⎽CS2 (b ↓ c))) (Ext⎽CS1 (rp\sub\f⎻ b ↓ rp\sub\f⎻ c)); respects_all_covered: @@ -98,76 +89,76 @@ record convergent_relation_pair (CS1,CS2: concrete_space) : Type ≝ definition rp' : ∀CS1,CS2. convergent_relation_pair CS1 CS2 → relation_pair CS1 CS2 ≝ λCS1,CS2,c. rp CS1 CS2 c. - coercion rp'. -definition convergent_relation_space_setoid: concrete_space → concrete_space → setoid1. +definition convergent_relation_space_setoid: concrete_space → concrete_space → setoid2. intros; constructor 1; [ apply (convergent_relation_pair c c1) | constructor 1; [ intros; apply (relation_pair_equality c c1 c2 c3); - | intros 1; apply refl1; - | intros 2; apply sym1; - | intros 3; apply trans1]] + | intros 1; apply refl2; + | intros 2; apply sym2; + | intros 3; apply trans2]] qed. -definition rp'': ∀CS1,CS2.convergent_relation_space_setoid CS1 CS2 → arrows1 BP CS1 CS2 ≝ - λCS1,CS2,c.rp ?? c. +definition rp'': ∀CS1,CS2.carr2 (convergent_relation_space_setoid CS1 CS2) → arrows2 BP CS1 CS2 ≝ + λCS1,CS2,c.rp ?? c. coercion rp''. -definition prop_1_SET : - ∀A,B:SET.∀w:arrows1 SET A B.∀a,b:A.eq1 ? a b→eq1 ? (w a) (w b). -intros; apply (prop_1 A B w a b H); -qed. +definition rp''': ∀CS1,CS2.Type_OF_setoid2 (convergent_relation_space_setoid CS1 CS2) → arrows2 BP CS1 CS2 ≝ + λCS1,CS2,c.rp ?? c. +coercion rp'''. -interpretation "SET dagger" 'prop1 h = (prop_1_SET _ _ _ _ _ h). +definition rp'''': ∀CS1,CS2.Type_OF_setoid2 (convergent_relation_space_setoid CS1 CS2) → carr2 (arrows2 BP CS1 CS2) ≝ + λCS1,CS2,c.rp ?? c. +coercion rp''''. definition convergent_relation_space_composition: ∀o1,o2,o3: concrete_space. - binary_morphism1 + binary_morphism2 (convergent_relation_space_setoid o1 o2) - (convergentin ⊢ (? (? ? ? (? ? ? (? ? ? ? ? (? ? ? (? ? ? (% ? ?))) ?)) ?) ? ? ?)_relation_space_setoid o2 o3) + (convergent_relation_space_setoid o2 o3) (convergent_relation_space_setoid o1 o3). intros; constructor 1; - [ intros; whd in c c1 ⊢ %; + [ intros; whd in t t1 ⊢ %; constructor 1; - [ apply (c1 ∘ c); - | intros; - change in ⊢ (? ? ? % ?) with (c\sub\c⎻ (c1\sub\c⎻ (Ext⎽o3 (b↓c2)))); + [ apply (t1 ∘ t); + | intros; + change in ⊢ (? ? ? % ?) with (t\sub\c⎻ (t1\sub\c⎻ (Ext⎽o3 (b↓c)))); + unfold FunClass_1_OF_Type_OF_setoid21; alias symbol "trans" = "trans1". apply (.= († (respects_converges : ?))); - apply (.= (respects_converges : ?)); - apply refl1; - | change in ⊢ (? ? ? % ?) with (c\sub\c⎻ (c1\sub\c⎻ (Ext⎽o3 (oa_one (form o3))))); + apply (respects_converges ?? t (t1\sub\f⎻ b) (t1\sub\f⎻ c)); + | change in ⊢ (? ? ? % ?) with (t\sub\c⎻ (t1\sub\c⎻ (Ext⎽o3 (oa_one (form o3))))); + unfold FunClass_1_OF_Type_OF_setoid21; apply (.= (†(respects_all_covered :?))); - apply (.= (respects_all_covered :?)); - apply refl1] + apply rule (respects_all_covered ?? t);] | intros; 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));] + change in e with (rp'' ?? a = rp'' ?? a'); + change in e1 with (rp'' ?? b = rp ?? b'); + apply (e‡e1);] qed. -definition CSPA: category1. +definition CSPA: category2. constructor 1; [ apply concrete_space | apply convergent_relation_space_setoid | intro; constructor 1; - [ apply id1 + [ apply id2 | intros; apply refl1; | apply refl1] | apply convergent_relation_space_composition - | intros; simplify; + | intros; simplify; whd in a12 a23 a34; change with (a34 ∘ (a23 ∘ a12) = (a34 ∘ a23) ∘ a12); - apply ASSOC1; + apply rule ASSOC; | intros; simplify; - change with (a ∘ id1 ? o1 = a); - apply (id_neutral_right1 : ?); + change with (a ∘ id2 ? o1 = a); + apply (id_neutral_right2 : ?); | intros; simplify; - change with (id1 ? o2 ∘ a = a); - apply (id_neutral_left1 : ?);] + change with (id2 ? o2 ∘ a = a); + apply (id_neutral_left2 : ?);] qed. \ No newline at end of file