comparison src/zorn.agda @ 979:6229017a6176

chain is now u≤x again
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 09 Nov 2022 05:00:56 +0900
parents 94357ced682d
children 49cf50d451e1
comparison
equal deleted inserted replaced
978:94357ced682d 979:6229017a6176
271 supu=u : supf u ≡ u 271 supu=u : supf u ≡ u
272 272
273 data UChain ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal } (ay : odef A y ) 273 data UChain ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal } (ay : odef A y )
274 (supf : Ordinal → Ordinal) (x : Ordinal) : (z : Ordinal) → Set n where 274 (supf : Ordinal → Ordinal) (x : Ordinal) : (z : Ordinal) → Set n where
275 ch-init : {z : Ordinal } (fc : FClosure A f y z) → UChain A f mf ay supf x z 275 ch-init : {z : Ordinal } (fc : FClosure A f y z) → UChain A f mf ay supf x z
276 ch-is-sup : (u : Ordinal) {z : Ordinal } (u<x : supf u o< supf x) ( is-sup : ChainP A f mf ay supf u ) 276 ch-is-sup : (u : Ordinal) {z : Ordinal } (u≤x : supf u o≤ supf x) ( is-sup : ChainP A f mf ay supf u )
277 ( fc : FClosure A f (supf u) z ) → UChain A f mf ay supf x z 277 ( fc : FClosure A f (supf u) z ) → UChain A f mf ay supf x z
278 278
279 -- 279 --
280 -- f (f ( ... (sup y))) f (f ( ... (sup z1))) 280 -- f (f ( ... (sup y))) f (f ( ... (sup z1)))
281 -- / | / | 281 -- / | / |
282 -- / | / | 282 -- / | / |
283 -- sup y < sup z1 < sup z2 283 -- sup y ≤ sup z1 ≤ sup z2
284 -- o< o< 284 -- o≤ o≤
285 -- data UChain is total 285 -- data UChain is total
286 286
287 chain-total : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal ) 287 chain-total : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal )
288 {s s1 a b : Ordinal } ( ca : UChain A f mf ay supf s a ) ( cb : UChain A f mf ay supf s1 b ) → Tri (* a < * b) (* a ≡ * b) (* b < * a ) 288 {s s1 a b : Ordinal } ( ca : UChain A f mf ay supf s a ) ( cb : UChain A f mf ay supf s1 b ) → Tri (* a < * b) (* a ≡ * b) (* b < * a )
289 chain-total A f mf {y} ay supf {xa} {xb} {a} {b} ca cb = ct-ind xa xb ca cb where 289 chain-total A f mf {y} ay supf {xa} {xb} {a} {b} ca cb = ct-ind xa xb ca cb where
290 ct-ind : (xa xb : Ordinal) → {a b : Ordinal} → UChain A f mf ay supf xa a → UChain A f mf ay supf xb b → Tri (* a < * b) (* a ≡ * b) (* b < * a) 290 ct-ind : (xa xb : Ordinal) → {a b : Ordinal} → UChain A f mf ay supf xa a → UChain A f mf ay supf xb b → Tri (* a < * b) (* a ≡ * b) (* b < * a)
291 ct-ind xa xb {a} {b} (ch-init fca) (ch-init fcb) = fcn-cmp y f mf fca fcb 291 ct-ind xa xb {a} {b} (ch-init fca) (ch-init fcb) = fcn-cmp y f mf fca fcb
292 ct-ind xa xb {a} {b} (ch-init fca) (ch-is-sup ub u<x supb fcb) with ChainP.fcy<sup supb fca 292 ct-ind xa xb {a} {b} (ch-init fca) (ch-is-sup ub u≤x supb fcb) with ChainP.fcy<sup supb fca
293 ... | case1 eq with s≤fc (supf ub) f mf fcb 293 ... | case1 eq with s≤fc (supf ub) f mf fcb
294 ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00 (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where 294 ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00 (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where
295 ct00 : * a ≡ * b 295 ct00 : * a ≡ * b
296 ct00 = trans (cong (*) eq) eq1 296 ct00 = trans (cong (*) eq) eq1
297 ... | case2 lt = tri< ct01 (λ eq → <-irr (case1 (sym eq)) ct01) (λ lt → <-irr (case2 ct01) lt) where 297 ... | case2 lt = tri< ct01 (λ eq → <-irr (case1 (sym eq)) ct01) (λ lt → <-irr (case2 ct01) lt) where
298 ct01 : * a < * b 298 ct01 : * a < * b
299 ct01 = subst (λ k → * k < * b ) (sym eq) lt 299 ct01 = subst (λ k → * k < * b ) (sym eq) lt
300 ct-ind xa xb {a} {b} (ch-init fca) (ch-is-sup ub u<x supb fcb) | case2 lt = tri< ct01 (λ eq → <-irr (case1 (sym eq)) ct01) (λ lt → <-irr (case2 ct01) lt) where 300 ct-ind xa xb {a} {b} (ch-init fca) (ch-is-sup ub u≤x supb fcb) | case2 lt = tri< ct01 (λ eq → <-irr (case1 (sym eq)) ct01) (λ lt → <-irr (case2 ct01) lt) where
301 ct00 : * a < * (supf ub) 301 ct00 : * a < * (supf ub)
302 ct00 = lt 302 ct00 = lt
303 ct01 : * a < * b 303 ct01 : * a < * b
304 ct01 with s≤fc (supf ub) f mf fcb 304 ct01 with s≤fc (supf ub) f mf fcb
305 ... | case1 eq = subst (λ k → * a < k ) eq ct00 305 ... | case1 eq = subst (λ k → * a < k ) eq ct00
306 ... | case2 lt = IsStrictPartialOrder.trans POO ct00 lt 306 ... | case2 lt = IsStrictPartialOrder.trans POO ct00 lt
307 ct-ind xa xb {a} {b} (ch-is-sup ua u<x supa fca) (ch-init fcb) with ChainP.fcy<sup supa fcb 307 ct-ind xa xb {a} {b} (ch-is-sup ua u≤x supa fca) (ch-init fcb) with ChainP.fcy<sup supa fcb
308 ... | case1 eq with s≤fc (supf ua) f mf fca 308 ... | case1 eq with s≤fc (supf ua) f mf fca
309 ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00 (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where 309 ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00 (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where
310 ct00 : * a ≡ * b 310 ct00 : * a ≡ * b
311 ct00 = sym (trans (cong (*) eq) eq1 ) 311 ct00 = sym (trans (cong (*) eq) eq1 )
312 ... | case2 lt = tri> (λ lt → <-irr (case2 ct01) lt) (λ eq → <-irr (case1 eq) ct01) ct01 where 312 ... | case2 lt = tri> (λ lt → <-irr (case2 ct01) lt) (λ eq → <-irr (case1 eq) ct01) ct01 where
313 ct01 : * b < * a 313 ct01 : * b < * a
314 ct01 = subst (λ k → * k < * a ) (sym eq) lt 314 ct01 = subst (λ k → * k < * a ) (sym eq) lt
315 ct-ind xa xb {a} {b} (ch-is-sup ua u<x supa fca) (ch-init fcb) | case2 lt = tri> (λ lt → <-irr (case2 ct01) lt) (λ eq → <-irr (case1 eq) ct01) ct01 where 315 ct-ind xa xb {a} {b} (ch-is-sup ua u≤x supa fca) (ch-init fcb) | case2 lt = tri> (λ lt → <-irr (case2 ct01) lt) (λ eq → <-irr (case1 eq) ct01) ct01 where
316 ct00 : * b < * (supf ua) 316 ct00 : * b < * (supf ua)
317 ct00 = lt 317 ct00 = lt
318 ct01 : * b < * a 318 ct01 : * b < * a
319 ct01 with s≤fc (supf ua) f mf fca 319 ct01 with s≤fc (supf ua) f mf fca
320 ... | case1 eq = subst (λ k → * b < k ) eq ct00 320 ... | case1 eq = subst (λ k → * b < k ) eq ct00
400 (supf-mono : {x y : Ordinal } → x o≤ y → supf x o≤ supf y ) {a b c : Ordinal} → a o≤ b 400 (supf-mono : {x y : Ordinal } → x o≤ y → supf x o≤ supf y ) {a b c : Ordinal} → a o≤ b
401 → odef (UnionCF A f mf ay supf a) c → odef (UnionCF A f mf ay supf b) c 401 → odef (UnionCF A f mf ay supf a) c → odef (UnionCF A f mf ay supf b) c
402 chain-mono f mf ay supf supf-mono {a} {b} {c} a≤b ⟪ ua , ch-init fc ⟫ = 402 chain-mono f mf ay supf supf-mono {a} {b} {c} a≤b ⟪ ua , ch-init fc ⟫ =
403 ⟪ ua , ch-init fc ⟫ 403 ⟪ ua , ch-init fc ⟫
404 chain-mono f mf ay supf supf-mono {a} {b} {c} a≤b ⟪ uaa , ch-is-sup ua ua<x is-sup fc ⟫ = 404 chain-mono f mf ay supf supf-mono {a} {b} {c} a≤b ⟪ uaa , ch-is-sup ua ua<x is-sup fc ⟫ =
405 ⟪ uaa , ch-is-sup ua (ordtrans<-≤ ua<x (supf-mono a≤b ) ) is-sup fc ⟫ 405 ⟪ uaa , ch-is-sup ua (ordtrans<-≤ ua<x ? ) is-sup fc ⟫
406 406
407 record ZChain ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) 407 record ZChain ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f)
408 {y : Ordinal} (ay : odef A y) ( z : Ordinal ) : Set (Level.suc n) where 408 {y : Ordinal} (ay : odef A y) ( z : Ordinal ) : Set (Level.suc n) where
409 field 409 field
410 supf : Ordinal → Ordinal 410 supf : Ordinal → Ordinal
433 433
434 chain∋init : odef chain y 434 chain∋init : odef chain y
435 chain∋init = ⟪ ay , ch-init (init ay refl) ⟫ 435 chain∋init = ⟪ ay , ch-init (init ay refl) ⟫
436 f-next : {a z : Ordinal} → odef (UnionCF A f mf ay supf z) a → odef (UnionCF A f mf ay supf z) (f a) 436 f-next : {a z : Ordinal} → odef (UnionCF A f mf ay supf z) a → odef (UnionCF A f mf ay supf z) (f a)
437 f-next {a} ⟪ aa , ch-init fc ⟫ = ⟪ proj2 (mf a aa) , ch-init (fsuc _ fc) ⟫ 437 f-next {a} ⟪ aa , ch-init fc ⟫ = ⟪ proj2 (mf a aa) , ch-init (fsuc _ fc) ⟫
438 f-next {a} ⟪ aa , ch-is-sup u u<x is-sup fc ⟫ = ⟪ proj2 (mf a aa) , ch-is-sup u u<x is-sup (fsuc _ fc ) ⟫ 438 f-next {a} ⟪ aa , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ proj2 (mf a aa) , ch-is-sup u u≤x is-sup (fsuc _ fc ) ⟫
439 initial : {z : Ordinal } → odef chain z → * y ≤ * z 439 initial : {z : Ordinal } → odef chain z → * y ≤ * z
440 initial {a} ⟪ aa , ua ⟫ with ua 440 initial {a} ⟪ aa , ua ⟫ with ua
441 ... | ch-init fc = s≤fc y f mf fc 441 ... | ch-init fc = s≤fc y f mf fc
442 ... | ch-is-sup u u<x is-sup fc = ≤-ftrans (<=to≤ zc7) (s≤fc _ f mf fc) where 442 ... | ch-is-sup u u≤x is-sup fc = ≤-ftrans (<=to≤ zc7) (s≤fc _ f mf fc) where
443 zc7 : y <= supf u 443 zc7 : y <= supf u
444 zc7 = ChainP.fcy<sup is-sup (init ay refl) 444 zc7 = ChainP.fcy<sup is-sup (init ay refl)
445 f-total : IsTotalOrderSet chain 445 f-total : IsTotalOrderSet chain
446 f-total {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where 446 f-total {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where
447 uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) ) 447 uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) )
488 → (supf-mono : {x y : Ordinal } → x o≤ y → supf x o≤ supf y ) 488 → (supf-mono : {x y : Ordinal } → x o≤ y → supf x o≤ supf y )
489 → ( { x : Ordinal } → x o< z → supf x ≡ supf1 x) 489 → ( { x : Ordinal } → x o< z → supf x ≡ supf1 x)
490 → ( { x : Ordinal } → z o≤ x → supf z o≤ supf1 x) 490 → ( { x : Ordinal } → z o≤ x → supf z o≤ supf1 x)
491 → UnionCF A f mf ay supf z ⊆' UnionCF A f mf ay supf1 z 491 → UnionCF A f mf ay supf z ⊆' UnionCF A f mf ay supf1 z
492 UChain⊆ A f mf {z} {y} ay {supf} {supf1} supf-mono eq<x lex ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫ 492 UChain⊆ A f mf {z} {y} ay {supf} {supf1} supf-mono eq<x lex ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫
493 UChain⊆ A f mf {z} {y} ay {supf} {supf1} supf-mono eq<x lex ⟪ az , ch-is-sup u {x} u<x is-sup fc ⟫ = ⟪ az , ch-is-sup u u<x1 cp1 fc1 ⟫ where 493 UChain⊆ A f mf {z} {y} ay {supf} {supf1} supf-mono eq<x lex ⟪ az , ch-is-sup u {x} u≤x is-sup fc ⟫ = ⟪ az , ch-is-sup u ? cp1 fc1 ⟫ where
494 u<x0 : u o< z 494 u≤x0 : u o< z
495 u<x0 = supf-inject0 supf-mono u<x 495 u≤x0 = supf-inject0 supf-mono ?
496 u<x1 : supf1 u o< supf1 z 496 u≤x1 : supf1 u o< supf1 z
497 u<x1 = subst (λ k → k o< supf1 z ) (eq<x u<x0) (ordtrans<-≤ u<x (lex o≤-refl ) ) 497 u≤x1 = subst (λ k → k o< supf1 z ) (eq<x u≤x0) (ordtrans<-≤ u≤x ? ) -- (lex o≤-refl ) )
498 fc1 : FClosure A f (supf1 u) x 498 fc1 : FClosure A f (supf1 u) x
499 fc1 = subst (λ k → FClosure A f k x ) (eq<x u<x0) fc 499 fc1 = subst (λ k → FClosure A f k x ) (eq<x u≤x0) fc
500 uc01 : {s : Ordinal } → supf1 s o< supf1 u → s o< z 500 uc01 : {s : Ordinal } → supf1 s o< supf1 u → s o< z
501 uc01 {s} s<u with trio< s z 501 uc01 {s} s<u with trio< s z
502 ... | tri< a ¬b ¬c = a 502 ... | tri< a ¬b ¬c = a
503 ... | tri≈ ¬a b ¬c = ⊥-elim ( o≤> uc02 s<u ) where -- (supf-mono (o<→≤ u<x0)) 503 ... | tri≈ ¬a b ¬c = ⊥-elim ( o≤> uc02 s<u ) where -- (supf-mono (o<→≤ u≤x0))
504 uc02 : supf1 u o≤ supf1 s 504 uc02 : supf1 u o≤ supf1 s
505 uc02 = begin 505 uc02 = begin
506 supf1 u <⟨ u<x1 ⟩ 506 supf1 u <⟨ u≤x1 ⟩
507 supf1 z ≡⟨ cong supf1 (sym b) ⟩ 507 supf1 z ≡⟨ cong supf1 (sym b) ⟩
508 supf1 s ∎ where open o≤-Reasoning O 508 supf1 s ∎ where open o≤-Reasoning O
509 ... | tri> ¬a ¬b c = ⊥-elim ( o≤> uc03 s<u ) where 509 ... | tri> ¬a ¬b c = ⊥-elim ( o≤> uc03 s<u ) where
510 uc03 : supf1 u o≤ supf1 s 510 uc03 : supf1 u o≤ supf1 s
511 uc03 = begin 511 uc03 = begin
512 supf1 u ≡⟨ sym (eq<x u<x0) ⟩ 512 supf1 u ≡⟨ sym (eq<x u≤x0) ⟩
513 supf u <⟨ u<x ⟩ 513 supf u <⟨ ? ⟩
514 supf z ≤⟨ lex (o<→≤ c) ⟩ 514 supf z ≤⟨ lex (o<→≤ c) ⟩
515 supf1 s ∎ where open o≤-Reasoning O 515 supf1 s ∎ where open o≤-Reasoning O
516 cp1 : ChainP A f mf ay supf1 u 516 cp1 : ChainP A f mf ay supf1 u
517 cp1 = record { fcy<sup = λ {z} fc → subst (λ k → (z ≡ k) ∨ ( z << k ) ) (eq<x u<x0) (ChainP.fcy<sup is-sup fc ) 517 cp1 = record { fcy<sup = λ {z} fc → subst (λ k → (z ≡ k) ∨ ( z << k ) ) (eq<x u≤x0) (ChainP.fcy<sup is-sup fc )
518 ; order = λ {s} {z} s<u fc → subst (λ k → (z ≡ k) ∨ ( z << k ) ) (eq<x u<x0) 518 ; order = λ {s} {z} s<u fc → subst (λ k → (z ≡ k) ∨ ( z << k ) ) (eq<x u≤x0)
519 (ChainP.order is-sup (subst₂ (λ j k → j o< k ) (sym (eq<x (uc01 s<u) )) (sym (eq<x u<x0)) s<u) 519 (ChainP.order is-sup (subst₂ (λ j k → j o< k ) (sym (eq<x (uc01 s<u) )) (sym (eq<x u≤x0)) s<u)
520 (subst (λ k → FClosure A f k z ) (sym (eq<x (uc01 s<u) )) fc )) 520 (subst (λ k → FClosure A f k z ) (sym (eq<x (uc01 s<u) )) fc ))
521 ; supu=u = trans (sym (eq<x u<x0)) (ChainP.supu=u is-sup) } 521 ; supu=u = trans (sym (eq<x u≤x0)) (ChainP.supu=u is-sup) }
522 522
523 record ZChain1 ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) 523 record ZChain1 ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f)
524 {y : Ordinal} (ay : odef A y) (zc : ZChain A f mf ay (& A)) ( z : Ordinal ) : Set (Level.suc n) where 524 {y : Ordinal} (ay : odef A y) (zc : ZChain A f mf ay (& A)) ( z : Ordinal ) : Set (Level.suc n) where
525 supf = ZChain.supf zc 525 supf = ZChain.supf zc
526 field 526 field
652 is-max-hp : (x : Ordinal) {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) a → (ab : odef A b) 652 is-max-hp : (x : Ordinal) {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) a → (ab : odef A b)
653 → HasPrev A (UnionCF A f mf ay (ZChain.supf zc) x) f b 653 → HasPrev A (UnionCF A f mf ay (ZChain.supf zc) x) f b
654 → * a < * b → odef (UnionCF A f mf ay (ZChain.supf zc) x) b 654 → * a < * b → odef (UnionCF A f mf ay (ZChain.supf zc) x) b
655 is-max-hp x {a} {b} ua ab has-prev a<b with HasPrev.ay has-prev 655 is-max-hp x {a} {b} ua ab has-prev a<b with HasPrev.ay has-prev
656 ... | ⟪ ab0 , ch-init fc ⟫ = ⟪ ab , ch-init ( subst (λ k → FClosure A f y k) (sym (HasPrev.x=fy has-prev)) (fsuc _ fc )) ⟫ 656 ... | ⟪ ab0 , ch-init fc ⟫ = ⟪ ab , ch-init ( subst (λ k → FClosure A f y k) (sym (HasPrev.x=fy has-prev)) (fsuc _ fc )) ⟫
657 ... | ⟪ ab0 , ch-is-sup u u<x is-sup fc ⟫ = ⟪ ab , subst (λ k → UChain A f mf ay (ZChain.supf zc) x k ) 657 ... | ⟪ ab0 , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ ab , subst (λ k → UChain A f mf ay (ZChain.supf zc) x k )
658 (sym (HasPrev.x=fy has-prev)) ( ch-is-sup u u<x is-sup (fsuc _ fc)) ⟫ 658 (sym (HasPrev.x=fy has-prev)) ( ch-is-sup u u≤x is-sup (fsuc _ fc)) ⟫
659 659
660 supf = ZChain.supf zc 660 supf = ZChain.supf zc
661 661
662 csupf-fc : {b s z1 : Ordinal} → b o< & A → supf s o< supf b → FClosure A f (supf s) z1 → UnionCF A f mf ay supf b ∋ * z1 662 csupf-fc : {b s z1 : Ordinal} → b o< & A → supf s o< supf b → FClosure A f (supf s) z1 → UnionCF A f mf ay supf b ∋ * z1
663 csupf-fc {b} {s} {z1} b<z ss<sb (init x refl ) = subst (λ k → odef (UnionCF A f mf ay supf b) k ) (sym &iso) zc05 where 663 csupf-fc {b} {s} {z1} b<z ss<sb (init x refl ) = subst (λ k → odef (UnionCF A f mf ay supf b) k ) (sym &iso) zc05 where
668 zc04 : odef (UnionCF A f mf ay supf (& A)) (supf s) 668 zc04 : odef (UnionCF A f mf ay supf (& A)) (supf s)
669 zc04 = ZChain.csupf zc (z09 (ZChain.asupf zc)) 669 zc04 = ZChain.csupf zc (z09 (ZChain.asupf zc))
670 zc05 : odef (UnionCF A f mf ay supf b) (supf s) 670 zc05 : odef (UnionCF A f mf ay supf b) (supf s)
671 zc05 with zc04 671 zc05 with zc04
672 ... | ⟪ as , ch-init fc ⟫ = ⟪ as , ch-init fc ⟫ 672 ... | ⟪ as , ch-init fc ⟫ = ⟪ as , ch-init fc ⟫
673 ... | ⟪ as , ch-is-sup u u<x is-sup fc ⟫ = ⟪ as , ch-is-sup u zc08 is-sup fc ⟫ where 673 ... | ⟪ as , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ as , ch-is-sup u ? is-sup fc ⟫ where
674 zc07 : FClosure A f (supf u) (supf s) -- supf u ≤ supf s → supf u o≤ supf s 674 zc07 : FClosure A f (supf u) (supf s) -- supf u ≤ supf s → supf u o≤ supf s
675 zc07 = fc 675 zc07 = fc
676 zc06 : supf u ≡ u 676 zc06 : supf u ≡ u
677 zc06 = ChainP.supu=u is-sup 677 zc06 = ChainP.supu=u is-sup
678 zc08 : supf u o< supf b 678 zc08 : supf u o< supf b
679 zc08 = ordtrans≤-< (ZChain.supf-<= zc (≤to<= ( s≤fc _ f mf fc ))) ss<sb 679 zc08 = ordtrans≤-< (ZChain.supf-<= zc (≤to<= ( s≤fc _ f mf fc ))) ss<sb
680 csupf-fc {b} {s} {z1} b<z ss≤sb (fsuc x fc) = subst (λ k → odef (UnionCF A f mf ay supf b) k ) (sym &iso) zc04 where 680 csupf-fc {b} {s} {z1} b<z ss≤sb (fsuc x fc) = subst (λ k → odef (UnionCF A f mf ay supf b) k ) (sym &iso) zc04 where
681 zc04 : odef (UnionCF A f mf ay supf b) (f x) 681 zc04 : odef (UnionCF A f mf ay supf b) (f x)
682 zc04 with subst (λ k → odef (UnionCF A f mf ay supf b) k ) &iso (csupf-fc b<z ss≤sb fc ) 682 zc04 with subst (λ k → odef (UnionCF A f mf ay supf b) k ) &iso (csupf-fc b<z ss≤sb fc )
683 ... | ⟪ as , ch-init fc ⟫ = ⟪ proj2 (mf _ as) , ch-init (fsuc _ fc) ⟫ 683 ... | ⟪ as , ch-init fc ⟫ = ⟪ proj2 (mf _ as) , ch-init (fsuc _ fc) ⟫
684 ... | ⟪ as , ch-is-sup u u<x is-sup fc ⟫ = ⟪ proj2 (mf _ as) , ch-is-sup u u<x is-sup (fsuc _ fc) ⟫ 684 ... | ⟪ as , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ proj2 (mf _ as) , ch-is-sup u u≤x is-sup (fsuc _ fc) ⟫
685 order : {b s z1 : Ordinal} → b o< & A → supf s o< supf b → FClosure A f (supf s) z1 → (z1 ≡ supf b) ∨ (z1 << supf b) 685 order : {b s z1 : Ordinal} → b o< & A → supf s o< supf b → FClosure A f (supf s) z1 → (z1 ≡ supf b) ∨ (z1 << supf b)
686 order {b} {s} {z1} b<z ss<sb fc = zc04 where 686 order {b} {s} {z1} b<z ss<sb fc = zc04 where
687 zc00 : ( z1 ≡ MinSUP.sup (ZChain.minsup zc (o<→≤ b<z) )) ∨ ( z1 << MinSUP.sup ( ZChain.minsup zc (o<→≤ b<z) ) ) 687 zc00 : ( z1 ≡ MinSUP.sup (ZChain.minsup zc (o<→≤ b<z) )) ∨ ( z1 << MinSUP.sup ( ZChain.minsup zc (o<→≤ b<z) ) )
688 zc00 = MinSUP.x≤sup (ZChain.minsup zc (o<→≤ b<z) ) (subst (λ k → odef (UnionCF A f mf ay (ZChain.supf zc) b) k ) &iso (csupf-fc b<z ss<sb fc )) 688 zc00 = MinSUP.x≤sup (ZChain.minsup zc (o<→≤ b<z) ) (subst (λ k → odef (UnionCF A f mf ay (ZChain.supf zc) b) k ) &iso (csupf-fc b<z ss<sb fc ))
689 -- supf (supf b) ≡ supf b 689 -- supf (supf b) ≡ supf b
703 HasPrev A (UnionCF A f mf ay supf x) f b ∨ IsSUP A (UnionCF A f mf ay supf b) ab → 703 HasPrev A (UnionCF A f mf ay supf x) f b ∨ IsSUP A (UnionCF A f mf ay supf b) ab →
704 * a < * b → odef (UnionCF A f mf ay supf x) b 704 * a < * b → odef (UnionCF A f mf ay supf x) b
705 is-max {a} {b} ua b<x ab P a<b with ODC.or-exclude O P 705 is-max {a} {b} ua b<x ab P a<b with ODC.or-exclude O P
706 is-max {a} {b} ua b<x ab P a<b | case1 has-prev = is-max-hp x {a} {b} ua ab has-prev a<b 706 is-max {a} {b} ua b<x ab P a<b | case1 has-prev = is-max-hp x {a} {b} ua ab has-prev a<b
707 is-max {a} {b} ua sb<sx ab P a<b | case2 is-sup 707 is-max {a} {b} ua sb<sx ab P a<b | case2 is-sup
708 = ⟪ ab , ch-is-sup b sb<sx m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where 708 = ⟪ ab , ch-is-sup b ? m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where
709 b<A : b o< & A 709 b<A : b o< & A
710 b<A = z09 ab 710 b<A = z09 ab
711 b<x : b o< x 711 b<x : b o< x
712 b<x = ZChain.supf-inject zc sb<sx 712 b<x = ZChain.supf-inject zc sb<sx
713 m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) f b 713 m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) f b
729 * a < * b → odef (UnionCF A f mf ay supf x) b 729 * a < * b → odef (UnionCF A f mf ay supf x) b
730 is-max {a} {b} ua sb<sx ab P a<b with ODC.or-exclude O P 730 is-max {a} {b} ua sb<sx ab P a<b with ODC.or-exclude O P
731 is-max {a} {b} ua sb<sx ab P a<b | case1 has-prev = is-max-hp x {a} {b} ua ab has-prev a<b 731 is-max {a} {b} ua sb<sx ab P a<b | case1 has-prev = is-max-hp x {a} {b} ua ab has-prev a<b
732 is-max {a} {b} ua sb<sx ab P a<b | case2 is-sup with IsSUP.x≤sup (proj2 is-sup) (init-uchain A f mf ay ) 732 is-max {a} {b} ua sb<sx ab P a<b | case2 is-sup with IsSUP.x≤sup (proj2 is-sup) (init-uchain A f mf ay )
733 ... | case1 b=y = ⟪ subst (λ k → odef A k ) b=y ay , ch-init (subst (λ k → FClosure A f y k ) b=y (init ay refl )) ⟫ 733 ... | case1 b=y = ⟪ subst (λ k → odef A k ) b=y ay , ch-init (subst (λ k → FClosure A f y k ) b=y (init ay refl )) ⟫
734 ... | case2 y<b = ⟪ ab , ch-is-sup b sb<sx m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where 734 ... | case2 y<b = ⟪ ab , ch-is-sup b ? m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where
735 m09 : b o< & A 735 m09 : b o< & A
736 m09 = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab)) 736 m09 = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab))
737 b<x : b o< x 737 b<x : b o< x
738 b<x = ZChain.supf-inject zc sb<sx 738 b<x = ZChain.supf-inject zc sb<sx
739 m07 : {z : Ordinal} → FClosure A f y z → z <= ZChain.supf zc b 739 m07 : {z : Ordinal} → FClosure A f y z → z <= ZChain.supf zc b
966 fcpu {u} {z} fc u≤px = subst (λ k → FClosure A f k z ) (sym (sf1=sf0 u≤px)) fc 966 fcpu {u} {z} fc u≤px = subst (λ k → FClosure A f k z ) (sym (sf1=sf0 u≤px)) fc
967 967
968 zc11 : {z : Ordinal} → odef (UnionCF A f mf ay supf1 x) z → odef pchainpx z 968 zc11 : {z : Ordinal} → odef (UnionCF A f mf ay supf1 x) z → odef pchainpx z
969 zc11 {z} ⟪ az , ch-init fc ⟫ = case1 ⟪ az , ch-init fc ⟫ 969 zc11 {z} ⟪ az , ch-init fc ⟫ = case1 ⟪ az , ch-init fc ⟫
970 zc11 {z} ⟪ az , ch-is-sup u su<sx is-sup fc ⟫ = zc21 fc where 970 zc11 {z} ⟪ az , ch-is-sup u su<sx is-sup fc ⟫ = zc21 fc where
971 u<x : u o< x 971 u≤x : u o< x
972 u<x = supf-inject0 supf1-mono su<sx 972 u≤x = supf-inject0 supf1-mono ? -- su<sx
973 u≤px : u o≤ px 973 u≤px : u o≤ px
974 u≤px = zc-b<x _ u<x 974 u≤px = zc-b<x _ u≤x
975 zc21 : {z1 : Ordinal } → FClosure A f (supf1 u) z1 → odef pchainpx z1 975 zc21 : {z1 : Ordinal } → FClosure A f (supf1 u) z1 → odef pchainpx z1
976 zc21 {z1} (fsuc z2 fc ) with zc21 fc 976 zc21 {z1} (fsuc z2 fc ) with zc21 fc
977 ... | case1 ⟪ ua1 , ch-init fc₁ ⟫ = case1 ⟪ proj2 ( mf _ ua1) , ch-init (fsuc _ fc₁) ⟫ 977 ... | case1 ⟪ ua1 , ch-init fc₁ ⟫ = case1 ⟪ proj2 ( mf _ ua1) , ch-init (fsuc _ fc₁) ⟫
978 ... | case1 ⟪ ua1 , ch-is-sup u u<x u1-is-sup fc₁ ⟫ = case1 ⟪ proj2 ( mf _ ua1) , ch-is-sup u u<x u1-is-sup (fsuc _ fc₁) ⟫ 978 ... | case1 ⟪ ua1 , ch-is-sup u u≤x u1-is-sup fc₁ ⟫ = case1 ⟪ proj2 ( mf _ ua1) , ch-is-sup u u≤x u1-is-sup (fsuc _ fc₁) ⟫
979 ... | case2 fc = case2 (fsuc _ fc) 979 ... | case2 fc = case2 (fsuc _ fc)
980 zc21 (init asp refl ) with trio< (supf0 u) (supf0 px) | inspect supf1 u 980 zc21 (init asp refl ) with trio< (supf0 u) (supf0 px) | inspect supf1 u
981 ... | tri< a ¬b ¬c | _ = case1 ⟪ asp , ch-is-sup u a record {fcy<sup = zc13 ; order = zc17 981 ... | tri< a ¬b ¬c | _ = case1 ⟪ asp , ch-is-sup u ? record {fcy<sup = zc13 ; order = zc17
982 ; supu=u = trans (sym (sf1=sf0 (o<→≤ u<px))) (ChainP.supu=u is-sup) } (init asp0 (sym (sf1=sf0 (o<→≤ u<px))) ) ⟫ where 982 ; supu=u = trans (sym (sf1=sf0 (o<→≤ u<px))) (ChainP.supu=u is-sup) } (init asp0 (sym (sf1=sf0 (o<→≤ u<px))) ) ⟫ where
983 u<px : u o< px 983 u<px : u o< px
984 u<px = ZChain.supf-inject zc a 984 u<px = ZChain.supf-inject zc a
985 asp0 : odef A (supf0 u) 985 asp0 : odef A (supf0 u)
986 asp0 = ZChain.asupf zc 986 asp0 = ZChain.asupf zc
991 zc18 : s o≤ px 991 zc18 : s o≤ px
992 zc18 = ordtrans (ZChain.supf-inject zc ss<spx) u≤px 992 zc18 = ordtrans (ZChain.supf-inject zc ss<spx) u≤px
993 zc13 : {z : Ordinal } → FClosure A f y z → (z ≡ supf0 u) ∨ ( z << supf0 u ) 993 zc13 : {z : Ordinal } → FClosure A f y z → (z ≡ supf0 u) ∨ ( z << supf0 u )
994 zc13 {z} fc = subst (λ k → (z ≡ k) ∨ ( z << k )) (sf1=sf0 (o<→≤ u<px)) ( ChainP.fcy<sup is-sup fc ) 994 zc13 {z} fc = subst (λ k → (z ≡ k) ∨ ( z << k )) (sf1=sf0 (o<→≤ u<px)) ( ChainP.fcy<sup is-sup fc )
995 ... | tri≈ ¬a b ¬c | _ = case2 (init (subst (λ k → odef A k) b (ZChain.asupf zc) ) (sym (trans (sf1=sf0 u≤px) b ))) 995 ... | tri≈ ¬a b ¬c | _ = case2 (init (subst (λ k → odef A k) b (ZChain.asupf zc) ) (sym (trans (sf1=sf0 u≤px) b )))
996 ... | tri> ¬a ¬b c | _ = ⊥-elim ( ¬p<x<op ⟪ ZChain.supf-inject zc c , subst (λ k → u o< k ) (sym (Oprev.oprev=x op)) u<x ⟫ ) 996 ... | tri> ¬a ¬b c | _ = ⊥-elim ( ¬p<x<op ⟪ ZChain.supf-inject zc c , subst (λ k → u o< k ) (sym (Oprev.oprev=x op)) u≤x ⟫ )
997 997
998 zc35 : {z : Ordinal} → ¬ (supf0 px ≡ px) → odef (UnionCF A f mf ay supf1 x) z → odef (UnionCF A f mf ay supf0 x) z 998 zc35 : {z : Ordinal} → ¬ (supf0 px ≡ px) → odef (UnionCF A f mf ay supf1 x) z → odef (UnionCF A f mf ay supf0 x) z
999 zc35 {z} ne ⟪ ua1 , ch-init fc ⟫ = ⟪ ua1 , ch-init fc ⟫ 999 zc35 {z} ne ⟪ ua1 , ch-init fc ⟫ = ⟪ ua1 , ch-init fc ⟫
1000 zc35 {z} ne ⟪ ua1 , ch-is-sup u u<x is-sup fc ⟫ with osuc-≡< ( ZChain.supf-mono zc (o<→≤ (supf-inject0 supf1-mono u<x)) ) 1000 zc35 {z} ne ⟪ ua1 , ch-is-sup u u≤x is-sup fc ⟫ with osuc-≡< ( ZChain.supf-mono zc (o<→≤ (supf-inject0 supf1-mono ?)) )
1001 ... | case1 eq = zc34 where 1001 ... | case1 eq = zc34 where
1002 u<x0 : u o≤ px 1002 u≤x0 : u o≤ px
1003 u<x0 = subst (λ k → u o< k ) (sym (Oprev.oprev=x op)) (supf-inject0 supf1-mono u<x ) 1003 u≤x0 = subst (λ k → u o< k ) (sym (Oprev.oprev=x op)) (supf-inject0 supf1-mono ? )
1004 zc34 : odef (UnionCF A f mf ay supf0 x) z 1004 zc34 : odef (UnionCF A f mf ay supf0 x) z
1005 zc34 with trio< (supf0 px) px 1005 zc34 with trio< (supf0 px) px
1006 ... | tri< sf0px<px ¬b ¬c = cp3 ( subst ( λ k → FClosure A f k z) 1006 ... | tri< sf0px<px ¬b ¬c = cp3 ( subst ( λ k → FClosure A f k z)
1007 (trans (trans (sf1=sf0 u<x0) eq) (ZChain.supfmax zc px<x) ) fc) where 1007 (trans (trans (sf1=sf0 u≤x0) eq) (ZChain.supfmax zc px<x) ) fc) where
1008 cp3 : {z : Ordinal } → FClosure A f (supf0 px) z → odef (UnionCF A f mf ay supf0 x) z 1008 cp3 : {z : Ordinal } → FClosure A f (supf0 px) z → odef (UnionCF A f mf ay supf0 x) z
1009 cp3 (init uz refl) = chain-mono f mf ay supf0 (ZChain.supf-mono zc) (o<→≤ px<x) (ZChain.csupf zc sf0px<px) 1009 cp3 (init uz refl) = chain-mono f mf ay supf0 (ZChain.supf-mono zc) (o<→≤ px<x) (ZChain.csupf zc sf0px<px)
1010 cp3 (fsuc uz fc) = ZChain.f-next zc (cp3 fc) 1010 cp3 (fsuc uz fc) = ZChain.f-next zc (cp3 fc)
1011 ... | tri≈ ¬a b ¬c = ⊥-elim (ne b) 1011 ... | tri≈ ¬a b ¬c = ⊥-elim (ne b)
1012 ... | tri> ¬a ¬b px<sf0px = ⊥-elim (¬p<x<op ⟪ cp5 , cp4 ⟫ ) where 1012 ... | tri> ¬a ¬b px<sf0px = ⊥-elim (¬p<x<op ⟪ cp5 , cp4 ⟫ ) where
1013 cp4 : u o< osuc px 1013 cp4 : u o< osuc px
1014 cp4 = subst (λ k → u o< k ) (sym (Oprev.oprev=x op)) ( supf-inject0 supf1-mono u<x ) 1014 cp4 = subst (λ k → u o< k ) (sym (Oprev.oprev=x op)) ( supf-inject0 supf1-mono ? )
1015 cp5 : px o< u 1015 cp5 : px o< u
1016 cp5 = subst (λ k → px o< k ) ( begin 1016 cp5 = subst (λ k → px o< k ) ( begin
1017 supf0 px ≡⟨ sym (ZChain.supfmax zc px<x) ⟩ 1017 supf0 px ≡⟨ sym (ZChain.supfmax zc px<x) ⟩
1018 supf0 x ≡⟨ sym eq ⟩ 1018 supf0 x ≡⟨ sym eq ⟩
1019 supf0 u ≡⟨ sym (sf1=sf0 u<x0) ⟩ 1019 supf0 u ≡⟨ sym (sf1=sf0 u≤x0) ⟩
1020 supf1 u ≡⟨ ChainP.supu=u is-sup ⟩ 1020 supf1 u ≡⟨ ChainP.supu=u is-sup ⟩
1021 u ∎ ) px<sf0px where open ≡-Reasoning 1021 u ∎ ) px<sf0px where open ≡-Reasoning
1022 ... | case2 u<x1 = ⟪ ua1 , ch-is-sup u u<x1 cp1 fc1 ⟫ where 1022 ... | case2 u≤x1 = ⟪ ua1 , ch-is-sup u ? cp1 fc1 ⟫ where
1023 u<x0 : u o< x 1023 u≤x0 : u o< x
1024 u<x0 = supf-inject0 supf1-mono u<x -- supf0 u o≤ px ≡ supf0 px → supf0 u ≡ supf0 px ∨ u o< px 1024 u≤x0 = supf-inject0 supf1-mono ? -- supf0 u o≤ px ≡ supf0 px → supf0 u ≡ supf0 px ∨ u o< px
1025 sf0u=sf1u : supf0 u ≡ supf1 u 1025 sf0u=sf1u : supf0 u ≡ supf1 u
1026 sf0u=sf1u = sym (sf1=sf0 (subst (λ k → u o< k ) (sym (Oprev.oprev=x op)) u<x0 )) 1026 sf0u=sf1u = sym (sf1=sf0 (subst (λ k → u o< k ) (sym (Oprev.oprev=x op)) u≤x0 ))
1027 cp2 : {s : Ordinal } → supf0 s o< supf0 u → supf0 s ≡ supf1 s 1027 cp2 : {s : Ordinal } → supf0 s o< supf0 u → supf0 s ≡ supf1 s
1028 cp2 {s} ss<su = sym ( sf1=sf0 ( begin 1028 cp2 {s} ss<su = sym ( sf1=sf0 ( begin
1029 s <⟨ ZChain.supf-inject zc ss<su ⟩ 1029 s <⟨ ZChain.supf-inject zc ss<su ⟩
1030 u ≤⟨ subst (λ k → u o< k ) (sym (Oprev.oprev=x op)) u<x0 ⟩ 1030 u ≤⟨ subst (λ k → u o< k ) (sym (Oprev.oprev=x op)) u≤x0 ⟩
1031 px ∎ )) where open o≤-Reasoning O 1031 px ∎ )) where open o≤-Reasoning O
1032 fc1 : FClosure A f (supf0 u) z 1032 fc1 : FClosure A f (supf0 u) z
1033 fc1 = subst (λ k → FClosure A f k z ) (sym sf0u=sf1u) fc 1033 fc1 = subst (λ k → FClosure A f k z ) (sym sf0u=sf1u) fc
1034 cp1 : ChainP A f mf ay supf0 u 1034 cp1 : ChainP A f mf ay supf0 u
1035 cp1 = record { fcy<sup = λ {z} fc → subst (λ k → (z ≡ k) ∨ ( z << k ) ) (sym sf0u=sf1u) (ChainP.fcy<sup is-sup fc ) 1035 cp1 = record { fcy<sup = λ {z} fc → subst (λ k → (z ≡ k) ∨ ( z << k ) ) (sym sf0u=sf1u) (ChainP.fcy<sup is-sup fc )
1036 ; order = λ {s} {z} s<u fc → subst (λ k → (z ≡ k) ∨ ( z << k ) ) (sym sf0u=sf1u) 1036 ; order = λ {s} {z} s<u fc → subst (λ k → (z ≡ k) ∨ ( z << k ) ) (sym sf0u=sf1u)
1037 (ChainP.order is-sup (subst₂ (λ j k → j o< k ) (cp2 s<u) sf0u=sf1u s<u) 1037 (ChainP.order is-sup (subst₂ (λ j k → j o< k ) (cp2 s<u) sf0u=sf1u s<u)
1038 (subst (λ k → FClosure A f k z ) (cp2 s<u) fc )) 1038 (subst (λ k → FClosure A f k z ) (cp2 s<u) fc ))
1039 ; supu=u = trans (sym (sf1=sf0 (subst (λ k → u o< k ) (sym (Oprev.oprev=x op)) u<x0 ))) (ChainP.supu=u is-sup) } 1039 ; supu=u = trans (sym (sf1=sf0 (subst (λ k → u o< k ) (sym (Oprev.oprev=x op)) u≤x0 ))) (ChainP.supu=u is-sup) }
1040 1040
1041 zc33 : {z : Ordinal} → ¬ (supf0 px o< sp1) → odef (UnionCF A f mf ay supf1 x) z → odef (UnionCF A f mf ay supf0 x) z 1041 zc33 : {z : Ordinal} → ¬ (supf0 px o< sp1) → odef (UnionCF A f mf ay supf1 x) z → odef (UnionCF A f mf ay supf0 x) z
1042 zc33 {z} lt = UChain⊆ A f mf ay supf1-mono (λ lt → sym (sf=eq lt)) sf≤0 where 1042 zc33 {z} lt = UChain⊆ A f mf ay supf1-mono (λ lt → sym (sf=eq lt)) sf≤0 where
1043 sf≤0 : { z : Ordinal } → x o≤ z → supf1 x o≤ supf0 z 1043 sf≤0 : { z : Ordinal } → x o≤ z → supf1 x o≤ supf0 z
1044 sf≤0 {z} x≤z with trio< z px 1044 sf≤0 {z} x≤z with trio< z px
1061 1061
1062 zc12 : {z : Ordinal} → supf0 px ≡ px → supf0 px o< sp1 → odef pchainpx z → odef (UnionCF A f mf ay supf1 x) z 1062 zc12 : {z : Ordinal} → supf0 px ≡ px → supf0 px o< sp1 → odef pchainpx z → odef (UnionCF A f mf ay supf1 x) z
1063 zc12 {z} sfpx=px sfpx<sp (case1 ⟪ az , ch-init fc ⟫ ) = ⟪ az , ch-init fc ⟫ 1063 zc12 {z} sfpx=px sfpx<sp (case1 ⟪ az , ch-init fc ⟫ ) = ⟪ az , ch-init fc ⟫
1064 zc12 {z} sfpx=px sfpx<sp (case1 ⟪ az , ch-is-sup u su<sx is-sup fc ⟫ ) = zc21 fc where 1064 zc12 {z} sfpx=px sfpx<sp (case1 ⟪ az , ch-is-sup u su<sx is-sup fc ⟫ ) = zc21 fc where
1065 u<px : u o< px 1065 u<px : u o< px
1066 u<px = ZChain.supf-inject zc su<sx 1066 u<px = ZChain.supf-inject zc ? -- su<sx
1067 u<x : u o< x 1067 u≤x : u o< x
1068 u<x = ordtrans u<px px<x 1068 u≤x = ordtrans u<px px<x
1069 u≤px : u o≤ px 1069 u≤px : u o≤ px
1070 u≤px = o<→≤ u<px 1070 u≤px = o<→≤ u<px
1071 s1u<s1x : supf1 u o< supf1 x 1071 s1u<s1x : supf1 u o< supf1 x
1072 s1u<s1x = ordtrans<-≤ (subst₂ (λ j k → j o< k ) (sym (sf1=sf0 u≤px )) (sym (sf1=sf0 o≤-refl)) su<sx) (supf1-mono (o<→≤ px<x) ) 1072 s1u<s1x = ordtrans<-≤ (subst₂ (λ j k → j o< k ) (sym (sf1=sf0 u≤px )) (sym (sf1=sf0 o≤-refl)) ?) (supf1-mono (o<→≤ px<x) )
1073 zc21 : {z1 : Ordinal } → FClosure A f (supf0 u) z1 → odef (UnionCF A f mf ay supf1 x) z1 1073 zc21 : {z1 : Ordinal } → FClosure A f (supf0 u) z1 → odef (UnionCF A f mf ay supf1 x) z1
1074 zc21 {z1} (fsuc z2 fc ) with zc21 fc 1074 zc21 {z1} (fsuc z2 fc ) with zc21 fc
1075 ... | ⟪ ua1 , ch-init fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-init (fsuc _ fc₁) ⟫ 1075 ... | ⟪ ua1 , ch-init fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-init (fsuc _ fc₁) ⟫
1076 ... | ⟪ ua1 , ch-is-sup u u<x u1-is-sup fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-is-sup u u<x u1-is-sup (fsuc _ fc₁) ⟫ 1076 ... | ⟪ ua1 , ch-is-sup u u≤x u1-is-sup fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-is-sup u u≤x u1-is-sup (fsuc _ fc₁) ⟫
1077 zc21 (init asp refl ) with trio< u px | inspect supf1 u 1077 zc21 (init asp refl ) with trio< u px | inspect supf1 u
1078 ... | tri< a ¬b ¬c | _ = ⟪ asp , ch-is-sup u 1078 ... | tri< a ¬b ¬c | _ = ⟪ asp , ch-is-sup u
1079 s1u<s1x 1079 ? -- s1u<s1x
1080 record {fcy<sup = zc13 ; order = zc17 ; supu=u = trans (sf1=sf0 u≤px ) (ChainP.supu=u is-sup) } zc14 ⟫ where 1080 record {fcy<sup = zc13 ; order = zc17 ; supu=u = trans (sf1=sf0 u≤px ) (ChainP.supu=u is-sup) } zc14 ⟫ where
1081 zc17 : {s : Ordinal} {z1 : Ordinal} → supf1 s o< supf1 u → 1081 zc17 : {s : Ordinal} {z1 : Ordinal} → supf1 s o< supf1 u →
1082 FClosure A f (supf1 s) z1 → (z1 ≡ supf1 u) ∨ (z1 << supf1 u) 1082 FClosure A f (supf1 s) z1 → (z1 ≡ supf1 u) ∨ (z1 << supf1 u)
1083 zc17 {s} {z1} ss<su fc = subst (λ k → (z1 ≡ k) ∨ (z1 << k)) (sym (sf1=sf0 (o<→≤ u<px))) ( ChainP.order is-sup 1083 zc17 {s} {z1} ss<su fc = subst (λ k → (z1 ≡ k) ∨ (z1 << k)) (sym (sf1=sf0 (o<→≤ u<px))) ( ChainP.order is-sup
1084 (subst₂ (λ j k → j o< k ) (sf1=sf0 s≤px) (sf1=sf0 (o<→≤ u<px)) ss<su) (fcup fc s≤px) ) where 1084 (subst₂ (λ j k → j o< k ) (sf1=sf0 s≤px) (sf1=sf0 (o<→≤ u<px)) ss<su) (fcup fc s≤px) ) where
1086 s≤px = ordtrans ( supf-inject0 supf1-mono ss<su ) (o<→≤ u<px) 1086 s≤px = ordtrans ( supf-inject0 supf1-mono ss<su ) (o<→≤ u<px)
1087 zc14 : FClosure A f (supf1 u) (supf0 u) 1087 zc14 : FClosure A f (supf1 u) (supf0 u)
1088 zc14 = init (subst (λ k → odef A k ) (sym (sf1=sf0 u≤px)) asp) (sf1=sf0 u≤px) 1088 zc14 = init (subst (λ k → odef A k ) (sym (sf1=sf0 u≤px)) asp) (sf1=sf0 u≤px)
1089 zc13 : {z : Ordinal } → FClosure A f y z → (z ≡ supf1 u) ∨ ( z << supf1 u ) 1089 zc13 : {z : Ordinal } → FClosure A f y z → (z ≡ supf1 u) ∨ ( z << supf1 u )
1090 zc13 {z} fc = subst (λ k → (z ≡ k) ∨ ( z << k )) (sym (sf1=sf0 u≤px )) ( ChainP.fcy<sup is-sup fc ) 1090 zc13 {z} fc = subst (λ k → (z ≡ k) ∨ ( z << k )) (sym (sf1=sf0 u≤px )) ( ChainP.fcy<sup is-sup fc )
1091 ... | tri≈ ¬a b ¬c | _ = ⟪ asp , ch-is-sup px (subst (λ k → supf1 k o< supf1 x) b s1u<s1x) record { fcy<sup = zc13 1091 ... | tri≈ ¬a b ¬c | _ = ⟪ asp , ch-is-sup px ? record { fcy<sup = zc13
1092 ; order = zc17 ; supu=u = zc18 } (init asupf1 (trans (sf1=sf0 o≤-refl ) (cong supf0 (sym b))) ) ⟫ where 1092 ; order = zc17 ; supu=u = zc18 } (init asupf1 (trans (sf1=sf0 o≤-refl ) (cong supf0 (sym b))) ) ⟫ where
1093 zc13 : {z : Ordinal } → FClosure A f y z → (z ≡ supf1 px) ∨ ( z << supf1 px ) 1093 zc13 : {z : Ordinal } → FClosure A f y z → (z ≡ supf1 px) ∨ ( z << supf1 px )
1094 zc13 {z} fc = subst (λ k → (z ≡ k) ∨ (z << k)) (trans (cong supf0 b) (sym (sf1=sf0 o≤-refl))) (ChainP.fcy<sup is-sup fc ) 1094 zc13 {z} fc = subst (λ k → (z ≡ k) ∨ (z << k)) (trans (cong supf0 b) (sym (sf1=sf0 o≤-refl))) (ChainP.fcy<sup is-sup fc )
1095 zc18 : supf1 px ≡ px 1095 zc18 : supf1 px ≡ px
1096 zc18 = begin 1096 zc18 = begin
1111 zc12 {z} sfpx=px sfpx<sp (case2 fc) = zc21 fc where 1111 zc12 {z} sfpx=px sfpx<sp (case2 fc) = zc21 fc where
1112 --- supf0 px o< sp1 1112 --- supf0 px o< sp1
1113 zc21 : {z1 : Ordinal } → FClosure A f (supf0 px) z1 → odef (UnionCF A f mf ay supf1 x) z1 1113 zc21 : {z1 : Ordinal } → FClosure A f (supf0 px) z1 → odef (UnionCF A f mf ay supf1 x) z1
1114 zc21 {z1} (fsuc z2 fc ) with zc21 fc 1114 zc21 {z1} (fsuc z2 fc ) with zc21 fc
1115 ... | ⟪ ua1 , ch-init fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-init (fsuc _ fc₁) ⟫ 1115 ... | ⟪ ua1 , ch-init fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-init (fsuc _ fc₁) ⟫
1116 ... | ⟪ ua1 , ch-is-sup u u<x u1-is-sup fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-is-sup u u<x u1-is-sup (fsuc _ fc₁) ⟫ 1116 ... | ⟪ ua1 , ch-is-sup u u≤x u1-is-sup fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-is-sup u u≤x u1-is-sup (fsuc _ fc₁) ⟫
1117 zc21 (init asp refl ) = ⟪ asp , ch-is-sup px zc18 1117 zc21 (init asp refl ) = ⟪ asp , ch-is-sup px ?
1118 record {fcy<sup = zc13 ; order = zc17 ; supu=u = zc15 } zc14 ⟫ where 1118 record {fcy<sup = zc13 ; order = zc17 ; supu=u = zc15 } zc14 ⟫ where
1119 zc15 : supf1 px ≡ px 1119 zc15 : supf1 px ≡ px
1120 zc15 = trans (sf1=sf0 o≤-refl ) (sfpx=px) 1120 zc15 = trans (sf1=sf0 o≤-refl ) (sfpx=px)
1121 zc18 : supf1 px o< supf1 x 1121 zc18 : supf1 px o< supf1 x
1122 zc18 = subst₂ ( λ j k → j o< k ) (sym (sf1=sf0 o≤-refl)) (sym (sf1=sp1 px<x)) sfpx<sp 1122 zc18 = subst₂ ( λ j k → j o< k ) (sym (sf1=sf0 o≤-refl)) (sym (sf1=sp1 px<x)) sfpx<sp
1177 csupf0 {z1} s0z<px z≤px = subst (λ k → odef (UnionCF A f mf ay supf1 x) k ) (sym (sf1=sf0 z≤px)) ( 1177 csupf0 {z1} s0z<px z≤px = subst (λ k → odef (UnionCF A f mf ay supf1 x) k ) (sym (sf1=sf0 z≤px)) (
1178 UChain⊆ A f mf {x} {y} ay {supf0} {supf1} (ZChain.supf-mono zc) sf=eq sf≤ 1178 UChain⊆ A f mf {x} {y} ay {supf0} {supf1} (ZChain.supf-mono zc) sf=eq sf≤
1179 (chain-mono f mf ay supf0 (ZChain.supf-mono zc) (o<→≤ px<x) 1179 (chain-mono f mf ay supf0 (ZChain.supf-mono zc) (o<→≤ px<x)
1180 (ZChain.csupf zc (subst (λ k → k o< px) (sf1=sf0 z≤px) s0z<px)))) 1180 (ZChain.csupf zc (subst (λ k → k o< px) (sf1=sf0 z≤px) s0z<px))))
1181 -- px o< z1 , px o≤ supf1 z1 --> px o≤ sp1 o< x -- sp1 ≡ px--> odef (UnionCF A f mf ay supf1 x) sp1 1181 -- px o< z1 , px o≤ supf1 z1 --> px o≤ sp1 o< x -- sp1 ≡ px--> odef (UnionCF A f mf ay supf1 x) sp1
1182 -- supf1 px ≡ sp1 o< supf1 x
1182 1183
1183 csupf1 : {z1 : Ordinal } → supf1 z1 o< x → odef (UnionCF A f mf ay supf1 x) (supf1 z1) 1184 csupf1 : {z1 : Ordinal } → supf1 z1 o< x → odef (UnionCF A f mf ay supf1 x) (supf1 z1)
1184 csupf1 {z1} sz1<x = csupf2 where 1185 csupf1 {z1} sz1<x = csupf2 where
1185 -- z1 o< px → supf1 z1 ≡ supf0 z1 1186 -- z1 o< px → supf1 z1 ≡ supf0 z1
1186 -- z1 ≡ px , supf0 px o< px .. px o< z1, x o≤ z1 ... supf1 z1 ≡ sp1 1187 -- z1 ≡ px , supf0 px o< px .. px o< z1, x o≤ z1 ... supf1 z1 ≡ sp1
1318 s1u=x = trans ? eq 1319 s1u=x = trans ? eq
1319 zc13 : osuc px o< osuc u1 1320 zc13 : osuc px o< osuc u1
1320 zc13 = o≤-refl0 ( trans (Oprev.oprev=x op) (sym eq ) ) 1321 zc13 = o≤-refl0 ( trans (Oprev.oprev=x op) (sym eq ) )
1321 x≤sup : {w : Ordinal} → odef (UnionCF A f mf ay supf0 px) w → (w ≡ x) ∨ (w << x) 1322 x≤sup : {w : Ordinal} → odef (UnionCF A f mf ay supf0 px) w → (w ≡ x) ∨ (w << x)
1322 x≤sup {w} ⟪ az , ch-init {w} fc ⟫ = subst (λ k → (w ≡ k) ∨ (w << k)) s1u=x ? 1323 x≤sup {w} ⟪ az , ch-init {w} fc ⟫ = subst (λ k → (w ≡ k) ∨ (w << k)) s1u=x ?
1323 x≤sup {w} ⟪ az , ch-is-sup u u<x is-sup fc ⟫ with osuc-≡< ( supf-mono (ordtrans (o<→≤ u<x) ? )) 1324 x≤sup {w} ⟪ az , ch-is-sup u u≤x is-sup fc ⟫ with osuc-≡< ( supf-mono (ordtrans (o<→≤ u≤x) ? ))
1324 ... | case1 eq1 = ⊥-elim ( o<¬≡ zc14 ? ) where 1325 ... | case1 eq1 = ⊥-elim ( o<¬≡ zc14 ? ) where
1325 zc14 : u ≡ osuc px 1326 zc14 : u ≡ osuc px
1326 zc14 = begin 1327 zc14 = begin
1327 u ≡⟨ sym ( ChainP.supu=u is-sup) ⟩ 1328 u ≡⟨ sym ( ChainP.supu=u is-sup) ⟩
1328 supf0 u ≡⟨ ? ⟩ 1329 supf0 u ≡⟨ ? ⟩
1442 b o< x → (ab : odef A b) → 1443 b o< x → (ab : odef A b) →
1443 HasPrev A (UnionCF A f mf ay supf x) f b → 1444 HasPrev A (UnionCF A f mf ay supf x) f b →
1444 * a < * b → odef (UnionCF A f mf ay supf x) b 1445 * a < * b → odef (UnionCF A f mf ay supf x) b
1445 is-max-hp supf x {a} {b} ua b<x ab has-prev a<b with HasPrev.ay has-prev 1446 is-max-hp supf x {a} {b} ua b<x ab has-prev a<b with HasPrev.ay has-prev
1446 ... | ⟪ ab0 , ch-init fc ⟫ = ⟪ ab , ch-init ( subst (λ k → FClosure A f y k) (sym (HasPrev.x=fy has-prev)) (fsuc _ fc )) ⟫ 1447 ... | ⟪ ab0 , ch-init fc ⟫ = ⟪ ab , ch-init ( subst (λ k → FClosure A f y k) (sym (HasPrev.x=fy has-prev)) (fsuc _ fc )) ⟫
1447 ... | ⟪ ab0 , ch-is-sup u u<x is-sup fc ⟫ = ? -- ⟪ ab , 1448 ... | ⟪ ab0 , ch-is-sup u u≤x is-sup fc ⟫ = ? -- ⟪ ab ,
1448 -- subst (λ k → UChain A f mf ay supf x k ) 1449 -- subst (λ k → UChain A f mf ay supf x k )
1449 -- (sym (HasPrev.x=fy has-prev)) ( ch-is-sup u u<x is-sup (fsuc _ fc)) ⟫ 1450 -- (sym (HasPrev.x=fy has-prev)) ( ch-is-sup u u≤x is-sup (fsuc _ fc)) ⟫
1450 1451
1451 zc70 : HasPrev A pchain f x → ¬ xSUP pchain f x 1452 zc70 : HasPrev A pchain f x → ¬ xSUP pchain f x
1452 zc70 pr xsup = ? 1453 zc70 pr xsup = ?
1453 1454
1454 no-extension : ¬ ( xSUP (UnionCF A f mf ay supf0 x) supf0 x ) → ZChain A f mf ay x 1455 no-extension : ¬ ( xSUP (UnionCF A f mf ay supf0 x) supf0 x ) → ZChain A f mf ay x
1458 supfu {u} a z = ZChain.supf (pzc (osuc u) (ob<x lim a)) z 1459 supfu {u} a z = ZChain.supf (pzc (osuc u) (ob<x lim a)) z
1459 pchain0=1 : pchain ≡ pchain1 1460 pchain0=1 : pchain ≡ pchain1
1460 pchain0=1 = ==→o≡ record { eq→ = zc10 ; eq← = zc11 } where 1461 pchain0=1 = ==→o≡ record { eq→ = zc10 ; eq← = zc11 } where
1461 zc10 : {z : Ordinal} → OD.def (od pchain) z → OD.def (od pchain1) z 1462 zc10 : {z : Ordinal} → OD.def (od pchain) z → OD.def (od pchain1) z
1462 zc10 {z} ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫ 1463 zc10 {z} ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫
1463 zc10 {z} ⟪ az , ch-is-sup u u<x is-sup fc ⟫ = zc12 fc where 1464 zc10 {z} ⟪ az , ch-is-sup u u≤x is-sup fc ⟫ = zc12 fc where
1464 zc12 : {z : Ordinal} → FClosure A f (supf0 u) z → odef pchain1 z 1465 zc12 : {z : Ordinal} → FClosure A f (supf0 u) z → odef pchain1 z
1465 zc12 (fsuc x fc) with zc12 fc 1466 zc12 (fsuc x fc) with zc12 fc
1466 ... | ⟪ ua1 , ch-init fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-init (fsuc _ fc₁) ⟫ 1467 ... | ⟪ ua1 , ch-init fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-init (fsuc _ fc₁) ⟫
1467 ... | ⟪ ua1 , ch-is-sup u u<x is-sup fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-is-sup u u<x is-sup (fsuc _ fc₁) ⟫ 1468 ... | ⟪ ua1 , ch-is-sup u u≤x is-sup fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-is-sup u u≤x is-sup (fsuc _ fc₁) ⟫
1468 zc12 (init asu su=z ) = ⟪ subst (λ k → odef A k) su=z asu , ch-is-sup u ? ? (init ? ? ) ⟫ 1469 zc12 (init asu su=z ) = ⟪ subst (λ k → odef A k) su=z asu , ch-is-sup u ? ? (init ? ? ) ⟫
1469 zc11 : {z : Ordinal} → OD.def (od pchain1) z → OD.def (od pchain) z 1470 zc11 : {z : Ordinal} → OD.def (od pchain1) z → OD.def (od pchain) z
1470 zc11 {z} ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫ 1471 zc11 {z} ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫
1471 zc11 {z} ⟪ az , ch-is-sup u u<x is-sup fc ⟫ = zc13 fc where 1472 zc11 {z} ⟪ az , ch-is-sup u u≤x is-sup fc ⟫ = zc13 fc where
1472 zc13 : {z : Ordinal} → FClosure A f (supf1 u) z → odef pchain z 1473 zc13 : {z : Ordinal} → FClosure A f (supf1 u) z → odef pchain z
1473 zc13 (fsuc x fc) with zc13 fc 1474 zc13 (fsuc x fc) with zc13 fc
1474 ... | ⟪ ua1 , ch-init fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-init (fsuc _ fc₁) ⟫ 1475 ... | ⟪ ua1 , ch-init fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-init (fsuc _ fc₁) ⟫
1475 ... | ⟪ ua1 , ch-is-sup u u<x is-sup fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-is-sup u u<x is-sup (fsuc _ fc₁) ⟫ 1476 ... | ⟪ ua1 , ch-is-sup u u≤x is-sup fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-is-sup u u≤x is-sup (fsuc _ fc₁) ⟫
1476 zc13 (init asu su=z ) with trio< u x 1477 zc13 (init asu su=z ) with trio< u x
1477 ... | tri< a ¬b ¬c = ⟪ ? , ch-is-sup u ? ? (init ? ? ) ⟫ 1478 ... | tri< a ¬b ¬c = ⟪ ? , ch-is-sup u ? ? (init ? ? ) ⟫
1478 ... | tri≈ ¬a b ¬c = ? 1479 ... | tri≈ ¬a b ¬c = ?
1479 ... | tri> ¬a ¬b c = ? -- ⊥-elim ( o≤> u<x c ) 1480 ... | tri> ¬a ¬b c = ? -- ⊥-elim ( o≤> u≤x c )
1480 sup : {z : Ordinal} → z o≤ x → SUP A (UnionCF A f mf ay supf1 z) 1481 sup : {z : Ordinal} → z o≤ x → SUP A (UnionCF A f mf ay supf1 z)
1481 sup {z} z≤x with trio< z x 1482 sup {z} z≤x with trio< z x
1482 ... | tri< a ¬b ¬c = SUP⊆ ? (ZChain.sup (pzc (osuc z) {!!}) {!!} ) 1483 ... | tri< a ¬b ¬c = SUP⊆ ? (ZChain.sup (pzc (osuc z) {!!}) {!!} )
1483 ... | tri≈ ¬a b ¬c = {!!} 1484 ... | tri≈ ¬a b ¬c = {!!}
1484 ... | tri> ¬a ¬b x<z = ⊥-elim (o<¬≡ refl (ordtrans<-≤ x<z z≤x )) 1485 ... | tri> ¬a ¬b x<z = ⊥-elim (o<¬≡ refl (ordtrans<-≤ x<z z≤x ))
1672 z30 : * mc < * (cf nmx mc) 1673 z30 : * mc < * (cf nmx mc)
1673 z30 = proj1 (cf-is-<-monotonic nmx mc (MinSUP.asm msp1)) 1674 z30 = proj1 (cf-is-<-monotonic nmx mc (MinSUP.asm msp1))
1674 z31 : ( * (cf nmx mc) ≡ * mc ) ∨ ( * (cf nmx mc) < * mc ) 1675 z31 : ( * (cf nmx mc) ≡ * mc ) ∨ ( * (cf nmx mc) < * mc )
1675 z31 = <=to≤ ( MinSUP.x≤sup msp1 (subst (λ k → odef (ZChain.chain zc) (cf nmx k)) (sym x=fy) 1676 z31 = <=to≤ ( MinSUP.x≤sup msp1 (subst (λ k → odef (ZChain.chain zc) (cf nmx k)) (sym x=fy)
1676 ⟪ proj2 (cf-is-≤-monotonic nmx _ (proj2 (cf-is-≤-monotonic nmx _ ua1 ) )) , ch-init (fsuc _ (fsuc _ fc)) ⟫ )) 1677 ⟪ proj2 (cf-is-≤-monotonic nmx _ (proj2 (cf-is-≤-monotonic nmx _ ua1 ) )) , ch-init (fsuc _ (fsuc _ fc)) ⟫ ))
1677 not-hasprev record { ax = ax ; y = y ; ay = ⟪ ua1 , ch-is-sup u u<x is-sup1 fc ⟫; x=fy = x=fy } = ⊥-elim ( <-irr z48 z32 ) where 1678 not-hasprev record { ax = ax ; y = y ; ay = ⟪ ua1 , ch-is-sup u u≤x is-sup1 fc ⟫; x=fy = x=fy } = ⊥-elim ( <-irr z48 z32 ) where
1678 z30 : * mc < * (cf nmx mc) 1679 z30 : * mc < * (cf nmx mc)
1679 z30 = proj1 (cf-is-<-monotonic nmx mc (MinSUP.asm msp1)) 1680 z30 = proj1 (cf-is-<-monotonic nmx mc (MinSUP.asm msp1))
1680 z31 : ( supf mc ≡ mc ) ∨ ( * (supf mc) < * mc ) 1681 z31 : ( supf mc ≡ mc ) ∨ ( * (supf mc) < * mc )
1681 z31 = MinSUP.x≤sup msp1 (ZChain.csupf zc (z09 (ZChain.asupf zc) )) 1682 z31 = MinSUP.x≤sup msp1 (ZChain.csupf zc (z09 (ZChain.asupf zc) ))
1682 z32 : * (supf mc) < * (cf nmx (cf nmx y)) 1683 z32 : * (supf mc) < * (cf nmx (cf nmx y))
1683 z32 = ftrans<=-< z31 (subst (λ k → * mc < * k ) (cong (cf nmx) x=fy) z30 ) 1684 z32 = ftrans<=-< z31 (subst (λ k → * mc < * k ) (cong (cf nmx) x=fy) z30 )
1684 z48 : ( * (cf nmx (cf nmx y)) ≡ * (supf mc)) ∨ (* (cf nmx (cf nmx y)) < * (supf mc) ) 1685 z48 : ( * (cf nmx (cf nmx y)) ≡ * (supf mc)) ∨ (* (cf nmx (cf nmx y)) < * (supf mc) )
1685 z48 = <=to≤ (ZChain1.order (SZ1 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc (& A)) mc<A u<x (fsuc _ ( fsuc _ fc ))) 1686 z48 = <=to≤ (ZChain1.order (SZ1 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc (& A)) mc<A ? (fsuc _ ( fsuc _ fc )))
1686 is-sup : IsSUP A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) mc) (MinSUP.asm msp1) 1687 is-sup : IsSUP A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) mc) (MinSUP.asm msp1)
1687 is-sup = record { x≤sup = λ zy → MinSUP.x≤sup msp1 (chain-mono (cf nmx) (cf-is-≤-monotonic nmx) as0 supf (ZChain.supf-mono zc) (o<→≤ mc<A) zy ) } 1688 is-sup = record { x≤sup = λ zy → MinSUP.x≤sup msp1 (chain-mono (cf nmx) (cf-is-≤-monotonic nmx) as0 supf (ZChain.supf-mono zc) (o<→≤ mc<A) zy ) }
1688 1689
1689 1690
1690 not-hasprev : ¬ HasPrev A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 supf d) (cf nmx) d 1691 not-hasprev : ¬ HasPrev A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 supf d) (cf nmx) d
1693 z30 = proj1 (cf-is-<-monotonic nmx d (MinSUP.asm spd)) 1694 z30 = proj1 (cf-is-<-monotonic nmx d (MinSUP.asm spd))
1694 z32 : ( cf nmx (cf nmx y) ≡ supf mc ) ∨ ( * (cf nmx (cf nmx y)) < * (supf mc) ) 1695 z32 : ( cf nmx (cf nmx y) ≡ supf mc ) ∨ ( * (cf nmx (cf nmx y)) < * (supf mc) )
1695 z32 = ZChain.fcy<sup zc (o<→≤ mc<A) (fsuc _ (fsuc _ fc)) 1696 z32 = ZChain.fcy<sup zc (o<→≤ mc<A) (fsuc _ (fsuc _ fc))
1696 z31 : ( * (cf nmx d) ≡ * d ) ∨ ( * (cf nmx d) < * d ) 1697 z31 : ( * (cf nmx d) ≡ * d ) ∨ ( * (cf nmx d) < * d )
1697 z31 = case2 ( subst (λ k → * (cf nmx k) < * d ) (sym x=fy) ( ftrans<=-< z32 ( sc<<d {mc} asc spd ) )) 1698 z31 = case2 ( subst (λ k → * (cf nmx k) < * d ) (sym x=fy) ( ftrans<=-< z32 ( sc<<d {mc} asc spd ) ))
1698 not-hasprev record { ax = ax ; y = y ; ay = ⟪ ua1 , ch-is-sup u u<x is-sup1 fc ⟫; x=fy = x=fy } = ⊥-elim ( <-irr z46 z30 ) where 1699 not-hasprev record { ax = ax ; y = y ; ay = ⟪ ua1 , ch-is-sup u u≤x is-sup1 fc ⟫; x=fy = x=fy } = ⊥-elim ( <-irr z46 z30 ) where
1699 z45 : (* (cf nmx (cf nmx y)) ≡ * d) ∨ (* (cf nmx (cf nmx y)) < * d) → (* (cf nmx d) ≡ * d) ∨ (* (cf nmx d) < * d) 1700 z45 : (* (cf nmx (cf nmx y)) ≡ * d) ∨ (* (cf nmx (cf nmx y)) < * d) → (* (cf nmx d) ≡ * d) ∨ (* (cf nmx d) < * d)
1700 z45 p = subst (λ k → (* (cf nmx k) ≡ * d) ∨ (* (cf nmx k) < * d)) (sym x=fy) p 1701 z45 p = subst (λ k → (* (cf nmx k) ≡ * d) ∨ (* (cf nmx k) < * d)) (sym x=fy) p
1701 z48 : supf mc << d 1702 z48 : supf mc << d
1702 z48 = sc<<d {mc} asc spd 1703 z48 = sc<<d {mc} asc spd
1703 z53 : supf u o< supf (& A) 1704 z53 : supf u o< supf (& A)
1704 z53 = ordtrans<-≤ u<x (ZChain.supf-mono zc (o<→≤ d<A) ) 1705 z53 = ordtrans<-≤ u≤x ?
1705 z52 : ( u ≡ mc ) ∨ ( u << mc ) 1706 z52 : ( u ≡ mc ) ∨ ( u << mc )
1706 z52 = MinSUP.x≤sup msp1 ⟪ subst (λ k → odef A k ) (ChainP.supu=u is-sup1) (A∋fcs _ _ (cf-is-≤-monotonic nmx) fc) 1707 z52 = MinSUP.x≤sup msp1 ⟪ subst (λ k → odef A k ) (ChainP.supu=u is-sup1) (A∋fcs _ _ (cf-is-≤-monotonic nmx) fc)
1707 , ch-is-sup u z53 is-sup1 (init (ZChain.asupf zc) (ChainP.supu=u is-sup1)) ⟫ 1708 , ch-is-sup u ? is-sup1 (init (ZChain.asupf zc) (ChainP.supu=u is-sup1)) ⟫
1708 z51 : supf u o≤ supf mc 1709 z51 : supf u o≤ supf mc
1709 z51 = or z52 (λ le → o≤-refl0 (z56 le) ) z57 where 1710 z51 = or z52 (λ le → o≤-refl0 (z56 le) ) z57 where
1710 z56 : u ≡ mc → supf u ≡ supf mc 1711 z56 : u ≡ mc → supf u ≡ supf mc
1711 z56 eq = cong supf eq 1712 z56 eq = cong supf eq
1712 z57 : u << mc → supf u o≤ supf mc 1713 z57 : u << mc → supf u o≤ supf mc
1714 z58 : supf u << supf mc -- supf u o< supf d -- supf u << supf d 1715 z58 : supf u << supf mc -- supf u o< supf d -- supf u << supf d
1715 z58 = subst₂ ( λ j k → j << k ) (sym (ChainP.supu=u is-sup1)) (sym sc=c) lt 1716 z58 = subst₂ ( λ j k → j << k ) (sym (ChainP.supu=u is-sup1)) (sym sc=c) lt
1716 z49 : supf u o< supf mc → (cf nmx (cf nmx y) ≡ supf mc) ∨ (* (cf nmx (cf nmx y)) < * (supf mc) ) 1717 z49 : supf u o< supf mc → (cf nmx (cf nmx y) ≡ supf mc) ∨ (* (cf nmx (cf nmx y)) < * (supf mc) )
1717 z49 su<smc = ZChain1.order (SZ1 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc (& A)) mc<A su<smc (fsuc _ ( fsuc _ fc )) 1718 z49 su<smc = ZChain1.order (SZ1 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc (& A)) mc<A su<smc (fsuc _ ( fsuc _ fc ))
1718 z50 : (cf nmx (cf nmx y) ≡ supf d) ∨ (* (cf nmx (cf nmx y)) < * (supf d) ) 1719 z50 : (cf nmx (cf nmx y) ≡ supf d) ∨ (* (cf nmx (cf nmx y)) < * (supf d) )
1719 z50 = ZChain1.order (SZ1 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc (& A)) d<A u<x (fsuc _ ( fsuc _ fc )) 1720 z50 = ZChain1.order (SZ1 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc (& A)) d<A ? (fsuc _ ( fsuc _ fc ))
1720 z47 : {mc d1 : Ordinal } {asc : odef A (supf mc)} (spd : MinSUP A (uchain (cf nmx) (cf-is-≤-monotonic nmx) asc )) 1721 z47 : {mc d1 : Ordinal } {asc : odef A (supf mc)} (spd : MinSUP A (uchain (cf nmx) (cf-is-≤-monotonic nmx) asc ))
1721 → (cf nmx (cf nmx y) ≡ supf mc) ∨ (* (cf nmx (cf nmx y)) < * (supf mc) ) → supf mc << d1 1722 → (cf nmx (cf nmx y) ≡ supf mc) ∨ (* (cf nmx (cf nmx y)) < * (supf mc) ) → supf mc << d1
1722 → * (cf nmx (cf nmx y)) < * d1 1723 → * (cf nmx (cf nmx y)) < * d1
1723 z47 {mc} {d1} {asc} spd (case1 eq) smc<d = subst (λ k → k < * d1 ) (sym (cong (*) eq)) smc<d 1724 z47 {mc} {d1} {asc} spd (case1 eq) smc<d = subst (λ k → k < * d1 ) (sym (cong (*) eq)) smc<d
1724 z47 {mc} {d1} {asc} spd (case2 lt) smc<d = IsStrictPartialOrder.trans PO lt smc<d 1725 z47 {mc} {d1} {asc} spd (case2 lt) smc<d = IsStrictPartialOrder.trans PO lt smc<d
1741 z22 : {y : Ordinal} → odef (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) d) y → 1742 z22 : {y : Ordinal} → odef (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) d) y →
1742 (y ≡ MinSUP.sup spd) ∨ (y << MinSUP.sup spd) 1743 (y ≡ MinSUP.sup spd) ∨ (y << MinSUP.sup spd)
1743 z22 {a} ⟪ aa , ch-init fc ⟫ = case2 ( ( ftrans<=-< z32 ( sc<<d {mc} asc spd ) )) where 1744 z22 {a} ⟪ aa , ch-init fc ⟫ = case2 ( ( ftrans<=-< z32 ( sc<<d {mc} asc spd ) )) where
1744 z32 : ( a ≡ supf mc ) ∨ ( * a < * (supf mc) ) 1745 z32 : ( a ≡ supf mc ) ∨ ( * a < * (supf mc) )
1745 z32 = ZChain.fcy<sup zc (o<→≤ mc<A) fc 1746 z32 = ZChain.fcy<sup zc (o<→≤ mc<A) fc
1746 z22 {a} ⟪ aa , ch-is-sup u u<x is-sup1 fc ⟫ = tri u (supf mc) 1747 z22 {a} ⟪ aa , ch-is-sup u u≤x is-sup1 fc ⟫ = tri u (supf mc)
1747 z60 z61 ( λ sc<u → ⊥-elim ( o≤> ( subst (λ k → k o≤ supf mc) (ChainP.supu=u is-sup1) z51) sc<u )) where 1748 z60 z61 ( λ sc<u → ⊥-elim ( o≤> ( subst (λ k → k o≤ supf mc) (ChainP.supu=u is-sup1) z51) sc<u )) where
1748 z53 : supf u o< supf (& A) 1749 z53 : supf u o< supf (& A)
1749 z53 = ordtrans<-≤ u<x (ZChain.supf-mono zc (o<→≤ d<A) ) 1750 z53 = ordtrans<-≤ u≤x ?
1750 z52 : ( u ≡ mc ) ∨ ( u << mc ) 1751 z52 : ( u ≡ mc ) ∨ ( u << mc )
1751 z52 = MinSUP.x≤sup msp1 ⟪ subst (λ k → odef A k ) (ChainP.supu=u is-sup1) (A∋fcs _ _ (cf-is-≤-monotonic nmx) fc) 1752 z52 = MinSUP.x≤sup msp1 ⟪ subst (λ k → odef A k ) (ChainP.supu=u is-sup1) (A∋fcs _ _ (cf-is-≤-monotonic nmx) fc)
1752 , ch-is-sup u z53 is-sup1 (init (ZChain.asupf zc) (ChainP.supu=u is-sup1)) ⟫ 1753 , ch-is-sup u ? is-sup1 (init (ZChain.asupf zc) (ChainP.supu=u is-sup1)) ⟫
1753 z56 : u ≡ mc → supf u ≡ supf mc 1754 z56 : u ≡ mc → supf u ≡ supf mc
1754 z56 eq = cong supf eq 1755 z56 eq = cong supf eq
1755 z57 : u << mc → supf u o≤ supf mc 1756 z57 : u << mc → supf u o≤ supf mc
1756 z57 lt = ZChain.supf-<= zc (case2 z58) where 1757 z57 lt = ZChain.supf-<= zc (case2 z58) where
1757 z58 : supf u << supf mc -- supf u o< supf d -- supf u << supf d 1758 z58 : supf u << supf mc -- supf u o< supf d -- supf u << supf d
1761 z60 : u o< supf mc → (a ≡ d ) ∨ ( * a < * d ) 1762 z60 : u o< supf mc → (a ≡ d ) ∨ ( * a < * d )
1762 z60 u<smc = case2 ( ftrans<=-< (ZChain1.order (SZ1 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc (& A)) mc<A 1763 z60 u<smc = case2 ( ftrans<=-< (ZChain1.order (SZ1 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc (& A)) mc<A
1763 (subst (λ k → k o< supf mc) (sym (ChainP.supu=u is-sup1)) u<smc) fc ) smc<<d ) 1764 (subst (λ k → k o< supf mc) (sym (ChainP.supu=u is-sup1)) u<smc) fc ) smc<<d )
1764 z61 : u ≡ supf mc → (a ≡ d ) ∨ ( * a < * d ) 1765 z61 : u ≡ supf mc → (a ≡ d ) ∨ ( * a < * d )
1765 z61 u=sc = case2 (fsc<<d {mc} asc spd (subst (λ k → FClosure A (cf nmx) k a) (trans (ChainP.supu=u is-sup1) u=sc) fc ) ) 1766 z61 u=sc = case2 (fsc<<d {mc} asc spd (subst (λ k → FClosure A (cf nmx) k a) (trans (ChainP.supu=u is-sup1) u=sc) fc ) )
1766 -- u<x : ZChain.supf zc u o< ZChain.supf zc d 1767 -- u≤x : ZChain.supf zc u o< ZChain.supf zc d
1767 -- supf u o< supf c → order 1768 -- supf u o< supf c → order
1768 1769
1769 sd=d : supf d ≡ d 1770 sd=d : supf d ≡ d
1770 sd=d = ZChain.sup=u zc (MinSUP.asm spd) (o<→≤ d<A) ⟪ is-sup , not-hasprev ⟫ 1771 sd=d = ZChain.sup=u zc (MinSUP.asm spd) (o<→≤ d<A) ⟪ is-sup , not-hasprev ⟫
1771 1772