{-# OPTIONS --allow-unsolved-metas #-} open import Level open import Ordinals module ODC {n : Level } (O : Ordinals {n} ) where open import zf open import Data.Nat renaming ( zero to Zero ; suc to Suc ; ℕ to Nat ; _⊔_ to _n⊔_ ) open import Relation.Binary.PropositionalEquality open import Data.Nat.Properties open import Data.Empty open import Relation.Nullary open import Relation.Binary open import Relation.Binary.Core import OrdUtil open import logic open import nat import OD import ODUtil open inOrdinal O open OD O open OD.OD open OD._==_ open ODAxiom odAxiom open ODUtil O open Ordinals.Ordinals O open Ordinals.IsOrdinals isOrdinal open Ordinals.IsNext isNext open OrdUtil O open HOD open _∧_ postulate -- mimimul and x∋minimal is an Axiom of choice minimal : (x : HOD ) → ¬ (x =h= od∅ )→ HOD -- this should be ¬ (x =h= od∅ )→ ∃ ox → x ∋ Ord ox ( minimum of x ) x∋minimal : (x : HOD ) → ( ne : ¬ (x =h= od∅ ) ) → odef x ( & ( minimal x ne ) ) -- minimality (proved by ε-induction with LEM) minimal-1 : (x : HOD ) → ( ne : ¬ (x =h= od∅ ) ) → (y : HOD ) → ¬ ( odef (minimal x ne) (& y)) ∧ (odef x (& y) ) -- -- Axiom of choice in intutionistic logic implies the exclude middle -- https://plato.stanford.edu/entries/axiom-choice/#AxiChoLog -- pred-od : ( p : Set n ) → HOD pred-od p = record { od = record { def = λ x → (x ≡ o∅) ∧ p } ; odmax = osuc o∅; ¬a ¬b c = yes c open import Relation.Binary.HeterogeneousEquality as HE -- using (_≅_;refl) 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 ) me : { A a : HOD } → A ∋ a → Element A me {A} {a} lt = record { elm = a ; is-elm = lt } -- elm-cmp : {A a b : HOD} → {_<_ : (x y : HOD) → Set n } → A ∋ a → A ∋ b → TotalOrderSet A _<_ → Tri _ _ _ -- elm-cmp {A} {a} {b} ax bx cmp = cmp (me ax) (me bx) 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 ) record Maximal ( A : HOD ) (_<_ : (x y : HOD) → Set n ) : Set (suc n) where field maximal : HOD A∋maximal : HOD ¬maximal ¬a ¬b c = ¬b a=b z01 {B} {a} {b} Tri B∋a B∋b (case2 a ¬a ¬b c = ¬a a ¬a ¬b c = {!!} zorn00 : Maximal A _<_ zorn00 with is-o∅ ( & HasMaximal ) ... | no not = record { maximal = minimal HasMaximal (λ eq → not (=od∅→≡o∅ eq)) ; A∋maximal = {!!}; ¬maximal