# HG changeset patch # User Shinji KONO # Date 1662615188 -32400 # Node ID 4e60b42b83a3791ff5ae04796b9622a881e95435 # Parent 105f8d6c51fb193a5f11a11474f1545f9b0aa6fd ... diff -r 105f8d6c51fb -r 4e60b42b83a3 src/zorn.agda --- a/src/zorn.agda Thu Sep 08 12:44:22 2022 +0900 +++ b/src/zorn.agda Thu Sep 08 14:33:08 2022 +0900 @@ -261,6 +261,77 @@ ch-is-sup : (u : Ordinal) {z : Ordinal } (u≤x : u o≤ x) ( is-sup : ChainP A f mf ay supf u ) ( fc : FClosure A f (supf u) z ) → UChain A f mf ay supf x z +-- data UChain 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 : UChain A f mf ay supf s a ) ( cb : UChain 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} → UChain A f mf ay supf xa a → UChain A f mf ay supf xb b → Tri (* a < * b) (* a ≡ * b) (* b < * a) + ct-ind xa xb {a} {b} (ch-init fca) (ch-init fcb) = fcn-cmp y f mf fca fcb + ct-ind xa xb {a} {b} (ch-init fca) (ch-is-sup ub u≤x supb fcb) with ChainP.fcy (λ lt → <-irr (case2 ct01) lt) (λ eq → <-irr (case1 eq) ct01) ct01 where + ct01 : * b < * a + ct01 = subst (λ k → * k < * a ) (sym eq) lt + ct-ind xa xb {a} {b} (ch-is-sup ua u≤x supa fca) (ch-init fcb) | case2 lt = tri> (λ lt → <-irr (case2 ct01) lt) (λ eq → <-irr (case1 eq) ct01) ct01 where + ct00 : * b < * (supf ua) + ct00 = lt + ct01 : * b < * a + ct01 with s≤fc (supf ua) f mf fca + ... | case1 eq = subst (λ k → * b < k ) eq ct00 + ... | case2 lt = IsStrictPartialOrder.trans POO ct00 lt + ct-ind xa xb {a} {b} (ch-is-sup ua ua ¬a ¬b c with ChainP.order supa (subst₂ (λ j k → j o< k ) (sym (ChainP.supu=u supb )) (sym (ChainP.supu=u supa )) c) fcb + ... | case1 eq with s≤fc (supf ua) f mf fca + ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00 (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where + ct00 : * a ≡ * b + ct00 = sym (trans (cong (*) eq) eq1) + ... | case2 lt = tri> (λ lt → <-irr (case2 ct02) lt) (λ eq → <-irr (case1 eq) ct02) ct02 where + ct02 : * b < * a + ct02 = subst (λ k → * k < * a ) (sym eq) lt + ct-ind xa xb {a} {b} (ch-is-sup ua ua ¬a ¬b c | case2 lt = tri> (λ lt → <-irr (case2 ct04) lt) (λ eq → <-irr (case1 (eq)) ct04) ct04 where + ct05 : * b < * (supf ua) + ct05 = lt + ct04 : * b < * a + ct04 with s≤fc (supf ua) f mf fca + ... | case1 eq = subst (λ k → * b < k ) eq ct05 + ... | case2 lt = IsStrictPartialOrder.trans POO ct05 lt + ∈∧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 ))) @@ -286,13 +357,9 @@ supf : Ordinal → Ordinal chain : HOD chain = UnionCF A f mf ay supf z + chain⊆A : chain ⊆' A + chain⊆A = λ lt → proj1 lt field - chain⊆A : chain ⊆' A - chain∋init : odef chain y - initial : {z : Ordinal } → odef chain z → * y ≤ * z - f-next : {a : Ordinal } → odef chain a → odef chain (f a) - f-total : IsTotalOrderSet chain - supf-max : {x : Ordinal } → z o≤ x → supf z ≡ supf x sup : {x : Ordinal } → x o≤ z → SUP A (UnionCF A f mf ay supf x) sup=u : {b : Ordinal} → (ab : odef A b) → b o≤ z @@ -301,6 +368,22 @@ supf-mono : {x y : Ordinal } → x o≤ y → supf x o≤ supf y csupf : {b : Ordinal } → b o≤ z → odef (UnionCF A f mf ay supf (supf b)) (supf b) + chain∋init : odef chain y + chain∋init = ⟪ ay , ch-init (init ay refl) ⟫ + f-next : {a : Ordinal} → odef chain a → odef chain (f a) + f-next {a} ⟪ aa , ch-init fc ⟫ = ⟪ proj2 (mf a aa) , ch-init (fsuc _ fc) ⟫ + f-next {a} ⟪ aa , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ proj2 (mf a aa) , ch-is-sup u u≤x is-sup (fsuc _ fc ) ⟫ + initial : {z : Ordinal } → odef chain z → * y ≤ * z + initial {a} ⟪ aa , ua ⟫ with ua + ... | ch-init fc = s≤fc y f mf fc + ... | ch-is-sup u u≤x is-sup fc = ≤-ftrans (<=to≤ zc7) (s≤fc _ f mf fc) where + zc7 : y <= supf u + zc7 = ChainP.fcy (λ lt → <-irr (case2 ct01) lt) (λ eq → <-irr (case1 eq) ct01) ct01 where - ct01 : * b < * a - ct01 = subst (λ k → * k < * a ) (sym eq) lt - ct-ind xa xb {a} {b} (ch-is-sup ua u≤x supa fca) (ch-init fcb) | case2 lt = tri> (λ lt → <-irr (case2 ct01) lt) (λ eq → <-irr (case1 eq) ct01) ct01 where - ct00 : * b < * (supf ua) - ct00 = lt - ct01 : * b < * a - ct01 with s≤fc (supf ua) f mf fca - ... | case1 eq = subst (λ k → * b < k ) eq ct00 - ... | case2 lt = IsStrictPartialOrder.trans POO ct00 lt - ct-ind xa xb {a} {b} (ch-is-sup ua ua ¬a ¬b c with ChainP.order supa (subst₂ (λ j k → j o< k ) (sym (ChainP.supu=u supb )) (sym (ChainP.supu=u supa )) c) fcb - ... | case1 eq with s≤fc (supf ua) f mf fca - ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00 (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where - ct00 : * a ≡ * b - ct00 = sym (trans (cong (*) eq) eq1) - ... | case2 lt = tri> (λ lt → <-irr (case2 ct02) lt) (λ eq → <-irr (case1 eq) ct02) ct02 where - ct02 : * b < * a - ct02 = subst (λ k → * k < * a ) (sym eq) lt - ct-ind xa xb {a} {b} (ch-is-sup ua ua ¬a ¬b c | case2 lt = tri> (λ lt → <-irr (case2 ct04) lt) (λ eq → <-irr (case1 (eq)) ct04) ct04 where - ct05 : * b < * (supf ua) - ct05 = lt - ct04 : * b < * a - ct04 with s≤fc (supf ua) f mf fca - ... | case1 eq = subst (λ k → * b < k ) eq ct05 - ... | case2 lt = IsStrictPartialOrder.trans POO ct05 lt - init-uchain : (A : HOD) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal } → (ay : odef A y ) { supf : Ordinal → Ordinal } { x : Ordinal } → odef (UnionCF A f mf ay supf x) y init-uchain A f mf ay = ⟪ ay , ch-init (init ay refl) ⟫ @@ -727,47 +739,12 @@ pchain : HOD pchain = UnionCF A f mf ay (ZChain.supf zc) px - 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) ( (proj2 ca)) ( (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 , ch-init fc ⟫ = ⟪ proj2 (mf a aa) , ch-init (fsuc _ fc) ⟫ - pnext {a} ⟪ aa , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ proj2 (mf a aa) , ch-is-sup u u≤x is-sup (fsuc _ fc ) ⟫ - pinit : {y₁ : Ordinal} → odef pchain y₁ → * y ≤ * y₁ - pinit {a} ⟪ aa , ua ⟫ with ua - ... | ch-init fc = s≤fc y f mf fc - ... | ch-is-sup u u≤x is-sup fc = ≤-ftrans (<=to≤ zc7) (s≤fc _ f mf fc) where - zc7 : y <= (ZChain.supf zc) u - zc7 = ChainP.fcy x≤z (subst (λ k → z o< k ) (Oprev.oprev=x op) (ordtrans a <-osuc ))) @@ -789,6 +766,13 @@ zc02 = ZChain.supf-max zc (o<→≤ (pxo ¬a ¬b px ¬a ¬b px ¬a ¬b c = x - supx : SUP A (UnionCF A f mf ay supf0 x) - supx = record { sup = * x ; as = subst (λ k → odef A k ) {!!} ax ; x ¬a ¬b c | record { eq = eq1 } = {!!} where -- b ≡ x, supf x ≡ sp - zc30 : x ≡ b - zc30 with trio< x b - ... | tri< a ¬b ¬c = {!!} - ... | tri≈ ¬a b ¬c = {!!} - ... | tri> ¬a ¬b c = {!!} + + pchainx : HOD + pchainx = UnionCF A f mf ay supf1 x + + supf0px=x : supf0 px ≡ x + supf0px=x = ? where + zc50 : supf0 px ≡ & (SUP.sup (ZChain.sup zc o≤-refl ) ) + zc50 = ZChain.spuf-is-sup zc ? + + supf-monox : {a b : Ordinal } → a o≤ b → supf1 a o≤ supf1 b + supf-monox {i} {j} i≤j with trio< i px | trio< j px + ... | tri< a ¬b ¬c | tri< ja ¬jb ¬jc = ? + ... | tri< a ¬b ¬c | tri≈ ¬ja jb ¬jc = ? + ... | tri< a ¬b ¬c | tri> ¬ja ¬jb jc = ? + ... | tri≈ ¬a b ¬c | tri< ja ¬jb ¬jc = ? + ... | tri≈ ¬a b ¬c | tri≈ ¬ja jb ¬jc = ? + ... | tri≈ ¬a b ¬c | tri> ¬ja ¬jb jc = ? + ... | tri> ¬a ¬b c | tri< ja ¬jb ¬jc = ? + ... | tri> ¬a ¬b c | tri≈ ¬ja jb ¬jc = ? + ... | tri> ¬a ¬b c | tri> ¬ja ¬jb jc = ? + + pchain⊆x : UnionCF A f mf ay supf0 px ⊆' UnionCF A f mf ay supf1 x + pchain⊆x ⟪ au , ch-init fc ⟫ = ⟪ au , ch-init fc ⟫ + pchain⊆x ⟪ au , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ au , ch-is-sup u ? ? ? ⟫ + + supfx1 : {z : Ordinal } → x o≤ z → supf1 z ≡ x + supfx1 {z} x≤z with trio< z px + ... | tri< a ¬b ¬c = ⊥-elim ( o≤> x≤z (subst (λ k → z o< k ) (Oprev.oprev=x op) (ordtrans a <-osuc ))) + ... | tri≈ ¬a b ¬c = ⊥-elim ( o≤> x≤z (subst (λ k → k o< x ) (sym b) (pxo ¬a ¬b c = refl + + csupf : {b : Ordinal} → b o≤ x → odef (UnionCF A f mf ay supf1 (supf1 b)) (supf1 b) + csupf {b} b≤x with zc04 b≤x + ... | case2 b=x = ⟪ ? , ch-is-sup x ? ? (init ? ? ) ⟫ + ... | case1 b≤px with ZChain.csupf zc b≤px + ... | ⟪ au , ch-init fc ⟫ = ⟪ ? , ch-init ? ⟫ + ... | ⟪ au , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ ? , ch-is-sup u ? ? ? ⟫ + ... | case2 ¬x=sup = no-extension (case1 nsup) where -- px is not f y' nor sup of former ZChain from y -- no extention nsup : ¬ xSUP (UnionCF A f mf ay supf0 px) x @@ -979,24 +976,6 @@ pchain1 : HOD pchain1 = UnionCF A f mf ay supf1 x - pchain⊆A : {y : Ordinal} → odef pchain1 y → odef A y - pchain⊆A {y} ny = proj1 ny - pnext : {a : Ordinal} → odef pchain1 a → odef pchain1 (f a) - pnext {a} ⟪ aa , ch-init fc ⟫ = ⟪ proj2 ( mf a aa ) , ch-init (fsuc _ fc) ⟫ - pnext {a} ⟪ aa , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ proj2 ( mf a aa ) , ch-is-sup u u≤x is-sup (fsuc _ fc) ⟫ - pinit : {y₁ : Ordinal} → odef pchain1 y₁ → * y ≤ * y₁ - pinit {a} ⟪ aa , ua ⟫ with ua - ... | ch-init fc = s≤fc y f mf fc - ... | ch-is-sup u u≤x is-sup fc = ≤-ftrans (<=to≤ zc7) (s≤fc _ f mf fc) where - zc7 : y <= supf1 _ - zc7 = ChainP.fcy