Mercurial > hg > Members > kono > Proof > ZF-in-agda
changeset 779:9e34893d9a03
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 29 Jul 2022 02:38:37 +0900 |
parents | 6aafa22c951a |
children | 10a036aeb688 |
files | src/zorn.agda |
diffstat | 1 files changed, 38 insertions(+), 65 deletions(-) [+] |
line wrap: on
line diff
--- a/src/zorn.agda Thu Jul 28 10:01:43 2022 +0900 +++ b/src/zorn.agda Fri Jul 29 02:38:37 2022 +0900 @@ -73,10 +73,20 @@ ≤-ftrans {x} {_} {z} (case2 x<y ) (case1 refl ) = case2 x<y ≤-ftrans {x} {y} {z} (case2 x<y) (case2 y<z) = case2 ( IsStrictPartialOrder.trans PO x<y y<z ) +<-ftrans : {x y z : Ordinal } → x <= y → y <= z → x <= z +<-ftrans {x} {y} {z} (case1 refl ) (case1 refl ) = case1 refl +<-ftrans {x} {y} {z} (case1 refl ) (case2 y<z) = case2 y<z +<-ftrans {x} {_} {z} (case2 x<y ) (case1 refl ) = case2 x<y +<-ftrans {x} {y} {z} (case2 x<y) (case2 y<z) = case2 ( IsStrictPartialOrder.trans PO x<y y<z ) + <=to≤ : {x y : Ordinal } → x <= y → * x ≤ * y <=to≤ (case1 eq) = case1 (cong (*) eq) <=to≤ (case2 lt) = case2 lt +≤to<= : {x y : Ordinal } → * x ≤ * y → x <= y +≤to<= (case1 eq) = case1 ( subst₂ (λ j k → j ≡ k ) &iso &iso (cong (&) eq) ) +≤to<= (case2 lt) = case2 lt + <-irr : {a b : HOD} → (a ≡ b ) ∨ (a < b ) → b < a → ⊥ <-irr {a} {b} (case1 a=b) b<a = IsStrictPartialOrder.irrefl PO (sym a=b) b<a <-irr {a} {b} (case2 a<b) b<a = IsStrictPartialOrder.irrefl PO refl @@ -248,13 +258,15 @@ record IsSup (A B : HOD) {x : Ordinal } (xa : odef A x) : Set n where field - x<sup : {y : Ordinal} → odef B y → (y ≡ x ) ∨ (y << x ) + x<sup : {y : Ordinal} → odef B y → (y ≡ x ) ∨ (y << x ) record SUP ( A B : HOD ) : Set (Level.suc n) where field sup : HOD A∋maximal : A ∋ sup x<sup : {x : HOD} → B ∋ x → (x ≡ sup ) ∨ (x < sup ) -- B is Total, use positive + min-sup : {z : HOD } → B ∋ z → ( {x : HOD } → B ∋ x → (x ≡ z ) ∨ (x < z ) ) + → (z ≡ sup ) ∨ (sup < z ) -- -- sup and its fclosure is in a chain HOD @@ -668,6 +680,25 @@ -- create all ZChains under o< x -- + record FChain (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (x : Ordinal) : Set n where + field + supf : Ordinal → Ordinal + fcy<sup : { z : Ordinal ) → FClosure A f y z → z <= supf x + is-sup : ( z : Ordinal ) → (z<x : z o< x ) → { z1 : Ordinal } → FClosure A f (supf z) z1 → z1 <= supf x + is-minsup : ( x1 : Ordinal ) → + (( z : Ordinal ) → (z<x : z o< x ) → { z1 : Ordinal } → FClosure A f (supf z) z1 → z1 <= x1 ) → supf x <= x1 + order : {b s z1 : Ordinal} → b o< z → supf s o< supf b → FClosure A f (supf s) z1 → (z1 ≡ supf b) ∨ (z1 << supf b) + order = ? + + + fsupf : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → (x : Ordinal ) → FChain A f mf ay x + fsupf f mf {y} ay x = TransFinite0 find x where + find : (x : Ordinal ) → (( z : Ordinal ) → z o< x → FChain A f mf ay z ) → FChain A f mf ay x + find x prev with trio< o∅ x + ... | tri< a ¬b ¬c = ? + ... | tri≈ ¬a b ¬c = ? + ... | tri> ¬a ¬b c = ? + ind : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → (x : Ordinal) → ((z : Ordinal) → z o< x → ZChain A f mf ay z) → ZChain A f mf ay x ind f mf {y} ay x prev with Oprev-p x @@ -753,55 +784,10 @@ uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) ) uz01 = chain-total A f mf ay psupf0 ( (proj2 ca)) ( (proj2 cb)) - usup : SUP A pchain0 usup = supP pchain0 (λ lt → proj1 lt) ptotal0 spu = & (SUP.sup usup) - record Usupf ( w : Ordinal ) : Set n where - field - supf : Ordinal → Ordinal - uniq-supf : {z w1 : Ordinal } → z o< w1 → (w<x : w o< x) → (w1<w : w1 o< w) - → supf z ≡ ZChain.supf (prev w1 (ordtrans w1<w w<x )) z - - US : (w1 : Ordinal) → w1 o< x → Usupf w1 - US w1 w1<x = TransFinite0 uind w1 where - uind : (w : Ordinal) → ((z : Ordinal) → z o< w → Usupf z ) → Usupf w - uind w uprev with Oprev-p x - ... | yes op = record { supf = ? ; uniq-supf = ? } where - px = Oprev.oprev op - zc : ZChain A f mf ay (Oprev.oprev op) - zc = prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) - supf : Ordinal → Ordinal - supf z with trio< z w - ... | tri< a ¬b ¬c = ZChain.supf (prev _ ?) z - ... | tri≈ ¬a b ¬c = ZChain.supf zc z - ... | tri> ¬a ¬b c = ZChain.supf zc z - us : {z : Ordinal } → z o< w → (w<x : w o< x) → supf z ≡ ZChain.supf (prev _ w<x) z - us {z} z<w w<x with trio< z w - ... | tri< a ¬b ¬c = u01 where - u02 : ? ≡ Usupf.supf (uprev z a) z - u02 = ? - u01 : ZChain.supf (prev ? ?) z ≡ ZChain.supf (prev w w<x) z - u01 = ? -- subst (λ k → k ≡ _ ) ? ( Usupf.uniq-supf (uprev _ ?) ? ? ) - ... | tri≈ ¬a b ¬c = ? - ... | tri> ¬a ¬b c = ? - ... | no wlim = record { supf = supf ; uniq-supf = ? } where - supf : Ordinal → Ordinal - supf z with trio< (osuc z) w - ... | tri< a ¬b ¬c = Usupf.supf ( uprev (osuc z) a ) z - ... | tri≈ ¬a b ¬c = spu - ... | tri> ¬a ¬b c = spu - us : {z : Ordinal} {w2 : Ordinal} → z o< w2 - → (w<x : w o< x) (w2<w : w2 o< w) → supf z ≡ ZChain.supf (prev w2 (ordtrans w2<w w<x)) z - us {z} {w2} z<w2 w<x w2<w with trio< (osuc z) w - ... | tri< a ¬b ¬c = ? where - u00 = Usupf.uniq-supf (uprev (osuc z) ?) ? ? ? - u01 = Usupf.uniq-supf (uprev w2 ?) ? ? ? - ... | tri≈ ¬a b ¬c = ? - ... | tri> ¬a ¬b c = ? - - psupf : Ordinal → Ordinal psupf z with trio< z x ... | tri< a ¬b ¬c = ZChain.supf (pzc (osuc z) (ob<x lim a)) z @@ -822,6 +808,11 @@ ... | tri≈ ¬a b ¬c | record { eq = eq1 } = subst (λ k → spu ≡ psupf k) b (sym eq1) ... | tri> ¬a ¬b c | _ = ⊥-elim ( ¬b z=x) + order : {b sup1 z1 : Ordinal} → b o< x → + psupf sup1 o< psupf b → + FClosure A f (psupf sup1) z1 → (z1 ≡ psupf b) ∨ (z1 << psupf b) + order {b} {s} {z1} b<x ps<pb fc = ? + csupf : (z : Ordinal) → odef (UnionCF A f mf ay psupf x) (psupf z) csupf z with trio< z x | inspect psupf z ... | tri< z<x ¬b ¬c | record { eq = eq1 } = zc11 where @@ -836,26 +827,8 @@ zc20 {z1} fc with ZChain.fcy<sup ozc <-osuc fc ... | case1 eq = case1 (trans eq (sym eq1) ) ... | case2 lt = case2 (subst ( λ k → z1 << k ) (sym eq1) lt) - zc21 : {sup1 z1 : Ordinal} → psupf sup1 o< psupf z → FClosure A f (psupf sup1) z1 → (z1 ≡ psupf z) ∨ (z1 << psupf z) - zc21 {s} {z1} s<z fc = zc22 where - zc25 : psupf z ≡ ZChain.supf ozc z - zc25 = psupf<z z<x - s<x : s o< x - s<x = {!!} - zc26 : psupf s ≡ ZChain.supf (pzc (osuc s) (ob<x lim s<x)) s - zc26 = psupf<z s<x - zc23 : ZChain.supf ozc s o< ZChain.supf ozc z - zc23 = {!!} - zc24 : FClosure A f (ZChain.supf ozc s) z1 - zc24 with trio< s x - ... | t = {!!} - zc22 : (z1 ≡ psupf z) ∨ (z1 << psupf z) - zc22 with ZChain.order ozc <-osuc zc23 zc24 - ... | case1 eq = case1 (trans eq (sym eq1) ) - ... | case2 lt = case2 (subst ( λ k → z1 << k ) (sym eq1) lt) cp1 : ChainP A f mf ay psupf z (ZChain.supf ozc z) - cp1 = record { fcy<sup = zc20 ; order = zc21 } - + cp1 = record { fcy<sup = zc20 ; order = order z<x } --- u = supf u = supf z ... | tri≈ ¬a b ¬c | record { eq = eq1 } = ⟪ sa , ch-is-sup {!!} {!!} {!!} ⟫ where sa = SUP.A∋maximal usup