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
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>
(*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
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.
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
----------------------------------------------
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". *)