comparison src/zorn.agda @ 928:330303f0c688

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 22 Oct 2022 11:15:17 +0900
parents 0f2a85826cc7
children a6d97e6e5309
comparison
equal deleted inserted replaced
927:0f2a85826cc7 928:330303f0c688
694 utotal f mf {y} ay {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where 694 utotal f mf {y} ay {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where
695 uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) ) 695 uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) )
696 uz01 = fcn-cmp y f mf ca cb 696 uz01 = fcn-cmp y f mf ca cb
697 697
698 ysup : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) 698 ysup : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y)
699 → SUP A (uchain f mf ay) 699 → MinSUP A (uchain f mf ay)
700 ysup f mf {y} ay = supP (uchain f mf ay) (λ lt → A∋fc y f mf lt) (utotal f mf ay) 700 ysup f mf {y} ay = minsupP (uchain f mf ay) (λ lt → A∋fc y f mf lt) (utotal f mf ay)
701 701
702 SUP⊆ : { B C : HOD } → B ⊆' C → SUP A C → SUP A B 702 SUP⊆ : { B C : HOD } → B ⊆' C → SUP A C → SUP A B
703 SUP⊆ {B} {C} B⊆C sup = record { sup = SUP.sup sup ; as = SUP.as sup ; x<sup = λ lt → SUP.x<sup sup (B⊆C lt) } 703 SUP⊆ {B} {C} B⊆C sup = record { sup = SUP.sup sup ; as = SUP.as sup ; x<sup = λ lt → SUP.x<sup sup (B⊆C lt) }
704 704
705 record xSUP (B : HOD) (x : Ordinal) : Set n where 705 record xSUP (B : HOD) (x : Ordinal) : Set n where
1195 ... | no lim = zc5 where 1195 ... | no lim = zc5 where
1196 1196
1197 pzc : (z : Ordinal) → z o< x → ZChain A f mf ay z 1197 pzc : (z : Ordinal) → z o< x → ZChain A f mf ay z
1198 pzc z z<x = prev z z<x 1198 pzc z z<x = prev z z<x
1199 1199
1200 ysp = & (SUP.sup (ysup f mf ay)) 1200 ysp = MinSUP.sup (ysup f mf ay)
1201 1201
1202 supf0 : Ordinal → Ordinal 1202 supf0 : Ordinal → Ordinal
1203 supf0 z with trio< z x 1203 supf0 z with trio< z x
1204 ... | tri< a ¬b ¬c = ZChain.supf (pzc (osuc z) (ob<x lim a)) z 1204 ... | tri< a ¬b ¬c = ZChain.supf (pzc (osuc z) (ob<x lim a)) z
1205 ... | tri≈ ¬a b ¬c = ysp 1205 ... | tri≈ ¬a b ¬c = ysp
1412 (proj1 (cf-is-<-monotonic nmx c (SUP.as sp1 ))) where -- x < f x 1412 (proj1 (cf-is-<-monotonic nmx c (SUP.as sp1 ))) where -- x < f x
1413 supf = ZChain.supf zc 1413 supf = ZChain.supf zc
1414 sp1 : SUP A (ZChain.chain zc) 1414 sp1 : SUP A (ZChain.chain zc)
1415 sp1 = sp0 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc 1415 sp1 = sp0 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc
1416 c = & (SUP.sup sp1) 1416 c = & (SUP.sup sp1)
1417 d : Ordinal 1417 z20 : c << cf nmx c
1418 d = cf nmx (supf c ) 1418 z20 = proj1 (cf-is-<-monotonic nmx c (SUP.as sp1) )
1419 z21 : d o< & A 1419 asc : odef A (supf c)
1420 z21 = ∈∧P→o< ⟪ proj2 (cf-is-<-monotonic nmx (supf c) (ZChain.asupf zc)) , lift true ⟫ 1420 asc = ZChain.asupf zc
1421 z20 : supf c << d 1421 spd : MinSUP A (uchain (cf nmx) (cf-is-≤-monotonic nmx) asc )
1422 z20 = proj1 (cf-is-<-monotonic nmx (supf c) (ZChain.asupf zc) ) 1422 spd = ysup (cf nmx) (cf-is-≤-monotonic nmx) asc
1423 d = MinSUP.sup spd
1424 d<A : d o< & A
1425 d<A = ∈∧P→o< ⟪ MinSUP.asm spd , lift true ⟫
1426 sd=ms : supf d ≡ MinSUP.sup ( ZChain.minsup zc (o<→≤ d<A) )
1427 sd=ms = ZChain.supf-is-minsup zc (o<→≤ d<A)
1428 sd=d : supf d ≡ d
1429 sd=d = ?
1430 sc<d : supf c << d
1431 sc<d = ? where
1432 z21 = proj1 ( cf-is-<-monotonic nmx ? ? )
1433 sco<d : supf c o< supf d
1434 sco<d = ?
1435
1423 ss<sa : supf c o< supf (& A) 1436 ss<sa : supf c o< supf (& A)
1424 ss<sa = ? 1437 ss<sa with osuc-≡< ( ZChain.supf-mono zc ? )
1438 ... | case2 lt = lt
1439 ... | case1 eq = ? -- where
1425 zorn00 : Maximal A 1440 zorn00 : Maximal A
1426 zorn00 with is-o∅ ( & HasMaximal ) -- we have no Level (suc n) LEM 1441 zorn00 with is-o∅ ( & HasMaximal ) -- we have no Level (suc n) LEM
1427 ... | no not = record { maximal = ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) ; as = zorn01 ; ¬maximal<x = zorn02 } where 1442 ... | no not = record { maximal = ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) ; as = zorn01 ; ¬maximal<x = zorn02 } where
1428 -- yes we have the maximal 1443 -- yes we have the maximal
1429 zorn03 : odef HasMaximal ( & ( ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) ) ) 1444 zorn03 : odef HasMaximal ( & ( ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) ) )