X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fmatita%2Fcontribs%2Fformal_topology%2Foverlap%2Fbasic_pairs_to_o-basic_pairs.ma;h=3e2fe8f354ee116ad0e851d568893eaa14182b2a;hb=e78cf74f8976cf0ca554f64baa9979d0423ee927;hp=7dbd3a80ae6bd0c9bbe9b6c687e9404dda6420d8;hpb=13114a0147a28f8c7359c9c19ee254716eb5f55a;p=helm.git diff --git a/helm/software/matita/contribs/formal_topology/overlap/basic_pairs_to_o-basic_pairs.ma b/helm/software/matita/contribs/formal_topology/overlap/basic_pairs_to_o-basic_pairs.ma index 7dbd3a80a..3e2fe8f35 100644 --- a/helm/software/matita/contribs/formal_topology/overlap/basic_pairs_to_o-basic_pairs.ma +++ b/helm/software/matita/contribs/formal_topology/overlap/basic_pairs_to_o-basic_pairs.ma @@ -20,9 +20,9 @@ include "relations_to_o-algebra.ma". definition o_basic_pair_of_basic_pair: basic_pair → Obasic_pair. intro b; constructor 1; - [ apply (map_objs2 ?? SUBSETS' (concr b)); - | apply (map_objs2 ?? SUBSETS' (form b)); - | apply (map_arrows2 ?? SUBSETS' (concr b) (form b) (rel b)); ] + [ apply (map_objs2 ?? POW (concr b)); + | apply (map_objs2 ?? POW (form b)); + | apply (map_arrows2 ?? POW (concr b) (form b) (rel b)); ] qed. definition o_relation_pair_of_relation_pair: @@ -30,21 +30,22 @@ definition o_relation_pair_of_relation_pair: Orelation_pair (o_basic_pair_of_basic_pair BP1) (o_basic_pair_of_basic_pair BP2). intros; constructor 1; - [ apply (map_arrows2 ?? SUBSETS' (concr BP1) (concr BP2) (r \sub \c)); - | apply (map_arrows2 ?? SUBSETS' (form BP1) (form BP2) (r \sub \f)); - | apply (.= (respects_comp2 ?? SUBSETS' (concr BP1) (concr BP2) (form BP2) r\sub\c (⊩\sub BP2) )^-1); - cut (⊩ \sub BP2∘r \sub \c = r\sub\f ∘ ⊩ \sub BP1) as H; + [ apply (map_arrows2 ?? POW (concr BP1) (concr BP2) (r \sub \c)); + | apply (map_arrows2 ?? POW (form BP1) (form BP2) (r \sub \f)); + | apply (.= (respects_comp2 ?? POW (concr BP1) (concr BP2) (form BP2) r\sub\c (⊩\sub BP2) )^-1); + cut ( ⊩ \sub BP2 ∘ r \sub \c =_12 r\sub\f ∘ ⊩ \sub BP1) as H; [ apply (.= †H); - apply (respects_comp2 ?? SUBSETS' (concr BP1) (form BP1) (form BP2) (⊩\sub BP1) r\sub\f); + apply (respects_comp2 ?? POW (concr BP1) (form BP1) (form BP2) (⊩\sub BP1) r\sub\f); | apply commute;]] qed. -definition BP_to_OBP: carr3 (arrows3 CAT2 (category2_of_category1 BP) OBP). - constructor 1; - [ apply o_basic_pair_of_basic_pair; - | intros; constructor 1; - [ apply (o_relation_pair_of_relation_pair S T); - | intros (a b Eab); split; unfold o_relation_pair_of_relation_pair; simplify; +lemma o_relation_pair_of_relation_pair_is_morphism : + ∀S,T:category2_of_category1 BP. + ∀a,b:arrows2 (category2_of_category1 BP) S T.a=b → + (eq2 (arrows2 OBP (o_basic_pair_of_basic_pair S) (o_basic_pair_of_basic_pair T))) + (o_relation_pair_of_relation_pair S T a) (o_relation_pair_of_relation_pair S T b). +intros 2 (S T); + intros (a b Eab); split; unfold o_relation_pair_of_relation_pair; simplify; unfold o_basic_pair_of_basic_pair; simplify; [ change in match or_f_minus_star_ with (λq,w,x.fun12 ?? (or_f_minus_star q w) x); | change in match or_f_minus_ with (λq,w,x.fun12 ?? (or_f_minus q w) x); @@ -52,14 +53,29 @@ definition BP_to_OBP: carr3 (arrows3 CAT2 (category2_of_category1 BP) OBP). | change in match or_f_star_ with (λq,w,x.fun12 ?? (or_f_star q w) x);] simplify; apply (prop12); - apply (.= (respects_comp2 ?? SUBSETS' (concr S) (concr T) (form T) (a\sub\c) (⊩\sub T))^-1); + apply (.= (respects_comp2 ?? POW (concr S) (concr T) (form T) (a\sub\c) (⊩\sub T))^-1); apply sym2; - apply (.= (respects_comp2 ?? SUBSETS' (concr S) (concr T) (form T) (b\sub\c) (⊩\sub T))^-1); + apply (.= (respects_comp2 ?? POW (concr S) (concr T) (form T) (b\sub\c) (⊩\sub T))^-1); apply sym2; apply prop12; apply Eab; - ] - | simplify; intros; whd; split; +qed. + +lemma o_relation_pair_of_relation_pair_morphism : + ∀S,T:category2_of_category1 BP. + unary_morphism2 (arrows2 (category2_of_category1 BP) S T) + (arrows2 OBP (o_basic_pair_of_basic_pair S) (o_basic_pair_of_basic_pair T)). +intros (S T); + constructor 1; + [ apply (o_relation_pair_of_relation_pair S T); + | apply (o_relation_pair_of_relation_pair_is_morphism S T)] +qed. + +lemma o_relation_pair_of_relation_pair_morphism_respects_id: + ∀o:category2_of_category1 BP. + o_relation_pair_of_relation_pair_morphism o o (id2 (category2_of_category1 BP) o) + = id2 OBP (o_basic_pair_of_basic_pair o). + simplify; intros; whd; split; [ change in match or_f_minus_star_ with (λq,w,x.fun12 ?? (or_f_minus_star q w) x); | change in match or_f_minus_ with (λq,w,x.fun12 ?? (or_f_minus q w) x); | change in match or_f_ with (λq,w,x.fun12 ?? (or_f q w) x); @@ -67,8 +83,19 @@ definition BP_to_OBP: carr3 (arrows3 CAT2 (category2_of_category1 BP) OBP). simplify; apply prop12; apply prop22;[2,4,6,8: apply rule #;] - apply (respects_id2 ?? SUBSETS' (concr o)); - | simplify; intros; whd; split; + apply (respects_id2 ?? POW (concr o)); +qed. + +lemma o_relation_pair_of_relation_pair_morphism_respects_comp: + ∀o1,o2,o3:category2_of_category1 BP. + ∀f1:arrows2 (category2_of_category1 BP) o1 o2. + ∀f2:arrows2 (category2_of_category1 BP) o2 o3. + (eq2 (arrows2 OBP (o_basic_pair_of_basic_pair o1) (o_basic_pair_of_basic_pair o3))) + (o_relation_pair_of_relation_pair_morphism o1 o3 (f2 ∘ f1)) + (comp2 OBP ??? + (o_relation_pair_of_relation_pair_morphism o1 o2 f1) + (o_relation_pair_of_relation_pair_morphism o2 o3 f2)). + simplify; intros; whd; split; [ change in match or_f_minus_star_ with (λq,w,x.fun12 ?? (or_f_minus_star q w) x); | change in match or_f_minus_ with (λq,w,x.fun12 ?? (or_f_minus q w) x); | change in match or_f_ with (λq,w,x.fun12 ?? (or_f q w) x); @@ -76,26 +103,46 @@ definition BP_to_OBP: carr3 (arrows3 CAT2 (category2_of_category1 BP) OBP). simplify; apply prop12; apply prop22;[2,4,6,8: apply rule #;] - apply (respects_comp2 ?? SUBSETS' (concr o1) (concr o2) (concr o3) f1\sub\c f2\sub\c);] + apply (respects_comp2 ?? POW (concr o1) (concr o2) (concr o3) f1\sub\c f2\sub\c); qed. +definition BP_to_OBP: carr3 (arrows3 CAT2 (category2_of_category1 BP) OBP). + constructor 1; + [ apply o_basic_pair_of_basic_pair; + | intros; apply o_relation_pair_of_relation_pair_morphism; + | apply o_relation_pair_of_relation_pair_morphism_respects_id; + | apply o_relation_pair_of_relation_pair_morphism_respects_comp;] +qed. -(* theorem BP_to_OBP_faithful: ∀S,T.∀f,g:arrows2 (category2_of_category1 BP) S T. map_arrows2 ?? BP_to_OBP ?? f = map_arrows2 ?? BP_to_OBP ?? g → f=g. - intros; unfold BP_to_OBP in e; simplify in e; cases e; - unfold orelation_of_relation in e3; simplify in e3; clear e e1 e2 e4; - intros 2; change in match or_f_ in e3 with (λq,w,x.fun12 ?? (or_f q w) x); - simplify in e3; STOP lapply (e3 (singleton ? x)); cases Hletin; - split; intro; [ lapply (s y); | lapply (s1 y); ] - [2,4: exists; [1,3:apply x] split; [1,3: assumption |*: change with (x=x); apply rule #] - |*: cases Hletin1; cases x1; change in f3 with (eq1 ? x w); apply (. f3‡#); assumption;] + intros; change with ( (⊩) ∘ f \sub \c = (⊩) ∘ g \sub \c); + apply (POW_faithful); + apply (.= respects_comp2 ?? POW (concr S) (concr T) (form T) f \sub \c (⊩ \sub T)); + apply sym2; + apply (.= respects_comp2 ?? POW (concr S) (concr T) (form T) g \sub \c (⊩ \sub T)); + apply sym2; + apply e; qed. -*) -(* -theorem SUBSETS_full: ∀S,T.∀f. exT22 ? (λg. map_arrows2 ?? BP_to_OBP S T g = f). - intros; exists; - -*) \ No newline at end of file +theorem BP_to_OBP_full: + ∀S,T.∀f. exT22 ? (λg. map_arrows2 ?? BP_to_OBP S T g = f). + intros; + cases (POW_full (concr S) (concr T) (Oconcr_rel ?? f)) (gc Hgc); + cases (POW_full (form S) (form T) (Oform_rel ?? f)) (gf Hgf); + exists[ + constructor 1; [apply gc|apply gf] + apply (POW_faithful); + apply (let xxxx ≝POW in .= respects_comp2 ?? POW (concr S) (concr T) (form T) gc (rel T)); + apply rule (.= Hgc‡#); + apply (.= Ocommute ?? f); + apply (.= #‡Hgf^-1); + apply (let xxxx ≝POW in (respects_comp2 ?? POW (concr S) (form S) (form T) (rel S) gf)^-1)] + split; + [ change in match or_f_minus_star_ with (λq,w,x.fun12 ?? (or_f_minus_star q w) x); + | change in match or_f_minus_ with (λq,w,x.fun12 ?? (or_f_minus q w) x); + | change in match or_f_ with (λq,w,x.fun12 ?? (or_f q w) x); + | change in match or_f_star_ with (λq,w,x.fun12 ?? (or_f_star q w) x);] + simplify; apply (†(Hgc‡#)); +qed.