{-# OPTIONS --allow-unsolved-metas #-} open import Level open import Ordinals import OD module zorn {n : Level } (O : Ordinals {n}) (_<_ : (x y : OD.HOD O ) → Set n ) where open import zf open import logic -- open import partfunc {n} O open import Relation.Nullary open import Relation.Binary open import Data.Empty open import Relation.Binary open import Relation.Binary.Core open import Relation.Binary.PropositionalEquality import BAlgbra open inOrdinal O open OD O open OD.OD open ODAxiom odAxiom import OrdUtil import ODUtil open Ordinals.Ordinals O open Ordinals.IsOrdinals isOrdinal open Ordinals.IsNext isNext open OrdUtil O open ODUtil O import ODC open _∧_ open _∨_ open Bool open HOD record Element (A : HOD) : Set (suc n) where field elm : HOD is-elm : A ∋ elm open Element IsPartialOrderSet : ( A : HOD ) → Set (suc n) IsPartialOrderSet A = IsStrictPartialOrder _≡A_ _ ¬a ¬b c = tri> z17 (λ eq → z01 (incl (B⊆A z) (is-elm x)) (incl (B⊆A z) (is-elm y))(case1 eq) z15 ) z15 where z15 : elm y < elm x z15 = bx-monotonic z {y} {x} c z17 : elm x < elm y → ⊥ z17 lt = z01 (incl (B⊆A z) (is-elm x)) (incl (B⊆A z) (is-elm y))(case2 lt) z15 B-is-total : (z : ZChain A (& A) ) → IsTotalOrderSet (B z) B-is-total zc = record { isEquivalence = record { refl = refl ; sym = sym ; trans = trans } ; trans = λ {x} {y} {z} x max cannot happen ) -- ¬ A ∋ y use previous chain -- A ∋ y is use oridinaly min of y or previous -- y is limit ordinal -- has maximal in some lower use this -- no maximal in all lower -- & A < y A is a counter example of assumption -- A ∋ y is maximal use this -- ¬ A ∋ y use previous chain -- check some y ≤ max -- if none A < y is the counter example -- else use the ordinaly smallest max as next chain ind x prev with Oprev-p x ... | yes op with ODC.∋-p O A (* x) ... | no ¬Ax = {!!} where -- we have previous ordinal and ¬ A ∋ x, use previous Zchain px = Oprev.oprev op zc1 : ZChain A px zc1 with prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc) ... | t = {!!} z04 : {!!} -- (sup : HOD) (as : A ∋ sup) → & sup o< osuc x → sup < ZChain.fb zc1 as z04 sup as s ¬a ¬b c with osuc-≡< s ¬a ¬b c with ODC.∋-p O A (* x) ... | no ¬Ax = {!!} where ... | yes ax with is-o∅ (& (Gtx ax)) ... | yes nogt = ⊥-elim {!!} where -- no larger element, so it is maximal x-is-maximal : (m : Ordinal) → odef A m → ¬ (* x < * m) x-is-maximal m am = ¬x