interpretation "D" 'D a i = (nD ? a i).
interpretation "d" 'd a i j = (nd ? a i j).
+interpretation "new I" 'I a = (nI ? a).
ndefinition image ā Ī»A:nAx.Ī»a:A.Ī»i. { x | āj:š a i. x = š a i j }.
interpretation "image" 'Im a i = (image ? a i).
+(*
ndefinition Ax_of_nAx : nAx ā Ax.
#A; @ A (nI ?); #a; #i; napply (šš¦ [š a i]);
nqed.
##| #a; #i; *; #x; #_; napply x;
##]
nqed.
+*)
-ninductive ord (A : nAx) : Type[0] ā
- | oO : ord A
- | oS : ord A ā ord A
- | oL : āa:A.āi.āf:š a i ā ord A. ord A.
+ninductive Ord (A : nAx) : Type[0] ā
+ | oO : Ord A
+ | oS : Ord A ā Ord A
+ | oL : āa:A.āi.āf:š a i ā Ord A. Ord A.
-nlet rec famU (A : nAx) (U : Ī©^A) (x : ord A) on x : Ī©^A ā
+notation "Ī term 90 f" non associative with precedence 50 for @{ 'oL $f }.
+notation "x+1" non associative with precedence 50 for @{'oS $x }.
+
+interpretation "ordinals Lambda" 'oL f = (oL ? ? ? f).
+interpretation "ordinals Succ" 'oS x = (oS ? x).
+
+nlet rec famU (A : nAx) (U : Ī©^A) (x : Ord A) on x : Ī©^A ā
match x with
[ oO ā U
- | oS y ā let Un ā famU A U y in Un āŖ { x | āi.āj:š x i.š x i j ā Un}
+ | oS y ā let Un ā famU A U y in Un āŖ { x | āi.šš¦[š x i] ā Un}
| oL a i f ā { x | āj.x ā famU A U (f j) } ].
-ndefinition ord_coverage ā Ī»A,U.{ y | āx:ord A. y ā famU ? U x }.
+naxiom XXX : False.
+
+ndefinition qp_famU : āA:nAx.āU:qpowerclass A.āx:Ord A.qpowerclass A ā
+ Ī»A,U,x.?.
+@ (famU ? (pc ? U) x); nelim x;
+##[ #a; #b; #E; nnormalize; @; #H; ##[ napply (. E^-1ā”#); napply H; ##| napply (. Eā”#); napply H; ##]
+##| #o; #IH; #a; #b; #E; @; nnormalize; *; #H;
+ ##[##1,3: @1; nlapply (IH ā¦ E); *; #G; #G';
+ ##[ napply G | napply G'] nassumption;
+ ##|##2,4: @2; ncases H; #i_a; #H_ia; @;
+ nelim XXX; ##]
+##| nelim XXX;
+##]
+nqed.
+
+unification hint 0 ā
+ A,U,x; UU ā (pc ? U) ā¢ pc ? (qp_famU A U x) ā” famU A UU x.
+
+notation < "term 90 U \sub (term 90 x)" non associative with precedence 50 for @{ 'famU $U $x }.
+notation > "U ā½ term 90 x" non associative with precedence 50 for @{ 'famU $U $x }.
+
+interpretation "famU" 'famU U x = (famU ? U x).
+
+ndefinition ord_coverage : āA:nAx.āU:Ī©^A.Ī©^A ā Ī»A,U.{ y | āx:Ord A. y ā famU ? U x }.
+
+ndefinition ord_cover_set ā Ī»c:āA:nAx.Ī©^A ā Ī©^A.Ī»A,C,U.
+ āy.y ā C ā y ā c A U.
+
+interpretation "coverage new cover" 'coverage U = (ord_coverage ? U).
+interpretation "new covers set" 'covers a U = (ord_cover_set ord_coverage ? a U).
+interpretation "new covers" 'covers a U = (mem ? (ord_coverage ? U) a).
+
+ntheorem new_coverage_reflexive:
+ āA:nAx.āU:Ī©^A.āa. a ā U ā a ā U.
+#A; #U; #a; #H; @ (oO A); napply H;
+nqed.
+
+nlemma ord_subset:
+ āA:nAx.āa:A.āi,f,U.āj:š a i.Uā½(f j) ā Uā½(Ī f).
+#A; #a; #i; #f; #U; #j; #b; #bUf; @ j; nassumption;
+nqed.
+
+naxiom AC : āA,a,i,U.(āj:š a i.āx:Ord A.š a i j ā Uā½x) ā (Ī£f.āj:š a i.š a i j ā Uā½(f j)).
+
+naxiom setoidification :
+ āA:nAx.āa,b:A.āU.a=b ā b ā U ā a ā U.
+
+alias symbol "covers" = "new covers set".
+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; *; #i; #H; nnormalize in H;
+ncut (āy:š a i.āx:Ord A.š a i y ā Uā½x); ##[
+ #y; napply H; @ y; napply #; ##] #H';
+ncases (AC ā¦ H'); #f; #Hf;
+ncut (āj.š a i j ā Uā½(Ī f));
+ ##[ #j; napply (ord_subset ā¦ f ā¦ (Hf j));##] #Hf';
+@ ((Ī f)+1); @2; nwhd; @i; #x; *; #d; #Hd; napply (setoidification ā¦ Hd); napply Hf';
+nqed.
+
+(* move away *)
+nlemma subseteq_union: āA.āU,V,W:Ī©^A.U ā W ā V ā W ā U āŖ V ā W.
+#A; #U; #V; #W; #H; #H1; #x; *; #Hx; ##[ napply H; ##| napply H1; ##] nassumption;
+nqed.
+
+nlemma new_coverage_min :
+ āA:nAx.āU:qpowerclass A.āV.U ā V ā (āa:A.āi.šš¦[š a i] ā V ā a ā V) ā ā(pc ? U) ā V.
+#A; #U; #V; #HUV; #Im; #b; *; #o; ngeneralize in match b; nchange with ((pc ? U)ā½o ā V);
+nelim o;
+##[ #b; #bU0; napply HUV; napply bU0;
+##| #p; #IH; napply subseteq_union; ##[ nassumption; ##]
+ #x; *; #i; #H; napply (Im ? i); napply (subseteq_trans ā¦ IH); napply H;
+##| #a; #i; #f; #IH; #x; *; #d; napply IH; ##]
+nqed.
+
+
\ No newline at end of file