Mercurial > hg > Members > kono > Proof > ZF-in-agda
changeset 555:726b6dac5eaa
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 29 Apr 2022 15:52:11 +0900 |
parents | 0687736285ce |
children | ba889c711524 |
files | src/zorn.agda |
diffstat | 1 files changed, 38 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/src/zorn.agda Fri Apr 29 14:49:25 2022 +0900 +++ b/src/zorn.agda Fri Apr 29 15:52:11 2022 +0900 @@ -15,6 +15,10 @@ open import Data.Empty import BAlgbra +open import Data.Nat hiding ( _<_ ; _≤_ ) +open import Data.Nat.Properties +open import nat + open inOrdinal O open OD O @@ -74,39 +78,54 @@ data FClosure (A : HOD) (f : Ordinal → Ordinal ) (s : Ordinal) : Ordinal → Set n where init : odef A s → FClosure A f s s - fsuc : {x : Ordinal} ( p : FClosure A f s x ) → FClosure A f s (f x) - -open import Data.Nat hiding ( _<_ ; _≤_ ) -open import Data.Nat.Properties -open import nat - -fcn : {A : HOD} {s x : Ordinal} {f : Ordinal → Ordinal} → FClosure A f s x → ℕ -fcn (init as) = zero -fcn (fsuc p) = suc ( fcn p ) - -fcn-inject : {A : HOD} {s x y : Ordinal } (f : Ordinal → Ordinal) → (fcx : FClosure A f s x) → (fcy : FClosure A f s y ) → fcn fcx ≡ fcn fcy → x ≡ y -fcn-inject f (init x) (init x₁) refl = refl -fcn-inject f (fsuc fcx) (fsuc fcy) eq = cong f ( fcn-inject f fcx fcy ( cong pred eq )) + fsuc : (x : Ordinal) ( p : FClosure A f s x ) → FClosure A f s (f x) A∋fc : {A : HOD} {s y : Ordinal } (f : Ordinal → Ordinal) (mf : ≤-monotonic-f A f) → (fcy : FClosure A f s y ) → odef A y A∋fc {A} {s} {.s} f mf (init as) = as -A∋fc {A} {s} f mf (fsuc {y} fcy) = proj2 (mf y ( A∋fc {A} {s} f mf fcy ) ) +A∋fc {A} {s} f mf (fsuc y fcy) = proj2 (mf y ( A∋fc {A} {s} f mf fcy ) ) + +fcn : {A : HOD} {s x : Ordinal} {f : Ordinal → Ordinal} → (mf : ≤-monotonic-f A f) → FClosure A f s x → ℕ +fcn mf (init as) = zero +fcn {A} {s} {x} {f} mf (fsuc y p) with mf y (A∋fc f mf p) +... | ⟪ case1 eq , _ ⟫ = fcn mf p +... | ⟪ case2 y<fy , _ ⟫ = suc (fcn mf p ) + +ncf : {A : HOD} {s : Ordinal} {f : Ordinal → Ordinal} → (mf : ≤-monotonic-f A f) → ℕ → Ordinal +ncf {A} {s} mf zero = s +ncf {A} {s} {f} mf (suc x) = f (ncf {A} {s} mf x ) + +FC→ : {A : HOD} {s : Ordinal} {f : Ordinal → Ordinal} → (mf : ≤-monotonic-f A f) → (x : ℕ ) → (fc : FClosure A f s (ncf {A} {s} mf x) ) → fcn mf fc ≡ x +FC→ {A} {s} {f} mf zero (init x) = refl +FC→ {A} {.(f x)} {f} mf zero (fsuc x fc) = {!!} +FC→ {A} {s} {f} mf (suc x) fc = {!!} + +fcn-inject : {A : HOD} {s x y : Ordinal } (f : Ordinal → Ordinal) → (mf : ≤-monotonic-f A f) + → (fcx : FClosure A f s x) → (fcy : FClosure A f s y ) → fcn mf fcx ≡ fcn mf fcy → x ≡ y +fcn-inject f mf (init x) (init x₁) refl = refl +fcn-inject {A} {s} f mf (init sa) (fsuc y fcy) eq with proj1 (mf y (A∋fc f mf fcy )) +... | case1 y=fy = subst (λ k → s ≡ k ) (subst₂ (λ j k → j ≡ k ) &iso &iso (cong (&) y=fy )) (fcn-inject f mf (init sa) fcy (trans eq fcn0 )) where + fcn0 : fcn mf ( fsuc y fcy ) ≡ fcn mf fcy + fcn0 with mf y (A∋fc f mf fcy ) + ... | ⟪ case1 x , proj4 ⟫ = refl +... | case2 y<fy = {!!} +fcn-inject f mf (fsuc x fcx) (init sa) eq = {!!} -- cong f ( fcn-inject f mf fcx fcy ( cong pred eq )) +fcn-inject f mf (fsuc x fcx) (fsuc y fcy) eq = {!!} -- cong f ( fcn-inject f mf fcx fcy ( cong pred eq )) fcn-cmp : {A : HOD} {s x y : Ordinal } (f : Ordinal → Ordinal) (mf : ≤-monotonic-f A f) → (cx : FClosure A f s x) → (cy : FClosure A f s y ) → Tri (* x < * y) (* x ≡ * y) (* y < * x ) -fcn-cmp {A} {s} {x} {y} f mf cx cy with <-cmp (fcn cx) (fcn cy) +fcn-cmp {A} {s} {x} {y} f mf cx cy with <-cmp (fcn mf cx) (fcn mf cy) ... | t = {!!} fcn-mono : {A : HOD} {s x y : Ordinal } (f : Ordinal → Ordinal) (mf : ≤-monotonic-f A f) → (imm : { x y : Ordinal } → ¬ ( ( * x < * y ) ∧ ( * y < * (f x )) ) ) - → (fcx : FClosure A f s x) → (fcy : FClosure A f s y ) → fcn fcx Data.Nat.≤ fcn fcy → * x ≤ * y + → (fcx : FClosure A f s x) → (fcy : FClosure A f s y ) → fcn mf fcx Data.Nat.≤ fcn mf fcy → * x ≤ * y fcn-mono f mf imm (init _) (init _) z≤n = case1 refl -fcn-mono {A} {s} {x} f mf imm (init sa) (fsuc {y} fcy) z≤n with proj1 (mf y (A∋fc f mf fcy ) ) +fcn-mono {A} {s} {x} f mf imm (init sa) (fsuc y fcy) z≤n with proj1 (mf y (A∋fc f mf fcy ) ) ... | case1 eq = subst (λ k → * s ≤ k ) eq ( fcn-mono f mf imm (init sa) fcy z≤n ) ... | case2 lt = ≤-ftrans (fcn-mono f mf imm (init sa) fcy z≤n) (case2 lt) -fcn-mono f mf imm (fsuc fcx) (fsuc fcy) (s≤s lt) with fcn-mono f mf imm fcx fcy lt +fcn-mono f mf imm (fsuc x fcx) (fsuc y fcy) lt with fcn-mono f mf imm fcx fcy {!!} ... | case1 x=y = case1 (subst₂ (λ j k → * (f j) ≡ * (f k)) &iso &iso ( cong (λ k → * (f (& k ))) x=y ) ) -... | case2 x<y with <-cmp (fcn fcx) (fcn fcy) +... | case2 x<y with <-cmp (fcn mf fcx) (fcn mf fcy) ... | tri< a ¬b ¬c = {!!} ... | tri≈ ¬a b ¬c = {!!} ... | tri> ¬a ¬b c = {!!}