X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fmatita%2Fcontribs%2Fformal_topology%2Foverlap%2Fo-basic_pairs_to_o-basic_topologies.ma;h=b745652569c9458b389903f2a220c93c03c3d6f9;hb=3e5c359c75874748cfed8a9046031b62396e0e6d;hp=4971b8ef928f72f44215d55cbf85292512420933;hpb=c24aab23b490f6d5db2ed6c9e20533487023e056;p=helm.git diff --git a/helm/software/matita/contribs/formal_topology/overlap/o-basic_pairs_to_o-basic_topologies.ma b/helm/software/matita/contribs/formal_topology/overlap/o-basic_pairs_to_o-basic_topologies.ma index 4971b8ef9..b74565256 100644 --- a/helm/software/matita/contribs/formal_topology/overlap/o-basic_pairs_to_o-basic_topologies.ma +++ b/helm/software/matita/contribs/formal_topology/overlap/o-basic_pairs_to_o-basic_topologies.ma @@ -19,12 +19,12 @@ include "o-basic_topologies.ma". alias symbol "eq" = "setoid1 eq". (* Qui, per fare le cose per bene, ci serve la nozione di funtore categorico *) -definition o_basic_topology_of_o_basic_pair: OBP → BTop. +definition o_basic_topology_of_o_basic_pair: OBP → OBTop. intro t; constructor 1; [ apply (Oform t); - | apply (□_t ∘ Ext⎽t); - | apply (◊_t ∘ Rest⎽t); + | apply (□⎽t ∘ Ext⎽t); + | apply (◊⎽t ∘ Rest⎽t); | apply hide; intros 2; split; intro; [ change with ((⊩) \sup ⎻* ((⊩) \sup ⎻ U) ≤ (⊩) \sup ⎻* ((⊩) \sup ⎻ V)); apply (. (#‡(lemma_10_4_a ?? (⊩) V)^-1)); @@ -38,7 +38,7 @@ definition o_basic_topology_of_o_basic_pair: OBP → BTop. apply (. (or_prop2 : ?) ^ -1); apply oa_leq_refl; ]] | apply hide; intros 2; split; intro; - [ change with (◊_t ((⊩) \sup * U) ≤ ◊_t ((⊩) \sup * V)); + [ change with (◊⎽t ((⊩) \sup * U) ≤ ◊⎽t ((⊩) \sup * V)); apply (. ((lemma_10_4_b ?? (⊩) U)^-1)‡#); apply (f_image_monotone ?? (⊩) ? ((⊩)* V)); apply f_star_image_monotone; @@ -51,7 +51,7 @@ definition o_basic_topology_of_o_basic_pair: OBP → BTop. apply oa_leq_refl; ]] | apply hide; intros; apply (.= (oa_overlap_sym' : ?)); - change with ((◊_t ((⊩)* V) >< (⊩)⎻* ((⊩)⎻ U)) = (U >< (◊_t ((⊩)* V)))); + change with ((◊⎽t ((⊩)* V) >< (⊩)⎻* ((⊩)⎻ U)) = (U >< (◊⎽t ((⊩)* V)))); apply (.= (or_prop3 ?? (⊩) ((⊩)* V) ?)); apply (.= #‡(lemma_10_3_a : ?)); apply (.= (or_prop3 : ?)^-1); @@ -60,7 +60,7 @@ qed. definition o_continuous_relation_of_o_relation_pair: ∀BP1,BP2.arrows2 OBP BP1 BP2 → - arrows2 BTop (o_basic_topology_of_o_basic_pair BP1) (o_basic_topology_of_o_basic_pair BP2). + arrows2 OBTop (o_basic_topology_of_o_basic_pair BP1) (o_basic_topology_of_o_basic_pair BP2). intros (BP1 BP2 t); constructor 1; [ apply (t \sub \f); @@ -93,15 +93,15 @@ definition o_continuous_relation_of_o_relation_pair: qed. -definition OR : carr3 (arrows3 CAT2 OBP BTop). +definition OR : carr3 (arrows3 CAT2 OBP OBTop). constructor 1; [ apply o_basic_topology_of_o_basic_pair; | intros; constructor 1; [ apply o_continuous_relation_of_o_relation_pair; | apply hide; intros; whd; unfold o_continuous_relation_of_o_relation_pair; simplify;; - change with ((a \sub \f ⎻* ∘ A (o_basic_topology_of_o_basic_pair S)) = - (a' \sub \f ⎻*∘A (o_basic_topology_of_o_basic_pair S))); + change with ((a \sub \f ⎻* ∘ oA (o_basic_topology_of_o_basic_pair S)) = + (a' \sub \f ⎻*∘ oA (o_basic_topology_of_o_basic_pair S))); whd in e; cases e; clear e e2 e3 e4; change in ⊢ (? ? ? (? ? ? ? ? % ?) ?) with ((⊩\sub S)⎻* ∘ (⊩\sub S)⎻); apply (.= (comp_assoc2 ? ???? ?? a\sub\f⎻* )); @@ -113,156 +113,7 @@ constructor 1; change in ⊢ (? ? ? (? ? ? ? ? ? %) ?) with (a'\sub\f⎻* ∘ (⊩\sub S)⎻* ); apply (.= (comp_assoc2 ? ???? ?? a'\sub\f⎻* )^-1); apply refl2;] -| intros 2 (o a); apply rule #; +| intros 2 (o a); apply refl1; | intros 6; apply refl1;] qed. -axiom DDD : False. - -definition Fo := - λC1,C2: CAT2.λF:arrows3 CAT2 C1 C2. - (exT22 ? (λx:C2.exT22 ? (λy:C1.map_objs2 ?? F y =_\ID x))). - -definition sigma_equivalence_relation2: - ∀C2:CAT2.∀Q.∀X,Y:exT22 ? (λy:C2.Q y).∀P. - equivalence_relation2 (exT22 ? (λf:arrows2 C2 (\fst X) (\fst Y).P f)). -intros; constructor 1; - [ intros(F G); apply (\fst F =_2 \fst G); - | intro; apply refl2; - | intros 3; apply sym2; assumption; - | intros 5; apply (trans2 ?? ??? x1 x2);] -qed. - -lemma REW : ∀C1,C2: CAT2.∀F:arrows3 CAT2 C1 C2.∀X,Y:Fo ?? F. - arrows2 C2 (F (\fst (\snd X))) (F (\fst (\snd Y))) → - arrows2 C2 (\fst X) (\fst Y). -intros 5; cases X; cases Y; cases x; cases x1; clear X Y x x1; -cases H; cases H1; intros; assumption; -qed. - -definition Fm : - ∀C1,C2: CAT2.∀F:arrows3 CAT2 C1 C2. - Fo ?? F → Fo ?? F → setoid2. -intros (C1 C2 F X Y); constructor 1; - [ apply (exT22 ? (λf:arrows2 C2 (\fst X) (\fst Y). - exT22 ? (λg:arrows2 C1 (\fst (\snd X)) (\fst (\snd Y)). - REW ?? F X Y (map_arrows2 ?? F ?? g) = f))); - | apply sigma_equivalence_relation2;] -qed. - -definition F_id : - ∀C1,C2: CAT2.∀F:arrows3 CAT2 C1 C2.∀o.Fm ?? F o o. -intros; constructor 1; - [ apply (id2 C2 (\fst o)); - | exists[apply (id2 C1 (\fst (\snd o)))] - cases o; cases x; cases H; unfold hide; simplify; - apply (respects_id2 ?? F);] -qed. - -definition F_comp : - ∀C1,C2: CAT2.∀F:arrows3 CAT2 C1 C2.∀o1,o2,o3. - binary_morphism2 (Fm ?? F o1 o2) (Fm ?? F o2 o3) (Fm ?? F o1 o3). -intros; constructor 1; -[ intros (f g); constructor 1; - [ apply (comp2 C2 (\fst o1) (\fst o2) (\fst o3) (\fst f) (\fst g)); - | exists[apply (comp2 C1 (\fst (\snd o1)) (\fst (\snd o2)) (\fst (\snd o3)) (\fst (\snd f)) (\fst (\snd g)))] - cases o1 in f; cases o2 in g; cases o3; clear o1 o2 o3; - cases x; cases x1; cases x2; clear x x1 x2; - cases H; cases H1; cases H2; simplify; intros 2; - cases c; cases c1; cases x; cases x1; clear x x1 c c1; simplify; - apply (.= (respects_comp2:?)); - apply (x3‡x2);] -| (* DISABILITARE INNERTYPES *) - STOP - cases x3; cases x2; - apply refl2; - simplify; - -definition Apply : ∀C1,C2: CAT2.arrows3 CAT2 C1 C2 → CAT2. -intros (C1 C2 F); -constructor 1; -[ apply (Fo ?? F); -| apply (Fm ?? F); -| apply F_id; -| apply F_comp; intros (o1 o2 o3); constructor 1; - [ intros (f g); whd in f g; constructor 1; - [ apply (comp2 C2 (\fst o1) (\fst o2) (\fst o3) (\fst f) (\fst g)); - | exists[apply (comp2 C1 (\fst (\snd o1)) (\fst (\snd o2)) (\fst (\snd o3)) (\fst (\snd f)) (\fst (\snd g)))] - cases o1; cases x; cases H; - -(* scrivo gli statement qua cosi' verra' un conflitto :-) - -1. definire il funtore OR -2. dimostrare che ORel e' faithful - -3. Definire la funzione - Apply: - \forall C1,C2: CAT2. F: arrows3 CAT2 C1 C2 -> CAT2 - := - constructor 1; - [ gli oggetti sono gli oggetti di C1 mappati da F - | i morfismi i morfismi di C1 mappati da F - | .... - ] - - E : objs CATS === Σx.∃y. F y = x - - Quindi (Apply C1 C2 F) (che usando da ora in avanti una coercion - scrivero' (F C1) ) e' l'immagine di C1 tramite F ed e' - una sottocategoria di C2 (qualcosa da dimostare qui??? vedi sotto - al punto 5) - -4. Definire rOBP (le OBP rappresentabili) come (BP_to_OBP BP) - [Si puo' fare lo stesso per le OA: rOA := Rel_to_OA REL ] - -5. Dimostrare che OR (il funtore faithful da OBP a OBTop) e' full - quando applicato a rOBP. - Nota: puo' darsi che faccia storie ad accettare lo statement. - Infatti rOBP e' (BP_to_OBP BP) ed e' "una sottocategoria di OBP" - e OR va da OBP a OBTop. Non so se tipa subito o se devi dare - una "proiezione" da rOBP a OBP. - -6. Definire rOBTop come (OBP_to_OBTop rOBP). - -7. Per composizione si ha un funtore full and faithful da BP a rOBTop: - basta prendere (OR \circ BP_to_OBP). - -8. Dimostrare (banale: quasi tutti i campi sono per conversione) che - esiste un funtore da rOBTop a BTop. Dimostrare che tale funtore e' - faithful e full (banale: tutta conversione). - -9. Per composizione si ha un funtore full and faithful da BP a BTop. - -10. Dimostrare che i seguenti funtori sono anche isomorphism-dense - (http://planetmath.org/encyclopedia/DenseFunctor.html): - - BP_to_OBP - OBP_to_OBTop quando applicato alle rOBP - OBTop_to_BTop quando applicato alle rOBTop - - Concludere per composizione che anche il funtore da BP a BTop e' - isomorphism-dense. - -====== Da qui in avanti non e' "necessario" nulla: - -== altre cose mancanti - -11. Dimostrare che le r* e le * orrizzontali - sono isomorfe dando il funtore da r* a * e dimostrando che componendo i - due funtori ottengo l'identita' - -12. La definizione di r* fa schifo: in pratica dici solo come ottieni - qualcosa, ma non come lo caratterizzeresti. Ora un teorema carino - e' che una a* (e.g. una aOBP) e' sempre una rOBP dove "a" sta per - atomic. Dimostrarlo per tutte le r*. - -== categorish/future works - -13. definire astrattamente la FG-completion e usare quella per - ottenere le BP da Rel e le OBP da OA. - -14. indebolire le OA, generalizzare le costruzioni, etc. come detto - con Giovanni - -*) -