Mercurial > hg > Members > kono > Proof > ZF-in-agda
changeset 1063:091e7a80bfe3
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 12 Dec 2022 07:24:45 +0900 |
parents | 88731edfa691 |
children | 77740070e008 |
files | src/zorn.agda |
diffstat | 1 files changed, 36 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/src/zorn.agda Sun Dec 11 20:38:22 2022 +0900 +++ b/src/zorn.agda Mon Dec 12 07:24:45 2022 +0900 @@ -283,16 +283,14 @@ -- Union of chain lower than x -record IChain {A : HOD} { f : Ordinal → Ordinal } {x : Ordinal } (supfz : {z : Ordinal } → z o< x → Ordinal) (z : Ordinal ) : Set n where - field - i : Ordinal - i<x : i o< x - s<x : supfz i<x o≤ i - fc : FClosure A f (supfz i<x) z +data IChain {A : HOD} { f : Ordinal → Ordinal } {y : Ordinal } (ay : odef A y ) + {x : Ordinal } (supfz : {z : Ordinal } → z o< x → Ordinal) : (z : Ordinal ) → Set n where + ic-init : {z : Ordinal } (fc : FClosure A f y z) → IChain ay supfz z + ic-isup : {z : Ordinal} (i : Ordinal) (i<x : i o< x) (s<x : supfz i<x o≤ i ) (fc : FClosure A f (supfz i<x) z) → IChain ay supfz z -UnionIC : ( A : HOD ) ( f : Ordinal → Ordinal ) { x : Ordinal } (supfz : {z : Ordinal } → z o< x → Ordinal) → HOD -UnionIC A f supfz - = record { od = record { def = λ z → odef A z ∧ IChain {A} {f} supfz z } ; +UnionIC : ( A : HOD ) ( f : Ordinal → Ordinal ) { x : Ordinal } {y : Ordinal } (ay : odef A y ) (supfz : {z : Ordinal } → z o< x → Ordinal) → HOD +UnionIC A f ay supfz + = record { od = record { def = λ z → odef A z ∧ IChain {A} {f} ay supfz z } ; odmax = & A ; <odmax = λ {y} sy → ∈∧P→o< sy } supf-inject0 : {x y : Ordinal } {supf : Ordinal → Ordinal } → (supf-mono : {x y : Ordinal } → x o≤ y → supf x o≤ supf y ) @@ -1267,7 +1265,7 @@ supfz {z} z<x = ZChain.supf (pzc (ob<x lim z<x)) z pchainx : HOD - pchainx = UnionIC A f supfz + pchainx = UnionIC A f ay supfz zeq : {xa xb z : Ordinal } → (xa<x : xa o< x) → (xb<x : xb o< x) → xa o≤ xb → z o≤ xa @@ -1278,45 +1276,54 @@ iceq : {ix iy : Ordinal } → ix ≡ iy → {i<x : ix o< x } {i<y : iy o< x } → supfz i<x ≡ supfz i<y iceq refl = cong supfz o<-irr - ifc≤ : {za zb : Ordinal } ( ia : IChain supfz za ) ( ib : IChain supfz zb ) → (ia≤ib : IChain.i ia o≤ IChain.i ib ) - → FClosure A f (ZChain.supf (pzc (ob<x lim (IChain.i<x ib))) (IChain.i ia)) za - ifc≤ {za} {zb} ia ib ia≤ib = subst (λ k → FClosure A f k _ ) (zeq _ _ (osucc ia≤ib) (o<→≤ <-osuc) ) (IChain.fc ia) + IChain-i : {z : Ordinal } → IChain ay supfz z → Ordinal + IChain-i (ic-init fc) = o∅ + IChain-i (ic-isup ia ia<x sa<x fca) = ia - pic<x : {z : Ordinal } → (ic : IChain supfz z ) → osuc (IChain.i ic) o< x - pic<x {z} ic = ob<x lim (IChain.i<x ic) + pic<x : {z : Ordinal } → (ic : IChain ay supfz z ) → osuc (IChain-i ic) o< x + pic<x {z} (ic-init fc) = ob<x lim 0<x -- 0<x ∧ lim x → osuc o∅ o< x + pic<x {z} (ic-isup ia ia<x sa<x fca) = ob<x lim ia<x + + ifc≤ : {za zb : Ordinal } ( ia : IChain ay supfz za ) ( ib : IChain ay supfz zb ) → (ia≤ib : IChain-i ia o≤ IChain-i ib ) + → FClosure A f (ZChain.supf (pzc (ob<x lim (pic<x ib))) (IChain-i ia)) za + ifc≤ {za} {zb} (ic-isup ia ia<x sa<x fca) (ic-isup ib ib<x sb<x fcb) ia≤ib + = subst (λ k → FClosure A f k _ ) (zeq _ _ ? (o<→≤ <-osuc) ) fca + ifc≤ {za} {zb} ia ib ia≤ib = ? pchainx⊆chain : {z : Ordinal } → (pz : odef pchainx z) → odef (ZChain.chain (pzc (pic<x (proj2 pz)))) z - pchainx⊆chain {z} ⟪ aw , ic ⟫ = ZChain.cfcs (pzc (pic<x ic) ) <-osuc o≤-refl uz03 (IChain.fc ic) where - uz02 : FClosure A f (ZChain.supf (pzc (pic<x ic )) (IChain.i ic)) z - uz02 = IChain.fc ic - uz03 : ZChain.supf (pzc (pic<x ic)) (IChain.i ic) o≤ IChain.i ic - uz03 = IChain.s<x ic + pchainx⊆chain {z} ⟪ aw , ic-init fc ⟫ = ⟪ aw , ch-init fc ⟫ + pchainx⊆chain {z} ⟪ aw , (ic-isup ia ia<x sa<x fca) ⟫ = ZChain.cfcs (pzc (ob<x lim ia<x) ) <-osuc o≤-refl uz03 fca where + uz02 : FClosure A f (ZChain.supf (pzc (ob<x lim ia<x)) ia ) z + uz02 = fca + uz03 : ZChain.supf (pzc (ob<x lim ia<x)) ia o≤ ia + uz03 = sa<x - chain⊆pchainx : {z : Ordinal } → (z<x : z o< x) → odef (ZChain.chain (pzc (ob<x lim z<x))) z → odef pchainx z - chain⊆pchainx {z} z<x ⟪ ua , ch-init fc ⟫ = ⟪ ua , record { i = o∅ ; i<x = ? ; s<x = ? ; fc = ? } ⟫ - chain⊆pchainx {z} z<x ⟪ ua , ch-is-sup u u<x su=u fc ⟫ = ⟪ ua , record { i = ? ; i<x = ? ; s<x = ? - ; fc = subst (λ k → FClosure A f k z ) ? fc } ⟫ + chain⊆pchainx : {z w : Ordinal } → (oz<x : osuc z o< x) → odef (ZChain.chain (pzc oz<x)) w → odef pchainx w + chain⊆pchainx {z} {w} oz<x ⟪ aw , ch-init fc ⟫ = ⟪ aw , ic-init fc ⟫ + chain⊆pchainx {z} {w} oz<x ⟪ aw , ch-is-sup u u<x su=u fc ⟫ = ⟪ aw , ic-isup u ? ? (subst (λ k → FClosure A f k w ) ? fc ) ⟫ where + z<x : z o< x + z<x = ordtrans <-osuc oz<x ptotalx : IsTotalOrderSet pchainx ptotalx {a} {b} ⟪ _ , ia ⟫ ⟪ _ , ib ⟫ = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) ) - uz01 with trio< (supfz (IChain.i<x ia)) (supfz (IChain.i<x ib)) + uz01 with trio< (supfz (pic<x ia)) (supfz (pic<x ib)) ... | tri< ia<ib ¬b ¬c with - ≤-ftrans (ZChain.order (pzc (ob<x lim (IChain.i<x ib))) ? ? (ifc≤ ia ib (o<→≤ ?))) (s≤fc _ f mf (IChain.fc ib)) + ≤-ftrans (ZChain.order (pzc (ob<x lim (pic<x ib))) ? ? (ifc≤ ia ib (o<→≤ ?))) (s≤fc _ f mf ?) ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00 (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where ct00 : * (& a) ≡ * (& b) ct00 = cong (*) eq1 ... | case2 lt = tri< lt (λ eq → <-irr (case1 (sym eq)) lt) (λ lt1 → <-irr (case2 lt) lt1) - uz01 | tri≈ ¬a ia=ib ¬c = fcn-cmp _ f mf (IChain.fc ia) (subst (λ k → FClosure A f k (& b)) (sym ia=ib) (IChain.fc ib)) + uz01 | tri≈ ¬a ia=ib ¬c = fcn-cmp _ f mf ? (subst (λ k → FClosure A f k (& b)) (sym ia=ib) ?) uz01 | tri> ¬a ¬b ib<ia with - ≤-ftrans (ZChain.order (pzc (ob<x lim (IChain.i<x ia))) ? ? (ifc≤ ib ia (o<→≤ ?))) (s≤fc _ f mf (IChain.fc ia)) + ≤-ftrans (ZChain.order (pzc (ob<x lim (pic<x ia))) ? ? (ifc≤ ib ia (o<→≤ ?))) (s≤fc _ f mf ?) ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00 (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where ct00 : * (& a) ≡ * (& b) ct00 = sym (cong (*) eq1) ... | case2 lt = tri> (λ lt1 → <-irr (case2 lt) lt1) (λ eq → <-irr (case1 eq) lt) lt usup : MinSUP A pchainx - usup = minsupP pchainx (λ ic → A∋fc _ f mf (IChain.fc (proj2 ic) ) ) ptotalx + usup = minsupP pchainx (λ ic → ? ) ptotalx spu = MinSUP.sup usup supf1 : Ordinal → Ordinal