Mercurial > hg > Members > kono > Proof > ZF-in-agda
changeset 590:4dbaa071d695
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 11 Jun 2022 18:33:12 +0900 |
parents | f545b97ce7a8 |
children | b3584dd8bafc |
files | src/zorn.agda |
diffstat | 1 files changed, 46 insertions(+), 37 deletions(-) [+] |
line wrap: on
line diff
--- a/src/zorn.agda Tue Jun 07 12:59:08 2022 +0900 +++ b/src/zorn.agda Sat Jun 11 18:33:12 2022 +0900 @@ -93,15 +93,15 @@ -- immieate-f A f = { x y : Ordinal } → odef A x → odef A y → ¬ ( ( * x < * y ) ∧ ( * y < * (f x )) ) data FClosure (A : HOD) (f : Ordinal → Ordinal ) (s : Ordinal) : Ordinal → Set n where - init : odef A s → FClosure A f s s + init : {x : Ordinal} → odef A s → x ≡ s → FClosure A f s x fsuc : (x : Ordinal) ( p : FClosure A f s x ) → FClosure A f s (f x) A∋fc : {A : HOD} (s : Ordinal) {y : Ordinal } (f : Ordinal → Ordinal) (mf : ≤-monotonic-f A f) → (fcy : FClosure A f s y ) → odef A y -A∋fc {A} s f mf (init as) = as +A∋fc {A} s f mf (init as refl ) = as A∋fc {A} s f mf (fsuc y fcy) = proj2 (mf y ( A∋fc {A} s f mf fcy ) ) s≤fc : {A : HOD} (s : Ordinal ) {y : Ordinal } (f : Ordinal → Ordinal) (mf : ≤-monotonic-f A f) → (fcy : FClosure A f s y ) → * s ≤ * y -s≤fc {A} s {.s} f mf (init x) = case1 refl +s≤fc {A} s {.s} f mf (init x refl ) = case1 refl s≤fc {A} s {.(f x)} f mf (fsuc x fcy) with proj1 (mf x (A∋fc s f mf fcy ) ) ... | case1 x=fx = subst (λ k → * s ≤ * k ) (*≡*→≡ x=fx) ( s≤fc {A} s f mf fcy ) ... | case2 x<fx with s≤fc {A} s f mf fcy @@ -109,7 +109,7 @@ ... | case2 s<x = case2 ( IsStrictPartialOrder.trans PO s<x x<fx ) fcn : {A : HOD} (s : Ordinal) { x : Ordinal} {f : Ordinal → Ordinal} → (mf : ≤-monotonic-f A f) → FClosure A f s x → ℕ -fcn s mf (init as) = zero +fcn s mf (init as refl ) = zero fcn {A} s {x} {f} mf (fsuc y p) with proj1 (mf y (A∋fc s f mf p)) ... | case1 eq = fcn s mf p ... | case2 y<fy = suc (fcn s mf p ) @@ -118,11 +118,11 @@ → (cx : FClosure A f s x ) (cy : FClosure A f s y ) → fcn s mf cx ≡ fcn s mf cy → * x ≡ * y fcn-inject {A} s {x} {y} {f} mf cx cy eq = fc00 (fcn s mf cx) (fcn s mf cy) eq cx cy refl refl where fc00 : (i j : ℕ ) → i ≡ j → {x y : Ordinal } → (cx : FClosure A f s x ) (cy : FClosure A f s y ) → i ≡ fcn s mf cx → j ≡ fcn s mf cy → * x ≡ * y - fc00 zero zero refl (init _) (init x₁) i=x i=y = refl - fc00 zero zero refl (init as) (fsuc y cy) i=x i=y with proj1 (mf y (A∋fc s f mf cy ) ) - ... | case1 y=fy = subst (λ k → * s ≡ k ) y=fy ( fc00 zero zero refl (init as) cy i=x i=y ) - fc00 zero zero refl (fsuc x cx) (init as) i=x i=y with proj1 (mf x (A∋fc s f mf cx ) ) - ... | case1 x=fx = subst (λ k → k ≡ * s ) x=fx ( fc00 zero zero refl cx (init as) i=x i=y ) + fc00 zero zero refl (init _ refl ) (init x₁ refl ) i=x i=y = refl + fc00 zero zero refl (init as refl ) (fsuc y cy) i=x i=y with proj1 (mf y (A∋fc s f mf cy ) ) + ... | case1 y=fy = subst (λ k → * s ≡ k ) y=fy ( fc00 zero zero refl (init as refl ) cy i=x i=y ) + fc00 zero zero refl (fsuc x cx) (init as refl ) i=x i=y with proj1 (mf x (A∋fc s f mf cx ) ) + ... | case1 x=fx = subst (λ k → k ≡ * s ) x=fx ( fc00 zero zero refl cx (init as refl ) i=x i=y ) fc00 zero zero refl (fsuc x cx) (fsuc y cy) i=x i=y with proj1 (mf x (A∋fc s f mf cx ) ) | proj1 (mf y (A∋fc s f mf cy ) ) ... | case1 x=fx | case1 y=fy = subst₂ (λ j k → j ≡ k ) x=fx y=fy ( fc00 zero zero refl cx cy i=x i=y ) fc00 (suc i) (suc j) i=j {.(f x)} {.(f y)} (fsuc x cx) (fsuc y cy) i=x j=y with proj1 (mf x (A∋fc s f mf cx ) ) | proj1 (mf y (A∋fc s f mf cy ) ) @@ -193,7 +193,7 @@ cxx : FClosure A f s (f x) cxx = fsuc x cx fc16 : (x : Ordinal ) → (cx : FClosure A f s x) → (fcn s mf cx ≡ fcn s mf (fsuc x cx)) ∨ ( suc (fcn s mf cx ) ≡ fcn s mf (fsuc x cx)) - fc16 x (init as) with proj1 (mf s as ) + fc16 x (init as refl ) with proj1 (mf s as ) ... | case1 _ = case1 refl ... | case2 _ = case2 refl fc16 .(f x) (fsuc x cx ) with proj1 (mf (f x) (A∋fc s f mf (fsuc x cx)) ) @@ -235,6 +235,14 @@ field x<sup : {y : Ordinal} → odef B y → (y ≡ x ) ∨ (y << x ) +record IsMinSup ( A B : HOD ) ( f : Ordinal → Ordinal ) {x : Ordinal} (xa : odef A x) : Set n where + field + sup : Ordinal + B∋sup : odef B sup + issup : {y : Ordinal} → odef B y → (x ≡ y ) ∨ (y << x ) + minsup : {z : Ordinal} → (za : odef A z) → IsSup A B za → sup o≤ z + fc : FClosure A f sup x + record ZChain ( A : HOD ) (x : Ordinal) ( f : Ordinal → Ordinal ) ( z : Ordinal ) : Set (Level.suc n) where field @@ -248,32 +256,8 @@ is-max : {a b : Ordinal } → (ca : odef chain a ) → b o< osuc z → (ab : odef A b) → HasPrev A chain ab f ∨ IsSup A chain ab → * a < * b → odef chain b - fc∨sup : {a : Ordinal } → ( ca : odef chain a ) → HasPrev A chain ( chain⊆A ca) f ∨ IsSup A chain ( chain⊆A ca) - -Uz-mono : ( A : HOD ) (x : Ordinal) ( f : Ordinal → Ordinal ) - → ( a b : Ordinal ) → a o< b → (za : ZChain A x f a) (zb : ZChain A x f b) - → ZChain.chain za ⊆' ZChain.chain zb -Uz-mono A x f a b = TransFinite {λ a → a o< b → (za : ZChain A x f a) (zb : ZChain A x f b) - → ZChain.chain za ⊆' ZChain.chain zb } ind a where - open ZChain - ind : (a : Ordinal) - → ((y : Ordinal) → y o< a → y o< b → (za : ZChain A x f y) (zb : ZChain A x f b) → chain za ⊆' chain zb) - → a o< b → (za : ZChain A x f a) (zb : ZChain A x f b) → chain za ⊆' chain zb - ind a prev a<b za zb {i} zai with f-total za (subst (λ k → odef (chain za) k) (sym &iso) zai) - (subst (λ k → odef (chain za) k) (sym &iso) (chain∋x za) ) - ... | tri< i<x ¬b ¬c with initial za zai - ... | case1 i=x = ⊥-elim ( ¬b (sym i=x)) - ... | case2 x<i = ⊥-elim ( ¬c x<i) - ind a prev a<b za zb {i} zai | tri≈ ¬a b ¬c = subst (λ k → odef (chain zb) k ) (sym (*≡*→≡ b))(chain∋x zb) - ind a prev a<b za zb {i} zai | tri> ¬a ¬b x<i = um i zai where - um : (i : Ordinal ) → odef (chain za) i → odef (chain zb) i - um zai i with fc∨sup za zai - ... | case1 fc = {!!} - ... | case2 sup = {!!} - um01 : i o< osuc b - um01 = {!!} - um02 : {!!} - um02 = is-max zb (chain∋x zb) {!!} (chain⊆A za zai) {!!} x<i + fc∨sup : {a : Ordinal } → ( ca : odef chain a ) → IsMinSup A chain f ( chain⊆A ca) + sup≤x : {a : Ordinal } → ( ca : odef chain a ) → IsMinSup.sup (fc∨sup ca) o≤ x record Maximal ( A : HOD ) : Set (Level.suc n) where field @@ -536,7 +520,7 @@ → HasPrev A schain ab f ∨ IsSup A schain ab → * a < * b → odef schain b s-ismax {a} {b} sa b<ox ab p a<b with osuc-≡< b<ox -- b is x? - ... | case1 b=x = case2 (subst (λ k → FClosure A f (& sp) k ) (sym (trans b=x x=sup )) (init (SUP.A∋maximal sup0) )) + ... | case1 b=x = case2 (subst (λ k → FClosure A f (& sp) k ) (sym (trans b=x x=sup )) (init (SUP.A∋maximal sup0) refl )) s-ismax {a} {b} (case1 za) b<ox ab (case1 p) a<b | case2 b<x = z21 p where -- has previous z21 : HasPrev A schain ab f → odef schain b z21 record { y = y ; ay = (case1 zy) ; x=fy = x=fy } = @@ -594,6 +578,31 @@ u-initial {z} u = ZChain.initial ( uzc u ) (UZFChain.chain∋z u) u-chain∋x : odef Uz y u-chain∋x = record { u = y ; u<x = y<x ; chain∋z = ZChain.chain∋x (prev y y<x ay ) } + u-mono : ( a b : Ordinal ) → b o< x → a o< b → (za : ZChain A y f a) (zb : ZChain A y f b) → ZChain.chain za ⊆' ZChain.chain zb + u-mono a b b<x = TransFinite {λ a → a o< b → (za : ZChain A y f a) (zb : ZChain A y f b) + → ZChain.chain za ⊆' ZChain.chain zb } uind a where + open ZChain + uind : (a : Ordinal) + → ((c : Ordinal) → c o< a → c o< b → (za : ZChain A y f c) (zb : ZChain A y f b) → chain za ⊆' chain zb) + → a o< b → (za : ZChain A y f a) (zb : ZChain A y f b) → chain za ⊆' chain zb + uind a previ a<b za zb {i} zai = um01 (IsMinSup.fc (fc∨sup za zai)) where + um01 : {i : Ordinal} → FClosure A f (IsMinSup.sup (fc∨sup za zai)) i → odef (chain zb) i + um01 (fsuc x t) = f-next zb (um01 t) + um01 {j} (init s j=minsup ) with trio< j b + ... | tri> ¬a ¬b b<j = {!!} + ... | tri≈ ¬a b=j ¬c = {!!} + ... | tri< j<b ¬b ¬c = previ j j<a j<b {!!} zb {!!} + where + zj : ZChain A y f j + zj = prev (osuc j) j<x ay + um10 : j ≡ IsMinSup.sup (fc∨sup za zai) + um10 = j=minsup + -- zcj : odef (chain zj ) j + -- zcj = ZChain.is-max zj {!!} {!!} {!!} (case2 ?) {!!} + j<a : j o< a + j<a = {!!} + -- um00 : odef (chain zb) j + -- um00 = previ (osuc j) {!!} {!!} zj zb zcj u-total : IsTotalOrderSet Uz u-total {x} {y} ux uy = {!!} --- ux ⊆ uy ∨ uy ⊆ ux