]> matita.cs.unibo.it Git - helm.git/commitdiff
some more work
authorEnrico Tassi <enrico.tassi@inria.fr>
Sat, 17 Oct 2009 07:03:03 +0000 (07:03 +0000)
committerEnrico Tassi <enrico.tassi@inria.fr>
Sat, 17 Oct 2009 07:03:03 +0000 (07:03 +0000)
helm/software/matita/nlibrary/topology/cantor.ma
helm/software/matita/nlibrary/topology/igft-minimality-CIC.svg
helm/software/matita/nlibrary/topology/igft.ma
helm/software/matita/nlibrary/topology/preamble.xml

index 822c88fc0dfe4f8488c873c9e6130062b262cd7b..b8f8a5543ad57e8cf24ea8ee2f169e63ac94c0aa 100644 (file)
@@ -127,109 +127,31 @@ unification hint 0 ≔ ;
 
 naxiom h : nat → nat. 
 
-naxiom Ph : ∀x.h x = O → x ◃ ∅.
-
-ninductive eq2 (A : Type[1]) (a : A) : A → CProp[0] ≝ 
-| refl2 : eq2 A a a.
-
-interpretation "eq2" 'eq T a b = (eq2 T a b).
-
-ntheorem th_ch3: ¬∃a:caxs.∀x.ϕ a x = h x.
-*; #a; #H; 
-ncut ((𝐂 a one) ⊆ { x | x ◃ ∅ }); (* bug *) 
-nchange in xx with { x | h x
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-   
-                     
-ntheorem cantor: ∀a:axs. ¬ (Z ⊆ R a ∧ R a ⊆ Z).
-#a; *; #ZRa; #RaZ;
-ncut (a ◃ R a); ##[ @2; ##[ napply one; ##]  #x; #H; @; napply H; ##] #H1;
-ncut (a ◃ ∅); ##[
-  napply (cover_trans … H1); 
-  #x; #H; nlapply (RaZ … H); #ABS; napply ABS; ##] #H2;
-ncut (a ∈ R a); ##[ napply ZRa; napply H2; ##] #H3;
-nelim H2 in H3; 
-##[ nauto. 
-##| nnormalize; nauto.  ##] (* se lo lancio su entrambi fallisce di width *)
-nqed.
-
-ninductive deduct (A : nAx) (U : Ω^A) : A → CProp[0] ≝ 
-| drefl : ∀a.a ∈ U → deduct A U a
-| dcut  : ∀a.∀i:𝐈 a. (∀y:𝐃 a i.deduct A U (𝐝 a i y)) → deduct A U a. 
-
-notation " a ⊢ b " non associative with precedence 45 for @{ 'deduct $a $b }.
-interpretation "deduct" 'deduct a b = (deduct ? b a).
-
-ntheorem th2_3_1 : ∀A:nAx.∀a:A.∀i:𝐈 a. a ⊢ 𝐈𝐦[𝐝 a i].
-#A; #a; #i;
-ncut (∀y:𝐃 a i.𝐝 a i y ⊢ 𝐈𝐦[𝐝 a i]); ##[ #y; @; @y; @; ##] #H1;
-napply (dcut … i); nassumption;
-nqed.
-
-ntheorem th2_3_2 : 
-  ∀A:nAx.∀a:A.∀i:𝐈 a.∀U,V. a ⊢ U → (∀u.u ∈ U → u ⊢ V) → a ⊢ V.
-#A; #a; #i; #U; #V; #aU; #xUxV; 
-nelim aU;
-##[ nassumption;
-##| #b; #i; #dU; #dV; @2 i; nassumption;
-##]
-nqed.
-
-ntheorem th2_3 :
-  ∀A:nAx. 
-    (∀a:A.∀i_star.(∃y:𝐃 a i_star.𝐝 a i_star y = a) ∨ ¬(∃y:𝐃 a i_star.𝐝 a i_star y = a)) → 
-  ∀a:A. a ◃ ∅ → ∃i:𝐈 a. ¬ a \in Z
-#A; #EM; #a; #H; nelim H;
-##[ #n; *;
-##| #b; #i_star; #IH1; #IH2;
-    ncases (EM b i_star);
-    ##[##2: #W; @i_star; napply W;
-    ##| *; #y_star; #E; nlapply (IH2 y_star); nrewrite > E; #OK; napply OK;
-    ##]
-##] 
+alias symbol "eq" = "leibnitz's equality".
+alias symbol "eq" = "setoid1 eq".
+alias symbol "covers" = "covers".
+naxiom Ph :  ∀x.h x = O \liff  x ◃ ∅.
+
+nlemma replace_char:
+  ∀A:Ax.∀U,V.U ⊆ V → V ⊆ U → ∀a:A.a ◃ U → a ◃ V.
+#A; #U; #V;  #a; #H1; #H2; #E; nelim E;
+##[ #b; #Hb; @; nauto;
+##| #b; #i; #H3; #H4; @2 i; #c; #Hc; nauto; ##]
 nqed.
 
-ninductive eq1 (A : Type[0]) : Type[0] → CProp[0] ≝ 
-| refl1 : eq1 A A.
-
-notation "hvbox( a break ∼ b)" non associative with precedence 40 
-for @{ 'eqT $a $b }.
-
-interpretation "eq between types" 'eqT a b = (eq1 a b).
-
-nrecord uAx : Type[1] ≝ {
-  uax_ : Ax;
-  with_ : ∀a:uax_.𝐈 a ∼ unit
-}.
-
-ndefinition uax : uAx → Ax.
-*; #A; #E; @ A (λx.unit); #a; ncases (E a); 
-##[ #i; napply (𝐃 a i);
-##| #i; nnormalize; #j; napply (𝐝 a i j);
-##]
+ntheorem th_ch3: ¬∃a:caxs.∀x.ϕ a x = h x.
+*; #a; #H;
+ncut (a ◃ { x | x ◃ ∅}); ##[
+  napply (replace_char … { x | h x = O }); ##[ ##1,2: #x; ncases (Ph x);
+     (* nauto; *) #H1; #H2; #H3; nauto; (* ??? *) ##]
+  napply (replace_char … { x | ϕ a x = O }); ##[##1,2: #x; nrewrite > (H x);
+     (* nauto; *) #E; napply E; ##]
+  napply (axiom_cond … a one); ##] #H1;
+ncut (a ◃ ∅); ##[ napply (transitivity … H1); #x; nauto; ##] #H2;
+nlapply (col2_4 …H2); #H3;
+ncut (a ∈ 𝐂 a one); ##[
+  nnormalize; ncases (Ph a); nrewrite > (H a); nauto; ##] #H4;
+nauto;
 nqed.
 
-ncoercion uax : ∀u:unAx. nAx ≝ uax on _u : unAx to nAx. 
-
-
-nlemma cor_2_5 : ∀A:unAx.∀a:A.∀i.a ⊢ ∅ → ¬(a ∈ 𝐈𝐦[𝐝 a i]).
-#A; #a; #i; #H; nelim H in i; 
-##[ #w; *; 
-##| #a; #i; #IH1; #IH2;
-
-
 
-        
\ No newline at end of file
index 3cf9b46fba5d3dc530859adee41ca9a436597ce4..06c2b36ee785a07fd04333fc642dccfce39c7949 100644 (file)
@@ -8,8 +8,8 @@
    xmlns="http://www.w3.org/2000/svg"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="371.16943"
-   height="210.00404"
+   width="496.06299"
+   height="318.89764"
    id="svg2"
    sodipodi:version="0.32"
    inkscape:version="0.46"
    version="1.0">
   <defs
      id="defs4">
+    <marker
+       inkscape:stockid="StopL"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="StopL"
+       style="overflow:visible">
+      <path
+         id="path3425"
+         d="M 0,5.65 L 0,-5.65"
+         style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="scale(0.8,0.8)" />
+    </marker>
+    <marker
+       inkscape:stockid="CurvyCross"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="CurvyCross"
+       style="overflow:visible">
+      <g
+         id="g3446"
+         transform="scale(0.6,0.6)">
+        <path
+           id="path3448"
+           d="M 4.625493,-5.0456926 C 1.865493,-5.0456926 -0.37450702,-2.8056926 -0.37450702,-0.04569258 C -0.37450702,2.7143074 1.865493,4.9543074 4.625493,4.9543074"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none" />
+        <path
+           id="path3450"
+           d="M -5.4129913,-5.0456926 C -2.6529913,-5.0456926 -0.41299131,-2.8056926 -0.41299131,-0.04569258 C -0.41299131,2.7143074 -2.6529913,4.9543074 -5.4129913,4.9543074"
+           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none;marker-end:none" />
+      </g>
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible">
+      <path
+         id="path3255"
+         d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
+         transform="matrix(0.8,0,0,0.8,10,0)" />
+    </marker>
     <marker
        inkscape:stockid="Arrow2Lend"
        orient="auto"
      objecttolerance="10"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="1.9884615"
-     inkscape:cx="297.14286"
-     inkscape:cy="89.723635"
+     inkscape:zoom="1.18"
+     inkscape:cx="207.19123"
+     inkscape:cy="165.5535"
      inkscape:document-units="px"
      inkscape:current-layer="layer1"
      showgrid="false"
      inkscape:window-width="1280"
      inkscape:window-height="747"
      inkscape:window-x="0"
-     inkscape:window-y="26" />
+     inkscape:window-y="26"
+     inkscape:showpageshadow="true"
+     units="cm" />
   <metadata
      id="metadata7">
     <rdf:RDF>
      inkscape:label="Layer 1"
      inkscape:groupmode="layer"
      id="layer1"
-     transform="translate(-100.2483,-683.58839)">
+     transform="translate(-52.527322,-573.92589)">
     <text
        xml:space="preserve"
        style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="215.35783"
-       y="839.26465"
-       id="text2383"><tspan
-         sodipodi:role="line"
-         x="215.35783"
-         y="839.26465"
-         id="tspan5562"
-         style="font-size:12px">     Matita's CIC</tspan><tspan
+       x="366.57452"
+       y="796.92438"
+       id="text3171"><tspan
          sodipodi:role="line"
-         x="215.35783"
-         y="854.26465"
-         style="font-size:12px"
-         id="tspan2408" /><tspan
+         x="366.57452"
+         y="796.92438"
+         id="tspan6187">CProp impredicative</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="115.37615"
+       y="794.98383"
+       id="text3181"><tspan
          sodipodi:role="line"
-         x="215.35783"
-         y="867.27118"
-         id="tspan5564"
-         style="font-size:10px">CProp,Type predicative</tspan><tspan
+         x="115.37615"
+         y="794.98383"
+         id="tspan3185">CProp = Type</tspan><tspan
          sodipodi:role="line"
+         x="115.37615"
+         y="809.98383"
+         id="tspan3250" /></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+       d="M 228.9477,818.64478 L 187.36847,761.88289"
+       id="path5558"
+       sodipodi:nodetypes="cc" />
+    <g
+       id="g3234"
+       transform="translate(1.1070111,-5.1660517)">
+      <text
+         id="text2383"
+         y="839.26465"
          x="215.35783"
-         y="879.77118"
-         style="font-size:10px"
-         id="tspan5572">No elim CProp toward Type</tspan><tspan
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"><tspan
+           style="font-size:12px"
+           id="tspan5562"
+           y="839.26465"
+           x="215.35783"
+           sodipodi:role="line">     Matita's CIC</tspan><tspan
+           id="tspan2408"
+           style="font-size:12px"
+           y="854.26465"
+           x="215.35783"
+           sodipodi:role="line" /><tspan
+           style="font-size:10px"
+           id="tspan5564"
+           y="867.27118"
+           x="215.35783"
+           sodipodi:role="line">CProp,Type predicative</tspan><tspan
+           id="tspan5572"
+           style="font-size:10px"
+           y="879.77118"
+           x="215.35783"
+           sodipodi:role="line">No elim CProp toward Type</tspan><tspan
+           id="tspan5566"
+           y="892.27118"
+           x="215.35783"
+           sodipodi:role="line" /></text>
+      <rect
+         transform="translate(100.2483,683.58839)"
+         y="140.10075"
+         x="105.10638"
+         height="64.371376"
+         width="149.86459"
+         id="rect2406"
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         transform="translate(100.2483,683.58839)"
+         y="142.61526"
+         x="107.6209"
+         height="19.110252"
+         width="144.83559"
+         id="rect3190"
+         style="opacity:0.26612902;fill:#a1a1a1;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       id="g6154"
+       transform="translate(-125.83354,13.837023)">
+      <text
+         id="text3192"
+         y="696.07294"
+         x="499.7543"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"><tspan
+           style="font-size:12px"
+           id="tspan3194"
+           y="696.07294"
+           x="499.7543"
+           sodipodi:role="line"> Coq's CIC<tspan
+   id="tspan6152"
+   style="font-size:10px"> (work in Prop)</tspan></tspan><tspan
+           id="tspan3196"
+           style="font-size:12px"
+           y="711.07294"
+           x="499.7543"
+           sodipodi:role="line" /><tspan
+           style="font-size:10px"
+           id="tspan3198"
+           y="724.07947"
+           x="499.7543"
+           sodipodi:role="line">Prop impredicative</tspan><tspan
+           id="tspan3200"
+           style="font-size:10px"
+           y="736.57947"
+           x="499.7543"
+           sodipodi:role="line">No elim Prop toward Type</tspan><tspan
+           id="tspan3202"
+           y="749.07947"
+           x="499.7543"
+           sodipodi:role="line" /></text>
+      <rect
+         y="680.49744"
+         x="489.75116"
+         height="64.371376"
+         width="149.86459"
+         id="rect3204"
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="683.77209"
+         x="492.26569"
+         height="19.110252"
+         width="144.83559"
+         id="rect3206"
+         style="opacity:0.26612902;fill:#a1a1a1;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       id="g3224"
+       transform="translate(-432.92324,-78.89799)">
+      <rect
+         y="774.75275"
+         x="485.95056"
+         height="64.371376"
+         width="149.86459"
+         id="rect3220"
+         style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="777.26715"
+         x="487.70496"
+         height="19.110252"
+         width="144.83559"
+         id="rect3222"
+         style="opacity:0.26612902;fill:#a1a1a1;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <text
+         id="text3208"
+         y="790.32825"
+         x="489.87271"
+         style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+         xml:space="preserve"><tspan
+           style="font-size:12px"
+           id="tspan3210"
+           y="790.32825"
+           x="489.87271"
+           sodipodi:role="line"> Coq's CIC <tspan
+   style="font-size:10px"
+   id="tspan6150">(work in CProp)</tspan></tspan><tspan
+           id="tspan3212"
+           style="font-size:12px"
+           y="805.32825"
+           x="489.87271"
+           sodipodi:role="line" /><tspan
+           style="font-size:10px"
+           id="tspan3214"
+           y="818.33478"
+           x="489.87271"
+           sodipodi:role="line">CProp=Type predicative</tspan><tspan
+           style="font-size:10px"
+           y="830.83478"
+           x="489.87271"
+           sodipodi:role="line"
+           id="tspan3244">Martin Löf Axiom of Choice</tspan><tspan
+           id="tspan3218"
+           y="843.33478"
+           x="489.87271"
+           sodipodi:role="line" /></text>
+    </g>
+    <g
+       id="g6165"
+       transform="translate(-166.99281,-57.42367)">
+      <g
+         id="g6191"
+         transform="translate(38.006151,-48.647873)">
+        <text
+           xml:space="preserve"
+           style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+           x="497.47394"
+           y="696.07294"
+           id="text6167"><tspan
+             sodipodi:role="line"
+             x="497.47394"
+             y="696.07294"
+             id="tspan6169"
+             style="font-size:12px">        CIC + EM</tspan><tspan
+             sodipodi:role="line"
+             x="497.47394"
+             y="711.07294"
+             style="font-size:12px"
+             id="tspan6173" /><tspan
+             sodipodi:role="line"
+             x="497.47394"
+             y="724.07947"
+             id="tspan6175"
+             style="font-size:10px">Prop impredicative with EM</tspan><tspan
+             sodipodi:role="line"
+             x="497.47394"
+             y="736.57947"
+             style="font-size:10px"
+             id="tspan6177">No elim Prop toward Type</tspan><tspan
+             sodipodi:role="line"
+             x="497.47394"
+             y="749.07947"
+             id="tspan6179" /></text>
+        <rect
+           style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect6181"
+           width="149.86459"
+           height="64.371376"
+           x="489.75116"
+           y="680.49744" />
+        <rect
+           style="opacity:0.26612902;fill:#a1a1a1;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+           id="rect6183"
+           width="144.83559"
+           height="19.110252"
+           x="492.26569"
+           y="683.77209" />
+      </g>
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+       d="M 335.0574,817.80062 L 376.63663,761.03873"
+       id="path6201"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+       d="M 432.71038,693.19009 L 432.75682,640.13071"
+       id="path6203"
+       sodipodi:nodetypes="cc" />
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="440.85757"
+       y="668.56934"
+       id="text6205"><tspan
          sodipodi:role="line"
-         x="215.35783"
-         y="892.27118"
-         id="tspan5566" /></text>
-    <rect
-       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.03334594;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2399"
-       width="145.10805"
-       height="70.175743"
-       x="206.55623"
-       y="822.40002" />
+         x="440.85757"
+         y="668.56934"
+         id="tspan6207">Excluded Middle</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+       d="M 362.82027,701.03266 C 362.82027,701.03266 294.27781,653.29395 204.66307,701.28945"
+       id="path6209"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-mid:none;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+       d="M 203.66203,750.29609 L 361.81923,750.55288"
+       id="path6211"
+       sodipodi:nodetypes="cc" />
+    <g
+       id="g8379"
+       transform="translate(134.31734,94.095941)">
+      <path
+         transform="translate(51.420312,579.09195)"
+         id="path8375"
+         d="M 80.442804,87.328345 L 102.58303,67.033143"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         transform="translate(51.420312,579.09195)"
+         id="path8377"
+         d="M 80.073801,66.295135 L 103.32103,88.066353"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <g
+       id="g8383"
+       transform="translate(141.88192,23.200325)">
+      <path
+         transform="translate(51.420312,579.09195)"
+         id="path8385"
+         d="M 80.442804,87.328345 L 102.58303,67.033143"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         transform="translate(51.420312,579.09195)"
+         id="path8387"
+         d="M 80.073801,66.295135 L 103.32103,88.066353"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
     <text
        xml:space="preserve"
        style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="351.02515"
-       y="779.28674"
-       id="text3171"><tspan
+       x="236.74605"
+       y="698.91022"
+       id="text8389"><tspan
          sodipodi:role="line"
-         id="tspan3173"
-         x="351.02515"
-         y="779.28674">EM for CProp</tspan><tspan
+         x="236.74605"
+         y="698.91022"
+         id="tspan8391">Axiom of Choice</tspan><tspan
          sodipodi:role="line"
-         x="351.02515"
-         y="794.28674"
-         id="tspan3179">CProp impredicative</tspan></text>
+         x="236.74605"
+         y="713.91022"
+         id="tspan8393" /></text>
     <text
        xml:space="preserve"
        style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="99.574471"
-       y="778.28094"
-       id="text3181"><tspan
+       x="206.57732"
+       y="603.78223"
+       id="text8395"><tspan
          sodipodi:role="line"
-         id="tspan3183"
-         x="99.574471"
-         y="778.28094">CProp[i] = Type[i]</tspan><tspan
+         x="206.57732"
+         y="603.78223"
+         id="tspan8397">Where's the content?</tspan><tspan
          sodipodi:role="line"
-         x="99.574471"
-         y="793.28094"
-         id="tspan3185">Exists = Sigma</tspan></text>
-    <rect
-       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.3872999;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect3187"
-       width="121.11192"
-       height="39.139008"
-       x="312.59683"
-       y="684.78491" />
+         x="206.57732"
+         y="618.78223"
+         id="tspan8399" /></text>
     <text
        xml:space="preserve"
        style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="318.33655"
-       y="699.32544"
-       id="text3189"><tspan
+       x="221.84404"
+       y="771.26294"
+       id="text8401"><tspan
          sodipodi:role="line"
-         id="tspan3191"
-         x="318.33655"
-         y="699.32544">Reuse theorems in</tspan><tspan
+         x="221.84404"
+         y="771.26294"
+         id="tspan8407">CProp Impredicative</tspan><tspan
          sodipodi:role="line"
-         x="318.33655"
-         y="714.32544"
-         id="tspan3193">a classical setting</tspan></text>
-    <rect
-       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.3872999;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect3195"
-       width="121.11192"
-       height="39.139008"
-       x="128.03204"
-       y="684.28204" />
+         x="221.84404"
+         y="786.26294"
+         id="tspan8405" /></text>
     <text
        xml:space="preserve"
        style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
-       x="139.30368"
-       y="700.83417"
-       id="text3197"><tspan
+       x="228.09178"
+       y="736.88953"
+       id="text8411"><tspan
          sodipodi:role="line"
-         x="139.30368"
-         y="700.83417"
-         id="tspan3201">Martin Löf</tspan><tspan
+         x="228.09178"
+         y="736.88953"
+         id="tspan8413">Girard's paradox</tspan><tspan
          sodipodi:role="line"
-         x="139.30368"
-         y="715.83417"
-         id="tspan3205">Axiom of Choice</tspan></text>
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 257.48549,821.53046 L 194.62282,722.9618"
-       id="path5558" />
+         x="228.09178"
+         y="751.88953"
+         id="tspan8415" /></text>
     <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 305.51258,822.03336 L 368.37525,723.4647"
-       id="path5560" />
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-opacity:1"
+       d="M 359.90647,612.92159 C 359.90647,612.92159 212.45038,602.47727 189.20314,691.03816"
+       id="path8417"
+       sodipodi:nodetypes="cc" />
+    <g
+       id="g8429"
+       transform="translate(131.18394,-36.356245)">
+      <path
+         transform="translate(51.420312,579.09195)"
+         id="path8431"
+         d="M 80.442804,87.328345 L 102.58303,67.033143"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+      <path
+         transform="translate(51.420312,579.09195)"
+         id="path8433"
+         d="M 80.073801,66.295135 L 103.32103,88.066353"
+         style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+    </g>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="240.21919"
+       y="641.33929"
+       id="text8435"><tspan
+         sodipodi:role="line"
+         x="240.21919"
+         y="641.33929"
+         id="tspan8437">Axiom of Choice</tspan><tspan
+         sodipodi:role="line"
+         x="240.21919"
+         y="656.33929"
+         id="tspan8439" /></text>
+    <text
+       xml:space="preserve"
+       style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
+       x="239.63129"
+       y="665.09381"
+       id="text8441"><tspan
+         sodipodi:role="line"
+         x="239.63129"
+         y="665.09381"
+         id="tspan8445">??????????????</tspan></text>
   </g>
 </svg>
index 075828b60e477b367d5757558d57b0088daacb0e..d595882bcd1f746c40a40c43e2a5cdb342028fa4 100644 (file)
@@ -1,7 +1,7 @@
 (*D
 
-Matita Tutorial: inductively generated formal topologies
-======================================================== 
+Inductively generated formal topologies in Matita
+================================================= 
 
 This is a not so short introduction to [Matita][2], based on
 the formalization of the paper
@@ -14,18 +14,21 @@ by Stefano Berardi and Silvio Valentini.
 
 The tutorial is by Enrico Tassi. 
 
-The tutorial spends a considerable amount of effort in defining 
+The reader should be familiar with inductively generated
+formal topologies and have some basic knowledge of type theory and λ-calculus.  
+
+A considerable part of this tutorial is devoted to explain how to define 
 notations that resemble the ones used in the original paper. We believe
-this is a important part of every formalization, not only from the aesthetic 
+this is an important part of every formalization, not only from the aesthetic 
 point of view, but also from the practical point of view. Being 
 consistent allows to follow the paper in a pedantic way, and hopefully
 to make the formalization (at least the definitions and proved
 statements) readable to the author of the paper. 
 
-The formalization uses the ng (new generation) version of Matita
+The formalization uses the "new generation" version of Matita
 (that will be named 1.x when finally released). 
 Last stable release of the "old" system is named 0.5.7; the ng system
-is coexisting with the old one in every development release 
+is coexisting with the old one in all development release 
 (named "nightly builds" in the download page of Matita) 
 with a version strictly greater than 0.5.7.
 
@@ -144,29 +147,83 @@ A predicative proposition cannot be eliminated toward
 with 0 or 1 constructors with propositional arguments, like `Id` and `And` 
 but not like `Or`). 
 
-The distintion between predicative propositions and predicative data types
+The distinction between predicative propositions and predicative data types
 is a peculirity of Matita (for example in CIC as implemented by Coq they are the
 same). The additional restriction of not allowing the elimination of a CProp
 toward a Type makes the theory of Matita minimal in the following sense: 
 
 <object class="img" data="igft-minimality-CIC.svg" type="image/svg+xml" width="500px"/>
 
-Theorems proved in this setting can be reused in a classical framwork (forcing
-Matita to collapse the hierarchy of constructive propositions). Alternatively,
-one can decide to collapse predicative propositions and datatypes recovering the
-Axiom of Choice (i.e. ∃ really holds a content and can thus be eliminated to
-provide a witness for a Σ).
+Theorems proved in CIC as implemented in Matita can be reused in a classical 
+and impredicative framework (i.e. forcing Matita to collapse the hierarchy of 
+constructive propositions and assuming the excluded middle on them). 
+Alternatively, one can decide to collapse predicative propositions and 
+datatypes recovering the Axiom of Choice in the sense of Martin Löf 
+(i.e. ∃ really holds a witness and can be eliminated to inhabit a type).
+
+This implementation of CIC is the result of the collaboration with Maietti M.,
+Sambin G. and Valentini S. of the University of Padua.
 
 Formalization choices
 ---------------------
 
+There are many different ways of formalizing the same piece of mathematics
+in CIC, depending on what our interests are. There is usually a tradeoff 
+between the possibility of reuse the formalization we did and its complexity.
+
+In this work, our decisions mainly regarded the following two areas
+
+- Equality: Id or not
+- Axiom of Choice: controlled use or not
+
+### Equality
+
+TODO
 We will avoid using `Id` (Leibniz equality), 
 thus we will explicitly equip a set with an equivalence relation when needed.
 We will call this structure a _setoid_. Note that we will
 attach the infix `=` symbol only to the equality of a setoid,
 not to Id.
 
-
+### Axiom of Choice
+
+In this paper it is clear that the author is interested in using the Axiom
+of Choice, thus choosing to identify ∃ and Σ (i.e. working in the 
+leftmost box of the graph "Coq's CIC (work in CProp)") would be a safe decision 
+(that is, the author of the paper would not complain we formalized something
+diffrent from what he had in mind).
+
+Anyway, we may benefit from the minimality of CIC as implemented in Matita,
+"asking" the type system to ensure we do no use the Axiom of Choice elswhere
+in the proof (by mistake or as a shortcut). If we identify ∃ and Σ from the
+very beginnig, the system will not complain if we use the Axiom of Choice at all.
+Moreover, the elimination of an inductive type (like ∃) is a so common operation
+that the syntax chosen for the elimination command is very compact and non 
+informative, hard to spot for a human being 
+(in fact it is just two characters long!). 
+
+We decided to formalize the whole paper without identifying
+CProp and Type and assuming the Axiom of Choice as a real axiom 
+(i.e. a black hole with no computational content, a function with no body). 
+
+It is clear that this approach give us full control on when/where we really use
+the Axiom of Choice. But, what are we loosing? What happens to the computational
+content of the proofs if the Axiom of Choice gives no content back? 
+
+It really
+depends on when we actually look at the computational content of the proof and 
+we "run" that program. We can extract the content and run it before or after 
+informing the system that our propositions are actually code (i.e. identifying
+∃ and Σ). If we run the program before, as soon as the computation reaches the 
+Axiom of Choice it stops, giving no output. If we tell the system that CProp and
+Type are the same, we can exhibit a body for the Axiom of Choice (i.e. a projection)
+and the extracted code would compute an output. 
+
+Note that the computational
+content is there even if the Axiom of Choice is an axiom, the difference is
+just that we cannot use it (the typing rules inhibit the elimination of the 
+existential). This is possible only thanks to the minimality of CIC as implemented
+in Matita. 
 
 The standard library and the `include` command
 ----------------------------------------------
@@ -1034,6 +1091,7 @@ alias symbol "covers" = "new covers".
 alias symbol "covers" = "new covers set".
 alias symbol "covers" = "new covers".
 alias symbol "covers" = "new covers set".
+alias symbol "covers" = "new covers".
 ntheorem new_coverage_infinity:
   ∀A:nAx.∀U:Ω^A.∀a:A. (∃i:𝐈 a. 𝐈𝐦[𝐝 a i] ◃ U) → a ◃ U.
 #A; #U; #a;                                   (** screenshot "n-cov-inf-1". *)  
index 45bc7da389eb00090da980f65ed938068504eb58..018c0b44564953102c1f3c51836ddf4fe8c14539 100644 (file)
@@ -39,10 +39,11 @@ date {
 }
 
 body {
-       margin-right: 3em;
-       margin-left: 4em;
+       margin-right: 3cm;
+       margin-left: 3cm;
 }
 
+
 p { text-align: justify; } 
   </style>
   <script type="text/javascript" src="sh_main.js"></script>