comparison src/ODUtil.agda @ 1096:55ab5de1ae02

recovery
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 23 Dec 2022 12:54:05 +0900
parents ef5dde91fa80
children c90eec304cfa
comparison
equal deleted inserted replaced
1095:08b6aa6870d9 1096:55ab5de1ae02
24 open OD O 24 open OD O
25 open OD.OD 25 open OD.OD
26 open ODAxiom odAxiom 26 open ODAxiom odAxiom
27 27
28 open HOD 28 open HOD
29 open _⊆_
30 open _∧_ 29 open _∧_
31 open _==_ 30 open _==_
32 31
33 cseq : HOD → HOD 32 cseq : HOD → HOD
34 cseq x = record { od = record { def = λ y → odef x (osuc y) } ; odmax = osuc (odmax x) ; <odmax = lemma } where 33 cseq x = record { od = record { def = λ y → odef x (osuc y) } ; odmax = osuc (odmax x) ; <odmax = lemma } where
56 lemmab0 = trans (cong (λ k → next k) (omxx _)) (sym nexto≡) 55 lemmab0 = trans (cong (λ k → next k) (omxx _)) (sym nexto≡)
57 lemmab1 : & (x , x) o< next ( odmax (x , x)) 56 lemmab1 : & (x , x) o< next ( odmax (x , x))
58 lemmab1 = ho< 57 lemmab1 = ho<
59 58
60 trans-⊆ : { A B C : HOD} → A ⊆ B → B ⊆ C → A ⊆ C 59 trans-⊆ : { A B C : HOD} → A ⊆ B → B ⊆ C → A ⊆ C
61 trans-⊆ A⊆B B⊆C = record { incl = λ x → incl B⊆C (incl A⊆B x) } 60 trans-⊆ A⊆B B⊆C ab = B⊆C (A⊆B ab)
62 61
63 refl-⊆ : {A : HOD} → A ⊆ A 62 refl-⊆ : {A : HOD} → A ⊆ A
64 refl-⊆ {A} = record { incl = λ x → x } 63 refl-⊆ x = x
65 64
66 od⊆→o≤ : {x y : HOD } → x ⊆ y → & x o< osuc (& y) 65 od⊆→o≤ : {x y : HOD } → x ⊆ y → & x o< osuc (& y)
67 od⊆→o≤ {x} {y} lt = ⊆→o≤ {x} {y} (λ {z} x>z → subst (λ k → def (od y) k ) &iso (incl lt (d→∋ x x>z))) 66 od⊆→o≤ {x} {y} lt = ⊆→o≤ {x} {y} (λ {z} x>z → subst (λ k → def (od y) k ) &iso (lt (d→∋ x x>z)))
68 67
69 ⊆→= : {F U : HOD} → F ⊆ U → U ⊆ F → F =h= U 68 ⊆→= : {F U : HOD} → F ⊆ U → U ⊆ F → F =h= U
70 ⊆→= {F} {U} FU UF = record { eq→ = λ {x} lt → subst (λ k → odef U k) &iso (incl FU (subst (λ k → odef F k) (sym &iso) lt) ) 69 ⊆→= {F} {U} FU UF = record { eq→ = λ {x} lt → subst (λ k → odef U k) &iso (FU (subst (λ k → odef F k) (sym &iso) lt) )
71 ; eq← = λ {x} lt → subst (λ k → odef F k) &iso (incl UF (subst (λ k → odef U k) (sym &iso) lt) ) } 70 ; eq← = λ {x} lt → subst (λ k → odef F k) &iso (UF (subst (λ k → odef U k) (sym &iso) lt) ) }
72 71
73 ¬A∋x→A≡od∅ : (A : HOD) → {x : HOD} → A ∋ x → ¬ ( & A ≡ o∅ ) 72 ¬A∋x→A≡od∅ : (A : HOD) → {x : HOD} → A ∋ x → ¬ ( & A ≡ o∅ )
74 ¬A∋x→A≡od∅ A {x} ax a=0 = ¬x<0 ( subst (λ k → & x o< k) a=0 (c<→o< ax )) 73 ¬A∋x→A≡od∅ A {x} ax a=0 = ¬x<0 ( subst (λ k → & x o< k) a=0 (c<→o< ax ))
75 74
76 subset-lemma : {A x : HOD } → ( {y : HOD } → x ∋ y → (A ∩ x ) ∋ y ) ⇔ ( x ⊆ A ) 75 subset-lemma : {A x : HOD } → ( {y : HOD } → x ∋ y → (A ∩ x ) ∋ y ) ⇔ ( x ⊆ A )
77 subset-lemma {A} {x} = record { 76 subset-lemma {A} {x} = record {
78 proj1 = λ lt → record { incl = λ x∋z → proj1 (lt x∋z) } 77 proj1 = λ lt x∋z → subst (λ k → odef A k ) &iso ( proj1 (lt (subst (λ k → odef x k) (sym &iso) x∋z ) ))
79 ; proj2 = λ x⊆A lt → ⟪ incl x⊆A lt , lt ⟫ 78 ; proj2 = λ x⊆A lt → ⟪ x⊆A lt , lt ⟫
80 } 79 }
81 80
82 ω<next-o∅ : {y : Ordinal} → infinite-d y → y o< next o∅ 81 ω<next-o∅ : {y : Ordinal} → infinite-d y → y o< next o∅
83 ω<next-o∅ {y} lt = <odmax infinite lt 82 ω<next-o∅ {y} lt = <odmax infinite lt
84 83
107 106
108 single : {x y : HOD } → (x , x ) ∋ y → x ≡ y 107 single : {x y : HOD } → (x , x ) ∋ y → x ≡ y
109 single (case1 eq) = ==→o≡ ( ord→== (sym eq) ) 108 single (case1 eq) = ==→o≡ ( ord→== (sym eq) )
110 single (case2 eq) = ==→o≡ ( ord→== (sym eq) ) 109 single (case2 eq) = ==→o≡ ( ord→== (sym eq) )
111 110
111 single& : {x y : Ordinal } → odef (* x , * x ) y → x ≡ y
112 single& (case1 eq) = sym (trans eq &iso)
113 single& (case2 eq) = sym (trans eq &iso)
114
112 open import Relation.Binary.HeterogeneousEquality as HE using (_≅_ ) 115 open import Relation.Binary.HeterogeneousEquality as HE using (_≅_ )
113 -- postulate f-extensionality : { n m : Level} → HE.Extensionality n m 116 -- postulate f-extensionality : { n m : Level} → HE.Extensionality n m
114 117
118 pair=∨ : {a b c : Ordinal } → odef (* a , * b) c → ( a ≡ c ) ∨ ( b ≡ c )
119 pair=∨ {a} {b} {c} (case1 c=a) = case1 ( sym (trans c=a &iso))
120 pair=∨ {a} {b} {c} (case2 c=b) = case2 ( sym (trans c=b &iso))
121
115 ω-prev-eq1 : {x y : Ordinal} → & (Union (* y , (* y , * y))) ≡ & (Union (* x , (* x , * x))) → ¬ (x o< y) 122 ω-prev-eq1 : {x y : Ordinal} → & (Union (* y , (* y , * y))) ≡ & (Union (* x , (* x , * x))) → ¬ (x o< y)
116 ω-prev-eq1 {x} {y} eq x<y = eq→ (ord→== eq) {& (* y)} (λ not2 → not2 (& (* y , * y)) 123 ω-prev-eq1 {x} {y} eq x<y with eq→ (ord→== eq) record { owner = & (* y , * y) ; ao = case2 refl
117 ⟪ case2 refl , subst (λ k → odef k (& (* y))) (sym *iso) (case1 refl)⟫ ) (λ u → lemma u ) where 124 ; ox = subst (λ k → odef k (& (* y))) (sym *iso) (case1 refl) } -- (* x , (* x , * x)) ∋ * y
118 lemma : (u : Ordinal) → ¬ def (od (* x , (* x , * x))) u ∧ def (od (* u)) (& (* y)) 125 ... | record { owner = u ; ao = xxx∋u ; ox = uy } with xxx∋u
119 lemma u t with proj1 t 126 ... | case1 u=x = ⊥-elim ( o<> x<y (osucprev (begin
120 lemma u t | case1 u=x = o<> (c<→o< {* y} {* u} (proj2 t)) (subst₂ (λ j k → j o< k ) 127 osuc y ≡⟨ sym (cong osuc &iso) ⟩
121 (trans (sym &iso) (trans (sym u=x) (sym &iso)) ) (sym &iso) x<y ) -- x ≡ & (* u) 128 osuc (& (* y)) ≤⟨ osucc (c<→o< {* y} {* u} uy) ⟩ -- * x ≡ * u ∋ * y
122 lemma u t | case2 u=xx = o<¬≡ (lemma1 (subst (λ k → odef k (& (* y)) ) (trans (cong (λ k → * k ) u=xx) *iso ) (proj2 t))) x<y where 129 & (* u) ≡⟨ &iso ⟩
123 lemma1 : {x y : Ordinal } → (* x , * x ) ∋ * y → x ≡ y -- y = x ∈ ( x , x ) = u 130 u ≡⟨ u=x ⟩
124 lemma1 (case1 eq) = subst₂ (λ j k → j ≡ k ) &iso &iso (sym eq) 131 & (* x) ≡⟨ &iso ⟩
125 lemma1 (case2 eq) = subst₂ (λ j k → j ≡ k ) &iso &iso (sym eq) 132 x ∎ ))) where open o≤-Reasoning O
133 ... | case2 u=xx = ⊥-elim (o<¬≡ ( begin
134 x ≡⟨ single& (subst₂ (λ j k → odef j k ) (begin
135 * u ≡⟨ cong (*) u=xx ⟩
136 * (& (* x , * x)) ≡⟨ *iso ⟩
137 (* x , * x ) ∎ ) &iso uy ) ⟩ -- (* x , * x ) ∋ * y
138 y ∎ ) x<y) where open ≡-Reasoning
126 139
127 ω-prev-eq : {x y : Ordinal} → & (Union (* y , (* y , * y))) ≡ & (Union (* x , (* x , * x))) → x ≡ y 140 ω-prev-eq : {x y : Ordinal} → & (Union (* y , (* y , * y))) ≡ & (Union (* x , (* x , * x))) → x ≡ y
128 ω-prev-eq {x} {y} eq with trio< x y 141 ω-prev-eq {x} {y} eq with trio< x y
129 ω-prev-eq {x} {y} eq | tri< a ¬b ¬c = ⊥-elim (ω-prev-eq1 eq a) 142 ω-prev-eq {x} {y} eq | tri< a ¬b ¬c = ⊥-elim (ω-prev-eq1 eq a)
130 ω-prev-eq {x} {y} eq | tri≈ ¬a b ¬c = b 143 ω-prev-eq {x} {y} eq | tri≈ ¬a b ¬c = b
131 ω-prev-eq {x} {y} eq | tri> ¬a ¬b c = ⊥-elim (ω-prev-eq1 (sym eq) c) 144 ω-prev-eq {x} {y} eq | tri> ¬a ¬b c = ⊥-elim (ω-prev-eq1 (sym eq) c)
132 145
133 ω-∈s : (x : HOD) → Union ( x , (x , x)) ∋ x 146 ω-∈s : (x : HOD) → Union ( x , (x , x)) ∋ x
134 ω-∈s x not = not (& (x , x)) ⟪ case2 refl , subst (λ k → odef k (& x) ) (sym *iso) (case1 refl) ⟫ 147 ω-∈s x = record { owner = & ( x , x ) ; ao = case2 refl ; ox = subst₂ (λ j k → odef j k ) (sym *iso) refl (case2 refl) }
135 148
136 ωs≠0 : (x : HOD) → ¬ ( Union ( x , (x , x)) ≡ od∅ ) 149 ωs≠0 : (x : HOD) → ¬ ( Union ( x , (x , x)) ≡ od∅ )
137 ωs≠0 y eq = ⊥-elim ( ¬x<0 (subst (λ k → & y o< k ) ord-od∅ (c<→o< (subst (λ k → odef k (& y )) eq (ω-∈s y) ))) ) 150 ωs≠0 y eq = ⊥-elim ( ¬x<0 (subst (λ k → & y o< k ) ord-od∅ (c<→o< (subst (λ k → odef k (& y )) eq (ω-∈s y) ))) )
138 151
139 nat→ω-iso : {i : HOD} → (lt : infinite ∋ i ) → nat→ω ( ω→nat i lt ) ≡ i 152 nat→ω-iso : {i : HOD} → (lt : infinite ∋ i ) → nat→ω ( ω→nat i lt ) ≡ i
152 ≡⟨ trans ( sym *iso) ox=x ⟩ 165 ≡⟨ trans ( sym *iso) ox=x ⟩
153 x 166 x
154 ∎ where 167 ∎ where
155 open ≡-Reasoning 168 open ≡-Reasoning
156 lemma0 : x ∋ * x₁ 169 lemma0 : x ∋ * x₁
157 lemma0 = subst (λ k → odef k (& (* x₁))) (trans (sym *iso) ox=x) (λ not → not 170 lemma0 = subst (λ k → odef k (& (* x₁))) (trans (sym *iso) ox=x)
158 (& (* x₁ , * x₁)) ⟪ pair2 , subst (λ k → odef k (& (* x₁))) (sym *iso) pair1 ⟫ ) 171 record { owner = & ( * x₁ , * x₁ ) ; ao = case2 refl ; ox = subst (λ k → odef k (& (* x₁))) (sym *iso) (case1 refl) }
159 lemma1 : infinite ∋ * x₁ 172 lemma1 : infinite ∋ * x₁
160 lemma1 = subst (λ k → odef infinite k) (sym &iso) ltd 173 lemma1 = subst (λ k → odef infinite k) (sym &iso) ltd
161 lemma3 : {x y : Ordinal} → (ltd : infinite-d x ) (ltd1 : infinite-d y ) → y ≡ x → ltd ≅ ltd1 174 lemma3 : {x y : Ordinal} → (ltd : infinite-d x ) (ltd1 : infinite-d y ) → y ≡ x → ltd ≅ ltd1
162 lemma3 iφ iφ refl = HE.refl 175 lemma3 iφ iφ refl = HE.refl
163 lemma3 iφ (isuc {y} ltd1) eq = ⊥-elim ( ¬x<0 (subst₂ (λ j k → j o< k ) &iso eq (c<→o< (ω-∈s (* y)) ))) 176 lemma3 iφ (isuc {y} ltd1) eq = ⊥-elim ( ¬x<0 (subst₂ (λ j k → j o< k ) &iso eq (c<→o< (ω-∈s (* y)) )))