# HG changeset patch # User Shinji KONO # Date 1651024903 -32400 # Node ID 3234a5f6bfcf4192f5bb76a0bb12e2ab59023063 # Parent f8eb56442f2ca4cb95735f86b40a5ea103ecc8f8 ... diff -r f8eb56442f2c -r 3234a5f6bfcf src/zorn.agda --- a/src/zorn.agda Wed Apr 27 09:08:25 2022 +0900 +++ b/src/zorn.agda Wed Apr 27 11:01:43 2022 +0900 @@ -191,17 +191,16 @@ SupCond : ( A B : HOD) → (B⊆A : B ⊆ A) → IsTotalOrderSet B → Set (Level.suc n) SupCond A B _ _ = SUP A B -record ZChain ( A : HOD ) {x : Ordinal} (ax : A ∋ * x) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f ) - (sup : (C : Ordinal ) → (* C ⊆ A) → IsTotalOrderSet (* C) → Ordinal) (z : Ordinal) : Set (Level.suc n) where +record ZChain ( A : HOD ) {x : Ordinal} (ax : odef A x) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f ) + (sup : (C : Ordinal ) → (* C ⊆ A) → IsTotalOrderSet (* C) → Ordinal) : Set (Level.suc n) where field chain : HOD chain⊆A : chain ⊆ A chain∋x : odef chain x - ¬chain∋x>z : { a : Ordinal } → z o< osuc a → ¬ odef chain a f-total : IsTotalOrderSet chain - f-next : {a : Ordinal } → odef chain a → a o< z → odef chain (f a) + f-next : {a : Ordinal } → odef chain a → odef chain (f a) f-immediate : { x y : Ordinal } → odef chain x → odef chain y → ¬ ( ( * x < * y ) ∧ ( * y < * (f x )) ) - is-max : {a b : Ordinal } → (ca : odef chain a ) → (ba : odef A b) → a o< z + is-max : {a b : Ordinal } → (ca : odef chain a ) → (ba : odef A b) → Prev< A chain ba f ∨ (sup (& chain) (subst (λ k → k ⊆ A) (sym *iso) chain⊆A) (subst (λ k → IsTotalOrderSet k) (sym *iso) f-total) ≡ b ) → * a < * b → odef chain b @@ -224,8 +223,6 @@ s = ODC.minimal O A (λ eq → ¬x<0 ( subst (λ k → o∅ o< k ) (=od∅→≡o∅ eq) 0 ¬a ¬b c = ⊥-elim z17 where z15 : (* (f ( & ( SUP.sup sp1 ))) ≡ SUP.sup sp1) ∨ (* (f ( & ( SUP.sup sp1 ))) < SUP.sup sp1) - z15 = SUP.xz = λ {a} xz zc0 (ordtrans (subst (λ k → px o< k ) (Oprev.oprev=x op) <-osuc ) xz zc0 (subst (λ k → k o< osuc a) b <-osuc ) za ) - ... | tri> ¬a ¬b c = ⊥-elim ( ZChain.¬chain∋x>z zc0 (ordtrans c <-osuc ) za ) - ... | yes ax = zc4 where -- we have previous ordinal and A ∋ x - px = Oprev.oprev op - zc0 : ZChain A sa f mf supO (Oprev.oprev op) - zc0 = prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc) + apx0 = subst (λ k → odef A k ) &iso apx + zc0 : ZChain A apx0 f mf supO + zc0 = prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) apx0 + ax0 : odef A (& (* x)) + ax0 = {!!} Afx : { x : Ordinal } → A ∋ * x → A ∋ * (f x) Afx {x} ax = (subst (λ k → odef A k ) (sym &iso) (proj2 (mf x (subst (λ k → odef A k ) &iso ax)))) -- x is in the previous chain, use the same -- x has some y which y < x ∧ f y ≡ x -- x has no y which y < x - zc4 : ZChain A sa f mf supO x + zc4 : ZChain A ax f mf supO zc4 with ODC.p∨¬p O ( Prev< A (ZChain.chain zc0) ax f ) ... | case1 y = zc7 where -- we have previous < chain = ZChain.chain zc0 - zc7 : ZChain A sa f mf supO x + zc7 : ZChain A ax f mf supO zc7 with ODC.∋-p O (ZChain.chain zc0) (* ( f x ) ) - ... | yes y = record { chain = ZChain.chain zc0 ; chain⊆A = ZChain.chain⊆A zc0 ; f-total = ZChain.f-total zc0 ; f-next = zc20 (ZChain.f-next zc0) - ; f-immediate = ZChain.f-immediate zc0 ; ¬chain∋x>z = z22 ; chain∋x = ZChain.chain∋x zc0 ; is-max = λ za ba az zc0 (ordtrans (subst (λ k → px o< k ) (Oprev.oprev=x op) <-osuc ) xz zc0 (subst (λ k → k o< osuc a) b <-osuc ) za ) - ... | tri> ¬a ¬b c = ⊥-elim ( ZChain.¬chain∋x>z zc0 (ordtrans c <-osuc ) za ) + ... | tri≈ ¬a b ¬c = {!!} + ... | tri> ¬a ¬b c = {!!} z21 : {a : Ordinal} → odef (ZChain.chain zc0) a → a o< x → odef (ZChain.chain zc0) (f a) z21 {a} za a ¬a ¬b c = ⊥-elim ( o<> c az = {!!} ; is-max = {!!} } where + ; f-total = zc6 ; f-next = {!!} ; f-immediate = {!!} ; chain∋x = case1 {!!} ; ¬chain∋x>z = {!!} ; is-max = {!!} } where -- extend with f x -- cahin ∋ y ∧ chain ∋ f y ∧ x ≡ f ( f y ) zc5 : HOD zc5 = record { od = record { def = λ z → odef (ZChain.chain zc0) z ∨ (z ≡ f x) } ; odmax = & A ; (z01 ax (Afx ax) (case2 zc14)) (λ lt → z01 (Afx ax) ax (case1 lt) zc14) zc14 where + ... | ⟪ case2 x (z01 ax0 (Afx ax0) (case2 zc14)) (λ lt → z01 (Afx ax0) ax0 (case1 lt) zc14) zc14 where zc14 : * x < * (f x) zc14 = subst (λ k → * x < k ) (subst (λ k → * (f x) ≡ k ) *iso (cong (*) (sym &iso ))) x ¬a ¬b c = record { chain = uzc ; chain⊆A = record { incl = λ {x} lt → proj1 lt } ; f-total = {!!} ; f-next = {!!} - ; f-immediate = {!!} ; chain∋x = {!!} ; is-max = {!!} } where + ... | tri> ¬a ¬b c = {!!} where uzc : HOD uzc = UZFChain f mf x prev zorn00 : Maximal A @@ -443,32 +426,16 @@ zorn01 = proj1 zorn03 zorn02 : {x : HOD} → A ∋ x → ¬ (ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) < x) zorn02 {x} ax m