# HG changeset patch # User Shinji KONO # Date 1684574902 -32400 # Node ID 302cfb533201cb79a60777849bbb58e71db5a59c # Parent 45cd80181a293bb12846f95e4a74496bcc341c0f fix Replacement diff -r 45cd80181a29 -r 302cfb533201 src/OD.agda --- a/src/OD.agda Sat May 20 09:48:37 2023 +0900 +++ b/src/OD.agda Sat May 20 18:28:22 2023 +0900 @@ -73,7 +73,7 @@ -- bound on each HOD. -- -- In classical Set Theory, sup is defined by Uion, since we are working on constructive logic, --- we need explict assumption on sup. +-- we need explict assumption on sup for unrestricted Replacement. -- -- ==→o≡ is necessary to prove axiom of extensionality. @@ -101,21 +101,20 @@ *iso : {x : HOD } → * ( & x ) ≡ x &iso : {x : Ordinal } → & ( * x ) ≡ x ==→o≡ : {x y : HOD } → (od x == od y) → x ≡ y - sup-o : (A : HOD) → ( ( x : Ordinal ) → def (od A) x → Ordinal ) → Ordinal -- required in Replace - sup-o≤ : (A : HOD) → { ψ : ( x : Ordinal ) → def (od A) x → Ordinal } → ∀ {x : Ordinal } → (lt : def (od A) x ) → ψ x lt o≤ sup-o A ψ ∋-irr : {X : HOD} {x : Ordinal } → (a b : def (od X) x) → a ≅ b --- possible order restriction (required in the axiom of infinite ) - ho< : {x : HOD} → & x o< next (odmax x) - --- sup-o may contradict --- If we have open monotonic function in Ordinal, there is no sup-o. --- for example, if we may have countable sequence of Ordinal, which contains some ordinal larger than any given Ordinal. --- This happens when we have a coutable model. In this case, we have to have codomain restriction in Replacement axiom. --- that is, Replacement axiom does not create new ZF set. postulate odAxiom : ODAxiom open ODAxiom odAxiom +-- possible order restriction (required in the axiom of infinite ) + +record ODAxiom-ho< : Set (suc n) where + field + ho< : {x : HOD} → & x o< next (odmax x) + +postulate odAxiom-ho< : ODAxiom-ho< +open ODAxiom-ho< odAxiom-ho< + -- odmax minimality -- -- since we have ==→o≡ , so odmax have to be unique. We should have odmaxmin in HOD. @@ -349,49 +348,59 @@ union← : (X z : HOD) (X∋z : Union X ∋ z) → ¬ ( (u : HOD ) → ¬ ((X ∋ u) ∧ (u ∋ z ))) union← X z UX∋z not = ⊥-elim ( not (* (Own.owner UX∋z)) ⟪ subst (λ k → odef X k) (sym &iso) ( Own.ao UX∋z) , Own.ox UX∋z ⟫ ) +record RCod (COD : HOD) (ψ : HOD → HOD) : Set (suc n) where + field + ≤COD : ∀ {x : HOD } → ψ x ⊆ COD + record Replaced (A : HOD) (ψ : Ordinal → Ordinal ) (x : Ordinal ) : Set n where field z : Ordinal az : odef A z x=ψz : x ≡ ψ z -Replace : HOD → (HOD → HOD) → HOD -Replace X ψ = record { od = record { def = λ x → Replaced X (λ z → & (ψ (* z))) x } ; odmax = rmax ; ) )) +-- _⊗_ : (A B : HOD) → HOD +-- A ⊗ B = Union ( Replace' B (λ b lb → Replace' A (λ a la → < a , b > ) record { ≤COD = ? } ) ? ) -product→ : {A B a b : HOD} → A ∋ a → B ∋ b → ( A ⊗ B ) ∋ < a , b > -product→ {A} {B} {a} {b} A∋a B∋b = record { owner = _ ; ao = lemma1 ; ox = subst (λ k → odef k _) (sym *iso) lemma2 } where - lemma1 : odef (Replace B (λ b₁ → Replace A (λ a₁ → < a₁ , b₁ >))) (& (Replace A (λ a₁ → < a₁ , b >))) - lemma1 = replacement← B b B∋b - lemma2 : odef (Replace A (λ a₁ → < a₁ , b >)) (& < a , b >) - lemma2 = replacement← A a A∋a +-- product→ : {A B a b : HOD} → A ∋ a → B ∋ b → ( A ⊗ B ) ∋ < a , b > +-- product→ {A} {B} {a} {b} A∋a B∋b = record { owner = _ ; ao = lemma1 ; ox = subst (λ k → odef k _) (sym *iso) lemma2 } where +-- lemma1 : odef (Replace' B (λ b₁ lb → Replace' A (λ a₁ la → < a₁ , b₁ >) ? ) ? ) (& (Replace' A (λ a₁ la → < a₁ , b >) ? )) +-- lemma1 = ? -- replacement← B b B∋b ? +-- lemma2 : odef (Replace' A (λ a₁ la → < a₁ , b >) ? ) (& < a , b >) +-- lemma2 = ? -- replacement← A a A∋a ? data ZFProduct (A B : HOD) : (p : Ordinal) → Set n where ab-pair : {a b : Ordinal } → odef A a → odef B b → ZFProduct A B ( & ( < * a , * b > ) ) ZFP : (A B : HOD) → HOD ZFP A B = record { od = record { def = λ x → ZFProduct A B x } - ; odmax = odmax ( A ⊗ B ) ; ¬a ¬b b ZFP→ {A} {B} {a} {b} aa bb = subst (λ k → ZFProduct A B k ) (cong₂ (λ j k → & < j , k >) *iso *iso ) ( ab-pair aa bb ) @@ -150,22 +153,23 @@ zp-iso0 {A} {B} {a} {b} pab = ⟪ subst₂ (λ j k → j ≡ k ) &iso &iso (cong (&) (proj1 (zp-iso1 pab) )) , subst₂ (λ j k → j ≡ k ) &iso &iso (cong (&) (proj2 (zp-iso1 pab) ) ) ⟫ -ZFP⊆⊗ : {A B : HOD} {x : Ordinal} → odef (ZFP A B) x → odef (A ⊗ B) x -ZFP⊆⊗ {A} {B} {px} ( ab-pair {a} {b} ax by ) = product→ (d→∋ A ax) (d→∋ B by) +-- ZFP⊆⊗ : {A B : HOD} {x : Ordinal} → odef (ZFP A B) x → odef (A ⊗ B) x +-- ZFP⊆⊗ {A} {B} {px} ( ab-pair {a} {b} ax by ) = product→ (d→∋ A ax) (d→∋ B by) -⊗⊆ZFP : {A B x : HOD} → ( A ⊗ B ) ∋ x → odef (ZFP A B) (& x) -⊗⊆ZFP {A} {B} {x} record { owner = owner ; ao = record { z = a ; az = ba ; x=ψz = x=ψa } ; ox = ox } = zfp01 where - zfp02 : Replace A (λ z → < z , * a >) ≡ * owner - zfp02 = subst₂ ( λ j k → j ≡ k ) *iso refl (sym (cong (*) x=ψa )) - zfp01 : odef (ZFP A B) (& x) - zfp01 with subst (λ k → odef k (& x) ) (sym zfp02) ox - ... | record { z = b ; az = ab ; x=ψz = x=ψb } = subst (λ k → ZFProduct A B k ) (sym x=ψb) (ab-pair ab ba) +-- ⊗⊆ZFP : {A B x : HOD} → ( A ⊗ B ) ∋ x → odef (ZFP A B) (& x) +-- ⊗⊆ZFP {A} {B} {x} record { owner = owner ; ao = record { z = a ; az = ba ; x=ψz = x=ψa } ; ox = ox } = zfp01 where +-- zfp02 : Replace' A (λ z lz → < z , * a >) record { ≤COD = ? } ≡ * owner +-- zfp02 = subst₂ ( λ j k → j ≡ k ) *iso refl (sym (cong (*) x=ψa )) +-- zfp01 : odef (ZFP A B) (& x) +-- zfp01 with subst (λ k → odef k (& x) ) (sym zfp02) ox +-- ... | t = ? +-- -- ... | record { z = b ; az = ab ; x=ψz = x=ψb } = subst (λ k → ZFProduct A B k ) (sym x=ψb) (ab-pair ab ba) ZPI1 : (A B : HOD) → HOD -ZPI1 A B = Replace' (ZFP A B) ( λ x px → * (zπ1 px )) +ZPI1 A B = Replace' (ZFP A B) ( λ x px → * (zπ1 px )) ? ZPI2 : (A B : HOD) → HOD -ZPI2 A B = Replace' (ZFP A B) ( λ x px → * (zπ2 px )) +ZPI2 A B = Replace' (ZFP A B) ( λ x px → * (zπ2 px )) ? ZFProj1-iso : {P Q : HOD} {a b x : Ordinal } ( p : ZFProduct P Q x ) → x ≡ & < * a , * b > → zπ1 p ≡ a ZFProj1-iso {P} {Q} {a} {b} (ab-pair {c} {d} zp zq) eq with prod-≡ (subst₂ (λ j k → j ≡ k) *iso *iso (cong (*) eq)) @@ -233,12 +237,12 @@ is-func : {x : Ordinal } → (ax : odef A x) → odef B (func ax ) data FuncHOD (A B : HOD) : (x : Ordinal) → Set n where - felm : (F : Func A B) → FuncHOD A B (& ( Replace' A ( λ x ax → < x , (* (Func.func F {& x} ax )) > ))) + felm : (F : Func A B) → FuncHOD A B (& ( Replace' A ( λ x ax → < x , (* (Func.func F {& x} ax )) > ) ? )) FuncHOD→F : {A B : HOD} {x : Ordinal} → FuncHOD A B x → Func A B FuncHOD→F {A} {B} (felm F) = F -FuncHOD=R : {A B : HOD} {x : Ordinal} → (fc : FuncHOD A B x) → (* x) ≡ Replace' A ( λ x ax → < x , (* (Func.func (FuncHOD→F fc) ax)) > ) +FuncHOD=R : {A B : HOD} {x : Ordinal} → (fc : FuncHOD A B x) → (* x) ≡ Replace' A ( λ x ax → < x , (* (Func.func (FuncHOD→F fc) ax)) > ) ? FuncHOD=R {A} {B} (felm F) = *iso --