Mercurial > hg > Members > kono > Proof > ZF-in-agda
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 |