# HG changeset patch # User Shinji KONO # Date 1651261266 -32400 # Node ID 9ba98ecfbe626ceafed5dfe5ed07e79e1082fb4f # Parent fed1c67b9a656d9d2e12e76deddf3cdc092a9078 fcn-cmp done diff -r fed1c67b9a65 -r 9ba98ecfbe62 src/zorn.agda --- a/src/zorn.agda Sat Apr 30 01:49:39 2022 +0900 +++ b/src/zorn.agda Sat Apr 30 04:41:06 2022 +0900 @@ -107,20 +107,32 @@ fcn-inject : {A : HOD} (s : Ordinal) { x y : Ordinal} {f : Ordinal → Ordinal} → (mf : ≤-monotonic-f A f) → (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) cx cy refl eq where - fc00 : (i : ℕ ) → {x y : Ordinal } → (cx : FClosure A f s x ) (cy : FClosure A f s y ) → i ≡ fcn s mf cx → i ≡ fcn s mf cy → * x ≡ * y - fc00 zero (init _) (init x₁) i=x i=y = refl - fc00 zero (init sa) (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 (init sa) cy i=x i=y ) - fc00 zero (fsuc x cx) (init sa) 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 cx (init sa) i=x i=y ) - fc00 zero (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 cx cy i=x i=y ) - fc00 (suc i) {.(f x)} {.(f y)} (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 (suc i) cx cy i=x i=y ) - ... | case1 x=fx | case2 yy = tri< lt (λ eq → <-irr (case1 (sym eq)) lt ) (λ lt1 → <-irr (case2 lt1) lt ) where - lt : * s < * (f y) - lt with s≤fc s f mf cy - ... | case1 s=y = subst (λ k → * k < * (f y) ) (sym (*≡*→≡ s=y)) fy>y - ... | case2 sy -fcn-cmp {A} s {x} f mf imm cx (init x₁) with s≤fc s f mf cx -... | case1 eq = tri≈ (λ lt → <-irr (case1 eq) lt) (sym eq) (λ lt → <-irr (case1 (sym eq)) lt) -... | case2 s (λ lt → <-irr (case2 s ¬a ¬b c = {!!} +fcn-cmp {A} s {x} {y} f mf cx cy with <-cmp ( fcn s mf cx ) (fcn s mf cy ) +... | tri< a ¬b ¬c = tri< fc11 (λ eq → <-irr (case1 (sym eq)) fc11) (λ lt → <-irr (case2 fc11) lt) where + fc11 : * x < * y + fc11 = fcn-< {A} s {x} {y} {f} mf cx cy a +... | tri≈ ¬a b ¬c = tri≈ (λ lt → <-irr (case1 (sym fc10)) lt) fc10 (λ lt → <-irr (case1 fc10) lt) where + fc10 : * x ≡ * y + fc10 = fcn-inject {A} s {x} {y} {f} mf cx cy b +... | tri> ¬a ¬b c = tri> (λ lt → <-irr (case2 fc12) lt) (λ eq → <-irr (case1 eq) fc12) fc12 where + fc12 : * y < * x + fc12 = fcn-< {A} s {y} {x} {f} mf cy cx c + +-- fcn-cmp {A} s {.s} {.s} f mf (init x) (init x₁) = tri≈ (λ lt → <-irr (case1 refl) lt ) refl (λ lt → <-irr (case1 refl) lt ) +-- fcn-cmp {A} s f mf imm (init x) (fsuc y cy) with proj1 (mf y (A∋fc s f mf cy ) ) +-- ... | case1 fy=y = subst (λ k → Tri (* s < * k) (* s ≡ * k) (* k < * s ) ) (*≡*→≡ fy=y) ( fcn-cmp {A} s f mf imm (init x) cy ) +-- ... | case2 fy>y = tri< lt (λ eq → <-irr (case1 (sym eq)) lt ) (λ lt1 → <-irr (case2 lt1) lt ) where +-- lt : * s < * (f y) +-- lt with s≤fc s f mf cy +-- ... | case1 s=y = subst (λ k → * k < * (f y) ) (sym (*≡*→≡ s=y)) fy>y +-- ... | case2 sy +-- fcn-cmp {A} s {x} f mf imm cx (init x₁) with s≤fc s f mf cx +-- ... | case1 eq = tri≈ (λ lt → <-irr (case1 eq) lt) (sym eq) (λ lt → <-irr (case1 (sym eq)) lt) +-- ... | case2 s (λ lt → <-irr (case2 s ¬a ¬b c = {!!} record Prev< (A B : HOD) {x : Ordinal } (xa : odef A x) ( f : Ordinal → Ordinal ) : Set n where field