Mercurial > hg > Members > kono > Proof > ZF-in-agda
changeset 615:9ac3789bf058
ind-mono
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 17 Jun 2022 23:19:19 +0900 |
parents | 9bdb671cbffd |
children | fae0fa6184d5 |
files | src/zorn.agda |
diffstat | 1 files changed, 36 insertions(+), 40 deletions(-) [+] |
line wrap: on
line diff
--- a/src/zorn.agda Tue Jun 14 18:24:17 2022 +0900 +++ b/src/zorn.agda Fri Jun 17 23:19:19 2022 +0900 @@ -420,6 +420,9 @@ initial {i} (init ai) = case1 refl initial .{f x} (fsuc x lt) = {!!} + chain-mono : ( A : HOD ) {x y : Ordinal} ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f ) { a b : Ordinal } + → (zx : ZChain A y f a ) → (zy : ZChain A y f b) → a o≤ b → b o< osuc x → ZChain.chain zx ⊆' ZChain.chain zy + -- -- create all ZChains under o< x -- @@ -619,51 +622,44 @@ u-initial {z} u = ZChain.initial ( uzc u ) (UZFChain.chain∋z u) u-chain∋x : odef Uz y u-chain∋x = record { u = y ; u<x = y<x ; chain∋z = ZChain.chain∋x (prev y y<x ay ) } - u-mono : ( a b : Ordinal ) → b o< x → a o< osuc b → (za : ZChain A y f a) (zb : ZChain A y f b) → ZChain.chain za ⊆' ZChain.chain zb - u-mono a b b<x a≤b za zb {i} zai = TransFinite0 {λ i → odef (chain za) i → odef (chain zb) i } uind i zai where - open ZChain - uind : (i : Ordinal) - → ((j : Ordinal) → j o< i → odef (chain za) j → odef (chain zb) j) - → odef (chain za) i → odef (chain zb) i - uind i previ zai = um01 where - FC : Fc∨sup A (chain⊆A za (chain∋x za)) f (& (chain za)) a i - FC = fc∨sup za zai - um01 : odef (chain zb) i - um01 with FC - ... | Finit i=y = subst (λ k → odef (chain zb) k ) (sym i=y) ( chain∋x zb ) - ... | Fsup {p} {i} p<i pFC sup i≤b = cb∋i where - i-asup : (z : Ordinal) → FClosure A f p z → * z < * i - i-asup = FSup.sup sup - um06 : odef (chain za) p - um06 = subst (λ k → odef k p ) *iso ( FSup.chain∋p sup ) - -- FClosure A f p is a subset of chain zb - um07 : (i2 : Ordinal) → FClosure A f p i2 → odef (chain zb) i2 - um07 i2 (init ap ) = previ p p<i um06 - um07 i (fsuc j fc) = f-next zb ( um07 j fc ) - um08 : odef (chain zb) p - um08 = previ p p<i um06 - cl : HOD - cl = record { od = record { def = λ x → FClosure A f p x } ; odmax = & A ; <odmax = cl<A } where - cl<A : {i2 : Ordinal} → FClosure A f p i2 → i2 o< & A - cl<A {i2} cl = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k) (sym &iso) (A∋fc p f mf cl) ) ) - cb∋i : odef (chain zb) i - cb∋i = ZChain.chain∋sup zb cl (λ {i2} lt → um07 i2 lt) (chain⊆A za zai) {!!} record { x<sup = λ {i2} cl → case2 (i-asup i2 cl) } - ... | Fc {p} {i} p<i pFC FC with (FChain.fc∨sup FC) - ... | fc = um02 i fc where - um02 : (i2 : Ordinal) → FClosure A f p i2 → odef (chain zb) i2 - um02 i2 (init ap ) = previ p p<i um04 where - um04 : odef (chain za) p - um04 = subst (λ k → odef k p ) *iso ( FChain.chain∋p FC ) - um02 i (fsuc j fc) = f-next zb ( um02 j fc ) + u-mono : ( a b : Ordinal ) → b o< osuc x → a o< osuc b → (za : ZChain A y f a) (zb : ZChain A y f b) → ZChain.chain za ⊆' ZChain.chain zb + u-mono a b b≤x a≤b za zb {i} zai = chain-mono A f mf za zb a≤b b≤x zai u-total : IsTotalOrderSet Uz u-total {x} {y} ux uy with trio< (UZFChain.u ux) (UZFChain.u uy) ... | tri< a ¬b ¬c = ZChain.f-total (uzc uy) (u-mono (UZFChain.u ux) (UZFChain.u uy) - (UZFChain.u<x uy) (ordtrans a <-osuc ) (uzc ux) (uzc uy) (UZFChain.chain∋z ux)) (UZFChain.chain∋z uy) + (ordtrans (UZFChain.u<x uy) <-osuc) (ordtrans a <-osuc ) (uzc ux) (uzc uy) (UZFChain.chain∋z ux)) (UZFChain.chain∋z uy) ... | tri≈ ¬a b ¬c = ZChain.f-total (uzc ux) (UZFChain.chain∋z ux) (u-mono (UZFChain.u uy) (UZFChain.u ux) - (UZFChain.u<x ux) (subst (λ k → k o< osuc (UZFChain.u ux)) b <-osuc) (uzc uy) (uzc ux) (UZFChain.chain∋z uy)) + (ordtrans (UZFChain.u<x ux) <-osuc) (subst (λ k → k o< osuc (UZFChain.u ux)) b <-osuc) (uzc uy) (uzc ux) (UZFChain.chain∋z uy)) ... | tri> ¬a ¬b c = ZChain.f-total (uzc ux) (UZFChain.chain∋z ux) (u-mono (UZFChain.u uy) (UZFChain.u ux) - (UZFChain.u<x ux) (ordtrans c <-osuc) (uzc uy) (uzc ux) (UZFChain.chain∋z uy)) - + (ordtrans (UZFChain.u<x ux) <-osuc) (ordtrans c <-osuc) (uzc uy) (uzc ux) (UZFChain.chain∋z uy)) + + ind-mono : (A : HOD) (x y : Ordinal ) {b : Ordinal } ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) → (zb : ZChain A y f b) → + (a : Ordinal) + → ((c : Ordinal) → c o< a → c o≤ b → b o≤ x → (zc : ZChain A y f c) {i : Ordinal} → odef (ZChain.chain zc) i → odef (ZChain.chain zb) i) + → a o≤ b → b o≤ x → (za : ZChain A y f a) {i : Ordinal} → odef (ZChain.chain za) i → odef (ZChain.chain zb) i + ind-mono A x y {b} f mf zb a prev a≤b b≤x za {i} zai with Oprev-p a + ... | yes op = mc00 where + open ZChain + px = Oprev.oprev op + zc0 : ZChain A y f (Oprev.oprev op) + zc0 = ? + mc00 : odef (chain zb) i + mc00 with ODC.∋-p O A (* a) + ... | no noax = {!!} + ... | yes ax with ODC.p∨¬p O ( HasPrev A (ZChain.chain zc0) ax f ) + ... | case1 pr = {!!} + ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A (ZChain.chain zc0) ax ) + ... | case1 is-sup = {!!} -- x is a sup of zc0 + ... | case2 ¬x=sup = {!!} + ... | no ¬ox with trio< x y + ... | tri< a ¬b ¬c = {!!} + ... | tri≈ ¬a b ¬c = {!!} + ... | tri> ¬a ¬b y<x = {!!} + + chain-mono A {x} {y} f mf {a} {b} za zb a≤b b≤x = TransFinite {λ a → + a o≤ b → b o≤ x → (za : ZChain A y f a) → {i : Ordinal } → odef (ZChain.chain za) i → odef (ZChain.chain zb) i } + (ind-mono A x y f mf zb) a a≤b b≤x za + zorn00 : Maximal A zorn00 with is-o∅ ( & HasMaximal ) -- we have no Level (suc n) LEM ... | no not = record { maximal = ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) ; A∋maximal = zorn01 ; ¬maximal<x = zorn02 } where