Mercurial > hg > Members > kono > Proof > ZF-in-agda
comparison ordinal-definable.agda @ 57:419688a279e0
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 28 May 2019 11:31:43 +0900 |
parents | aad8cdce8845 |
children | 323b561210b5 |
comparison
equal
deleted
inserted
replaced
56:aad8cdce8845 | 57:419688a279e0 |
---|---|
126 ominimal {n} record { lv = (Suc lv) ; ord = (OSuc .(Suc lv) ord) } (case1 (s≤s x)) = record { mino = record { lv = (Suc lv) ; ord = ord } ; min<x = case2 s<refl} | 126 ominimal {n} record { lv = (Suc lv) ; ord = (OSuc .(Suc lv) ord) } (case1 (s≤s x)) = record { mino = record { lv = (Suc lv) ; ord = ord } ; min<x = case2 s<refl} |
127 ominimal {n} record { lv = (Suc lv) ; ord = (OSuc .(Suc lv) ord) } (case2 ()) | 127 ominimal {n} record { lv = (Suc lv) ; ord = (OSuc .(Suc lv) ord) } (case2 ()) |
128 ominimal {n} record { lv = (Suc lx) ; ord = (ℵ .lx) } (case1 (s≤s z≤n)) = record { mino = record { lv = Suc lx ; ord = Φ (Suc lx) } ; min<x = case2 ℵΦ< } | 128 ominimal {n} record { lv = (Suc lx) ; ord = (ℵ .lx) } (case1 (s≤s z≤n)) = record { mino = record { lv = Suc lx ; ord = Φ (Suc lx) } ; min<x = case2 ℵΦ< } |
129 ominimal {n} record { lv = (Suc lx) ; ord = (ℵ .lx) } (case2 ()) | 129 ominimal {n} record { lv = (Suc lx) ; ord = (ℵ .lx) } (case2 ()) |
130 | 130 |
131 ∅5 : {n : Level} → ( x : Ordinal {n} ) → ¬ ( x ≡ o∅ {n} ) → o∅ {n} o< x | 131 ∅5 : {n : Level} → { x : Ordinal {n} } → ¬ ( x ≡ o∅ {n} ) → o∅ {n} o< x |
132 ∅5 {n} record { lv = Zero ; ord = (Φ .0) } not = ⊥-elim (not refl) | 132 ∅5 {n} {record { lv = Zero ; ord = (Φ .0) }} not = ⊥-elim (not refl) |
133 ∅5 {n} record { lv = Zero ; ord = (OSuc .0 ord) } not = case2 Φ< | 133 ∅5 {n} {record { lv = Zero ; ord = (OSuc .0 ord) }} not = case2 Φ< |
134 ∅5 {n} record { lv = (Suc lv) ; ord = ord } not = case1 (s≤s z≤n) | 134 ∅5 {n} {record { lv = (Suc lv) ; ord = ord }} not = case1 (s≤s z≤n) |
135 | 135 |
136 ∅8 : {n : Level} → ( x : Ordinal {n} ) → ¬ x o< o∅ {n} | 136 ∅8 : {n : Level} → ( x : Ordinal {n} ) → ¬ x o< o∅ {n} |
137 ∅8 {n} x (case1 ()) | 137 ∅8 {n} x (case1 ()) |
138 ∅8 {n} x (case2 ()) | 138 ∅8 {n} x (case2 ()) |
139 | 139 |
149 eq→ = λ d → lemma ( eq→ eq (def-subst d (sym oiso) refl )) ; | 149 eq→ = λ d → lemma ( eq→ eq (def-subst d (sym oiso) refl )) ; |
150 eq← = λ d → lemma ( eq← eq (def-subst d (sym oiso) refl )) } | 150 eq← = λ d → lemma ( eq← eq (def-subst d (sym oiso) refl )) } |
151 where | 151 where |
152 lemma : {x : OD {n} } {z : Ordinal {n}} → def (ord→od (od→ord x)) z → def x z | 152 lemma : {x : OD {n} } {z : Ordinal {n}} → def (ord→od (od→ord x)) z → def x z |
153 lemma {x} {z} d = def-subst d oiso refl | 153 lemma {x} {z} d = def-subst d oiso refl |
154 | |
155 =-iso : {n : Level } {x y : OD {suc n} } → (x == y) ≡ (ord→od (od→ord x) == y) | |
156 =-iso {_} {_} {y} = cong ( λ k → k == y ) (sym oiso) | |
154 | 157 |
155 ord→== : {n : Level} → { x y : OD {n} } → od→ord x ≡ od→ord y → x == y | 158 ord→== : {n : Level} → { x y : OD {n} } → od→ord x ≡ od→ord y → x == y |
156 ord→== {n} {x} {y} eq = ==-iso (lemma (od→ord x) (od→ord y) (orefl eq)) where | 159 ord→== {n} {x} {y} eq = ==-iso (lemma (od→ord x) (od→ord y) (orefl eq)) where |
157 lemma : ( ox oy : Ordinal {n} ) → ox ≡ oy → (ord→od ox) == (ord→od oy) | 160 lemma : ( ox oy : Ordinal {n} ) → ox ≡ oy → (ord→od ox) == (ord→od oy) |
158 lemma ox ox refl = eq-refl | 161 lemma ox ox refl = eq-refl |
224 ∅2 : {n : Level} → { x : OD {n} } → o∅ {n} o< od→ord x → ¬ ( x == od∅ {n} ) | 227 ∅2 : {n : Level} → { x : OD {n} } → o∅ {n} o< od→ord x → ¬ ( x == od∅ {n} ) |
225 ∅2 {n} {x} lt record { eq→ = eq→ ; eq← = eq← } with ominimal (od→ord x ) lt | 228 ∅2 {n} {x} lt record { eq→ = eq→ ; eq← = eq← } with ominimal (od→ord x ) lt |
226 ... | min with eq→ ( def-subst (o<→c< (Minimumo.min<x min)) oiso refl ) | 229 ... | min with eq→ ( def-subst (o<→c< (Minimumo.min<x min)) oiso refl ) |
227 ... | () | 230 ... | () |
228 | 231 |
232 ∅0 : {n : Level} → { x : Ordinal {n} } → o∅ {n} o< x → ¬ ( ord→od x == od∅ {n} ) | |
233 ∅0 {n} {x} lt record { eq→ = eq→ ; eq← = eq← } with ominimal x lt | |
234 ... | min with eq→ (o<→c< (Minimumo.min<x min)) | |
235 ... | () | |
236 | |
229 | 237 |
230 is-od∅ : {n : Level} → ( x : OD {suc n} ) → Dec ( x == od∅ {suc n} ) | 238 is-od∅ : {n : Level} → ( x : OD {suc n} ) → Dec ( x == od∅ {suc n} ) |
231 is-od∅ {n} x with trio< {n} (od→ord x) (o∅ {suc n}) | 239 is-od∅ {n} x with trio< {n} (od→ord x) (o∅ {suc n}) |
232 is-od∅ {n} x | tri≈ ¬a b ¬c = yes ( ∅7 (orefl b) ) | 240 is-od∅ {n} x | tri≈ ¬a b ¬c = yes ( ∅7 (orefl b) ) |
233 is-od∅ {n} x | tri< (case1 ()) ¬b ¬c | 241 is-od∅ {n} x | tri< (case1 ()) ¬b ¬c |
238 is-∋ {n} x y with tri-c< x y | 246 is-∋ {n} x y with tri-c< x y |
239 is-∋ {n} x y | tri< a ¬b ¬c = no ¬c | 247 is-∋ {n} x y | tri< a ¬b ¬c = no ¬c |
240 is-∋ {n} x y | tri≈ ¬a b ¬c = no ¬c | 248 is-∋ {n} x y | tri≈ ¬a b ¬c = no ¬c |
241 is-∋ {n} x y | tri> ¬a ¬b c = yes c | 249 is-∋ {n} x y | tri> ¬a ¬b c = yes c |
242 | 250 |
251 is-o∅ : {n : Level} → ( x : Ordinal {suc n} ) → Dec ( x ≡ o∅ {suc n} ) | |
252 is-o∅ {n} record { lv = Zero ; ord = (Φ .0) } = yes refl | |
253 is-o∅ {n} record { lv = Zero ; ord = (OSuc .0 ord₁) } = no ( λ () ) | |
254 is-o∅ {n} record { lv = (Suc lv₁) ; ord = ord } = no (λ()) | |
255 | |
243 open _∧_ | 256 open _∧_ |
244 | 257 |
245 ∅9 : {n : Level} → (x : OD {n} ) → ¬ x == od∅ → o∅ o< od→ord x | 258 ∅9 : {n : Level} → {x : OD {n} } → ¬ x == od∅ → o∅ o< od→ord x |
246 ∅9 x not = ∅5 ( od→ord x) lemma where | 259 ∅9 {_} {x} not = ∅5 lemma where |
247 lemma : ¬ od→ord x ≡ o∅ | 260 lemma : ¬ od→ord x ≡ o∅ |
248 lemma eq = not ( ∅7 eq ) | 261 lemma eq = not ( ∅7 eq ) |
249 | 262 |
250 OD→ZF : {n : Level} → ZF {suc (suc n)} {suc n} | 263 OD→ZF : {n : Level} → ZF {suc (suc n)} {suc n} |
251 OD→ZF {n} = record { | 264 OD→ZF {n} = record { |
317 selection {ψ} {X} {y} = record { | 330 selection {ψ} {X} {y} = record { |
318 proj1 = λ cond → record { proj1 = proj1 cond ; proj2 = ψiso {ψ} (proj2 cond) (sym oiso) } | 331 proj1 = λ cond → record { proj1 = proj1 cond ; proj2 = ψiso {ψ} (proj2 cond) (sym oiso) } |
319 ; proj2 = λ select → record { proj1 = proj1 select ; proj2 = ψiso {ψ} (proj2 select) oiso } | 332 ; proj2 = λ select → record { proj1 = proj1 select ; proj2 = ψiso {ψ} (proj2 select) oiso } |
320 } | 333 } |
321 minord : (x : OD {suc n} ) → ¬ (x == od∅ )→ Minimumo (od→ord x) | 334 minord : (x : OD {suc n} ) → ¬ (x == od∅ )→ Minimumo (od→ord x) |
322 minord x not = ominimal (od→ord x) (∅9 x not) | 335 minord x not = ominimal (od→ord x) (∅9 not) |
323 minimul : (x : OD {suc n} ) → ¬ (x == od∅ )→ OD {suc n} | 336 minimul : (x : OD {suc n} ) → ¬ (x == od∅ )→ OD {suc n} |
324 minimul x not = ord→od ( mino (minord x not)) | 337 minimul x not = ord→od ( mino (minord x not)) |
325 minimul<x : (x : OD {suc n} ) → (not : ¬ x == od∅ ) → x ∋ minimul x not | 338 minimul<x : (x : OD {suc n} ) → (not : ¬ x == od∅ ) → x ∋ minimul x not |
326 minimul<x x not = lemma0 (min<x (minord x not)) where | 339 minimul<x x not = lemma0 (min<x (minord x not)) where |
327 lemma0 : mino (minord x not) o< (od→ord x) → def x (od→ord (ord→od (mino (minord x not)))) | 340 lemma0 : mino (minord x not) o< (od→ord x) → def x (od→ord (ord→od (mino (minord x not)))) |
328 lemma0 m<x = def-subst {suc n} {ord→od (od→ord x)} {od→ord (ord→od (mino (minord x not)))} (o<→c< m<x) oiso refl | 341 lemma0 m<x = def-subst {suc n} {ord→od (od→ord x)} {od→ord (ord→od (mino (minord x not)))} (o<→c< m<x) oiso refl |
329 regularity : (x : OD) (not : ¬ (x == od∅)) → | 342 regularity-ord : (x : Ordinal ) (not : o∅ o< x ) → |
330 (x ∋ minimul x not) ∧ (Select (minimul x not) (λ x₁ → (minimul x not ∋ x₁) ∧ (x ∋ x₁)) == od∅) | 343 (ord→od x ∋ minimul (ord→od x) (∅0 not)) ∧ (Select (minimul (ord→od x) (∅0 not)) (λ x₁ → (minimul (ord→od x) (∅0 not) ∋ x₁) ∧ ((ord→od x) ∋ x₁)) == od∅) |
331 proj1 ( regularity x non ) = minimul<x x non | 344 proj1 ( regularity-ord x non ) = minimul<x (ord→od x) (∅0 non) |
332 proj2 ( regularity x non ) = reg1 where | 345 proj2 ( regularity-ord x non ) = reg1 where |
333 reg2 : {y : Ordinal} → ( def (minimul x non) y ∧ (minimul x non ∋ ord→od y) ∧ (x ∋ ord→od y) ) → ⊥ | 346 reg2 : {y : Ordinal} → ( def (minimul (ord→od x) (∅0 non)) y ∧ (minimul (ord→od x) (∅0 non) ∋ ord→od y) ∧ ((ord→od x) ∋ ord→od y) ) → ⊥ |
334 reg2 {y} t with proj1 t | proj1 (proj2 t) | proj2 (proj2 t) | 347 reg2 {y} t with proj1 t | proj1 (proj2 t) | proj2 (proj2 t) |
335 ... | p1 | p2 | p3 with is-∋ x ( ord→od y) | 348 ... | p1 | p2 | p3 with is-∋ (ord→od x) ( ord→od y) |
336 reg2 {y} t | p1 | p2 | p3 | no ¬p = ⊥-elim (¬p p3 ) -- ¬ x ∋ ord→od y empty x case | 349 reg2 {y} t | p1 | p2 | p3 | no ¬p = ⊥-elim (¬p p3 ) -- ¬ x ∋ ord→od y empty x case |
337 reg2 {y} t | p1 | p2 | p3 | yes p with is-∋ (minimul x non) (ord→od y) | 350 reg2 {y} t | p1 | p2 | p3 | yes p with is-∋ (minimul (ord→od x) (∅0 non)) (ord→od y) |
338 reg2 {y} t | p1 | p2 | p3 | yes p | no ¬p = ⊥-elim (¬p p2 ) -- minimum contains nothing q.e.d. | 351 reg2 {y} t | p1 | p2 | p3 | yes p | no ¬p = ⊥-elim (¬p p2 ) -- minimum contains nothing q.e.d. |
339 reg2 {y} t | p1 | p2 | p3 | yes p | yes p₁ = {!!} | 352 reg2 {y} t | p1 | p2 | p3 | yes p | yes p₁ = {!!} |
340 reg0 : {y : Ordinal {suc n}} → Minimumo (od→ord x) → def (Select (minimul x non) (λ z → (minimul x non ∋ z) ∧ (x ∋ z))) y → def od∅ y | 353 reg0 : {y : Ordinal {suc n}} → Minimumo x → def (Select (minimul (ord→od x) (∅0 non)) (λ z → (minimul (ord→od x) (∅0 non) ∋ z) ∧ ((ord→od x) ∋ z))) y → def od∅ y |
341 reg0 {y} m t with trio< y (mino (minord x non)) | 354 reg0 {y} m t with trio< y (mino (minord (ord→od x) (∅0 non))) |
342 reg0 {y} m t | tri< a ¬b ¬c with reg2 {y} ( record { | 355 reg0 {y} m t | tri< a ¬b ¬c with reg2 {y} t |
343 proj1 = (def-subst {suc n} {minimul x non} (o<→c< a) refl diso ) | |
344 ; proj2 = record { proj1 = proj1 (proj2 t ) | |
345 ; proj2 = proj2 (proj2 t ) | |
346 }} ) | |
347 ... | () | 356 ... | () |
348 reg0 {y} m t | tri≈ ¬a refl ¬c = lemma y ( mino (minord x non) ) refl | 357 reg0 {y} m t | tri≈ ¬a refl ¬c = lemma y ( mino (minord (ord→od x) (∅0 non)) ) refl |
349 (def-subst {suc n} {ord→od y} {mino (minord x non)} (proj1 t) refl (sym diso)) | 358 (def-subst {suc n} {ord→od y} {mino (minord (ord→od x) (∅0 non))} (proj1 t) refl (sym diso)) |
350 where | 359 where |
351 lemma : ( ox oy : Ordinal {suc n} ) → ox ≡ oy → ord→od ox c< ord→od oy → Lift (suc n) ⊥ | 360 lemma : ( ox oy : Ordinal {suc n} ) → ox ≡ oy → ord→od ox c< ord→od oy → Lift (suc n) ⊥ |
352 lemma ox oy refl lt = lift ( o≡→¬c< {suc n} {ord→od oy} {ord→od oy} refl lt ) | 361 lemma ox oy refl lt = lift ( o≡→¬c< {suc n} {ord→od oy} {ord→od oy} refl lt ) |
353 reg0 {y} m t | tri> ¬a ¬b c with o<> y (mino (minord x non)) (lemma (proj1 t)) c where | 362 reg0 {y} m t | tri> ¬a ¬b c with o<> y (mino (minord (ord→od x) (∅0 non))) (lemma {!!}) c where |
354 lemma : def (ord→od (mino (ominimal (od→ord x) (∅5 (od→ord x) (λ eq → non (∅7 eq)))))) y → y o< mino (minord x non) | 363 lemma : def (ord→od (mino (ominimal x (∅5 (λ eq → (∅0 non) (∅7 {!!})))))) y → y o< mino (minord (ord→od x) (∅0 non)) |
355 lemma d with c<→o< {suc n} {ord→od y} {ord→od (mino (minord x non))} | 364 lemma d with c<→o< {suc n} {ord→od y} {ord→od (mino (minord (ord→od x) (∅0 non)))} |
356 (def-subst {suc n} {ord→od (mino (minord x non))} {y} d refl (sym diso)) | 365 (def-subst {suc n} {ord→od (mino (minord (ord→od x) (∅0 non)))} {y} {!!} refl (sym diso)) |
357 lemma d | clt = o<-subst clt ord-iso ord-iso | 366 lemma d | clt = o<-subst clt ord-iso ord-iso |
358 ... | () | 367 ... | () |
359 reg1 : Select (minimul x non) (λ x₁ → (minimul x non ∋ x₁) ∧ (x ∋ x₁)) == od∅ | 368 reg1 : Select (minimul (ord→od x) (∅0 non)) (λ x₁ → (minimul (ord→od x) (∅0 non) ∋ x₁) ∧ ((ord→od x) ∋ x₁)) == od∅ |
360 reg1 = record { eq→ = reg0 (minord x non) ; eq← = λ () } | 369 reg1 = record { eq→ = reg0 (ominimal x non) ; eq← = λ () } where |
361 | 370 ∅-iso : {x : OD} → ¬ (x == od∅) → ¬ ((ord→od (od→ord x)) == od∅) |
371 ∅-iso {x} neq = subst (λ k → ¬ k) (=-iso {n} ) neq where | |
372 regularity : (x : OD) (not : ¬ (x == od∅)) → | |
373 (x ∋ minimul x not) ∧ (Select (minimul x not) (λ x₁ → (minimul x not ∋ x₁) ∧ (x ∋ x₁)) == od∅) | |
374 regularity x not with regularity-ord ( od→ord x ) ( ∅9 not ) | |
375 ... | t = ? | |
376 | |
377 |