comparison src/zorn.agda @ 682:663b34227faf

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 09 Jul 2022 21:51:39 +0900
parents c5c8e37d9a6c
children 6814fc4e7998
comparison
equal deleted inserted replaced
681:c5c8e37d9a6c 682:663b34227faf
463 ... | case2 ¬x=sup = ? 463 ... | case2 ¬x=sup = ?
464 464
465 ind : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → (x : Ordinal) 465 ind : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → (x : Ordinal)
466 → (zc0 : (x : Ordinal) → ZChain1 A f mf ay x) 466 → (zc0 : (x : Ordinal) → ZChain1 A f mf ay x)
467 → ((z : Ordinal) → z o< x → ZChain A f mf ay zc0 z) → ZChain A f mf ay zc0 x 467 → ((z : Ordinal) → z o< x → ZChain A f mf ay zc0 z) → ZChain A f mf ay zc0 x
468 ind f mf {y} ay x zc0 prev = zc4 where 468 ind f mf {y} ay x zc0 prev with Oprev-p x
469 zc : {z1 : Ordinal} → z1 o< x → ZChain A f mf ay zc0 z1 469 ... | yes op = ? where
470 zc z1 with Oprev-p x 470 --
471 ... | yes op = ? where 471 -- we have previous ordinal to use induction
472 -- 472 --
473 -- we have previous ordinal to use induction 473 px = Oprev.oprev op
474 -- 474 supf : Ordinal → HOD
475 px = Oprev.oprev op 475 supf x = ? -- ChainF A f mf ay x zc0
476 supf : Ordinal → HOD 476 zc : ZChain A f mf ay zc0 (Oprev.oprev op)
477 supf x = ? -- ChainF A f mf ay x zc0 477 zc = prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc )
478 -- zc : ZChain A f mf ay zc0 (Oprev.oprev op) 478 px<x : px o< x
479 -- zc = prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) 479 px<x = subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc
480 px<x : px o< x
481 px<x = subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc
482 ... | no ¬ox = ? where
483 supf : Ordinal → HOD
484 supf x = ? -- Z?Chain1.chain zc0
485 uzc : {z : Ordinal} → (u : UChain x {!!} z) → ZChain A f mf ay zc0 (UChain.u u)
486 uzc {z} u = prev (UChain.u u) (UChain.u<x u)
487 Uz : HOD
488 Uz = record { od = record { def = λ z → odef A z ∧ ( UChain z {!!} x ∨ FClosure A f y z ) } ; odmax = & A ; <odmax = {!!} }
489
490 -- if previous chain satisfies maximality, we caan reuse it 480 -- if previous chain satisfies maximality, we caan reuse it
491 -- 481 --
492 no-extenion : ( {a b z : Ordinal} → (z<x : z o< x) → odef (ZChain.chain (zc z<x )) a → b o< osuc x → (ab : odef A b) → 482 no-extenion : ( {a b z : Ordinal} → (z<x : z o< x) → odef (ZChain.chain ?) a → b o< osuc x → (ab : odef A b) →
493 HasPrev A (ZChain.chain (zc z<x) ) ab f ∨ IsSup A (ZChain.chain (zc z<x) ) ab → 483 HasPrev A (ZChain.chain zc ) ab f ∨ IsSup A (ZChain.chain ? ) ab →
494 * a < * b → odef (ZChain.chain (zc ?) ) b ) → ZChain A f mf ay zc0 x 484 * a < * b → odef (ZChain.chain zc ) b ) → ZChain A f mf ay zc0 x
495 no-extenion is-max = ? 485 no-extenion is-max = ?
496 486
497 zc4 : ZChain A f mf ay zc0 x 487 zc4 : ZChain A f mf ay zc0 x
498 zc4 with o≤? x o∅ 488 zc4 with o≤? x o∅
499 ... | yes x=0 = ? 489 ... | yes x=0 = ?
500 ... | no 0<x with ODC.∋-p O A (* x) 490 ... | no 0<x with ODC.∋-p O A (* x)
501 ... | no noax = no-extenion zc1 where -- ¬ A ∋ p, just skip 491 ... | no noax = no-extenion zc1 where -- ¬ A ∋ p, just skip
502 zc1 : {a b z : Ordinal} → (z<x : z o< x) → odef (ZChain.chain (zc z<x) ) a → b o< osuc x → (ab : odef A b) → 492 zc1 : {a b z : Ordinal} → (z<x : z o< x) → odef (ZChain.chain zc ) a → b o< osuc x → (ab : odef A b) →
503 HasPrev A (ZChain.chain (zc ?) ) ab f ∨ IsSup A (ZChain.chain (zc z<x) ) ab → 493 HasPrev A (ZChain.chain zc ) ab f ∨ IsSup A (ZChain.chain zc ) ab →
504 * a < * b → odef (ZChain.chain (zc z<x) ) b 494 * a < * b → odef (ZChain.chain zc ) b
505 zc1 {a} {b} z<x za b<ox ab P a<b with osuc-≡< b<ox 495 zc1 {a} {b} z<x za b<ox ab P a<b with osuc-≡< b<ox
506 ... | case1 eq = ⊥-elim ( noax (subst (λ k → odef A k) (trans eq (sym &iso)) ab ) ) 496 ... | case1 eq = ⊥-elim ( noax (subst (λ k → odef A k) (trans eq (sym &iso)) ab ) )
507 ... | case2 lt = ZChain.is-max (zc z<x) za ? ab P a<b 497 ... | case2 lt = ZChain.is-max zc za ? ab P a<b
508 ... | yes ax with ODC.p∨¬p O ( HasPrev A (ZChain.chain (zc ? ) ) ax f ) 498 ... | yes ax with ODC.p∨¬p O ( HasPrev A (ZChain.chain zc ) ax f )
509 -- we have to check adding x preserve is-max ZChain A y f mf zc0 x 499 -- we have to check adding x preserve is-max ZChain A y f mf zc0 x
510 ... | case1 pr = no-extenion zc7 where -- we have previous A ∋ z < x , f z ≡ x, so chain ∋ f z ≡ x because of f-next 500 ... | case1 pr = no-extenion zc7 where -- we have previous A ∋ z < x , f z ≡ x, so chain ∋ f z ≡ x because of f-next
511 chain0 = ZChain.chain (zc ? ) 501 chain0 = ZChain.chain zc
512 zc7 : {a b z : Ordinal} → (z<x : z o< x) → odef (ZChain.chain (zc z<x) ) a → b o< osuc x → (ab : odef A b) → 502 zc7 : {a b z : Ordinal} → (z<x : z o< x) → odef (ZChain.chain zc ) a → b o< osuc x → (ab : odef A b) →
513 HasPrev A (ZChain.chain (zc z<x) ) ab f ∨ IsSup A (ZChain.chain (zc z<x) ) ab → 503 HasPrev A (ZChain.chain zc ) ab f ∨ IsSup A (ZChain.chain zc ) ab →
514 * a < * b → odef (ZChain.chain (zc z<x) ) b 504 * a < * b → odef (ZChain.chain zc ) b
515 zc7 {a} {b} z<x za b<ox ab P a<b with osuc-≡< b<ox 505 zc7 {a} {b} z<x za b<ox ab P a<b with osuc-≡< b<ox
516 ... | case2 lt = ZChain.is-max (zc z<x) za ? ab P a<b 506 ... | case2 lt = ZChain.is-max zc za ? ab P a<b
517 ... | case1 b=x = ? -- subst (λ k → odef chain0 k ) (trans (sym (HasPrev.x=fy pr )) (trans &iso (sym b=x)) ) ( ZChain.f-next (zc z<x) (HasPrev.ay pr)) 507 ... | case1 b=x = ? -- subst (λ k → odef chain0 k ) (trans (sym (HasPrev.x=fy pr )) (trans &iso (sym b=x)) ) ( ZChain.f-next zc (HasPrev.ay pr))
518 ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A (ZChain.chain (zc ?) ) ax ) 508 ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A (ZChain.chain zc ) ax )
519 ... | case1 is-sup = -- x is a sup of (zc ?) 509 ... | case1 is-sup = -- x is a sup of zc
520 record { chain⊆A = {!!} ; f-next = {!!} ; f-total = {!!} 510 record { chain⊆A = {!!} ; f-next = {!!} ; f-total = {!!}
521 ; initial = {!!} ; chain∋init = {!!} ; is-max = {!!} } where 511 ; initial = {!!} ; chain∋init = {!!} ; is-max = {!!} } where
522 sup0 : SUP A (ZChain.chain (zc ?) ) 512 sup0 : SUP A (ZChain.chain zc )
523 sup0 = record { sup = * x ; A∋maximal = ax ; x<sup = x21 } where 513 sup0 = record { sup = * x ; A∋maximal = ax ; x<sup = x21 } where
524 x21 : {y : HOD} → ZChain.chain (zc ?) ∋ y → (y ≡ * x) ∨ (y < * x) 514 x21 : {y : HOD} → ZChain.chain zc ∋ y → (y ≡ * x) ∨ (y < * x)
525 x21 {y} zy with IsSup.x<sup is-sup zy 515 x21 {y} zy with IsSup.x<sup is-sup zy
526 ... | case1 y=x = case1 ( subst₂ (λ j k → j ≡ * k ) *iso &iso ( cong (*) y=x) ) 516 ... | case1 y=x = case1 ( subst₂ (λ j k → j ≡ * k ) *iso &iso ( cong (*) y=x) )
527 ... | case2 y<x = case2 (subst₂ (λ j k → j < * k ) *iso &iso y<x ) 517 ... | case2 y<x = case2 (subst₂ (λ j k → j < * k ) *iso &iso y<x )
528 sp : HOD 518 sp : HOD
529 sp = SUP.sup sup0 519 sp = SUP.sup sup0
530 x=sup : x ≡ & sp 520 x=sup : x ≡ & sp
531 x=sup = sym &iso 521 x=sup = sym &iso
532 chain0 = ZChain.chain (zc ?) 522 chain0 = ZChain.chain zc
533 sc<A : {y : Ordinal} → odef chain0 y ∨ FClosure A f (& sp) y → y o< & A 523 sc<A : {y : Ordinal} → odef chain0 y ∨ FClosure A f (& sp) y → y o< & A
534 sc<A {y} (case1 zx) = subst (λ k → k o< (& A)) &iso ( c<→o< (ZChain.chain⊆A (zc ?) (subst (λ k → odef chain0 k) (sym &iso) zx ))) 524 sc<A {y} (case1 zx) = subst (λ k → k o< (& A)) &iso ( c<→o< (ZChain.chain⊆A zc (subst (λ k → odef chain0 k) (sym &iso) zx )))
535 sc<A {y} (case2 fx) = subst (λ k → k o< (& A)) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso) (A∋fc (& sp) f mf fx )) ) 525 sc<A {y} (case2 fx) = subst (λ k → k o< (& A)) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso) (A∋fc (& sp) f mf fx )) )
536 schain : HOD 526 schain : HOD
537 schain = record { od = record { def = λ x → odef chain0 x ∨ (FClosure A f (& sp) x) } ; odmax = & A ; <odmax = λ {y} sy → sc<A {y} sy } 527 schain = record { od = record { def = λ x → odef chain0 x ∨ (FClosure A f (& sp) x) } ; odmax = & A ; <odmax = λ {y} sy → sc<A {y} sy }
538 supf0 : Ordinal → HOD 528 supf0 : Ordinal → HOD
539 supf0 z with trio< z x 529 supf0 z with trio< z x
540 ... | tri< a ¬b ¬c = ? -- supf z 530 ... | tri< a ¬b ¬c = ? -- supf z
541 ... | tri≈ ¬a b ¬c = schain 531 ... | tri≈ ¬a b ¬c = schain
542 ... | tri> ¬a ¬b c = schain 532 ... | tri> ¬a ¬b c = schain
543 A∋schain : {x : HOD } → schain ∋ x → A ∋ x 533 A∋schain : {x : HOD } → schain ∋ x → A ∋ x
544 A∋schain (case1 zx ) = ZChain.chain⊆A (zc ?) zx 534 A∋schain (case1 zx ) = ZChain.chain⊆A zc zx
545 A∋schain {y} (case2 fx ) = A∋fc (& sp) f mf fx 535 A∋schain {y} (case2 fx ) = A∋fc (& sp) f mf fx
546 s⊆A : schain ⊆' A 536 s⊆A : schain ⊆' A
547 s⊆A {x} (case1 zx) = ZChain.chain⊆A (zc ?) zx 537 s⊆A {x} (case1 zx) = ZChain.chain⊆A zc zx
548 s⊆A {x} (case2 fx) = A∋fc (& sp) f mf fx 538 s⊆A {x} (case2 fx) = A∋fc (& sp) f mf fx
549 cmp : {a b : HOD} (za : odef chain0 (& a)) (fb : FClosure A f (& sp) (& b)) → Tri (a < b) (a ≡ b) (b < a ) 539 cmp : {a b : HOD} (za : odef chain0 (& a)) (fb : FClosure A f (& sp) (& b)) → Tri (a < b) (a ≡ b) (b < a )
550 cmp {a} {b} za fb with SUP.x<sup sup0 za | s≤fc (& sp) f mf fb 540 cmp {a} {b} za fb with SUP.x<sup sup0 za | s≤fc (& sp) f mf fb
551 ... | case1 sp=a | case1 sp=b = tri≈ (λ lt → <-irr (case1 (sym eq)) lt ) eq (λ lt → <-irr (case1 eq) lt ) where 541 ... | case1 sp=a | case1 sp=b = tri≈ (λ lt → <-irr (case1 (sym eq)) lt ) eq (λ lt → <-irr (case1 eq) lt ) where
552 eq : a ≡ b 542 eq : a ≡ b
559 a<b = subst (λ k → a < k ) (trans sp=b *iso ) (subst (λ k → a < k ) (sym *iso) a<sp ) 549 a<b = subst (λ k → a < k ) (trans sp=b *iso ) (subst (λ k → a < k ) (sym *iso) a<sp )
560 ... | case2 a<sp | case2 sp<b = tri< a<b (λ eq → <-irr (case1 (sym eq)) a<b ) (λ lt → <-irr (case2 a<b) lt ) where 550 ... | case2 a<sp | case2 sp<b = tri< a<b (λ eq → <-irr (case1 (sym eq)) a<b ) (λ lt → <-irr (case2 a<b) lt ) where
561 a<b : a < b 551 a<b : a < b
562 a<b = ptrans (subst (λ k → a < k ) (sym *iso) a<sp ) ( subst₂ (λ j k → j < k ) refl *iso sp<b ) 552 a<b = ptrans (subst (λ k → a < k ) (sym *iso) a<sp ) ( subst₂ (λ j k → j < k ) refl *iso sp<b )
563 scmp : {a b : HOD} → odef schain (& a) → odef schain (& b) → Tri (a < b) (a ≡ b) (b < a ) 553 scmp : {a b : HOD} → odef schain (& a) → odef schain (& b) → Tri (a < b) (a ≡ b) (b < a )
564 scmp {a} {b} (case1 za) (case1 zb) = {!!} -- ZChain.f-total (zc ?) {px} {px} o≤-refl za zb 554 scmp {a} {b} (case1 za) (case1 zb) = {!!} -- ZChain.f-total zc {px} {px} o≤-refl za zb
565 scmp {a} {b} (case1 za) (case2 fb) = cmp za fb 555 scmp {a} {b} (case1 za) (case2 fb) = cmp za fb
566 scmp (case2 fa) (case1 zb) with cmp zb fa 556 scmp (case2 fa) (case1 zb) with cmp zb fa
567 ... | tri< a ¬b ¬c = tri> ¬c (λ eq → ¬b (sym eq)) a 557 ... | tri< a ¬b ¬c = tri> ¬c (λ eq → ¬b (sym eq)) a
568 ... | tri≈ ¬a b ¬c = tri≈ ¬c (sym b) ¬a 558 ... | tri≈ ¬a b ¬c = tri≈ ¬c (sym b) ¬a
569 ... | tri> ¬a ¬b c = tri< c (λ eq → ¬b (sym eq)) ¬a 559 ... | tri> ¬a ¬b c = tri< c (λ eq → ¬b (sym eq)) ¬a
570 scmp (case2 fa) (case2 fb) = subst₂ (λ a b → Tri (a < b) (a ≡ b) (b < a ) ) *iso *iso (fcn-cmp (& sp) f mf fa fb) 560 scmp (case2 fa) (case2 fb) = subst₂ (λ a b → Tri (a < b) (a ≡ b) (b < a ) ) *iso *iso (fcn-cmp (& sp) f mf fa fb)
571 scnext : {a : Ordinal} → odef schain a → odef schain (f a) 561 scnext : {a : Ordinal} → odef schain a → odef schain (f a)
572 scnext {x} (case1 zx) = case1 (ZChain.f-next (zc ?) zx) 562 scnext {x} (case1 zx) = case1 (ZChain.f-next zc zx)
573 scnext {x} (case2 sx) = case2 ( fsuc x sx ) 563 scnext {x} (case2 sx) = case2 ( fsuc x sx )
574 scinit : {x : Ordinal} → odef schain x → * y ≤ * x 564 scinit : {x : Ordinal} → odef schain x → * y ≤ * x
575 scinit {x} (case1 zx) = ZChain.initial (zc ?) zx 565 scinit {x} (case1 zx) = ZChain.initial zc zx
576 scinit {x} (case2 sx) with (s≤fc (& sp) f mf sx ) | SUP.x<sup sup0 (subst (λ k → odef chain0 k ) (sym &iso) ( ZChain.chain∋init (zc ?) ) ) 566 scinit {x} (case2 sx) with (s≤fc (& sp) f mf sx ) | SUP.x<sup sup0 (subst (λ k → odef chain0 k ) (sym &iso) ( ZChain.chain∋init zc ) )
577 ... | case1 sp=x | case1 y=sp = case1 (trans y=sp (subst (λ k → k ≡ * x ) *iso sp=x ) ) 567 ... | case1 sp=x | case1 y=sp = case1 (trans y=sp (subst (λ k → k ≡ * x ) *iso sp=x ) )
578 ... | case1 sp=x | case2 y<sp = case2 (subst (λ k → * y < k ) (trans (sym *iso) sp=x) y<sp ) 568 ... | case1 sp=x | case2 y<sp = case2 (subst (λ k → * y < k ) (trans (sym *iso) sp=x) y<sp )
579 ... | case2 sp<x | case1 y=sp = case2 (subst (λ k → k < * x ) (trans *iso (sym y=sp )) sp<x ) 569 ... | case2 sp<x | case1 y=sp = case2 (subst (λ k → k < * x ) (trans *iso (sym y=sp )) sp<x )
580 ... | case2 sp<x | case2 y<sp = case2 (ptrans y<sp (subst (λ k → k < * x ) *iso sp<x) ) 570 ... | case2 sp<x | case2 y<sp = case2 (ptrans y<sp (subst (λ k → k < * x ) *iso sp<x) )
581 A∋za : {a : Ordinal } → odef chain0 a → odef A a 571 A∋za : {a : Ordinal } → odef chain0 a → odef A a
582 A∋za za = ZChain.chain⊆A (zc ?) za 572 A∋za za = ZChain.chain⊆A zc za
583 za<sup : {a : Ordinal } → odef chain0 a → ( * a ≡ sp ) ∨ ( * a < sp ) 573 za<sup : {a : Ordinal } → odef chain0 a → ( * a ≡ sp ) ∨ ( * a < sp )
584 za<sup za = SUP.x<sup sup0 (subst (λ k → odef chain0 k ) (sym &iso) za ) 574 za<sup za = SUP.x<sup sup0 (subst (λ k → odef chain0 k ) (sym &iso) za )
585 s-ismax : {a b : Ordinal} → odef schain a → b o< osuc x → (ab : odef A b) 575 s-ismax : {a b : Ordinal} → odef schain a → b o< osuc x → (ab : odef A b)
586 → HasPrev A schain ab f ∨ IsSup A schain ab 576 → HasPrev A schain ab f ∨ IsSup A schain ab
587 → * a < * b → odef schain b 577 → * a < * b → odef schain b
588 s-ismax {a} {b} sa b<ox ab p a<b with osuc-≡< b<ox -- b is x? 578 s-ismax {a} {b} sa b<ox ab p a<b with osuc-≡< b<ox -- b is x?
589 ... | case1 b=x = case2 (subst (λ k → FClosure A f (& sp) k ) (sym (trans b=x x=sup )) (init (SUP.A∋maximal sup0) )) 579 ... | case1 b=x = case2 (subst (λ k → FClosure A f (& sp) k ) (sym (trans b=x x=sup )) (init (SUP.A∋maximal sup0) ))
590 s-ismax {a} {b} (case1 za) b<ox ab (case1 p) a<b | case2 b<x = z21 p where -- has previous 580 s-ismax {a} {b} (case1 za) b<ox ab (case1 p) a<b | case2 b<x = z21 p where -- has previous
591 z21 : HasPrev A schain ab f → odef schain b 581 z21 : HasPrev A schain ab f → odef schain b
592 z21 record { y = y ; ay = (case1 zy) ; x=fy = x=fy } = 582 z21 record { y = y ; ay = (case1 zy) ; x=fy = x=fy } =
593 case1 (ZChain.is-max (zc ?) za ? ab (case1 record { y = y ; ay = zy ; x=fy = x=fy }) a<b ) 583 case1 (ZChain.is-max zc za ? ab (case1 record { y = y ; ay = zy ; x=fy = x=fy }) a<b )
594 z21 record { y = y ; ay = (case2 sy) ; x=fy = x=fy } = subst (λ k → odef schain k) (sym x=fy) (case2 (fsuc y sy) ) 584 z21 record { y = y ; ay = (case2 sy) ; x=fy = x=fy } = subst (λ k → odef schain k) (sym x=fy) (case2 (fsuc y sy) )
595 s-ismax {a} {b} (case1 za) b<ox ab (case2 p) a<b | case2 b<x = case1 (ZChain.is-max (zc ?) za ? ab (case2 z22) a<b ) where -- previous sup 585 s-ismax {a} {b} (case1 za) b<ox ab (case2 p) a<b | case2 b<x = case1 (ZChain.is-max zc za ? ab (case2 z22) a<b ) where -- previous sup
596 z22 : IsSup A (ZChain.chain (zc ?) ) ab 586 z22 : IsSup A (ZChain.chain zc ) ab
597 z22 = record { x<sup = λ {y} zy → IsSup.x<sup p (case1 zy ) } 587 z22 = record { x<sup = λ {y} zy → IsSup.x<sup p (case1 zy ) }
598 s-ismax {a} {b} (case2 sa) b<ox ab (case1 p) a<b | case2 b<x with HasPrev.ay p 588 s-ismax {a} {b} (case2 sa) b<ox ab (case1 p) a<b | case2 b<x with HasPrev.ay p
599 ... | case1 zy = case1 (subst (λ k → odef chain0 k ) (sym (HasPrev.x=fy p)) (ZChain.f-next (zc ?) zy )) -- in previous closure of f 589 ... | case1 zy = case1 (subst (λ k → odef chain0 k ) (sym (HasPrev.x=fy p)) (ZChain.f-next zc zy )) -- in previous closure of f
600 ... | case2 sy = case2 (subst (λ k → FClosure A f (& (* x)) k ) (sym (HasPrev.x=fy p)) (fsuc (HasPrev.y p) sy )) -- in current closure of f 590 ... | case2 sy = case2 (subst (λ k → FClosure A f (& (* x)) k ) (sym (HasPrev.x=fy p)) (fsuc (HasPrev.y p) sy )) -- in current closure of f
601 s-ismax {a} {b} (case2 sa) b<ox ab (case2 p) a<b | case2 b<x = case1 z23 where -- sup o< x is already in zc 591 s-ismax {a} {b} (case2 sa) b<ox ab (case2 p) a<b | case2 b<x = case1 z23 where -- sup o< x is already in zc
602 z24 : IsSup A schain ab → IsSup A (ZChain.chain (zc ?) ) ab 592 z24 : IsSup A schain ab → IsSup A (ZChain.chain zc ) ab
603 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 ) }
604 z23 : odef chain0 b 594 z23 : odef chain0 b
605 z23 with IsSup.x<sup (z24 p) ( ZChain.chain∋init (zc ?) ) 595 z23 with IsSup.x<sup (z24 p) ( ZChain.chain∋init zc )
606 ... | case1 y=b = subst (λ k → odef chain0 k ) y=b ( ZChain.chain∋init (zc ?) ) 596 ... | case1 y=b = subst (λ k → odef chain0 k ) y=b ( ZChain.chain∋init zc )
607 ... | case2 y<b = ZChain.is-max (zc ?) (ZChain.chain∋init (zc ?) ) ? ab (case2 (z24 p)) y<b 597 ... | case2 y<b = ZChain.is-max zc (ZChain.chain∋init zc ) ? ab (case2 (z24 p)) y<b
608 seq : schain ≡ supf0 x 598 seq : schain ≡ supf0 x
609 seq with trio< x x 599 seq with trio< x x
610 ... | tri< a ¬b ¬c = ⊥-elim ( ¬b refl ) 600 ... | tri< a ¬b ¬c = ⊥-elim ( ¬b refl )
611 ... | tri≈ ¬a b ¬c = refl 601 ... | tri≈ ¬a b ¬c = refl
612 ... | tri> ¬a ¬b c = refl 602 ... | tri> ¬a ¬b c = refl
615 ... | tri< a ¬b ¬c = refl 605 ... | tri< a ¬b ¬c = refl
616 ... | tri≈ ¬a b₁ ¬c = ⊥-elim (¬a b<x ) 606 ... | tri≈ ¬a b₁ ¬c = ⊥-elim (¬a b<x )
617 ... | tri> ¬a ¬b c = ⊥-elim (¬a b<x ) 607 ... | tri> ¬a ¬b c = ⊥-elim (¬a b<x )
618 608
619 ... | case2 ¬x=sup = no-extenion z18 where -- x is not f y' nor sup of former ZChain from y -- no extention 609 ... | case2 ¬x=sup = no-extenion z18 where -- x is not f y' nor sup of former ZChain from y -- no extention
620 z18 : {a b z : Ordinal} → (z<x : z o< x) → odef (ZChain.chain (zc z<x) ) a → b o< osuc x → (ab : odef A b) → 610 z18 : {a b z : Ordinal} → (z<x : z o< x) → odef (ZChain.chain zc ) a → b o< osuc x → (ab : odef A b) →
621 HasPrev A (ZChain.chain (zc ?) ) ab f ∨ IsSup A (ZChain.chain (zc z<x) ) ab → 611 HasPrev A (ZChain.chain zc ) ab f ∨ IsSup A (ZChain.chain zc ) ab →
622 * a < * b → odef (ZChain.chain (zc z<x) ) b 612 * a < * b → odef (ZChain.chain zc ) b
623 z18 {a} {b} z<x za b<x ab p a<b with osuc-≡< b<x 613 z18 {a} {b} z<x za b<x ab p a<b with osuc-≡< b<x
624 ... | case2 lt = ZChain.is-max (zc z<x) za ? ab p a<b 614 ... | case2 lt = ZChain.is-max zc za ? ab p a<b
625 ... | case1 b=x with p 615 ... | case1 b=x with p
626 ... | case1 pr = ⊥-elim ( ¬fy<x record {y = HasPrev.y pr ; ay = ? ; x=fy = trans (trans &iso (sym b=x) ) (HasPrev.x=fy pr ) } ) 616 ... | case1 pr = ⊥-elim ( ¬fy<x record {y = HasPrev.y pr ; ay = ? ; x=fy = trans (trans &iso (sym b=x) ) (HasPrev.x=fy pr ) } )
627 ... | case2 b=sup = ⊥-elim ( ¬x=sup record { 617 ... | case2 b=sup = ⊥-elim ( ¬x=sup record {
628 x<sup = λ {y} zy → subst (λ k → (y ≡ k) ∨ (y << k)) (trans b=x (sym &iso)) (IsSup.x<sup b=sup ? ) } ) 618 x<sup = λ {y} zy → subst (λ k → (y ≡ k) ∨ (y << k)) (trans b=x (sym &iso)) (IsSup.x<sup b=sup ? ) } )
619 ... | no op = zc5 where
620 supf : (z : Ordinal ) → z o< x → HOD
621 supf x lt = ZChain1.chainf ( zc0 (& A) ) x
622 uzc : {z : Ordinal} → (u : UChain x supf z) → ZChain A f mf ay zc0 (UChain.u u)
623 uzc {z} u = prev (UChain.u u) (UChain.u<x u)
624 Uz : HOD
625 Uz = record { od = record { def = λ z → odef A z ∧ ( UChain x supf z ∨ FClosure A f y z ) } ; odmax = & A ; <odmax = {!!} }
626 zc5 : ZChain A f mf ay zc0 x
627 zc5 with o≤? x o∅
628 ... | yes x=0 = ?
629 ... | no 0<x with ODC.∋-p O A (* x)
630 ... | no noax = ? where -- ¬ A ∋ p, just skip
631 ... | yes ax with ODC.p∨¬p O ( HasPrev A Uz ax f )
632 -- we have to check adding x preserve is-max ZChain A y f mf zc0 x
633 ... | case1 pr = ? where -- we have previous A ∋ z < x , f z ≡ x, so chain ∋ f z ≡ x because of f-next
634 ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A Uz ax )
635 ... | case1 is-sup = ? -- x is a sup of (zc ?)
636 ... | case2 ¬x=sup = ? -- no-extenion z18 where -- x is not f y' nor sup of former ZChain from y -- no extention
637
629 638
630 SZ0 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) → {y : Ordinal} (ay : odef A y) → (x : Ordinal) → ZChain1 A f mf ay x 639 SZ0 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) → {y : Ordinal} (ay : odef A y) → (x : Ordinal) → ZChain1 A f mf ay x
631 SZ0 f mf ay x = TransFinite {λ z → ZChain1 A f mf ay z} (sind f mf ay ) x 640 SZ0 f mf ay x = TransFinite {λ z → ZChain1 A f mf ay z} (sind f mf ay ) x
632 641
633 SZ : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) → {y : Ordinal} (ay : odef A y) → ZChain A f mf ay (SZ0 f mf ay ) (& A) 642 SZ : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) → {y : Ordinal} (ay : odef A y) → ZChain A f mf ay (SZ0 f mf ay ) (& A)