comparison src/zorn.agda @ 782:e8cf9c453431

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 01 Aug 2022 09:38:00 +0900
parents 460df9965d63
children 195c3c7de021
comparison
equal deleted inserted replaced
781:460df9965d63 782:e8cf9c453431
263 record SUP ( A B : HOD ) : Set (Level.suc n) where 263 record SUP ( A B : HOD ) : Set (Level.suc n) where
264 field 264 field
265 sup : HOD 265 sup : HOD
266 A∋maximal : A ∋ sup 266 A∋maximal : A ∋ sup
267 x<sup : {x : HOD} → B ∋ x → (x ≡ sup ) ∨ (x < sup ) -- B is Total, use positive 267 x<sup : {x : HOD} → B ∋ x → (x ≡ sup ) ∨ (x < sup ) -- B is Total, use positive
268 min-sup : {z : HOD } → B ∋ z → ( {x : HOD } → B ∋ x → (x ≡ z ) ∨ (x < z ) )
269 → (z ≡ sup ) ∨ (sup < z )
268 270
269 -- 271 --
270 -- sup and its fclosure is in a chain HOD 272 -- sup and its fclosure is in a chain HOD
271 -- chain HOD is sorted by sup as Ordinal and <-ordered 273 -- chain HOD is sorted by sup as Ordinal and <-ordered
272 -- whole chain is a union of separated Chain 274 -- whole chain is a union of separated Chain
278 fcy<sup : {z : Ordinal } → FClosure A f y z → (z ≡ supf u) ∨ ( z << supf u ) 280 fcy<sup : {z : Ordinal } → FClosure A f y z → (z ≡ supf u) ∨ ( z << supf u )
279 order : {sup1 z1 : Ordinal} → (lt : supf sup1 o< supf u ) → FClosure A f (supf sup1 ) z1 → (z1 ≡ supf u ) ∨ ( z1 << supf u ) 281 order : {sup1 z1 : Ordinal} → (lt : supf sup1 o< supf u ) → FClosure A f (supf sup1 ) z1 → (z1 ≡ supf u ) ∨ ( z1 << supf u )
280 282
281 -- Union of supf z which o< x 283 -- Union of supf z which o< x
282 -- 284 --
283
284 -- data DChain ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) : (z : Ordinal) → Set n where
285 -- dinit : DChain f mf ay (& (SUP.sup (ysup f mf ay)))
286 -- dsuc : {u : Ordinal } → (au : odef A u) → DChain f mf ay u → DChain f mf ay ( & (SUP.sup (ysup f mf au)) )
287 285
288 data UChain ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal } (ay : odef A y ) 286 data UChain ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal } (ay : odef A y )
289 (supf : Ordinal → Ordinal) (x : Ordinal) : (z : Ordinal) → Set n where 287 (supf : Ordinal → Ordinal) (x : Ordinal) : (z : Ordinal) → Set n where
290 ch-init : {z : Ordinal } (fc : FClosure A f y z) → UChain A f mf ay supf x z 288 ch-init : {z : Ordinal } (fc : FClosure A f y z) → UChain A f mf ay supf x z
291 ch-is-sup : (u : Ordinal) {z : Ordinal } ( is-sup : ChainP A f mf ay supf u z) 289 ch-is-sup : (u : Ordinal) {z : Ordinal } ( is-sup : ChainP A f mf ay supf u z)
310 chain∋init : odef chain init 308 chain∋init : odef chain init
311 initial : {y : Ordinal } → odef chain y → * init ≤ * y 309 initial : {y : Ordinal } → odef chain y → * init ≤ * y
312 f-next : {a : Ordinal } → odef chain a → odef chain (f a) 310 f-next : {a : Ordinal } → odef chain a → odef chain (f a)
313 f-total : IsTotalOrderSet chain 311 f-total : IsTotalOrderSet chain
314 312
313 sup : {x : Ordinal } → x o≤ z → SUP A (UnionCF A f mf ay supf x)
314 supf-is-sup : {x : Ordinal } → (x≤z : x o≤ z) → supf x ≡ & (SUP.sup (sup x≤z) )
315 sup=u : {b : Ordinal} → (ab : odef A b) → b o< z → IsSup A (UnionCF A f mf ay supf (osuc b)) ab → supf b ≡ b 315 sup=u : {b : Ordinal} → (ab : odef A b) → b o< z → IsSup A (UnionCF A f mf ay supf (osuc b)) ab → supf b ≡ b
316 csupf : (z : Ordinal ) → odef chain (supf z)
317 csupf' : {b : Ordinal } → b o≤ z → odef (UnionCF A f mf ay supf b) (supf b)
316 fcy<sup : {u w : Ordinal } → u o< z → FClosure A f init w → (w ≡ supf u ) ∨ ( w << supf u ) -- different from order because y o< supf 318 fcy<sup : {u w : Ordinal } → u o< z → FClosure A f init w → (w ≡ supf u ) ∨ ( w << supf u ) -- different from order because y o< supf
317 order : {b sup1 z1 : Ordinal} → b o< z → supf sup1 o< supf b → FClosure A f (supf sup1) z1 → (z1 ≡ supf b) ∨ (z1 << supf b) 319 order : {b sup1 z1 : Ordinal} → b o< z → supf sup1 o< supf b → FClosure A f (supf sup1) z1 → (z1 ≡ supf b) ∨ (z1 << supf b)
320 supf∈A : {u : Ordinal } → odef A (supf u)
321 supf∈A = ?
322 fcy<sup' : {u w : Ordinal } → u o< z → FClosure A f init w → (w ≡ supf u ) ∨ ( w << supf u ) -- different from order because y o< supf
323 fcy<sup' {u} {w} u<z fc with SUP.x<sup (sup ?) ⟪ subst (λ k → odef A k ) (sym &iso) (A∋fc {A} init f mf fc) , ? ⟫
324 ... | case1 eq = ?
325 ... | case2 lt = ?
326 fc∈A : {s z1 : Ordinal} → FClosure A f (supf s) z1 → odef chain z1
327 fc∈A {s} (fsuc x fc) = f-next (fc∈A {s} fc ) -- (supf s) ≡ z1 → init (supf s)
328 order' : {b s z1 : Ordinal} → b o< z → supf s o< supf b → FClosure A f (supf s) z1 → (z1 ≡ supf b) ∨ (z1 << supf b)
329 order' {b} {s} {z1} b<z sf<sb fc with SUP.x<sup (sup (o<→≤ b<z)) (subst (λ k → odef (UnionCF A f mf ay supf b) k) (sym &iso) ( csupf' (o<→≤ b<z)) )
330 ... | case1 eq = case1 (begin
331 ? ≡⟨ ? ⟩
332 ? ∎ ) where open ≡-Reasoning
333 ... | case2 lt = case2 ? where
334 zc00 : ?
335 zc00 = ?
336 -- case2 ( subst (λ k → * z1 < k ) (subst₂ (λ j k → j ≡ k ) *iso ? (cong (*) (sym supf-is-sup))) lt )
318 337
319 338
320 record ZChain1 ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) 339 record ZChain1 ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f)
321 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) ( z : Ordinal ) : Set (Level.suc n) where 340 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) ( z : Ordinal ) : Set (Level.suc n) where
322 field 341 field
327 record Maximal ( A : HOD ) : Set (Level.suc n) where 346 record Maximal ( A : HOD ) : Set (Level.suc n) where
328 field 347 field
329 maximal : HOD 348 maximal : HOD
330 A∋maximal : A ∋ maximal 349 A∋maximal : A ∋ maximal
331 ¬maximal<x : {x : HOD} → A ∋ x → ¬ maximal < x -- A is Partial, use negative 350 ¬maximal<x : {x : HOD} → A ∋ x → ¬ maximal < x -- A is Partial, use negative
351
352 --
353
354 supf-unique : ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y)
355 → {a b : Ordinal } → a o< b
356 → (za : ZChain A f mf ay (osuc a) ) → (zb : ZChain A f mf ay (osuc b) )
357 → odef (UnionCF A f mf ay (ZChain.supf za) (osuc a)) (ZChain.supf za a)
358 → odef (UnionCF A f mf ay (ZChain.supf zb) (osuc b)) (ZChain.supf zb a) → ZChain.supf za a ≡ ZChain.supf zb a
359 supf-unique A f mf {y} ay {a} {b} a<b za zb ⟪ aa , ch-init fca ⟫ ⟪ ab , ch-init fcb ⟫ = ? where
360 supf = ZChain.supf za
361 supb = ZChain.supf zb
362 su00 : {u w : Ordinal } → u o< osuc a → FClosure A f y w → (w ≡ supf u ) ∨ ( w << supf u )
363 su00 = ZChain.fcy<sup za
364 su01 : (supf a ≡ supb b ) ∨ ( supf a << supb b )
365 su01 = ZChain.fcy<sup zb <-osuc fca
366 su02 : (supb a ≡ supf a ) ∨ ( supb a << supf a )
367 su02 = ZChain.fcy<sup za <-osuc fcb
368 supf-unique A f mf {y} ay {a} a<b za zb ⟪ aa , ch-init fca ⟫ ⟪ ab , ch-is-sup ub is-supb fcb ⟫ = ?
369 supf-unique A f mf {y} ay {a} a<b za zb ⟪ aa , ch-is-sup ua is-supa fca ⟫ ⟪ ab , ch-init fcb ⟫ = ?
370 supf-unique A f mf {y} ay {a} a<b za zb ⟪ aa , ch-is-sup ua is-supa fca ⟫ ⟪ ab , ch-is-sup ub is-supb fcb ⟫ = ?
332 371
333 -- data UChain is total 372 -- data UChain is total
334 373
335 chain-total : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal ) 374 chain-total : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal )
336 {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 ) 375 {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 )
472 zc< {x} {y} {z} {P} prev x<z z<y = prev (ordtrans x<z z<y) 511 zc< {x} {y} {z} {P} prev x<z z<y = prev (ordtrans x<z z<y)
473 512
474 SZ1 :( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) 513 SZ1 :( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f)
475 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) (x : Ordinal) → ZChain1 A f mf ay zc x 514 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) (x : Ordinal) → ZChain1 A f mf ay zc x
476 SZ1 A f mf {y} ay zc x = TransFinite { λ x → ZChain1 A f mf ay zc x } zc1 x where 515 SZ1 A f mf {y} ay zc x = TransFinite { λ x → ZChain1 A f mf ay zc x } zc1 x where
477 chain-mono2 : (x : Ordinal) {a b c : Ordinal} → a o≤ b → b o≤ x → 516 chain-mono1 : (x : Ordinal) {a b c : Ordinal} →
478 odef (UnionCF A f mf ay (ZChain.supf zc) a) c → odef (UnionCF A f mf ay (ZChain.supf zc) b) c 517 odef (UnionCF A f mf ay (ZChain.supf zc) a) c → odef (UnionCF A f mf ay (ZChain.supf zc) b) c
479 chain-mono2 x {a} {b} {c} a≤b b≤x ⟪ ua , ch-init fc ⟫ = 518 chain-mono1 x {a} {b} {c} ⟪ ua , ch-init fc ⟫ =
480 ⟪ ua , ch-init fc ⟫ 519 ⟪ ua , ch-init fc ⟫
481 chain-mono2 x {a} {b} {c} a≤b b≤x ⟪ uaa , ch-is-sup ua is-sup fc ⟫ = 520 chain-mono1 x {a} {b} {c} ⟪ uaa , ch-is-sup ua is-sup fc ⟫ =
482 ⟪ uaa , ch-is-sup ua is-sup fc ⟫ 521 ⟪ uaa , ch-is-sup ua is-sup fc ⟫
483 chain<ZA : {x : Ordinal } → UnionCF A f mf ay (ZChain.supf zc) x ⊆' UnionCF A f mf ay (ZChain.supf zc) (& A) 522 chain<ZA : {x : Ordinal } → UnionCF A f mf ay (ZChain.supf zc) x ⊆' UnionCF A f mf ay (ZChain.supf zc) (& A)
484 chain<ZA {x} ux with proj2 ux 523 chain<ZA {x} ux with proj2 ux
485 ... | ch-init fc = ⟪ proj1 ux , ch-init fc ⟫ 524 ... | ch-init fc = ⟪ proj1 ux , ch-init fc ⟫
486 ... | ch-is-sup u is-sup fc = ⟪ proj1 ux , ch-is-sup u is-sup fc ⟫ 525 ... | ch-is-sup u is-sup fc = ⟪ proj1 ux , ch-is-sup u is-sup fc ⟫
510 px<x : px o< x 549 px<x : px o< x
511 px<x = subst (λ k → px o< k ) (Oprev.oprev=x op) <-osuc 550 px<x = subst (λ k → px o< k ) (Oprev.oprev=x op) <-osuc
512 m01 : odef (UnionCF A f mf ay (ZChain.supf zc) x) b 551 m01 : odef (UnionCF A f mf ay (ZChain.supf zc) x) b
513 m01 with trio< b px --- px < b < x 552 m01 with trio< b px --- px < b < x
514 ... | tri> ¬a ¬b c = ⊥-elim (¬p<x<op ⟪ c , subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) b<x ⟫) 553 ... | tri> ¬a ¬b c = ⊥-elim (¬p<x<op ⟪ c , subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) b<x ⟫)
515 ... | tri< b<px ¬b ¬c = chain-mono2 x ( o<→≤ (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc )) o≤-refl m04 where 554 ... | tri< b<px ¬b ¬c = chain-mono1 x m04 where
516 m03 : odef (UnionCF A f mf ay (ZChain.supf zc) px) a -- if a ∈ chain of px, is-max of px can be used 555 m03 : odef (UnionCF A f mf ay (ZChain.supf zc) px) a -- if a ∈ chain of px, is-max of px can be used
517 m03 with proj2 ua 556 m03 with proj2 ua
518 ... | ch-init fc = ⟪ proj1 ua , ch-init fc ⟫ 557 ... | ch-init fc = ⟪ proj1 ua , ch-init fc ⟫
519 ... | ch-is-sup u is-sup-a fc = ⟪ proj1 ua , ch-is-sup u is-sup-a fc ⟫ 558 ... | ch-is-sup u is-sup-a fc = ⟪ proj1 ua , ch-is-sup u is-sup-a fc ⟫
520 m04 : odef (UnionCF A f mf ay (ZChain.supf zc) px) b 559 m04 : odef (UnionCF A f mf ay (ZChain.supf zc) px) b
521 m04 = ZChain1.is-max (prev px px<x) m03 b<px ab 560 m04 = ZChain1.is-max (prev px px<x) m03 b<px ab
522 (case2 record {x<sup = λ {z} lt → IsSup.x<sup is-sup (chain-mono2 x ( o<→≤ (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc )) o≤-refl lt) } ) a<b 561 (case2 record {x<sup = λ {z} lt → IsSup.x<sup is-sup (chain-mono1 x lt) } ) a<b
523 ... | tri≈ ¬a b=px ¬c = ⟪ ab , ch-is-sup b m06 (subst (λ k → FClosure A f k b) m05 (init ab)) ⟫ where 562 ... | tri≈ ¬a b=px ¬c = ⟪ ab , ch-is-sup b m06 (subst (λ k → FClosure A f k b) m05 (init ab)) ⟫ where
524 b<A : b o< & A 563 b<A : b o< & A
525 b<A = z09 ab 564 b<A = z09 ab
526 m05 : b ≡ ZChain.supf zc b 565 m05 : b ≡ ZChain.supf zc b
527 m05 = sym ( ZChain.sup=u zc ab (z09 ab) 566 m05 = sym ( ZChain.sup=u zc ab (z09 ab)
528 record { x<sup = λ {z} uz → IsSup.x<sup is-sup (chain-mono2 x (osucc b<x) o≤-refl uz ) } ) 567 record { x<sup = λ {z} uz → IsSup.x<sup is-sup (chain-mono1 x uz ) } )
529 m08 : {z : Ordinal} → (fcz : FClosure A f y z ) → z <= ZChain.supf zc b 568 m08 : {z : Ordinal} → (fcz : FClosure A f y z ) → z <= ZChain.supf zc b
530 m08 {z} fcz = ZChain.fcy<sup zc b<A fcz 569 m08 {z} fcz = ZChain.fcy<sup zc b<A fcz
531 m09 : {sup1 z1 : Ordinal} → (ZChain.supf zc sup1) o< (ZChain.supf zc b) 570 m09 : {sup1 z1 : Ordinal} → (ZChain.supf zc sup1) o< (ZChain.supf zc b)
532 → FClosure A f (ZChain.supf zc sup1) z1 → z1 <= ZChain.supf zc b 571 → FClosure A f (ZChain.supf zc sup1) z1 → z1 <= ZChain.supf zc b
533 m09 {sup1} {z} s<b fcz = ZChain.order zc b<A s<b fcz 572 m09 {sup1} {z} s<b fcz = ZChain.order zc b<A s<b fcz
538 b o< x → (ab : odef A b) → 577 b o< x → (ab : odef A b) →
539 HasPrev A (UnionCF A f mf ay (ZChain.supf zc) x) ab f ∨ IsSup A (UnionCF A f mf ay (ZChain.supf zc) x) ab → 578 HasPrev A (UnionCF A f mf ay (ZChain.supf zc) x) ab f ∨ IsSup A (UnionCF A f mf ay (ZChain.supf zc) x) ab →
540 * a < * b → odef (UnionCF A f mf ay (ZChain.supf zc) x) b 579 * a < * b → odef (UnionCF A f mf ay (ZChain.supf zc) x) b
541 is-max {a} {b} ua b<x ab (case1 has-prev) a<b = is-max-hp x {a} {b} ua b<x ab has-prev a<b 580 is-max {a} {b} ua b<x ab (case1 has-prev) a<b = is-max-hp x {a} {b} ua b<x ab has-prev a<b
542 is-max {a} {b} ua b<x ab (case2 is-sup) a<b with IsSup.x<sup is-sup (init-uchain A f mf ay ) 581 is-max {a} {b} ua b<x ab (case2 is-sup) a<b with IsSup.x<sup is-sup (init-uchain A f mf ay )
543 ... | case1 b=y = ⊥-elim ( <-irr ( ZChain.initial zc (chain<ZA (chain-mono2 (osuc x) (o<→≤ <-osuc ) o≤-refl ua )) ) 582 ... | case1 b=y = ⊥-elim ( <-irr ( ZChain.initial zc (chain<ZA {x} (chain-mono1 (osuc x) ua )) )
544 (subst (λ k → * a < * k ) (sym b=y) a<b ) ) 583 (subst (λ k → * a < * k ) (sym b=y) a<b ) )
545 ... | case2 y<b = chain-mono2 x (o<→≤ (ob<x lim b<x) ) o≤-refl m04 where 584 ... | case2 y<b = chain-mono1 x m04 where
546 m09 : b o< & A 585 m09 : b o< & A
547 m09 = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab)) 586 m09 = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab))
548 m07 : {z : Ordinal} → FClosure A f y z → z <= ZChain.supf zc b 587 m07 : {z : Ordinal} → FClosure A f y z → z <= ZChain.supf zc b
549 m07 {z} fc = ZChain.fcy<sup zc m09 fc 588 m07 {z} fc = ZChain.fcy<sup zc m09 fc
550 m08 : {sup1 z1 : Ordinal} → (ZChain.supf zc sup1) o< (ZChain.supf zc b) 589 m08 : {sup1 z1 : Ordinal} → (ZChain.supf zc sup1) o< (ZChain.supf zc b)
551 → FClosure A f (ZChain.supf zc sup1) z1 → z1 <= ZChain.supf zc b 590 → FClosure A f (ZChain.supf zc sup1) z1 → z1 <= ZChain.supf zc b
552 m08 {sup1} {z1} s<b fc = ZChain.order zc m09 s<b fc 591 m08 {sup1} {z1} s<b fc = ZChain.order zc m09 s<b fc
553 m05 : b ≡ ZChain.supf zc b 592 m05 : b ≡ ZChain.supf zc b
554 m05 = sym (ZChain.sup=u zc ab m09 593 m05 = sym (ZChain.sup=u zc ab m09
555 record { x<sup = λ lt → IsSup.x<sup is-sup (chain-mono2 x (o<→≤ (ob<x lim b<x)) o≤-refl lt )} ) -- ZChain on x 594 record { x<sup = λ lt → IsSup.x<sup is-sup (chain-mono1 x lt )} ) -- ZChain on x
556 m06 : ChainP A f mf ay (ZChain.supf zc) b b 595 m06 : ChainP A f mf ay (ZChain.supf zc) b b
557 m06 = record { fcy<sup = m07 ; order = m08 } 596 m06 = record { fcy<sup = m07 ; order = m08 }
558 m04 : odef (UnionCF A f mf ay (ZChain.supf zc) (osuc b)) b 597 m04 : odef (UnionCF A f mf ay (ZChain.supf zc) (osuc b)) b
559 m04 = ⟪ ab , ch-is-sup b m06 (subst (λ k → FClosure A f k b) m05 (init ab)) ⟫ 598 m04 = ⟪ ab , ch-is-sup b m06 (subst (λ k → FClosure A f k b) m05 (init ab)) ⟫
560 599
715 pcy : odef pchain y 754 pcy : odef pchain y
716 pcy = ⟪ ay , ch-init (init ay) ⟫ 755 pcy = ⟪ ay , ch-init (init ay) ⟫
717 756
718 supf0 = ZChain.supf zc 757 supf0 = ZChain.supf zc
719 758
759 csupf : (z : Ordinal) → odef (UnionCF A f mf ay supf0 x) (supf0 z)
760 csupf z with ZChain.csupf zc z
761 ... | ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫
762 ... | ⟪ az , ch-is-sup u is-sup fc ⟫ = ⟪ az , ch-is-sup u is-sup fc ⟫
763
720 -- if previous chain satisfies maximality, we caan reuse it 764 -- if previous chain satisfies maximality, we caan reuse it
721 -- 765 --
722 no-extension : ZChain A f mf ay x 766 no-extension : ZChain A f mf ay x
723 no-extension = record { supf = supf0 767 no-extension = record { supf = supf0
724 ; initial = pinit ; chain∋init = pcy ; sup=u = {!!} ; order = {!!} ; fcy<sup = {!!} 768 ; initial = pinit ; chain∋init = pcy ; sup=u = {!!} ; order = {!!} ; fcy<sup = {!!}
794 zc22 with trio< s x 838 zc22 with trio< s x
795 ... | tri< s<x ¬b ¬c = zc23 where 839 ... | tri< s<x ¬b ¬c = zc23 where
796 szc = pzc (osuc s) (ob<x lim s<x) 840 szc = pzc (osuc s) (ob<x lim s<x)
797 zc23 : ZChain.supf (pzc (osuc s) (ob<x lim s<x)) s ≡ ZChain.supf (pzc (osuc b) (ob<x lim a)) s 841 zc23 : ZChain.supf (pzc (osuc s) (ob<x lim s<x)) s ≡ ZChain.supf (pzc (osuc b) (ob<x lim a)) s
798 zc23 = ? 842 zc23 = ?
843 zc24 : odef (UnionCF A f mf ay (ZChain.supf (pzc (osuc s) (ob<x lim s<x))) (osuc s))
844 (ZChain.supf (pzc (osuc s) (ob<x lim s<x)) s )
845 zc24 = ZChain.csupf (pzc (osuc s) (ob<x lim s<x)) s
846 zc25 : odef (UnionCF A f mf ay (ZChain.supf (pzc (osuc b) (ob<x lim a))) (osuc b))
847 (ZChain.supf (pzc (osuc b) (ob<x lim a)) b )
848 zc25 = ZChain.csupf (pzc (osuc b) (ob<x lim a)) b
849
799 ... | tri≈ ¬a b ¬c = ? 850 ... | tri≈ ¬a b ¬c = ?
800 ... | tri> ¬a ¬b c = ? 851 ... | tri> ¬a ¬b c = ?
801 zc21 : ZChain.supf uzc s o< ZChain.supf uzc b 852 zc21 : ZChain.supf uzc s o< ZChain.supf uzc b
802 zc21 = subst (λ k → k o< _) zc22 ps<pb 853 zc21 = subst (λ k → k o< _) zc22 ps<pb
803 zc20 : FClosure A f (ZChain.supf uzc s ) z1 854 zc20 : FClosure A f (ZChain.supf uzc s ) z1
804 zc20 = subst (λ k → FClosure A f k z1) zc22 fc 855 zc20 = subst (λ k → FClosure A f k z1) zc22 fc
805 ... | tri≈ ¬a b ¬c = ⊥-elim (¬a b<x) 856 ... | tri≈ ¬a b ¬c = ⊥-elim (¬a b<x)
806 ... | tri> ¬a ¬b c = ⊥-elim (¬a b<x) 857 ... | tri> ¬a ¬b c = ⊥-elim (¬a b<x)
858
859 csupf : (z : Ordinal) → odef (UnionCF A f mf ay psupf x) (psupf z)
860 csupf z with trio< z x | inspect psupf z
861 ... | tri< z<x ¬b ¬c | record { eq = eq1 } = zc11 where
862 ozc = pzc (osuc z) (ob<x lim z<x)
863 zc12 : odef A (ZChain.supf ozc z) ∧ UChain A f mf ay (ZChain.supf ozc) (osuc z) (ZChain.supf ozc z)
864 zc12 = ZChain.csupf ozc z
865 zc11 : odef A (ZChain.supf ozc z) ∧ UChain A f mf ay psupf x (ZChain.supf ozc z)
866 zc11 = ⟪ az , ch-is-sup z cp1 (subst (λ k → FClosure A f k _) (sym eq1) (init az) ) ⟫ where
867 az : odef A ( ZChain.supf ozc z )
868 az = proj1 zc12
869 zc20 : {z1 : Ordinal} → FClosure A f y z1 → (z1 ≡ psupf z) ∨ (z1 << psupf z)
870 zc20 {z1} fc with ZChain.fcy<sup ozc <-osuc fc
871 ... | case1 eq = case1 (trans eq (sym eq1) )
872 ... | case2 lt = case2 (subst ( λ k → z1 << k ) (sym eq1) lt)
873 cp1 : ChainP A f mf ay psupf z (ZChain.supf ozc z)
874 cp1 = record { fcy<sup = zc20 ; order = order z<x }
875 --- u = supf u = supf z
876 ... | tri≈ ¬a b ¬c | record { eq = eq1 } = ⟪ sa , ch-is-sup {!!} {!!} {!!} ⟫ where
877 sa = SUP.A∋maximal usup
878 ... | tri> ¬a ¬b c | record { eq = eq1 } = {!!}
879
807 880
808 fcy<sup : {u w : Ordinal} → u o< x → FClosure A f y w → (w ≡ psupf u) ∨ (w << psupf u) 881 fcy<sup : {u w : Ordinal} → u o< x → FClosure A f y w → (w ≡ psupf u) ∨ (w << psupf u)
809 fcy<sup {u} {w} u<x fc with trio< u x 882 fcy<sup {u} {w} u<x fc with trio< u x
810 ... | tri< a ¬b ¬c = ZChain.fcy<sup uzc <-osuc fc where 883 ... | tri< a ¬b ¬c = ZChain.fcy<sup uzc <-osuc fc where
811 uzc = pzc (osuc u) (ob<x lim a) 884 uzc = pzc (osuc u) (ob<x lim a)