comparison src/zorn.agda @ 728:e864471a818f

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 18 Jul 2022 21:50:17 +0900
parents 322dd6569072
children ac6b4d200f27
comparison
equal deleted inserted replaced
727:322dd6569072 728:e864471a818f
293 field 293 field
294 supf : Ordinal → Ordinal 294 supf : Ordinal → Ordinal
295 chain : HOD 295 chain : HOD
296 chain = UnionCF A f mf ay supf z 296 chain = UnionCF A f mf ay supf z
297 field 297 field
298 chain-mono : {z1 : Ordinal} → z1 o≤ z → UnionCF A f mf ay supf z1 ⊆' UnionCF A f mf ay supf z
298 chain⊆A : chain ⊆' A 299 chain⊆A : chain ⊆' A
299 chain∋init : odef chain init 300 chain∋init : odef chain init
300 initial : {y : Ordinal } → odef chain y → * init ≤ * y 301 initial : {y : Ordinal } → odef chain y → * init ≤ * y
301 f-next : {a : Ordinal } → odef chain a → odef chain (f a) 302 f-next : {a : Ordinal } → odef chain a → odef chain (f a)
302 f-total : IsTotalOrderSet chain 303 f-total : IsTotalOrderSet chain
304
305 record ZChain1 ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f)
306 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) ( z : Ordinal ) : Set (Level.suc n) where
307 field
308 b<x→chain : { b : Ordinal } → b o< z → odef (UnionCF A f mf ay (ZChain.supf zc) (& A)) b → odef (UnionCF A f mf ay (ZChain.supf zc) z) b
309 chain-mono2 : { a b c : Ordinal } →
310 a o≤ b → b o≤ z → odef (UnionCF A f mf ay (ZChain.supf zc) a) c → odef (UnionCF A f mf ay (ZChain.supf zc) b) c
311 is-max : {a b : Ordinal } → (ca : odef (UnionCF A f mf ay (ZChain.supf zc) z) a ) → b o< z → (ab : odef A b)
312 → HasPrev A (UnionCF A f mf ay (ZChain.supf zc) z) ab f ∨ IsSup A (UnionCF A f mf ay (ZChain.supf zc) z) ab
313 → * a < * b → odef ((UnionCF A f mf ay (ZChain.supf zc) z)) b
303 314
304 record Maximal ( A : HOD ) : Set (Level.suc n) where 315 record Maximal ( A : HOD ) : Set (Level.suc n) where
305 field 316 field
306 maximal : HOD 317 maximal : HOD
307 A∋maximal : A ∋ maximal 318 A∋maximal : A ∋ maximal
345 ... | case1 eq = subst (λ k → * b < k ) eq ct05 356 ... | case1 eq = subst (λ k → * b < k ) eq ct05
346 ... | case2 lt = IsStrictPartialOrder.trans POO ct05 lt 357 ... | case2 lt = IsStrictPartialOrder.trans POO ct05 lt
347 358
348 ChainP-next : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal ) 359 ChainP-next : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal )
349 → {x z : Ordinal } → ChainP A f mf ay supf x z → ChainP A f mf ay supf x (f z ) 360 → {x z : Ordinal } → ChainP A f mf ay supf x z → ChainP A f mf ay supf x (f z )
350 ChainP-next A f mf {y} ay supf {x} {z} cp = ? --record { y-init = ChainP.y-init cp ; asup = ChainP.asup cp ; au = ChainP.au cp 361 ChainP-next A f mf {y} ay supf {x} {z} cp = {!!} --record { y-init = ChainP.y-init cp ; asup = ChainP.asup cp ; au = ChainP.au cp
351 -- ; fcy<sup = ChainP.fcy<sup cp ; csupz = fsuc _ (ChainP.csupz cp) ; order = ChainP.order cp } 362 -- ; fcy<sup = ChainP.fcy<sup cp ; csupz = fsuc _ (ChainP.csupz cp) ; order = ChainP.order cp }
352 363
353 Zorn-lemma : { A : HOD } 364 Zorn-lemma : { A : HOD }
354 → o∅ o< & A 365 → o∅ o< & A
355 → ( ( B : HOD) → (B⊆A : B ⊆' A) → IsTotalOrderSet B → SUP A B ) -- SUP condition 366 → ( ( B : HOD) → (B⊆A : B ⊆' A) → IsTotalOrderSet B → SUP A B ) -- SUP condition
408 (total : IsTotalOrderSet (ZChain.chain zc) ) → SUP A (ZChain.chain zc) 419 (total : IsTotalOrderSet (ZChain.chain zc) ) → SUP A (ZChain.chain zc)
409 sp0 f mf zc total = supP (ZChain.chain zc) (ZChain.chain⊆A zc) total 420 sp0 f mf zc total = supP (ZChain.chain zc) (ZChain.chain⊆A zc) total
410 zc< : {x y z : Ordinal} → {P : Set n} → (x o< y → P) → x o< z → z o< y → P 421 zc< : {x y z : Ordinal} → {P : Set n} → (x o< y → P) → x o< z → z o< y → P
411 zc< {x} {y} {z} {P} prev x<z z<y = prev (ordtrans x<z z<y) 422 zc< {x} {y} {z} {P} prev x<z z<y = prev (ordtrans x<z z<y)
412 423
413 ZChain-is-max :( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) 424 SZ1 :( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f)
414 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) → 425 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) (x : Ordinal) → ZChain1 A f mf ay zc x
415 {a b : Ordinal } → (ca : odef (UnionCF A f mf ay (ZChain.supf zc) (& A)) a ) → b o< & A → (ab : odef A b) 426 SZ1 A f mf {y} ay zc x = TransFinite { λ x → ZChain1 A f mf ay zc x } zc1 x where
416 → HasPrev A (UnionCF A f mf ay (ZChain.supf zc) (& A)) ab f ∨ IsSup A (UnionCF A f mf ay (ZChain.supf zc) (& A)) ab 427 zc1 : (x : Ordinal) → ((y₁ : Ordinal) → y₁ o< x → ZChain1 A f mf ay zc y₁) → ZChain1 A f mf ay zc x
417 → * a < * b → odef ((UnionCF A f mf ay (ZChain.supf zc) (& A))) b 428 zc1 x prev = {!!} where
418 ZChain-is-max A f mf {y} ay zc {a} {b} ca b<a ab (case1 has-prev) a<b = 429 is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) a →
419 subst (λ k → odef (UnionCF A f mf ay (ZChain.supf zc) (& A)) k ) (sym (HasPrev.x=fy has-prev)) ( ZChain.f-next zc (HasPrev.ay has-prev) ) 430 b o< x → (ab : odef A b) →
420 ZChain-is-max A f mf {y} ay zc {a} {b} ca b<a ab (case2 is-sup) a<b = ? 431 HasPrev A (UnionCF A f mf ay (ZChain.supf zc) x) ab f ∨ IsSup A (UnionCF A f mf ay (ZChain.supf zc) x) ab →
432 * a < * b → odef (UnionCF A f mf ay (ZChain.supf zc) x) b
433 is-max {a} {b} ua b<x ab (case1 has-prev) a<b = {!!}
434 is-max {a} {b} ua b<x ab (case2 is-sup) a<b with ODC.p∨¬p O ( HasPrev A (ZChain.chain zc ) ab f )
435 ... | case1 has-prev = m03 (subst (λ k → odef (UnionCF A f mf ay (ZChain.supf zc) (& A)) k ) {!!} m02 ) {!!} where
436 m03 : odef (UnionCF A f mf ay (ZChain.supf zc) (& A)) b → b o< x → odef (UnionCF A f mf ay (ZChain.supf zc) x) b
437 m03 = {!!}
438 m02 : odef (UnionCF A f mf ay (ZChain.supf zc) (& A)) (f (HasPrev.y has-prev))
439 m02 = ZChain.f-next zc (HasPrev.ay has-prev)
440 ... | case2 ¬fy<x with Oprev-p x
441 ... | yes op = {!!} where
442 px = Oprev.oprev op
443 m01 : odef (UnionCF A f mf ay (ZChain.supf zc) x) b
444 m01 with trio< px b
445 ... | tri< a ¬b ¬c = ZChain1.chain-mono2 (prev px ?) ? ? m04 where
446 m04 : odef (UnionCF A f mf ay (ZChain.supf zc) px) b
447 m04 = ZChain1.is-max (prev px ?) {!!} {!!} ab {!!} a<b
448 ... | tri≈ ¬a b ¬c = {!!}
449 ... | tri> ¬a ¬b c = {!!}
450 ... | no lim = ZChain1.chain-mono2 (prev b b<x ) ? {!!} m04 where
451 m04 : odef (UnionCF A f mf ay (ZChain.supf zc) (osuc b)) b
452 m04 = ZChain1.is-max (prev (osuc b) ? ) {!!} {!!} ab {!!} a<b
421 453
422 --- 454 ---
423 --- the maximum chain has fix point of any ≤-monotonic function 455 --- the maximum chain has fix point of any ≤-monotonic function
424 --- 456 ---
425 fixpoint : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) (zc : ZChain A f mf as0 (& A) ) 457 fixpoint : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) (zc : ZChain A f mf as0 (& A) )
429 chain = ZChain.chain zc 461 chain = ZChain.chain zc
430 sp1 = sp0 f mf zc total 462 sp1 = sp0 f mf zc total
431 z10 : {a b : Ordinal } → (ca : odef chain a ) → b o< & A → (ab : odef A b ) 463 z10 : {a b : Ordinal } → (ca : odef chain a ) → b o< & A → (ab : odef A b )
432 → HasPrev A chain ab f ∨ IsSup A chain {b} ab -- (supO chain (ZChain.chain⊆A zc) (ZChain.f-total zc) ≡ b ) 464 → HasPrev A chain ab f ∨ IsSup A chain {b} ab -- (supO chain (ZChain.chain⊆A zc) (ZChain.f-total zc) ≡ b )
433 → * a < * b → odef chain b 465 → * a < * b → odef chain b
434 z10 = ZChain-is-max A f mf as0 zc 466 z10 = ZChain1.is-max (SZ1 A f mf as0 zc (& A) )
435 z11 : & (SUP.sup sp1) o< & A 467 z11 : & (SUP.sup sp1) o< & A
436 z11 = c<→o< ( SUP.A∋maximal sp1) 468 z11 = c<→o< ( SUP.A∋maximal sp1)
437 z12 : odef chain (& (SUP.sup sp1)) 469 z12 : odef chain (& (SUP.sup sp1))
438 z12 with o≡? (& s) (& (SUP.sup sp1)) 470 z12 with o≡? (& s) (& (SUP.sup sp1))
439 ... | yes eq = subst (λ k → odef chain k) eq ( ZChain.chain∋init zc ) 471 ... | yes eq = subst (λ k → odef chain k) eq ( ZChain.chain∋init zc )
482 sp1 = sp0 (cf nmx) (cf-is-≤-monotonic nmx) zc total 514 sp1 = sp0 (cf nmx) (cf-is-≤-monotonic nmx) zc total
483 c = & (SUP.sup sp1) 515 c = & (SUP.sup sp1)
484 516
485 inititalChain : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → ZChain A f mf ay o∅ 517 inititalChain : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → ZChain A f mf ay o∅
486 inititalChain f mf {y} ay = record { supf = isupf ; chain⊆A = λ lt → proj1 lt ; chain∋init = cy 518 inititalChain f mf {y} ay = record { supf = isupf ; chain⊆A = λ lt → proj1 lt ; chain∋init = cy
487 ; initial = isy ; f-next = inext ; f-total = itotal ; is-max = imax } where 519 ; initial = isy ; f-next = inext ; f-total = itotal ; chain-mono = {!!} } where
488 isupf : Ordinal → Ordinal 520 isupf : Ordinal → Ordinal
489 isupf z = y 521 isupf z = y
490 cy : odef (UnionCF A f mf ay isupf o∅) y 522 cy : odef (UnionCF A f mf ay isupf o∅) y
491 cy = ⟪ ay , record { u = o∅ ; u<x = case2 refl ; uchain = ch-init _ (init ay) } ⟫ 523 cy = ⟪ ay , record { u = o∅ ; u<x = case2 refl ; uchain = ch-init _ (init ay) } ⟫
492 isy : {z : Ordinal } → odef (UnionCF A f mf ay isupf o∅) z → * y ≤ * z 524 isy : {z : Ordinal } → odef (UnionCF A f mf ay isupf o∅) z → * y ≤ * z
505 b o< o∅ → (ab : odef A b) → 537 b o< o∅ → (ab : odef A b) →
506 HasPrev A (UnionCF A f mf ay isupf o∅) ab f ∨ IsSup A (UnionCF A f mf ay isupf o∅) ab → 538 HasPrev A (UnionCF A f mf ay isupf o∅) ab f ∨ IsSup A (UnionCF A f mf ay isupf o∅) ab →
507 * a < * b → odef (UnionCF A f mf ay isupf o∅) b 539 * a < * b → odef (UnionCF A f mf ay isupf o∅) b
508 imax {a} {b} ua b<x ab (case1 hasp) a<b = subst (λ k → odef (UnionCF A f mf ay isupf o∅) k ) (sym (HasPrev.x=fy hasp)) ( inext (HasPrev.ay hasp) ) 540 imax {a} {b} ua b<x ab (case1 hasp) a<b = subst (λ k → odef (UnionCF A f mf ay isupf o∅) k ) (sym (HasPrev.x=fy hasp)) ( inext (HasPrev.ay hasp) )
509 imax {a} {b} ua b<x ab (case2 sup) a<b = ⊥-elim ( ¬x<0 b<x ) 541 imax {a} {b} ua b<x ab (case2 sup) a<b = ⊥-elim ( ¬x<0 b<x )
510
511 -- exor-sup : (B : HOD)
512 -- → ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) →
513 -- → {x : Ordinal } (xa : odef A x) → HasPrev A B xa → IsSup A B xa → ⊥
514 -- exor-sup B f mf {y} ay {x} xa hasp is-sup with trio<
515 542
516 -- 543 --
517 -- create all ZChains under o< x 544 -- create all ZChains under o< x
518 -- 545 --
519 546
558 pcy = ⟪ ay , record { u = o∅ ; u<x = case2 refl ; uchain = ch-init _ (init ay) } ⟫ 585 pcy = ⟪ ay , record { u = o∅ ; u<x = case2 refl ; uchain = ch-init _ (init ay) } ⟫
559 586
560 -- if previous chain satisfies maximality, we caan reuse it 587 -- if previous chain satisfies maximality, we caan reuse it
561 -- 588 --
562 no-extension : ZChain A f mf ay x 589 no-extension : ZChain A f mf ay x
563 no-extension = record { initial = pinit ; chain∋init = pcy 590 no-extension = record { supf = {!!} ; initial = pinit ; chain∋init = pcy
564 ; chain⊆A = pchain⊆A ; f-next = pnext ; f-total = ptotal } 591 ; chain⊆A = pchain⊆A ; f-next = pnext ; f-total = ptotal }
565 592
566 chain-mono : UnionCF A f mf ay (ZChain.supf zc) (Oprev.oprev op ) ⊆' pchain 593 chain-mono : UnionCF A f mf ay (ZChain.supf zc) (Oprev.oprev op ) ⊆' pchain
567 chain-mono {a} za = ⟪ proj1 za , record { u = UChain.u (proj2 za) ; u<x = zc11 ; uchain = UChain.uchain (proj2 za) } ⟫ where 594 chain-mono {a} za = ⟪ proj1 za , record { u = UChain.u (proj2 za) ; u<x = zc11 ; uchain = UChain.uchain (proj2 za) } ⟫ where
568 zc11 : (UChain.u (proj2 za) o< x) ∨ (UChain.u (proj2 za) ≡ o∅) 595 zc11 : (UChain.u (proj2 za) o< x) ∨ (UChain.u (proj2 za) ≡ o∅)
592 ... | yes apx with ODC.p∨¬p O ( HasPrev A (ZChain.chain zc ) apx f ) 619 ... | yes apx with ODC.p∨¬p O ( HasPrev A (ZChain.chain zc ) apx f )
593 -- we have to check adding x preserve is-max ZChain A y f mf x 620 -- we have to check adding x preserve is-max ZChain A y f mf x
594 ... | case1 pr = no-extension -- we have previous A ∋ z < x , f z ≡ x, so chain ∋ f z ≡ x because of f-next 621 ... | case1 pr = no-extension -- we have previous A ∋ z < x , f z ≡ x, so chain ∋ f z ≡ x because of f-next
595 ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A (ZChain.chain zc ) apx ) 622 ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A (ZChain.chain zc ) apx )
596 ... | case1 is-sup = -- x is a sup of zc 623 ... | case1 is-sup = -- x is a sup of zc
597 record { chain⊆A = pchain⊆A ; f-next = pnext ; f-total = ptotal 624 record { supf = {!!} ; chain⊆A = pchain⊆A ; f-next = pnext ; f-total = ptotal
598 ; initial = pinit ; chain∋init = pcy } 625 ; initial = pinit ; chain∋init = pcy }
599 ... | case2 ¬x=sup = no-extension -- px is not f y' nor sup of former ZChain from y -- no extention 626 ... | case2 ¬x=sup = no-extension -- px is not f y' nor sup of former ZChain from y -- no extention
600 ... | no op = zc5 where 627 ... | no lim = zc5 where
601 628
602 pzc : (z : Ordinal) → z o< x → ZChain A f mf ay z 629 pzc : (z : Ordinal) → z o< x → ZChain A f mf ay z
603 pzc z z<x = prev z z<x 630 pzc z z<x = prev z z<x
604 631
605 psupf0 : (z : Ordinal) → Ordinal 632 psupf0 : (z : Ordinal) → Ordinal
641 zc7 = ChainP.fcy<sup is-sup (init ay) 668 zc7 = ChainP.fcy<sup is-sup (init ay)
642 pcy : odef pchain y 669 pcy : odef pchain y
643 pcy = ⟪ ay , record { u = o∅ ; u<x = case2 refl ; uchain = ch-init _ (init ay) } ⟫ 670 pcy = ⟪ ay , record { u = o∅ ; u<x = case2 refl ; uchain = ch-init _ (init ay) } ⟫
644 671
645 no-extension : ZChain A f mf ay x 672 no-extension : ZChain A f mf ay x
646 no-extension = record { initial = pinit ; chain∋init = pcy 673 no-extension = record { initial = pinit ; chain∋init = pcy ; supf = psupf0 ; chain-mono = ?
647 ; chain⊆A = pchain⊆A ; f-next = pnext ; f-total = ptotal } 674 ; chain⊆A = pchain⊆A ; f-next = pnext ; f-total = ptotal }
648 675
649 usup : SUP A pchain 676 usup : SUP A pchain
650 usup = supP pchain (λ lt → proj1 lt) ptotal 677 usup = supP pchain (λ lt → proj1 lt) ptotal
651 spu = & (SUP.sup usup) 678 spu = & (SUP.sup usup)
653 psupf z with trio< z x 680 psupf z with trio< z x
654 ... | tri< a ¬b ¬c = ZChain.supf (pzc z a) z 681 ... | tri< a ¬b ¬c = ZChain.supf (pzc z a) z
655 ... | tri≈ ¬a b ¬c = spu 682 ... | tri≈ ¬a b ¬c = spu
656 ... | tri> ¬a ¬b c = spu 683 ... | tri> ¬a ¬b c = spu
657 684
658 uzc : {a : Ordinal } → (za : odef pchain a) → ZChain A f mf ay (UChain.u (proj2 za))
659 uzc {a} za with UChain.u<x (proj2 za)
660 ... | case1 u<x = pzc _ u<x
661 ... | case2 u=0 = subst (λ k → ZChain A f mf ay k ) (sym u=0) (inititalChain f mf {y} ay )
662 685
663 chain-mono : pchain ⊆' UnionCF A f mf ay psupf x 686 chain-mono : pchain ⊆' UnionCF A f mf ay psupf x
664 chain-mono {a} ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-init a x } ⟫ = 687 chain-mono {a} ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-init a x } ⟫ =
665 ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-init a x } ⟫ 688 ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-init a x } ⟫
666 chain-mono {.(psupf0 u)} ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-is-sup is-sup (init x) } ⟫ = 689 chain-mono {.(psupf0 u)} ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-is-sup is-sup (init x) } ⟫ =
667 ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-is-sup ? ? } ⟫ 690 ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-is-sup {!!} {!!} } ⟫
668 chain-mono {.(f x)} ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-is-sup is-sup (fsuc x fc) } ⟫ = 691 chain-mono {.(f x)} ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-is-sup is-sup (fsuc x fc) } ⟫ =
669 ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-is-sup ? (fsuc x ?) } ⟫ 692 ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-is-sup {!!} (fsuc x {!!}) } ⟫
670 693
671 chain-≡ : UnionCF A f mf ay psupf x ⊆' pchain 694 chain-≡ : UnionCF A f mf ay psupf x ⊆' pchain
672 → UnionCF A f mf ay psupf x ≡ pchain 695 → UnionCF A f mf ay psupf x ≡ pchain
673 chain-≡ lt = ==→o≡ record { eq→ = lt ; eq← = chain-mono } 696 chain-≡ lt = ==→o≡ record { eq→ = lt ; eq← = chain-mono }
674 697
676 → {p0 p1 : Ordinal → Ordinal} 699 → {p0 p1 : Ordinal → Ordinal}
677 → p0 u ≡ p1 u 700 → p0 u ≡ p1 u
678 → FClosure A f (p0 u) b → FClosure A f (p1 u) b 701 → FClosure A f (p0 u) b → FClosure A f (p1 u) b
679 fc-conv {.(p0 u)} {u} {p0} {p1} p0u=p1u (init ap0u) = subst (λ k → FClosure A f (p1 u) k) (sym p0u=p1u) ( init (subst (λ k → odef A k) p0u=p1u ap0u )) 702 fc-conv {.(p0 u)} {u} {p0} {p1} p0u=p1u (init ap0u) = subst (λ k → FClosure A f (p1 u) k) (sym p0u=p1u) ( init (subst (λ k → odef A k) p0u=p1u ap0u ))
680 fc-conv {_} {u} {p0} {p1} p0u=p1u (fsuc z fc) = fsuc z (fc-conv {_} {u} {p0} {p1} p0u=p1u fc) 703 fc-conv {_} {u} {p0} {p1} p0u=p1u (fsuc z fc) = fsuc z (fc-conv {_} {u} {p0} {p1} p0u=p1u fc)
681
682 uzc-mono : {b : Ordinal } → {ob<x : osuc b o< x }
683 → odef (UnionCF A f mf ay (ZChain.supf (prev (osuc b) ob<x))(osuc b)) b → odef pchain b
684 uzc-mono {b} {ob<x} ⟪ ab , record { u = x=0 ; u<x = u<x ; uchain = ch-init .b fc } ⟫ =
685 ⟪ ab , record { u = x=0 ; u<x = case2 refl ; uchain = ch-init b fc } ⟫
686 uzc-mono {b} {ob<x} ⟪ ab , record { u = u ; u<x = case2 x=0 ; uchain = ch-is-sup is-sup fc } ⟫ = ?
687 uzc-mono {b} {ob<x} ⟪ ab , record { u = u ; u<x = case1 u<x ; uchain = ch-is-sup is-sup fc } ⟫ =
688 ⟪ ab , record { u = u ; u<x = case1 (ordtrans u<x ob<x) ; uchain = ch-is-sup uzc00
689 (fc-conv {b} {u} {ZChain.supf (prev (osuc b) ob<x)} {psupf0} uzc01 fc) } ⟫ where
690 uzc01 : ZChain.supf (prev (osuc b) ob<x) u ≡ psupf0 u
691 uzc01 = ? -- trans (sym (psupf0=pzc (ordtrans u<x ob<x ) )) ?
692 uzc00 : ChainP A f mf ay psupf0 u b
693 uzc00 = ?
694 704
695 zc5 : ZChain A f mf ay x 705 zc5 : ZChain A f mf ay x
696 zc5 with ODC.∋-p O A (* x) 706 zc5 with ODC.∋-p O A (* x)
697 ... | no noax = no-extension where -- ¬ A ∋ p, just skip 707 ... | no noax = no-extension where -- ¬ A ∋ p, just skip
698 ... | yes ax with ODC.p∨¬p O ( HasPrev A pchain ax f ) 708 ... | yes ax with ODC.p∨¬p O ( HasPrev A pchain ax f )
699 -- we have to check adding x preserve is-max ZChain A y f mf x 709 -- we have to check adding x preserve is-max ZChain A y f mf x
700 ... | case1 pr = no-extension 710 ... | case1 pr = no-extension
701 ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A pchain ax ) 711 ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A pchain ax )
702 ... | case1 is-sup = {!!} -- x is a sup of (zc ?) 712 ... | case1 is-sup = record { initial = ? ; chain∋init = ? ; supf = psupf1 ; chain-mono = ?
713 ; chain⊆A = ? ; f-next = ? ; f-total = ? } where -- x is a sup of (zc ?)
714 psupf1 : Ordinal → Ordinal
715 psupf1 z with trio< z x
716 ... | tri< a ¬b ¬c = ZChain.supf (pzc z a) z
717 ... | tri≈ ¬a b ¬c = x
718 ... | tri> ¬a ¬b c = x
703 ... | case2 ¬x=sup = no-extension -- x is not f y' nor sup of former ZChain from y -- no extention 719 ... | case2 ¬x=sup = no-extension -- x is not f y' nor sup of former ZChain from y -- no extention
704 720
705 SZ : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) → {y : Ordinal} (ay : odef A y) → ZChain A f mf ay (& A) 721 SZ : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) → {y : Ordinal} (ay : odef A y) → ZChain A f mf ay (& A)
706 SZ f mf {y} ay = TransFinite {λ z → ZChain A f mf ay z } (λ x → ind f mf ay x ) (& A) 722 SZ f mf {y} ay = TransFinite {λ z → ZChain A f mf ay z } (λ x → ind f mf ay x ) (& A)
707 723