# HG changeset patch # User Shinji KONO # Date 1685747630 -32400 # Node ID ad9ed7c4a0b38ceab37cdd8ef8dc686982af40ce # Parent 428227847d6242bcb27eb2402aabf766f4d56929 ... diff -r 428227847d62 -r ad9ed7c4a0b3 src/OD.agda --- a/src/OD.agda Fri Jun 02 12:12:29 2023 +0900 +++ b/src/OD.agda Sat Jun 03 08:13:50 2023 +0900 @@ -108,12 +108,8 @@ -- 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< +-- postulate odAxiom-ho< : ODAxiom-ho< +-- open ODAxiom-ho< odAxiom-ho< -- odmax minimality -- @@ -451,7 +447,6 @@ -- {_} : ZFSet → ZFSet -- { x } = ( x , x ) -- better to use (x , x) directly - data infinite-d : ( x : Ordinal ) → Set n where iφ : infinite-d o∅ isuc : {x : Ordinal } → infinite-d x → @@ -465,28 +460,21 @@ -- -- Since we have Ord (next o∅), we don't need this, but ZF axiom requires this and ho< +infinite-od : OD +infinite-od = record { def = λ x → infinite-d x } + +record ODAxiom-ho< : Set (suc n) where + field + omega : Ordinal + ho< : {x : Ordinal } → infinite-d x → x o< next omega + +postulate + odaxion-ho< : ODAxiom-ho< + +open ODAxiom-ho< odaxion-ho< + infinite : HOD -infinite = record { od = record { def = λ x → infinite-d x } ; odmax = next o∅ ; ¬a ¬b c | record { eq = eq1 } = next< (subst (λ k → k o< next o ) (sym eq1) (osuc ¬a ¬b c | record { eq = eq1 } = next< (subst (λ k → k o< next o ) (sym eq1) (osuc ¬a ¬b c = ⊥-elim ( ¬x<0 c ) -next< : {x y z : Ordinal} → x o< next z → y o< next x → y o< next z -next< {x} {y} {z} x ¬a ¬b c = ⊥-elim (¬nx ¬a ¬b c = ⊥-elim (¬nx osuc x o< next x o< next (osuc x) -> next x ≡ osuc z -> z o o< next x -> osuc z o< next x -> next x o< next x -nexto≡ {x} | tri< a ¬b ¬c = ⊥-elim (¬nx osuc x o< next (osuc x) o< next x -> next (osuc x) ≡ osuc z -> z o o< next (osuc x) ... -nexto≡ {x} | tri> ¬a ¬b c = ⊥-elim (¬nx ¬a ¬b c = ⊥-elim (¬nx ¬a ¬b c = -- x < y < next y < next x - ⊥-elim ( ¬nx ¬a ¬b c = -- x < y < next y < next x +-- ⊥-elim ( ¬nx ¬a ¬b c with osuc-≡< x≤y -≤next {x} {y} x≤y | tri> ¬a ¬b c | case1 refl = o≤-refl -- x = y < next x -≤next {x} {y} x≤y | tri> ¬a ¬b c | case2 x ¬a ¬b c with osuc-≡< x≤y +-- ≤next {x} {y} x≤y | tri> ¬a ¬b c | case1 refl = o≤-refl -- x = y < next x +-- ≤next {x} {y} x≤y | tri> ¬a ¬b c | case2 x ¬a ¬b c = o≤-refl0 (sym ( x ¬a ¬b c = o≤-refl0 (sym ( x ¬a ¬b c = subst (λ k → osuc x o< k ) nexto≡ (osuc ¬a ¬b c = subst (λ k → osuc x o< k ) nexto≡ (osuc ¬a ¬b c = osuc ¬a ¬b c = subst (λ k → x o< k ) nexto≡ xnx +-- nn ¬a ¬b c = subst (λ k → x o< k ) nexto≡ xnx record OrdinalSubset (maxordinal : Ordinal) : Set (suc n) where field diff -r 428227847d62 -r ad9ed7c4a0b3 src/Ordinals.agda --- a/src/Ordinals.agda Fri Jun 02 12:12:29 2023 +0900 +++ b/src/Ordinals.agda Sat Jun 03 08:13:50 2023 +0900 @@ -34,7 +34,9 @@ field x ) + +ZP-proj1 : (A B C : HOD) → C ⊆ ZFP A B → HOD +ZP-proj1 A B C cab = record { od = record { def = λ x → ZP1 A B C cab x } ; odmax = & A ; → odef a x + zp02 {.(& < * _ , * _ >)} (ab-pair {a1} {b1} aa1 bb1) eq = subst (λ k → odef a k) (*≡*→≡ zp03) aa1 where + zp03 : * a1 ≡ * x + zp03 = proj1 (prod-≡ (&≡&→≡ eq)) + +record ZP2 (A B C : HOD) ( cab : C ⊆ ZFP A B ) (b : Ordinal) : Set n where + field + a : Ordinal + aa : odef A a + bb : odef B b + c∋ab : odef C (& < * a , * b > ) + +ZP-proj2 : (A B C : HOD) → C ⊆ ZFP A B → HOD +ZP-proj2 A B C cab = record { od = record { def = λ x → ZP2 A B C cab x } ; odmax = & B ; ) (sym (proj2 (prod-≡ (subst₂ (λ j k → j ≡ k) *iso *iso (cong (*) x=ba))))) (sym (proj1 (prod-≡ (subst₂ (λ j k → j ≡ k) *iso *iso (cong (*) x=ba))))) +ZPmirror-rev : {A B C m : HOD} → {cab : C ⊆ ZFP A B } → ZPmirror A B C cab ≡ m + → {m⊆Z : m ⊆ ZFP B A } → ZPmirror B A m m⊆Z ≡ C +ZPmirror-rev {A} {B} {C} {m} {cab} eq {m⊆Z} = ==→o≡ record { eq→ = zs02 ; eq← = zs04 } where + zs02 : {x : Ordinal} → ZPC B A m m⊆Z x → odef C x + zs02 {x} record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = c∋ab ; x=ba = x=ba } with subst (λ k → odef k (& < * a , * b > )) (sym eq) c∋ab + ... | record { a = b1 ; b = a1 ; aa = bb1 ; bb = aa1 ; c∋ab = c∋ab1 ; x=ba = x=ba1 } = subst (λ k → odef C k) zs03 c∋ab1 where + a=a1 : * a ≡ * a1 + a=a1 = proj1 (prod-≡ (subst₂ (λ j k → j ≡ k ) *iso *iso (cong (*) x=ba1))) + b=b1 : * b ≡ * b1 + b=b1 = proj2 (prod-≡ (subst₂ (λ j k → j ≡ k ) *iso *iso (cong (*) x=ba1))) + zs03 : & < * b1 , * a1 > ≡ x + zs03 = begin + & < * b1 , * a1 > ≡⟨ cong₂ (λ j k → & < j , k >) (sym b=b1) (sym a=a1) ⟩ + & < * b , * a > ≡⟨ sym x=ba ⟩ + x ∎ where open ≡-Reasoning + zs04 : {x : Ordinal} → odef C x → ZPC B A m m⊆Z x + zs04 {x} cx with cab cx + ... | ab-pair {a} {b} aa bb = record { a = b ; b = a ; aa = bb ; bb = aa + ; c∋ab = subst (λ k → odef k (& < * b , * a >)) eq zs05 ; x=ba = refl } where + zs05 : odef (ZPmirror A B C cab) (& < * b , * a >) + zs05 = record { a = _ ; b = _ ; aa = aa ; bb = bb ; c∋ab = cx ; x=ba = refl } + +ZPmirror-⊆ : {A B C D : HOD} → (C⊆D : C ⊆ D) → {cab : C ⊆ ZFP A B } {dab : D ⊆ ZFP A B } → ZPmirror A B C cab ⊆ ZPmirror A B D dab +ZPmirror-⊆ {A} {B} {C} {D} C⊆D {cab} {dab} {x} record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = c∋ab ; x=ba = x=ba } = + record { a = _ ; b = _ ; aa = aa ; bb = bb ; c∋ab = C⊆D c∋ab ; x=ba = x=ba } + +ZPmirror-∩ : {A B C D : HOD} → {cdab : (C ∩ D) ⊆ ZFP A B } {cab : C ⊆ ZFP A B } {dab : D ⊆ ZFP A B } + → ZPmirror A B (C ∩ D) cdab ≡ ZPmirror A B C cab ∩ ZPmirror A B D dab +ZPmirror-∩ {A} {B} {C} {D} {cdab} {cab} {dab} = ==→o≡ record { eq→ = za06 ; eq← = za07 } where + za06 : ZPmirror A B (C ∩ D) cdab ⊆ ( ZPmirror A B C cab ∩ ZPmirror A B D dab ) + za06 {x} record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = c∋ab ; x=ba = x=ba } = ⟪ + record { a = _ ; b = _ ; aa = aa ; bb = bb ; c∋ab = proj1 c∋ab ; x=ba = x=ba } , + record { a = _ ; b = _ ; aa = aa ; bb = bb ; c∋ab = proj2 c∋ab ; x=ba = x=ba } ⟫ + za07 : ( ZPmirror A B C cab ∩ ZPmirror A B D dab ) ⊆ ZPmirror A B (C ∩ D) cdab + za07 {x} ⟪ record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = c∋ab1 ; x=ba = x=ba } , + record { a = a' ; b = b' ; aa = aa' ; bb = bb' ; c∋ab = c∋ab2 ; x=ba = x=ba' } ⟫ = + record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = ⟪ c∋ab1 , subst (λ k → odef D k) (sym zs02) c∋ab2 ⟫ ; x=ba = x=ba } where + zs02 : & < * a , * b > ≡ & < * a' , * b' > + zs02 = cong₂ (λ j k → & < j , k >) (sym (proj2 (prod-≡ (subst₂ (λ j k → j ≡ k) *iso *iso (cong (*) (trans (sym x=ba') x=ba)))))) + (sym (proj1 (prod-≡ (subst₂ (λ j k → j ≡ k) *iso *iso (cong (*) (trans (sym x=ba') x=ba)))))) + + ZFP∩ : {A B C : HOD} → ( ZFP (A ∩ B) C ≡ ZFP A C ∩ ZFP B C ) ∧ ( ZFP C (A ∩ B) ≡ ZFP C A ∩ ZFP C B ) proj1 (ZFP∩ {A} {B} {C} ) = ==→o≡ record { eq→ = zfp00 ; eq← = zfp01 } where zfp00 : {x : Ordinal} → ZFProduct (A ∩ B) C x → odef (ZFP A C ∩ ZFP B C) x