# HG changeset patch # User Shinji KONO # Date 1595649268 -32400 # Node ID 19687f3304c9f2d07d2fb6c286e16dcf07048db1 # Parent 8b0715e28b33b8028c5e9283a5e99dc52bdd2b0a ... diff -r 8b0715e28b33 -r 19687f3304c9 LEMC.agda --- a/LEMC.agda Sat Jul 25 09:09:00 2020 +0900 +++ b/LEMC.agda Sat Jul 25 12:54:28 2020 +0900 @@ -126,6 +126,7 @@ -- -- from https://math.stackexchange.com/questions/2973777/is-it-possible-to-prove-regularity-with-transfinite-induction-only -- + -- FIXME : don't use HOD make this level n, so we can remove ε-induction1 record Minimal (x : HOD) : Set (suc n) where field min : HOD @@ -157,7 +158,7 @@ min2 : Minimal u min2 = prev (proj1 y1prop) u (proj2 y1prop) Min2 : (x : HOD) → (u : HOD ) → (u∋x : u ∋ x) → Minimal u - Min2 x u u∋x = (ε-induction {λ y → (u : HOD ) → (u∋x : u ∋ y) → Minimal u } induction x u u∋x ) + Min2 x u u∋x = (ε-induction1 {λ y → (u : HOD ) → (u∋x : u ∋ y) → Minimal u } induction x u u∋x ) cx : {x : HOD} → ¬ (x =h= od∅ ) → choiced (od→ord x ) cx {x} nx = choice-func x nx minimal : (x : HOD ) → ¬ (x =h= od∅ ) → HOD diff -r 8b0715e28b33 -r 19687f3304c9 OD.agda --- a/OD.agda Sat Jul 25 09:09:00 2020 +0900 +++ b/OD.agda Sat Jul 25 12:54:28 2020 +0900 @@ -167,6 +167,9 @@ odef→o< : {X : HOD } → {x : Ordinal } → odef X x → x o< od→ord X odef→o< {X} {x} lt = o<-subst {_} {_} {x} {od→ord X} ( c<→o< ( odef-subst {X} {x} lt (sym oiso) (sym diso) )) diso diso +odefo→o< : {X y : Ordinal } → odef (ord→od X) y → y o< X +odefo→o< {X} {y} lt = subst₂ (λ j k → j o< k ) diso diso ( c<→o< (subst (λ k → odef (ord→od X) k ) (sym diso ) lt )) + -- avoiding lv != Zero error orefl : { x : HOD } → { y : Ordinal } → od→ord x ≡ y → od→ord x ≡ y orefl refl = refl @@ -319,15 +322,15 @@ ε-induction-ord : (ox : Ordinal) { oy : Ordinal } → oy o< ox → ψ (ord→od oy) ε-induction-ord ox {oy} lt = TransFinite {λ oy → ψ (ord→od oy)} induction oy --- level trick (what'a shame) --- ε-induction1 : { ψ : HOD → Set (suc n)} --- → ( {x : HOD } → ({ y : HOD } → x ∋ y → ψ y ) → ψ x ) --- → (x : HOD ) → ψ x --- ε-induction1 {ψ} ind x = subst (λ k → ψ k ) oiso (ε-induction-ord (osuc (od→ord x)) <-osuc ) where --- induction : (ox : Ordinal) → ((oy : Ordinal) → oy o< ox → ψ (ord→od oy)) → ψ (ord→od ox) --- induction ox prev = ind ( λ {y} lt → subst (λ k → ψ k ) oiso (prev (od→ord y) (o<-subst (c<→o< lt) refl diso ))) --- ε-induction-ord : (ox : Ordinal) { oy : Ordinal } → oy o< ox → ψ (ord→od oy) --- ε-induction-ord ox {oy} lt = TransFinite1 {λ oy → ψ (ord→od oy)} induction oy +-- level trick (what'a shame) for LEM / minimal +ε-induction1 : { ψ : HOD → Set (suc n)} + → ( {x : HOD } → ({ y : HOD } → x ∋ y → ψ y ) → ψ x ) + → (x : HOD ) → ψ x +ε-induction1 {ψ} ind x = subst (λ k → ψ k ) oiso (ε-induction-ord (osuc (od→ord x)) <-osuc ) where + induction : (ox : Ordinal) → ((oy : Ordinal) → oy o< ox → ψ (ord→od oy)) → ψ (ord→od ox) + induction ox prev = ind ( λ {y} lt → subst (λ k → ψ k ) oiso (prev (od→ord y) (o<-subst (c<→o< lt) refl diso ))) + ε-induction-ord : (ox : Ordinal) { oy : Ordinal } → oy o< ox → ψ (ord→od oy) + ε-induction-ord ox {oy} lt = TransFinite1 {λ oy → ψ (ord→od oy)} induction oy Select : (X : HOD ) → ((x : HOD ) → Set n ) → HOD Select X ψ = record { od = record { def = λ x → ( odef X x ∧ ψ ( ord→od x )) } ; odmax = odmax X ;