Mercurial > hg > Members > kono > Proof > ZF-in-agda
changeset 730:2c0fe13e3e5c
x in ChainP
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 19 Jul 2022 01:34:27 +0900 |
parents | ac6b4d200f27 |
children | b431f0ebc276 |
files | src/zorn.agda |
diffstat | 1 files changed, 25 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/src/zorn.agda Tue Jul 19 01:15:05 2022 +0900 +++ b/src/zorn.agda Tue Jul 19 01:34:27 2022 +0900 @@ -262,8 +262,9 @@ -- minimum index is y not ϕ -- -record ChainP (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal) (u z : Ordinal) : Set n where +record ChainP (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal) (x u z : Ordinal) : Set n where field + u≤x : u o≤ x u>0 : o∅ o< u -- ¬ ch-init au : odef A u ¬u=fx : {x : Ordinal} → ¬ ( u ≡ f x ) @@ -272,11 +273,11 @@ csupz : FClosure A f (supf u) z order : {sup1 z1 : Ordinal} → (lt : sup1 o< u ) → FClosure A f (supf sup1 ) z1 → z1 << supf u -data Chain (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal) : Ordinal → Ordinal → Set n where - ch-init : (z : Ordinal) → FClosure A f y z → Chain A f mf ay supf o∅ z +data Chain (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal) x : Ordinal → Ordinal → Set n where + ch-init : (z : Ordinal) → FClosure A f y z → Chain A f mf ay supf x o∅ z ch-is-sup : {sup z : Ordinal } - → ( is-sup : ChainP A f mf ay supf sup z) - → ( fc : FClosure A f (supf sup) z ) → Chain A f mf ay supf sup z + → ( is-sup : ChainP A f mf ay supf x sup z) + → ( fc : FClosure A f (supf sup) z ) → Chain A f mf ay supf x sup z -- Union of supf z which o< x -- @@ -286,7 +287,7 @@ field u : Ordinal u<x : (u o< x ) ∨ ( u ≡ o∅) - uchain : Chain A f mf ay supf u z + uchain : Chain A f mf ay supf x u z ∈∧P→o< : {A : HOD } {y : Ordinal} → {P : Set n} → odef A y ∧ P → y o< & A ∈∧P→o< {A } {y} p = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) (proj1 p ))) @@ -329,9 +330,9 @@ -- data Chain is total chain-total : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal ) - {s s1 a b : Ordinal } ( ca : Chain A f mf ay supf s a ) ( cb : Chain A f mf ay supf s1 b ) → Tri (* a < * b) (* a ≡ * b) (* b < * a ) -chain-total A f mf {y} ay supf {xa} {xb} {a} {b} ca cb = ct-ind xa xb ca cb where - ct-ind : (xa xb : Ordinal) → {a b : Ordinal} → Chain A f mf ay supf xa a → Chain A f mf ay supf xb b → Tri (* a < * b) (* a ≡ * b) (* b < * a) + (x : Ordinal) {s s1 a b : Ordinal } ( ca : Chain A f mf ay supf x s a ) ( cb : Chain A f mf ay supf x s1 b ) → Tri (* a < * b) (* a ≡ * b) (* b < * a ) +chain-total A f mf {y} ay supf x {xa} {xb} {a} {b} ca cb = ct-ind xa xb ca cb where + ct-ind : (xa xb : Ordinal) → {a b : Ordinal} → Chain A f mf ay supf x xa a → Chain A f mf ay supf x xb b → Tri (* a < * b) (* a ≡ * b) (* b < * a) ct-ind xa xb {a} {b} (ch-init a fca) (ch-init b fcb) = fcn-cmp y f mf fca fcb ct-ind xa xb {a} {b} (ch-init a fca) (ch-is-sup supb fcb) = tri< ct01 (λ eq → <-irr (case1 (sym eq)) ct01) (λ lt → <-irr (case2 ct01) lt) where ct00 : * a < * (supf xb) @@ -365,8 +366,8 @@ ... | case2 lt = IsStrictPartialOrder.trans POO ct05 lt ChainP-next : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal ) - → {x z : Ordinal } → ChainP A f mf ay supf x z → ChainP A f mf ay supf x (f z ) -ChainP-next A f mf {y} ay supf {x} {z} cp = {!!} --record { y-init = ChainP.y-init cp ; asup = ChainP.asup cp ; au = ChainP.au cp + → (x : Ordinal) {u z : Ordinal } → ChainP A f mf ay supf x u z → ChainP A f mf ay supf x u (f z ) +ChainP-next A f mf {y} ay supf x {u} {z} cp = {!!} --record { y-init = ChainP.y-init cp ; asup = ChainP.asup cp ; au = ChainP.au cp -- ; fcy<sup = ChainP.fcy<sup cp ; csupz = fsuc _ (ChainP.csupz cp) ; order = ChainP.order cp } Zorn-lemma : { A : HOD } @@ -440,10 +441,9 @@ bchain {b} b<x ⟪ ab , record { u = u ; u<x = u=0 ; uchain = ch-init b fc } ⟫ = ⟪ ab , record { u = u ; u<x = case2 refl ; uchain = ch-init b fc } ⟫ bchain {b} b<x ⟪ ab , record { u = u ; u<x = u<x ; uchain = ch-is-sup is-sup fc } ⟫ = - ⟪ ab , record { u = u ; u<x = case1 (b01 fc) ; uchain = ch-is-sup is-sup fc } ⟫ where - b01 : {b : Ordinal } → FClosure A f (ZChain.supf zc u) b → u o< x - b01 (init as) = ? - b01 (fsuc z fc) = b01 fc + ⟪ ab , record { u = u ; u<x = case1 (b01 fc) ; uchain = ch-is-sup ? fc } ⟫ where + b01 : u o≤ b → u o< x + b01 = ? chain-mono2 : {a b c : Ordinal} → a o≤ b → b o≤ x → odef (UnionCF A f mf ay (ZChain.supf zc) a) c → odef (UnionCF A f mf ay (ZChain.supf zc) b) c chain-mono2 {a} {b} {c} a≤b b≤x uac = ? @@ -553,7 +553,7 @@ itotal : IsTotalOrderSet (UnionCF A f mf ay isupf o∅) itotal {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) ) - uz01 = chain-total A f mf ay isupf (UChain.uchain (proj2 ca)) (UChain.uchain (proj2 cb)) + uz01 = chain-total A f mf ay isupf o∅ (UChain.uchain (proj2 ca)) (UChain.uchain (proj2 cb)) imax : {a b : Ordinal} → odef (UnionCF A f mf ay isupf o∅) a → b o< o∅ → (ab : odef A b) → HasPrev A (UnionCF A f mf ay isupf o∅) ab f ∨ IsSup A (UnionCF A f mf ay isupf o∅) ab → @@ -585,17 +585,17 @@ ptotal : IsTotalOrderSet pchain ptotal {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) ) - uz01 = chain-total A f mf ay (ZChain.supf zc) (UChain.uchain (proj2 ca)) (UChain.uchain (proj2 cb)) + uz01 = chain-total A f mf ay (ZChain.supf zc) x (UChain.uchain (proj2 ca)) (UChain.uchain (proj2 cb)) pchain⊆A : {y : Ordinal} → odef pchain y → odef A y pchain⊆A {y} ny = proj1 ny pnext : {a : Ordinal} → odef pchain a → odef pchain (f a) pnext {a} ⟪ aa , ua ⟫ = ⟪ afa , record { u = UChain.u ua ; u<x = UChain.u<x ua ; uchain = fua } ⟫ where afa : odef A ( f a ) afa = proj2 ( mf a aa ) - fua : Chain A f mf ay (ZChain.supf zc) (UChain.u ua) (f a) + fua : Chain A f mf ay (ZChain.supf zc) x (UChain.u ua) (f a) fua with UChain.uchain ua ... | ch-init a fc = ch-init (f a) ( fsuc _ fc ) - ... | ch-is-sup is-sup fc = ch-is-sup (ChainP-next A f mf ay _ is-sup ) (fsuc _ fc ) + ... | ch-is-sup is-sup fc = ch-is-sup (ChainP-next A f mf ay _ x is-sup ) (fsuc _ fc ) pinit : {y₁ : Ordinal} → odef pchain y₁ → * y ≤ * y₁ pinit {a} ⟪ aa , ua ⟫ with UChain.uchain ua ... | ch-init a fc = s≤fc y f mf fc @@ -612,7 +612,7 @@ ; chain⊆A = pchain⊆A ; f-next = pnext ; f-total = ptotal } chain-mono : UnionCF A f mf ay (ZChain.supf zc) (Oprev.oprev op ) ⊆' pchain - chain-mono {a} za = ⟪ proj1 za , record { u = UChain.u (proj2 za) ; u<x = zc11 ; uchain = UChain.uchain (proj2 za) } ⟫ where + chain-mono {a} za = ⟪ proj1 za , record { u = UChain.u (proj2 za) ; u<x = zc11 ; uchain = ? } ⟫ where zc11 : (UChain.u (proj2 za) o< x) ∨ (UChain.u (proj2 za) ≡ o∅) zc11 with UChain.u<x (proj2 za) ... | case1 z<x = case1 (ordtrans z<x px<x ) @@ -624,13 +624,13 @@ chain-x : ( {z : Ordinal} → (az : odef pchain z) → ¬ ( UChain.u (proj2 az) ≡ px )) → pchain ⊆' UnionCF A f mf ay (ZChain.supf zc) px chain-x ne {z} ⟪ az , record { u = u ; u<x = case2 u=y ; uchain = uc } ⟫ = - ⟪ az , record { u = u ; u<x = case2 u=y ; uchain = uc } ⟫ + ⟪ az , record { u = u ; u<x = case2 u=y ; uchain = ? } ⟫ chain-x ne {z} ⟪ az , record { u = u ; u<x = case1 u<x ; uchain = ch-init z fc } ⟫ with trio< o∅ px ... | tri< a ¬b ¬c = ⟪ az , record { u = u ; u<x = case1 a ; uchain = ch-init z fc } ⟫ ... | tri≈ ¬a b ¬c = ⟪ az , record { u = u ; u<x = case2 refl ; uchain = ch-init z fc } ⟫ ... | tri> ¬a ¬b c = ⊥-elim ( ¬x<0 c ) chain-x ne {z} uz@record { proj1 = az ; proj2 = record { u = u ; u<x = case1 u<x ; uchain = ch-is-sup is-sup fc } } with trio< u px - ... | tri< a ¬b ¬c = ⟪ az , record { u = u ; u<x = case1 a ; uchain = ch-is-sup is-sup fc } ⟫ + ... | tri< a ¬b ¬c = ⟪ az , record { u = u ; u<x = case1 a ; uchain = ch-is-sup ? fc } ⟫ ... | tri≈ ¬a b ¬c = ⊥-elim ( ne uz b ) ... | tri> ¬a ¬b c = ⊥-elim ( ¬p<x<op ⟪ c , subst (λ k → u o< k ) (sym (Oprev.oprev=x op)) u<x ⟫ ) @@ -669,7 +669,7 @@ ptotal : IsTotalOrderSet pchain ptotal {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) ) - uz01 = chain-total A f mf ay psupf0 (UChain.uchain (proj2 ca)) (UChain.uchain (proj2 cb)) + uz01 = chain-total A f mf ay psupf0 x (UChain.uchain (proj2 ca)) (UChain.uchain (proj2 cb)) pchain⊆A : {y : Ordinal} → odef pchain y → odef A y pchain⊆A {y} ny = proj1 ny @@ -677,10 +677,10 @@ pnext {a} ⟪ aa , ua ⟫ = ⟪ afa , record { u = UChain.u ua ; u<x = UChain.u<x ua ; uchain = fua } ⟫ where afa : odef A ( f a ) afa = proj2 ( mf a aa ) - fua : Chain A f mf ay psupf0 (UChain.u ua) (f a) + fua : Chain A f mf ay psupf0 x (UChain.u ua) (f a) fua with UChain.uchain ua ... | ch-init a fc = ch-init (f a) ( fsuc _ fc ) - ... | ch-is-sup is-sup fc = ch-is-sup (ChainP-next A f mf ay _ is-sup ) (fsuc _ fc ) + ... | ch-is-sup is-sup fc = ch-is-sup (ChainP-next A f mf ay _ x is-sup ) (fsuc _ fc ) pinit : {y₁ : Ordinal} → odef pchain y₁ → * y ≤ * y₁ pinit {a} ⟪ aa , ua ⟫ with UChain.uchain ua ... | ch-init a fc = s≤fc y f mf fc