Mercurial > hg > Members > kono > Proof > ZF-in-agda
changeset 988:9a85233384f7
is-max and supf b = supf x
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 14 Nov 2022 07:35:18 +0900 |
parents | c8c60a05b39b |
children | ce713b5db3f3 |
files | src/zorn.agda |
diffstat | 1 files changed, 61 insertions(+), 104 deletions(-) [+] |
line wrap: on
line diff
--- a/src/zorn.agda Sun Nov 13 10:23:50 2022 +0900 +++ b/src/zorn.agda Mon Nov 14 07:35:18 2022 +0900 @@ -524,7 +524,7 @@ {y : Ordinal} (ay : odef A y) (zc : ZChain A f mf ay (& A)) ( z : Ordinal ) : Set (Level.suc n) where supf = ZChain.supf zc field - is-max : {a b : Ordinal } → (ca : odef (UnionCF A f mf ay supf z) a ) → supf b o< supf z → (ab : odef A b) + is-max : {a b : Ordinal } → (ca : odef (UnionCF A f mf ay supf z) a ) → b o< z → (ab : odef A b) → HasPrev A (UnionCF A f mf ay supf z) f b ∨ IsSUP A (UnionCF A f mf ay supf b) ab → * a < * b → odef ((UnionCF A f mf ay supf z)) b order : {b s z1 : Ordinal} → b o< & A → supf s o< supf b → FClosure A f (supf s) z1 → (z1 ≡ supf b) ∨ (z1 << supf b) @@ -645,7 +645,7 @@ SZ1 : ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) (x : Ordinal) → ZChain1 A f mf ay zc x - SZ1 f mf {y} ay zc x = zc1 x where + SZ1 f mf {y} ay zc x = TransFinite { λ x → ZChain1 A f mf ay zc x } zc1 x where chain-mono1 : {a b c : Ordinal} → a o≤ b → odef (UnionCF A f mf ay (ZChain.supf zc) a) c → odef (UnionCF A f mf ay (ZChain.supf zc) b) c chain-mono1 {a} {b} {c} a≤b = chain-mono f mf ay (ZChain.supf zc) (ZChain.supf-mono zc) a≤b @@ -692,63 +692,63 @@ ... | case1 eq = case1 (subst₂ (λ j k → j ≡ k ) refl (sym (ZChain.supf-is-minsup zc (o<→≤ b<z)) ) eq ) ... | case2 lt = case2 (subst₂ (λ j k → j < * k ) refl (sym (ZChain.supf-is-minsup zc (o<→≤ b<z) )) lt ) - zc1 : (x : Ordinal) → ZChain1 A f mf ay zc x - zc1 x with Oprev-p x -- prev is not used now.... + zc1 : (x : Ordinal) → ((y : Ordinal) → y o< x → ZChain1 A f mf ay zc y) → ZChain1 A f mf ay zc x + zc1 x prev with Oprev-p x ... | yes op = record { is-max = is-max ; order = order } where - px = Oprev.oprev op - zc-b<x : {b : Ordinal } → ZChain.supf zc b o< ZChain.supf zc x → b o< osuc px - zc-b<x {b} lt = subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) (ZChain.supf-inject zc lt ) - is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay supf x) a → - ZChain.supf zc b o< ZChain.supf zc x → (ab : odef A b) → - HasPrev A (UnionCF A f mf ay supf x) f b ∨ IsSUP A (UnionCF A f mf ay supf b) ab → - * a < * b → odef (UnionCF A f mf ay supf x) b - is-max {a} {b} ua b<x ab P a<b with ODC.or-exclude O P - is-max {a} {b} ua b<x ab P a<b | case1 has-prev = is-max-hp x {a} {b} ua ab has-prev a<b - is-max {a} {b} ua sb<sx ab P a<b | case2 is-sup - = ⟪ ab , ch-is-sup b sb<sx m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where - b<A : b o< & A - b<A = z09 ab - b<x : b o< x - b<x = ZChain.supf-inject zc sb<sx - m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) f b - m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay = - chain-mono1 (o<→≤ b<x) (HasPrev.ay nhp) ; x=fy = HasPrev.x=fy nhp } ) - m05 : ZChain.supf zc b ≡ b - m05 = ZChain.sup=u zc ab (o<→≤ (z09 ab) ) ⟪ record { x≤sup = λ {z} uz → IsSUP.x≤sup (proj2 is-sup) uz } , m04 ⟫ - m08 : {z : Ordinal} → (fcz : FClosure A f y z ) → z <= ZChain.supf zc b - m08 {z} fcz = ZChain.fcy<sup zc (o<→≤ b<A) fcz - m09 : {s z1 : Ordinal} → ZChain.supf zc s o< ZChain.supf zc b + px = Oprev.oprev op + zc-b<x : {b : Ordinal } → ZChain.supf zc b o< ZChain.supf zc x → b o< osuc px + zc-b<x {b} lt = subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) (ZChain.supf-inject zc lt ) + is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay supf x) a → + b o< x → (ab : odef A b) → + HasPrev A (UnionCF A f mf ay supf x) f b ∨ IsSUP A (UnionCF A f mf ay supf b) ab → + * a < * b → odef (UnionCF A f mf ay supf x) b + is-max {a} {b} ua b<x ab P a<b with ODC.or-exclude O P + is-max {a} {b} ua b<x ab P a<b | case1 has-prev = is-max-hp x {a} {b} ua ab has-prev a<b + is-max {a} {b} ua b<x ab P a<b | case2 is-sup + = ⟪ ab , ch-is-sup b sb<sx m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where + b<A : b o< & A + b<A = z09 ab + sb<sx : supf b o< supf x + sb<sx = ? + m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) f b + m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay = + chain-mono1 (o<→≤ b<x) (HasPrev.ay nhp) ; x=fy = HasPrev.x=fy nhp } ) + m05 : ZChain.supf zc b ≡ b + m05 = ZChain.sup=u zc ab (o<→≤ (z09 ab) ) ⟪ record { x≤sup = λ {z} uz → IsSUP.x≤sup (proj2 is-sup) uz } , m04 ⟫ + m08 : {z : Ordinal} → (fcz : FClosure A f y z ) → z <= ZChain.supf zc b + m08 {z} fcz = ZChain.fcy<sup zc (o<→≤ b<A) fcz + m09 : {s z1 : Ordinal} → ZChain.supf zc s o< ZChain.supf zc b + → FClosure A f (ZChain.supf zc s) z1 → z1 <= ZChain.supf zc b + m09 {s} {z} s<b fcz = order b<A s<b fcz + m06 : ChainP A f mf ay supf b + m06 = record { fcy<sup = m08 ; order = m09 ; supu=u = m05 } + ... | no lim = record { is-max = is-max ; order = order } where + is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay supf x) a → + b o< x → (ab : odef A b) → + HasPrev A (UnionCF A f mf ay supf x) f b ∨ IsSUP A (UnionCF A f mf ay supf b) ab → + * a < * b → odef (UnionCF A f mf ay supf x) b + is-max {a} {b} ua b<x ab P a<b with ODC.or-exclude O P + is-max {a} {b} ua b<x ab P a<b | case1 has-prev = is-max-hp x {a} {b} ua ab has-prev a<b + is-max {a} {b} ua b<x ab P a<b | case2 is-sup with IsSUP.x≤sup (proj2 is-sup) (init-uchain A f mf ay ) + ... | case1 b=y = ⟪ subst (λ k → odef A k ) b=y ay , ch-init (subst (λ k → FClosure A f y k ) b=y (init ay refl )) ⟫ + ... | case2 y<b = ⟪ ab , ch-is-sup b sb<sx m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where + m09 : b o< & A + m09 = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab)) + sb<sx : supf b o< supf x + sb<sx = ? + m07 : {z : Ordinal} → FClosure A f y z → z <= ZChain.supf zc b + m07 {z} fc = ZChain.fcy<sup zc (o<→≤ m09) fc + m08 : {s z1 : Ordinal} → ZChain.supf zc s o< ZChain.supf zc b → FClosure A f (ZChain.supf zc s) z1 → z1 <= ZChain.supf zc b - m09 {s} {z} s<b fcz = order b<A s<b fcz - m06 : ChainP A f mf ay supf b - m06 = record { fcy<sup = m08 ; order = m09 ; supu=u = m05 } - ... | no lim = record { is-max = is-max ; order = order } where - is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay supf x) a → - ZChain.supf zc b o< ZChain.supf zc x → (ab : odef A b) → - HasPrev A (UnionCF A f mf ay supf x) f b ∨ IsSUP A (UnionCF A f mf ay supf b) ab → - * a < * b → odef (UnionCF A f mf ay supf x) b - is-max {a} {b} ua sb<sx ab P a<b with ODC.or-exclude O P - is-max {a} {b} ua sb<sx ab P a<b | case1 has-prev = is-max-hp x {a} {b} ua ab has-prev a<b - is-max {a} {b} ua sb<sx ab P a<b | case2 is-sup with IsSUP.x≤sup (proj2 is-sup) (init-uchain A f mf ay ) - ... | case1 b=y = ⟪ subst (λ k → odef A k ) b=y ay , ch-init (subst (λ k → FClosure A f y k ) b=y (init ay refl )) ⟫ - ... | case2 y<b = ⟪ ab , ch-is-sup b sb<sx m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where - m09 : b o< & A - m09 = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab)) - b<x : b o< x - b<x = ZChain.supf-inject zc sb<sx - m07 : {z : Ordinal} → FClosure A f y z → z <= ZChain.supf zc b - m07 {z} fc = ZChain.fcy<sup zc (o<→≤ m09) fc - m08 : {s z1 : Ordinal} → ZChain.supf zc s o< ZChain.supf zc b - → FClosure A f (ZChain.supf zc s) z1 → z1 <= ZChain.supf zc b - m08 {s} {z1} s<b fc = order m09 s<b fc - m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) f b - m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay = - chain-mono1 (o<→≤ b<x) (HasPrev.ay nhp) - ; x=fy = HasPrev.x=fy nhp } ) - m05 : ZChain.supf zc b ≡ b - m05 = ZChain.sup=u zc ab (o<→≤ m09) ⟪ record { x≤sup = λ lt → IsSUP.x≤sup (proj2 is-sup) lt } , m04 ⟫ -- ZChain on x - m06 : ChainP A f mf ay supf b - m06 = record { fcy<sup = m07 ; order = m08 ; supu=u = m05 } + m08 {s} {z1} s<b fc = order m09 s<b fc + m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) f b + m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay = + chain-mono1 (o<→≤ b<x) (HasPrev.ay nhp) + ; x=fy = HasPrev.x=fy nhp } ) + m05 : ZChain.supf zc b ≡ b + m05 = ZChain.sup=u zc ab (o<→≤ m09) ⟪ record { x≤sup = λ lt → IsSUP.x≤sup (proj2 is-sup) lt } , m04 ⟫ -- ZChain on x + m06 : ChainP A f mf ay supf b + m06 = record { fcy<sup = m07 ; order = m08 ; supu=u = m05 } uchain : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → HOD uchain f mf {y} ay = record { od = record { def = λ x → FClosure A f y x } ; odmax = & A ; <odmax = @@ -1331,16 +1331,15 @@ fixpoint : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) (zc : ZChain A f mf as0 (& A) ) → (sp1 : MinSUP A (ZChain.chain zc)) - → (ssp<as : ZChain.supf zc (MinSUP.sup sp1) o< ZChain.supf zc (& A)) → f (MinSUP.sup sp1) ≡ MinSUP.sup sp1 - fixpoint f mf zc sp1 ssp<as = z14 where + fixpoint f mf zc sp1 = z14 where chain = ZChain.chain zc supf = ZChain.supf zc sp : Ordinal sp = MinSUP.sup sp1 asp : odef A sp asp = MinSUP.asm sp1 - z10 : {a b : Ordinal } → (ca : odef chain a ) → supf b o< supf (& A) → (ab : odef A b ) + z10 : {a b : Ordinal } → (ca : odef chain a ) → b o< (& A) → (ab : odef A b ) → HasPrev A chain f b ∨ IsSUP A (UnionCF A f mf as0 (ZChain.supf zc) b) ab → * a < * b → odef chain b z10 = ZChain1.is-max (SZ1 f mf as0 zc (& A) ) @@ -1349,7 +1348,7 @@ z12 : odef chain sp z12 with o≡? (& s) sp ... | yes eq = subst (λ k → odef chain k) eq ( ZChain.chain∋init zc ) - ... | no ne = ZChain1.is-max (SZ1 f mf as0 zc (& A)) {& s} {sp} ( ZChain.chain∋init zc ) ssp<as asp (case2 z19 ) z13 where + ... | no ne = ZChain1.is-max (SZ1 f mf as0 zc (& A)) {& s} {sp} ( ZChain.chain∋init zc ) (z09 asp) asp (case2 z19 ) z13 where z13 : * (& s) < * sp z13 with MinSUP.x≤sup sp1 ( ZChain.chain∋init zc ) ... | case1 eq = ⊥-elim ( ne eq ) @@ -1398,7 +1397,7 @@ z04 nmx zc = <-irr0 {* (cf nmx c)} {* c} (subst (λ k → odef A k ) (sym &iso) (proj1 (is-cf nmx (MinSUP.asm msp1 )))) (subst (λ k → odef A k) (sym &iso) (MinSUP.asm msp1) ) - (case1 ( cong (*)( fixpoint (cf nmx) (cf-is-≤-monotonic nmx ) zc msp1 ss<sa ))) -- x ≡ f x ̄ + (case1 ( cong (*)( fixpoint (cf nmx) (cf-is-≤-monotonic nmx ) zc msp1 ))) -- x ≡ f x ̄ (proj1 (cf-is-<-monotonic nmx c (MinSUP.asm msp1 ))) where -- x < f x supf = ZChain.supf zc @@ -1406,48 +1405,6 @@ msp1 = msp0 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc c : Ordinal c = MinSUP.sup msp1 - c<A : c o< & A - c<A = ∈∧P→o< ⟪ MinSUP.asm msp1 , lift true ⟫ - asc : odef A (supf c) - asc = ZChain.asupf zc - - spd : MinSUP A (uchain (cf nmx) (cf-is-≤-monotonic nmx) asc ) - spd = ysup (cf nmx) (cf-is-≤-monotonic nmx) asc - d = MinSUP.sup spd - d<A : d o< & A - d<A = ∈∧P→o< ⟪ MinSUP.asm spd , lift true ⟫ - msup : MinSUP A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 supf d) - msup = ZChain.minsup zc (o<→≤ d<A) - sd=ms : supf d ≡ MinSUP.sup ( ZChain.minsup zc (o<→≤ d<A) ) - sd=ms = ZChain.supf-is-minsup zc (o<→≤ d<A) - - sc<<d : {mc : Ordinal } → (asc : odef A (supf mc)) → (spd : MinSUP A (uchain (cf nmx) (cf-is-≤-monotonic nmx) asc )) - → supf mc << MinSUP.sup spd - sc<<d {mc} asc spd with MinSUP.x≤sup spd (init asc refl) - ... | case1 eq = ? - ... | case2 lt = ? - - ss<sa : supf c o< supf (& A) - ss<sa with osuc-≡< ( ZChain.supf-mono zc (o<→≤ c<A)) - ... | case2 sc<sa = sc<sa - ... | case1 sc=sa = ⊥-elim ( nmx record { maximal = * d ; as = subst (λ k → odef A k) (sym &iso) (MinSUP.asm spd) - ; ¬maximal<x = λ {x} ax → subst₂ (λ j k → ¬ ( j < k)) refl *iso (zc10 sc=sa ax) } ) where - zc10 : supf c ≡ supf (& A) → {x : Ordinal } → odef A x → ¬ ( d << x ) - zc10 = ? where - zc11 : {z : Ordinal } → odef (ZChain.chain zc) z → supf z o< supf (& A) - zc11 = ? - sc≤c : c o≤ supf c - sc≤c = MinSUP.minsup msp1 ? ? - sc=c : supf c ≡ c - sc=c = ? - d≤c : c o≤ d - d≤c = MinSUP.minsup msp1 ? ? - -- supf x o≤ supf c → supf x ≡ supf c ∨ supf x o< supf c - -- c << x → x is sup of chain or x = f ( .. ( f c )) - -- c o≤ x (by minimulity) - -- odef chain z → supf z o< supf (& A) ≡ supf c → supf c is sup of chain, by minimulity c o≤ supf c - -- supf c o≤ supf (supf c) o≤ supf x o≤ supf (& A) - -- supf c ≡ supf (supf c) ≡ supf x ≡ supf (& A) means supf of FClosure of (supf c) is Maximal zorn00 : Maximal A zorn00 with is-o∅ ( & HasMaximal ) -- we have no Level (suc n) LEM