Mercurial > hg > Members > kono > Proof > ZF-in-agda
comparison src/zorn.agda @ 624:d0938f220648
supf again
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 20 Jun 2022 07:49:35 +0900 |
parents | 7c5a922931e5 |
children | 886e1f82cca0 |
comparison
equal
deleted
inserted
replaced
613:7c5a922931e5 | 624:d0938f220648 |
---|---|
231 | 231 |
232 record IsSup (A B : HOD) {x : Ordinal } (xa : odef A x) : Set n where | 232 record IsSup (A B : HOD) {x : Ordinal } (xa : odef A x) : Set n where |
233 field | 233 field |
234 x<sup : {y : Ordinal} → odef B y → (y ≡ x ) ∨ (y << x ) | 234 x<sup : {y : Ordinal} → odef B y → (y ≡ x ) ∨ (y << x ) |
235 | 235 |
236 record SupF (A : HOD) : Set n where | 236 record ZChain ( A : HOD ) (x : Ordinal) ( f : Ordinal → Ordinal ) (supf : Ordinal → HOD) ( z : Ordinal ) : Set (Level.suc n) where |
237 field | |
238 chain : Ordinal | |
239 -- sup : Ordinal | |
240 -- asup : odef A sup | |
241 -- is-sup : IsSup A (* chain) asup | |
242 | |
243 record ZChain ( A : HOD ) (x : Ordinal) ( f : Ordinal → Ordinal ) (supf : Ordinal → SupF A) ( z : Ordinal ) : Set (Level.suc n) where | |
244 chain : HOD | 237 chain : HOD |
245 chain = * (SupF.chain (supf z )) | 238 chain = supf z |
246 field | 239 field |
247 chain⊆A : chain ⊆' A | 240 chain⊆A : chain ⊆' A |
248 chain∋x : odef chain x | 241 chain∋x : odef chain x |
249 initial : {y : Ordinal } → odef chain y → * x ≤ * y | 242 initial : {y : Ordinal } → odef chain y → * x ≤ * y |
250 f-total : IsTotalOrderSet chain | |
251 f-next : {a : Ordinal } → odef chain a → odef chain (f a) | 243 f-next : {a : Ordinal } → odef chain a → odef chain (f a) |
252 f-immediate : { x y : Ordinal } → odef chain x → odef chain y → ¬ ( ( * x < * y ) ∧ ( * y < * (f x )) ) | 244 f-immediate : { x y : Ordinal } → odef chain x → odef chain y → ¬ ( ( * x < * y ) ∧ ( * y < * (f x )) ) |
253 is-max : {a b : Ordinal } → (ca : odef chain a ) → b o< osuc z → (ab : odef A b) | 245 is-max : {a b : Ordinal } → (ca : odef chain a ) → b o< osuc z → (ab : odef A b) |
254 → HasPrev A chain ab f ∨ IsSup A chain ab | 246 → HasPrev A chain ab f ∨ IsSup A chain ab |
255 → * a < * b → odef chain b | 247 → * a < * b → odef chain b |
256 | 248 |
257 record ZChain1 ( A : HOD ) (x : Ordinal) ( f : Ordinal → Ordinal ) ( z : Ordinal ) : Set (Level.suc n) where | 249 record ZChain1 ( A : HOD ) (x : Ordinal) ( f : Ordinal → Ordinal ) ( z : Ordinal ) : Set (Level.suc n) where |
258 field | 250 field |
259 supf : Ordinal → SupF A | 251 supf : Ordinal → HOD |
260 zc : ZChain A x f supf z | 252 zc : ZChain A x f supf z |
261 chain-mono : {x y : Ordinal} → x o≤ y → y o< osuc z → * (SupF.chain (supf x )) ⊆' * (SupF.chain (supf y )) | 253 chain-mono : {x y : Ordinal} → x o≤ y → y o≤ z → supf x ⊆' supf y |
254 f-total : {x y : Ordinal} → x o≤ z → IsTotalOrderSet (supf x) | |
262 | 255 |
263 record Maximal ( A : HOD ) : Set (Level.suc n) where | 256 record Maximal ( A : HOD ) : Set (Level.suc n) where |
264 field | 257 field |
265 maximal : HOD | 258 maximal : HOD |
266 A∋maximal : A ∋ maximal | 259 A∋maximal : A ∋ maximal |
330 cf-is-<-monotonic nmx x ax = ⟪ proj2 (is-cf nmx ax ) , proj1 (is-cf nmx ax ) ⟫ | 323 cf-is-<-monotonic nmx x ax = ⟪ proj2 (is-cf nmx ax ) , proj1 (is-cf nmx ax ) ⟫ |
331 cf-is-≤-monotonic : (nmx : ¬ Maximal A ) → ≤-monotonic-f A ( cf nmx ) | 324 cf-is-≤-monotonic : (nmx : ¬ Maximal A ) → ≤-monotonic-f A ( cf nmx ) |
332 cf-is-≤-monotonic nmx x ax = ⟪ case2 (proj1 ( cf-is-<-monotonic nmx x ax )) , proj2 ( cf-is-<-monotonic nmx x ax ) ⟫ | 325 cf-is-≤-monotonic nmx x ax = ⟪ case2 (proj1 ( cf-is-<-monotonic nmx x ax )) , proj2 ( cf-is-<-monotonic nmx x ax ) ⟫ |
333 | 326 |
334 zsup : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f) → (zc1 : ZChain1 A (& s) f (& A) ) → SUP A (ZChain.chain (ZChain1.zc zc1)) | 327 zsup : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f) → (zc1 : ZChain1 A (& s) f (& A) ) → SUP A (ZChain.chain (ZChain1.zc zc1)) |
335 zsup f mf zc1 = supP (ZChain.chain zc) (ZChain.chain⊆A zc) ( ZChain.f-total zc ) where | 328 zsup f mf zc1 = supP (ZChain.chain zc) (ZChain.chain⊆A zc) ( ZChain1.f-total zc1 {!!} ) where |
336 zc = ZChain1.zc zc1 | 329 zc = ZChain1.zc zc1 |
337 A∋zsup : (nmx : ¬ Maximal A ) (zc1 : ZChain1 A (& s) (cf nmx) (& A) ) | 330 A∋zsup : (nmx : ¬ Maximal A ) (zc1 : ZChain1 A (& s) (cf nmx) (& A) ) |
338 → A ∋ * ( & ( SUP.sup (zsup (cf nmx) (cf-is-≤-monotonic nmx) zc1 ))) | 331 → A ∋ * ( & ( SUP.sup (zsup (cf nmx) (cf-is-≤-monotonic nmx) zc1 ))) |
339 A∋zsup nmx zc1 = subst (λ k → odef A (& k )) (sym *iso) ( SUP.A∋maximal (zsup (cf nmx) (cf-is-≤-monotonic nmx) zc1 ) ) | 332 A∋zsup nmx zc1 = subst (λ k → odef A (& k )) (sym *iso) ( SUP.A∋maximal (zsup (cf nmx) (cf-is-≤-monotonic nmx) zc1 ) ) |
340 sp0 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) (zc1 : ZChain1 A (& s) f (& A) ) → SUP A (ZChain.chain (ZChain1.zc zc1)) | 333 sp0 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) (zc1 : ZChain1 A (& s) f (& A) ) → SUP A (ZChain.chain (ZChain1.zc zc1)) |
341 sp0 f mf zc1 = supP (ZChain.chain zc) (ZChain.chain⊆A zc) (ZChain.f-total zc) where | 334 sp0 f mf zc1 = supP (ZChain.chain zc) (ZChain.chain⊆A zc) (ZChain1.f-total zc1 {!!} ) where |
342 zc = ZChain1.zc zc1 | 335 zc = ZChain1.zc zc1 |
343 zc< : {x y z : Ordinal} → {P : Set n} → (x o< y → P) → x o< z → z o< y → P | 336 zc< : {x y z : Ordinal} → {P : Set n} → (x o< y → P) → x o< z → z o< y → P |
344 zc< {x} {y} {z} {P} prev x<z z<y = prev (ordtrans x<z z<y) | 337 zc< {x} {y} {z} {P} prev x<z z<y = prev (ordtrans x<z z<y) |
345 | 338 |
346 --- | 339 --- |
373 z20 {y} zy with SUP.x<sup sp1 (subst (λ k → odef chain k ) (sym &iso) zy) | 366 z20 {y} zy with SUP.x<sup sp1 (subst (λ k → odef chain k ) (sym &iso) zy) |
374 ... | case1 y=p = case1 (subst (λ k → k ≡ _ ) &iso ( cong (&) y=p )) | 367 ... | case1 y=p = case1 (subst (λ k → k ≡ _ ) &iso ( cong (&) y=p )) |
375 ... | case2 y<p = case2 (subst (λ k → * y < k ) (sym *iso) y<p ) | 368 ... | case2 y<p = case2 (subst (λ k → * y < k ) (sym *iso) y<p ) |
376 -- λ {y} zy → subst (λ k → (y ≡ & k ) ∨ (y << & k)) ? (SUP.x<sup sp1 ? ) } | 369 -- λ {y} zy → subst (λ k → (y ≡ & k ) ∨ (y << & k)) ? (SUP.x<sup sp1 ? ) } |
377 z14 : f (& (SUP.sup (sp0 f mf zc1))) ≡ & (SUP.sup (sp0 f mf zc1)) | 370 z14 : f (& (SUP.sup (sp0 f mf zc1))) ≡ & (SUP.sup (sp0 f mf zc1)) |
378 z14 with ZChain.f-total zc (subst (λ k → odef chain k) (sym &iso) (ZChain.f-next zc z12 )) z12 | 371 z14 with ZChain1.f-total zc1 {!!} (subst (λ k → odef chain k) (sym &iso) (ZChain.f-next zc z12 )) z12 |
379 ... | tri< a ¬b ¬c = ⊥-elim z16 where | 372 ... | tri< a ¬b ¬c = ⊥-elim z16 where |
380 z16 : ⊥ | 373 z16 : ⊥ |
381 z16 with proj1 (mf (& ( SUP.sup sp1)) ( SUP.A∋maximal sp1 )) | 374 z16 with proj1 (mf (& ( SUP.sup sp1)) ( SUP.A∋maximal sp1 )) |
382 ... | case1 eq = ⊥-elim (¬b (subst₂ (λ j k → j ≡ k ) refl *iso (sym eq) )) | 375 ... | case1 eq = ⊥-elim (¬b (subst₂ (λ j k → j ≡ k ) refl *iso (sym eq) )) |
383 ... | case2 lt = ⊥-elim (¬c (subst₂ (λ j k → k < j ) refl *iso lt )) | 376 ... | case2 lt = ⊥-elim (¬c (subst₂ (λ j k → k < j ) refl *iso lt )) |
416 -- we have previous ordinal to use induction | 409 -- we have previous ordinal to use induction |
417 -- | 410 -- |
418 open ZChain | 411 open ZChain |
419 | 412 |
420 px = Oprev.oprev op | 413 px = Oprev.oprev op |
421 supf : Ordinal → SupF A | 414 supf : Ordinal → HOD |
422 supf = ZChain1.supf (prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) ay) | 415 supf = ZChain1.supf (prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) ay) |
423 zc1 : ZChain1 A y f (Oprev.oprev op) | 416 zc1 : ZChain1 A y f (Oprev.oprev op) |
424 zc1 = prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) ay | 417 zc1 = prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) ay |
425 zc0 : ZChain A y f (ZChain1.supf (prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) ay)) (Oprev.oprev op) | 418 zc0 : ZChain A y f (ZChain1.supf (prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) ay)) (Oprev.oprev op) |
426 zc0 = ZChain1.zc (prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) ay) | 419 zc0 = ZChain1.zc (prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) ay) |
434 no-extenion : ( {a b : Ordinal} → odef (ZChain.chain zc0) a → b o< osuc x → (ab : odef A b) → | 427 no-extenion : ( {a b : Ordinal} → odef (ZChain.chain zc0) a → b o< osuc x → (ab : odef A b) → |
435 HasPrev A (ZChain.chain zc0) ab f ∨ IsSup A (ZChain.chain zc0) ab → | 428 HasPrev A (ZChain.chain zc0) ab f ∨ IsSup A (ZChain.chain zc0) ab → |
436 * a < * b → odef (ZChain.chain zc0) b ) → ZChain1 A y f x | 429 * a < * b → odef (ZChain.chain zc0) b ) → ZChain1 A y f x |
437 no-extenion is-max = record { supf = supf0 ; zc = record { chain⊆A = subst (λ k → k ⊆' A ) seq (ZChain.chain⊆A zc0) | 430 no-extenion is-max = record { supf = supf0 ; zc = record { chain⊆A = subst (λ k → k ⊆' A ) seq (ZChain.chain⊆A zc0) |
438 ; initial = subst (λ k → {y₁ : Ordinal} → odef k y₁ → * y ≤ * y₁ ) seq (ZChain.initial zc0) | 431 ; initial = subst (λ k → {y₁ : Ordinal} → odef k y₁ → * y ≤ * y₁ ) seq (ZChain.initial zc0) |
439 ; f-total = subst (λ k → IsTotalOrderSet k ) seq (ZChain.f-total zc0) | |
440 ; f-next = subst (λ k → {a : Ordinal} → odef k a → odef k (f a) ) seq (ZChain.f-next zc0) | 432 ; f-next = subst (λ k → {a : Ordinal} → odef k a → odef k (f a) ) seq (ZChain.f-next zc0) |
441 ; f-immediate = subst (λ k → {x₁ : Ordinal} {y₁ : Ordinal} → odef k x₁ → odef k y₁ → | 433 ; f-immediate = subst (λ k → {x₁ : Ordinal} {y₁ : Ordinal} → odef k x₁ → odef k y₁ → |
442 ¬ (* x₁ < * y₁) ∧ (* y₁ < * (f x₁)) ) seq (ZChain.f-immediate zc0) ; chain∋x = subst (λ k → odef k y ) seq (ZChain.chain∋x zc0) | 434 ¬ (* x₁ < * y₁) ∧ (* y₁ < * (f x₁)) ) seq (ZChain.f-immediate zc0) ; chain∋x = subst (λ k → odef k y ) seq (ZChain.chain∋x zc0) |
443 ; is-max = subst (λ k → {a b : Ordinal} → odef k a → b o< osuc x → (ab : odef A b) → | 435 ; is-max = subst (λ k → {a b : Ordinal} → odef k a → b o< osuc x → (ab : odef A b) → |
444 HasPrev A k ab f ∨ IsSup A k ab → * a < * b → odef k b ) seq is-max } | 436 HasPrev A k ab f ∨ IsSup A k ab → * a < * b → odef k b ) seq is-max } |
445 ; chain-mono = mono } where | 437 ; chain-mono = mono } where |
446 supf0 : Ordinal → SupF A | 438 supf0 : Ordinal → HOD |
447 supf0 z with trio< z x | 439 supf0 z with trio< z x |
448 ... | tri< a ¬b ¬c = supf z | 440 ... | tri< a ¬b ¬c = supf z |
449 ... | tri≈ ¬a b ¬c = record { chain = & (ZChain.chain zc0) } | 441 ... | tri≈ ¬a b ¬c = ZChain.chain zc0 |
450 ... | tri> ¬a ¬b c = record { chain = & (ZChain.chain zc0) } | 442 ... | tri> ¬a ¬b c = ZChain.chain zc0 |
451 seq : ZChain.chain zc0 ≡ * (SupF.chain (supf0 x)) | 443 seq : ZChain.chain zc0 ≡ supf0 x |
452 seq with trio< x x | 444 seq with trio< x x |
453 ... | tri< a ¬b ¬c = ⊥-elim ( ¬b refl ) | 445 ... | tri< a ¬b ¬c = ⊥-elim ( ¬b refl ) |
454 ... | tri≈ ¬a b ¬c = sym *iso | 446 ... | tri≈ ¬a b ¬c = refl |
455 ... | tri> ¬a ¬b c = sym *iso | 447 ... | tri> ¬a ¬b c = refl |
456 seq<x : {b : Ordinal } → b o< x → * (SupF.chain (supf b)) ≡ * (SupF.chain (supf0 b)) | 448 seq<x : {b : Ordinal } → b o< x → supf b ≡ supf0 b |
457 seq<x {b} b<x with trio< b x | 449 seq<x {b} b<x with trio< b x |
458 ... | tri< a ¬b ¬c = refl | 450 ... | tri< a ¬b ¬c = refl |
459 ... | tri≈ ¬a b₁ ¬c = ⊥-elim (¬a b<x ) | 451 ... | tri≈ ¬a b₁ ¬c = ⊥-elim (¬a b<x ) |
460 ... | tri> ¬a ¬b c = ⊥-elim (¬a b<x ) | 452 ... | tri> ¬a ¬b c = ⊥-elim (¬a b<x ) |
461 mono : {a b : Ordinal} → a o≤ b → b o< osuc x → | 453 mono : {a b : Ordinal} → a o≤ b → b o< osuc x → |
462 * (SupF.chain (supf0 a )) ⊆' * (SupF.chain (supf0 b )) | 454 supf0 a ⊆' supf0 b |
463 mono {a} {b} a≤b b<ox with osuc-≡< a≤b | 455 mono {a} {b} a≤b b<ox with osuc-≡< a≤b |
464 ... | case1 refl = λ x → x | 456 ... | case1 refl = λ x → x |
465 ... | case2 a<b with osuc-≡< b<ox | 457 ... | case2 a<b with osuc-≡< b<ox |
466 ... | case1 b=x = subst₂ (λ j k → j ⊆' k ) (seq<x a<x) nc00 ( ZChain1.chain-mono zc1 a≤px <-osuc ) where | 458 ... | case1 b=x = subst₂ (λ j k → j ⊆' k ) (seq<x a<x) nc00 ( ZChain1.chain-mono zc1 a≤px <-osuc ) where |
467 a<x : a o< x | 459 a<x : a o< x |
468 a<x with osuc-≡< b<ox | 460 a<x with osuc-≡< b<ox |
469 ... | case1 b=x = subst (λ k → a o< k ) b=x a<b | 461 ... | case1 b=x = subst (λ k → a o< k ) b=x a<b |
470 ... | case2 b<x = ordtrans a<b b<x | 462 ... | case2 b<x = ordtrans a<b b<x |
471 a≤px : a o≤ px | 463 a≤px : a o≤ px |
472 a≤px = subst (λ k → a o< k ) (sym (Oprev.oprev=x op)) a<x | 464 a≤px = subst (λ k → a o< k ) (sym (Oprev.oprev=x op)) a<x |
473 nc00 : * (SupF.chain (supf px)) ≡ * (SupF.chain (supf0 b)) | 465 nc00 : supf px ≡ supf0 b |
474 nc00 with trio< b x | 466 nc00 with trio< b x |
475 ... | tri< a ¬b ¬c = ⊥-elim ( ¬b b=x ) | 467 ... | tri< a ¬b ¬c = ⊥-elim ( ¬b b=x ) |
476 ... | tri≈ ¬a b ¬c = sym *iso | 468 ... | tri≈ ¬a b ¬c = refl |
477 ... | tri> ¬a ¬b c = ⊥-elim ( ¬b b=x ) | 469 ... | tri> ¬a ¬b c = ⊥-elim ( ¬b b=x ) |
478 ... | case2 b<x = subst₂ (λ j k → j ⊆' k ) (seq<x a<x ) (seq<x b<x ) | 470 ... | case2 b<x = subst₂ (λ j k → j ⊆' k ) (seq<x a<x ) (seq<x b<x ) |
479 ( ZChain1.chain-mono zc1 a≤b (subst (λ k → b o< k) (sym (Oprev.oprev=x op)) b<x ) ) | 471 ( ZChain1.chain-mono zc1 a≤b (subst (λ k → b o< k) (sym (Oprev.oprev=x op)) b<x ) ) |
480 where | 472 where |
481 a<x : a o< x | 473 a<x : a o< x |
501 zc17 {a} {b} za b<ox ab P a<b with osuc-≡< b<ox | 493 zc17 {a} {b} za b<ox ab P a<b with osuc-≡< b<ox |
502 ... | case2 lt = ZChain.is-max zc0 za (zc0-b<x b lt) ab P a<b | 494 ... | case2 lt = ZChain.is-max zc0 za (zc0-b<x b lt) ab P a<b |
503 ... | case1 b=x = subst (λ k → odef chain0 k ) (trans (sym (HasPrev.x=fy pr )) (trans &iso (sym b=x)) ) ( ZChain.f-next zc0 (HasPrev.ay pr)) | 495 ... | case1 b=x = subst (λ k → odef chain0 k ) (trans (sym (HasPrev.x=fy pr )) (trans &iso (sym b=x)) ) ( ZChain.f-next zc0 (HasPrev.ay pr)) |
504 ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A (ZChain.chain zc0) ax ) | 496 ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A (ZChain.chain zc0) ax ) |
505 ... | case1 is-sup = -- x is a sup of zc0 | 497 ... | case1 is-sup = -- x is a sup of zc0 |
506 record { zc = record { chain⊆A = {!!} ; f-total = {!!} ; f-next = {!!} ; chain∋sup = {!!} | 498 record { zc = record { chain⊆A = {!!} ; f-total = {!!} ; f-next = {!!} |
507 ; initial = {!!} ; f-immediate = {!!} ; chain∋x = {!!} ; is-max = {!!} ; fc∨sup = {!!} } ; supf = supf0 ; chain-mono = mono } where | 499 ; initial = {!!} ; f-immediate = {!!} ; chain∋x = {!!} ; is-max = {!!} } ; supf = supf0 ; chain-mono = mono } where |
508 sup0 : SUP A (ZChain.chain zc0) | 500 sup0 : SUP A (ZChain.chain zc0) |
509 sup0 = record { sup = * x ; A∋maximal = ax ; x<sup = x21 } where | 501 sup0 = record { sup = * x ; A∋maximal = ax ; x<sup = x21 } where |
510 x21 : {y : HOD} → ZChain.chain zc0 ∋ y → (y ≡ * x) ∨ (y < * x) | 502 x21 : {y : HOD} → ZChain.chain zc0 ∋ y → (y ≡ * x) ∨ (y < * x) |
511 x21 {y} zy with IsSup.x<sup is-sup zy | 503 x21 {y} zy with IsSup.x<sup is-sup zy |
512 ... | case1 y=x = case1 ( subst₂ (λ j k → j ≡ * k ) *iso &iso ( cong (*) y=x) ) | 504 ... | case1 y=x = case1 ( subst₂ (λ j k → j ≡ * k ) *iso &iso ( cong (*) y=x) ) |
540 a<b = subst (λ k → a < k ) (trans sp=b *iso ) (subst (λ k → a < k ) (sym *iso) a<sp ) | 532 a<b = subst (λ k → a < k ) (trans sp=b *iso ) (subst (λ k → a < k ) (sym *iso) a<sp ) |
541 ... | case2 a<sp | case2 sp<b = tri< a<b (λ eq → <-irr (case1 (sym eq)) a<b ) (λ lt → <-irr (case2 a<b) lt ) where | 533 ... | case2 a<sp | case2 sp<b = tri< a<b (λ eq → <-irr (case1 (sym eq)) a<b ) (λ lt → <-irr (case2 a<b) lt ) where |
542 a<b : a < b | 534 a<b : a < b |
543 a<b = ptrans (subst (λ k → a < k ) (sym *iso) a<sp ) ( subst₂ (λ j k → j < k ) refl *iso sp<b ) | 535 a<b = ptrans (subst (λ k → a < k ) (sym *iso) a<sp ) ( subst₂ (λ j k → j < k ) refl *iso sp<b ) |
544 scmp : {a b : HOD} → odef schain (& a) → odef schain (& b) → Tri (a < b) (a ≡ b) (b < a ) | 536 scmp : {a b : HOD} → odef schain (& a) → odef schain (& b) → Tri (a < b) (a ≡ b) (b < a ) |
545 scmp (case1 za) (case1 zb) = ZChain.f-total zc0 za zb | 537 scmp (case1 za) (case1 zb) = ZChain1.f-total zc1 {!!} za zb |
546 scmp {a} {b} (case1 za) (case2 fb) = cmp za fb | 538 scmp {a} {b} (case1 za) (case2 fb) = cmp za fb |
547 scmp (case2 fa) (case1 zb) with cmp zb fa | 539 scmp (case2 fa) (case1 zb) with cmp zb fa |
548 ... | tri< a ¬b ¬c = tri> ¬c (λ eq → ¬b (sym eq)) a | 540 ... | tri< a ¬b ¬c = tri> ¬c (λ eq → ¬b (sym eq)) a |
549 ... | tri≈ ¬a b ¬c = tri≈ ¬c (sym b) ¬a | 541 ... | tri≈ ¬a b ¬c = tri≈ ¬c (sym b) ¬a |
550 ... | tri> ¬a ¬b c = tri< c (λ eq → ¬b (sym eq)) ¬a | 542 ... | tri> ¬a ¬b c = tri< c (λ eq → ¬b (sym eq)) ¬a |
601 z24 p = record { x<sup = λ {y} zy → IsSup.x<sup p (case1 zy ) } | 593 z24 p = record { x<sup = λ {y} zy → IsSup.x<sup p (case1 zy ) } |
602 z23 : odef chain0 b | 594 z23 : odef chain0 b |
603 z23 with IsSup.x<sup (z24 p) ( ZChain.chain∋x zc0 ) | 595 z23 with IsSup.x<sup (z24 p) ( ZChain.chain∋x zc0 ) |
604 ... | case1 y=b = subst (λ k → odef chain0 k ) y=b ( ZChain.chain∋x zc0 ) | 596 ... | case1 y=b = subst (λ k → odef chain0 k ) y=b ( ZChain.chain∋x zc0 ) |
605 ... | case2 y<b = ZChain.is-max zc0 (ZChain.chain∋x zc0 ) (zc0-b<x b b<x) ab (case2 (z24 p)) y<b | 597 ... | case2 y<b = ZChain.is-max zc0 (ZChain.chain∋x zc0 ) (zc0-b<x b b<x) ab (case2 (z24 p)) y<b |
606 supf0 : Ordinal → SupF A | 598 supf0 : Ordinal → HOD |
607 supf0 z with trio< z x | 599 supf0 z with trio< z x |
608 ... | tri< a ¬b ¬c = supf z | 600 ... | tri< a ¬b ¬c = supf z |
609 ... | tri≈ ¬a b ¬c = record { chain = & schain } | 601 ... | tri≈ ¬a b ¬c = schain |
610 ... | tri> ¬a ¬b c = record { chain = & schain } | 602 ... | tri> ¬a ¬b c = schain |
611 seq : schain ≡ * (SupF.chain (supf0 x)) | 603 seq : schain ≡ supf0 x |
612 seq with trio< x x | 604 seq with trio< x x |
613 ... | tri< a ¬b ¬c = ⊥-elim ( ¬b refl ) | 605 ... | tri< a ¬b ¬c = ⊥-elim ( ¬b refl ) |
614 ... | tri≈ ¬a b ¬c = sym *iso | 606 ... | tri≈ ¬a b ¬c = refl |
615 ... | tri> ¬a ¬b c = sym *iso | 607 ... | tri> ¬a ¬b c = refl |
616 seq<x : {b : Ordinal } → b o< x → * (SupF.chain (supf b)) ≡ * (SupF.chain (supf0 b)) | 608 seq<x : {b : Ordinal } → b o< x → supf b ≡ supf0 b |
617 seq<x {b} b<x with trio< b x | 609 seq<x {b} b<x with trio< b x |
618 ... | tri< a ¬b ¬c = refl | 610 ... | tri< a ¬b ¬c = refl |
619 ... | tri≈ ¬a b₁ ¬c = ⊥-elim (¬a b<x ) | 611 ... | tri≈ ¬a b₁ ¬c = ⊥-elim (¬a b<x ) |
620 ... | tri> ¬a ¬b c = ⊥-elim (¬a b<x ) | 612 ... | tri> ¬a ¬b c = ⊥-elim (¬a b<x ) |
621 mono : {a b : Ordinal} → a o≤ b → b o< osuc x → | 613 mono : {a b : Ordinal} → a o≤ b → b o< osuc x → supf0 a ⊆' supf0 b |
622 * (SupF.chain (supf0 a )) ⊆' * (SupF.chain (supf0 b )) | |
623 mono {a} {b} a≤b b<ox = {!!} | 614 mono {a} {b} a≤b b<ox = {!!} |
624 | 615 |
625 ... | case2 ¬x=sup = no-extenion z18 where -- x is not f y' nor sup of former ZChain from y -- no extention | 616 ... | case2 ¬x=sup = no-extenion z18 where -- x is not f y' nor sup of former ZChain from y -- no extention |
626 z18 : {a b : Ordinal} → odef (ZChain.chain zc0) a → b o< osuc x → (ab : odef A b) → | 617 z18 : {a b : Ordinal} → odef (ZChain.chain zc0) a → b o< osuc x → (ab : odef A b) → |
627 HasPrev A (ZChain.chain zc0) ab f ∨ IsSup A (ZChain.chain zc0) ab → | 618 HasPrev A (ZChain.chain zc0) ab f ∨ IsSup A (ZChain.chain zc0) ab → |
653 u-next {z} u = record { u = UZFChain.u u ; u<x = UZFChain.u<x u ; chain∋z = ZChain.f-next ( uzc u ) (UZFChain.chain∋z u) } | 644 u-next {z} u = record { u = UZFChain.u u ; u<x = UZFChain.u<x u ; chain∋z = ZChain.f-next ( uzc u ) (UZFChain.chain∋z u) } |
654 u-initial : {z : Ordinal} → odef Uz z → * y ≤ * z | 645 u-initial : {z : Ordinal} → odef Uz z → * y ≤ * z |
655 u-initial {z} u = ZChain.initial ( uzc u ) (UZFChain.chain∋z u) | 646 u-initial {z} u = ZChain.initial ( uzc u ) (UZFChain.chain∋z u) |
656 u-chain∋x : odef Uz y | 647 u-chain∋x : odef Uz y |
657 u-chain∋x = record { u = y ; u<x = {!!} ; chain∋z = ZChain.chain∋x (ZChain1.zc (prev y {!!} ay )) } | 648 u-chain∋x = record { u = y ; u<x = {!!} ; chain∋z = ZChain.chain∋x (ZChain1.zc (prev y {!!} ay )) } |
658 supf0 : Ordinal → SupF A | 649 supf0 : Ordinal → HOD |
659 supf0 z with trio< z x | 650 supf0 z with trio< z x |
660 ... | tri< a ¬b ¬c = ZChain1.supf (prev z a {y} ay) z | 651 ... | tri< a ¬b ¬c = ZChain1.supf (prev z a {y} ay) z |
661 ... | tri≈ ¬a b ¬c = record { chain = & Uz } | 652 ... | tri≈ ¬a b ¬c = Uz |
662 ... | tri> ¬a ¬b c = record { chain = & Uz } | 653 ... | tri> ¬a ¬b c = Uz |
663 seq : Uz ≡ * (SupF.chain (supf0 x)) | 654 seq : Uz ≡ supf0 x |
664 seq with trio< x x | 655 seq with trio< x x |
665 ... | tri< a ¬b ¬c = ⊥-elim ( ¬b refl ) | 656 ... | tri< a ¬b ¬c = ⊥-elim ( ¬b refl ) |
666 ... | tri≈ ¬a b ¬c = sym *iso | 657 ... | tri≈ ¬a b ¬c = refl |
667 ... | tri> ¬a ¬b c = sym *iso | 658 ... | tri> ¬a ¬b c = refl |
668 seq<x : {b : Ordinal } → (b<x : b o< x ) → * (SupF.chain (ZChain1.supf (prev b b<x {y} ay) b)) ≡ * (SupF.chain (supf0 b)) | 659 seq<x : {b : Ordinal } → (b<x : b o< x ) → ZChain1.supf (prev b b<x {y} ay) b ≡ supf0 b |
669 seq<x {b} b<x with trio< b x | 660 seq<x {b} b<x with trio< b x |
670 ... | tri< a ¬b ¬c = cong (λ k → * (SupF.chain (ZChain1.supf (prev b k {y} ay) b)) ) o<-irr -- b<x ≡ a | 661 ... | tri< a ¬b ¬c = cong (λ k → ZChain1.supf (prev b k {y} ay) b) o<-irr -- b<x ≡ a |
671 ... | tri≈ ¬a b₁ ¬c = ⊥-elim (¬a b<x ) | 662 ... | tri≈ ¬a b₁ ¬c = ⊥-elim (¬a b<x ) |
672 ... | tri> ¬a ¬b c = ⊥-elim (¬a b<x ) | 663 ... | tri> ¬a ¬b c = ⊥-elim (¬a b<x ) |
673 u-mono : ( a b : Ordinal ) → b o< x → a o< osuc b → (za : ZChain1 A y f a) (zb : ZChain1 A y f b) → ZChain.chain (ZChain1.zc za) ⊆' ZChain.chain (ZChain1.zc zb) | 664 u-mono : ( a b : Ordinal ) → b o< x → a o< osuc b → (za : ZChain1 A y f a) (zb : ZChain1 A y f b) → ZChain.chain (ZChain1.zc za) ⊆' ZChain.chain (ZChain1.zc zb) |
674 u-mono a b b<x a≤b za zb {i} zai = ZChain1.chain-mono zb a≤b <-osuc (uz01 zai) where | 665 u-mono a b b<x a≤b za zb {i} zai = ZChain1.chain-mono zb a≤b <-osuc (uz01 zai) where |
675 uz01 : odef (* (SupF.chain (ZChain1.supf za a))) i → odef (* (SupF.chain (ZChain1.supf zb a))) i | 666 uz01 : odef (ZChain1.supf za a) i → odef (ZChain1.supf zb a) i |
676 uz01 = {!!} | 667 uz01 = {!!} |
677 u-total : IsTotalOrderSet Uz | 668 u-total : IsTotalOrderSet Uz |
678 u-total {x} {y} ux uy with trio< (UZFChain.u ux) (UZFChain.u uy) | 669 u-total {x} {y} ux uy with trio< (UZFChain.u ux) (UZFChain.u uy) |
679 ... | tri< a ¬b ¬c = ZChain.f-total (uzc uy) (u-mono (UZFChain.u ux) (UZFChain.u uy) | 670 ... | tri< a ¬b ¬c = ZChain1.f-total (uzc1 uy) {!!} (u-mono (UZFChain.u ux) (UZFChain.u uy) |
680 (UZFChain.u<x uy) (ordtrans a <-osuc ) (uzc1 ux) (uzc1 uy) (UZFChain.chain∋z ux)) (UZFChain.chain∋z uy) | 671 (UZFChain.u<x uy) (ordtrans a <-osuc ) (uzc1 ux) (uzc1 uy) (UZFChain.chain∋z ux)) (UZFChain.chain∋z uy) |
681 ... | tri≈ ¬a b ¬c = ZChain.f-total (uzc ux) (UZFChain.chain∋z ux) (u-mono (UZFChain.u uy) (UZFChain.u ux) | 672 ... | tri≈ ¬a b ¬c = ZChain1.f-total (uzc1 ux) {!!} (UZFChain.chain∋z ux) (u-mono (UZFChain.u uy) (UZFChain.u ux) |
682 (UZFChain.u<x ux) (subst (λ k → k o< osuc (UZFChain.u ux)) b <-osuc) (uzc1 uy) (uzc1 ux) (UZFChain.chain∋z uy)) | 673 (UZFChain.u<x ux) (subst (λ k → k o< osuc (UZFChain.u ux)) b <-osuc) (uzc1 uy) (uzc1 ux) (UZFChain.chain∋z uy)) |
683 ... | tri> ¬a ¬b c = ZChain.f-total (uzc ux) (UZFChain.chain∋z ux) (u-mono (UZFChain.u uy) (UZFChain.u ux) | 674 ... | tri> ¬a ¬b c = ZChain1.f-total (uzc1 ux) {!!} (UZFChain.chain∋z ux) (u-mono (UZFChain.u uy) (UZFChain.u ux) |
684 (UZFChain.u<x ux) (ordtrans c <-osuc) (uzc1 uy) (uzc1 ux) (UZFChain.chain∋z uy)) | 675 (UZFChain.u<x ux) (ordtrans c <-osuc) (uzc1 uy) (uzc1 ux) (UZFChain.chain∋z uy)) |
685 | 676 |
686 SZ : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) → {y : Ordinal} (ya : odef A y) → ZChain1 A y f (& A) | 677 SZ : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) → {y : Ordinal} (ya : odef A y) → ZChain1 A y f (& A) |
687 SZ f mf = TransFinite {λ z → {y : Ordinal } → (ay : odef A y ) → ZChain1 A y f z } (ind f mf) (& A) | 678 SZ f mf = TransFinite {λ z → {y : Ordinal } → (ay : odef A y ) → ZChain1 A y f z } (ind f mf) (& A) |
688 | 679 |