{-# OPTIONS --allow-unsolved-metas #-} open import Level open import Ordinals module zorn {n : Level } (O : Ordinals {n}) where open import zf open import logic -- open import partfunc {n} O import OD 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 TotalOrderSet : ( A : HOD ) → (_<_ : (x y : HOD) → Set n ) → Set (suc n) TotalOrderSet A _<_ = Trichotomous (λ (x : Element A) y → elm x ≡ elm y ) (λ x y → elm x < elm y ) PartialOrderSet : ( A : HOD ) → (_<_ : (x y : HOD) → Set n ) → Set (suc n) PartialOrderSet A _<_ = (a b : Element A) → (elm a < elm b → (¬ (elm b < elm a) ∧ (¬ (elm a ≡ elm b) ))) ∧ (elm a ≡ elm b → (¬ elm a < elm b) ∧ (¬ elm b < elm a)) me : { A a : HOD } → A ∋ a → Element A me {A} {a} lt = record { elm = a ; is-elm = lt } record SUP ( A B : HOD ) (_<_ : (x y : HOD) → Set n ) : Set (suc n) where field sup : HOD A∋maximal : A ∋ sup x≤sup : {x : HOD} → B ∋ x → (x ≡ sup ) ∨ (x < sup ) -- B is Total record Maximal ( A : HOD ) (_<_ : (x y : HOD) → Set n ) : Set (suc n) where field maximal : HOD A∋maximal : A ∋ maximal ¬maximal ¬a ¬b c with osuc-≡< s ¬a ¬b c = od∅ total : TotalOrderSet Bx _<_ total ex ey with is-elm ex | is-elm ey ... | case1 eq | case1 eq1 = tri≈ {!!} {!!} {!!} ... | case1 x | case2 x₁ = tri< {!!} {!!} {!!} ... | case2 x | case1 x₁ = {!!} ... | case2 x | case2 x₁ = ZChain.total zc1 (me x) (me x₁) ind nomx x prev | no ¬ox with trio< (& A) x --- limit ordinal case ... | tri< a ¬b ¬c = record { B = ZChain.B zc1 ; B⊆A = ZChain.B⊆A zc1 ; total = ZChain.total zc1 ; fb = ZChain.fb zc1 ; B∋fb = ZChain.B∋fb zc1 ; ¬x≤sup = {!!} } where zc1 : ZChain A (& A) _<_ zc1 = prev (& A) a ... | tri≈ ¬a b ¬c = record { B = B ; B⊆A = B⊆A ; total = {!!} ; fb = {!!} ; B∋fb = {!!} ; ¬x≤sup = {!!} } where B : HOD -- Union (previous B) B = record { od = record { def = λ y → (y o< x) ∧ ((y ¬a ¬b c with ODC.∋-p O A (* x) ... | no ¬Ax = {!!} where B : HOD -- Union (previous B) B = record { od = record { def = λ y → (y o< x) ∧ ((y