comparison src/zorn.agda @ 624:d0938f220648

supf again
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 20 Jun 2022 07:49:35 +0900
parents 7c5a922931e5
children 886e1f82cca0
comparison
equal deleted inserted replaced
613:7c5a922931e5 624:d0938f220648
231 231
232 record IsSup (A B : HOD) {x : Ordinal } (xa : odef A x) : Set n where 232 record IsSup (A B : HOD) {x : Ordinal } (xa : odef A x) : Set n where
233 field 233 field
234 x<sup : {y : Ordinal} → odef B y → (y ≡ x ) ∨ (y << x ) 234 x<sup : {y : Ordinal} → odef B y → (y ≡ x ) ∨ (y << x )
235 235
236 record SupF (A : HOD) : Set n where 236 record ZChain ( A : HOD ) (x : Ordinal) ( f : Ordinal → Ordinal ) (supf : Ordinal → HOD) ( z : Ordinal ) : Set (Level.suc n) where
237 field
238 chain : Ordinal
239 -- sup : Ordinal
240 -- asup : odef A sup
241 -- is-sup : IsSup A (* chain) asup
242
243 record ZChain ( A : HOD ) (x : Ordinal) ( f : Ordinal → Ordinal ) (supf : Ordinal → SupF A) ( z : Ordinal ) : Set (Level.suc n) where
244 chain : HOD 237 chain : HOD
245 chain = * (SupF.chain (supf z )) 238 chain = supf z
246 field 239 field
247 chain⊆A : chain ⊆' A 240 chain⊆A : chain ⊆' A
248 chain∋x : odef chain x 241 chain∋x : odef chain x
249 initial : {y : Ordinal } → odef chain y → * x ≤ * y 242 initial : {y : Ordinal } → odef chain y → * x ≤ * y
250 f-total : IsTotalOrderSet chain
251 f-next : {a : Ordinal } → odef chain a → odef chain (f a) 243 f-next : {a : Ordinal } → odef chain a → odef chain (f a)
252 f-immediate : { x y : Ordinal } → odef chain x → odef chain y → ¬ ( ( * x < * y ) ∧ ( * y < * (f x )) ) 244 f-immediate : { x y : Ordinal } → odef chain x → odef chain y → ¬ ( ( * x < * y ) ∧ ( * y < * (f x )) )
253 is-max : {a b : Ordinal } → (ca : odef chain a ) → b o< osuc z → (ab : odef A b) 245 is-max : {a b : Ordinal } → (ca : odef chain a ) → b o< osuc z → (ab : odef A b)
254 → HasPrev A chain ab f ∨ IsSup A chain ab 246 → HasPrev A chain ab f ∨ IsSup A chain ab
255 → * a < * b → odef chain b 247 → * a < * b → odef chain b
256 248
257 record ZChain1 ( A : HOD ) (x : Ordinal) ( f : Ordinal → Ordinal ) ( z : Ordinal ) : Set (Level.suc n) where 249 record ZChain1 ( A : HOD ) (x : Ordinal) ( f : Ordinal → Ordinal ) ( z : Ordinal ) : Set (Level.suc n) where
258 field 250 field
259 supf : Ordinal → SupF A 251 supf : Ordinal → HOD
260 zc : ZChain A x f supf z 252 zc : ZChain A x f supf z
261 chain-mono : {x y : Ordinal} → x o≤ y → y o< osuc z → * (SupF.chain (supf x )) ⊆' * (SupF.chain (supf y )) 253 chain-mono : {x y : Ordinal} → x o≤ y → y o≤ z → supf x ⊆' supf y
254 f-total : {x y : Ordinal} → x o≤ z → IsTotalOrderSet (supf x)
262 255
263 record Maximal ( A : HOD ) : Set (Level.suc n) where 256 record Maximal ( A : HOD ) : Set (Level.suc n) where
264 field 257 field
265 maximal : HOD 258 maximal : HOD
266 A∋maximal : A ∋ maximal 259 A∋maximal : A ∋ maximal
330 cf-is-<-monotonic nmx x ax = ⟪ proj2 (is-cf nmx ax ) , proj1 (is-cf nmx ax ) ⟫ 323 cf-is-<-monotonic nmx x ax = ⟪ proj2 (is-cf nmx ax ) , proj1 (is-cf nmx ax ) ⟫
331 cf-is-≤-monotonic : (nmx : ¬ Maximal A ) → ≤-monotonic-f A ( cf nmx ) 324 cf-is-≤-monotonic : (nmx : ¬ Maximal A ) → ≤-monotonic-f A ( cf nmx )
332 cf-is-≤-monotonic nmx x ax = ⟪ case2 (proj1 ( cf-is-<-monotonic nmx x ax )) , proj2 ( cf-is-<-monotonic nmx x ax ) ⟫ 325 cf-is-≤-monotonic nmx x ax = ⟪ case2 (proj1 ( cf-is-<-monotonic nmx x ax )) , proj2 ( cf-is-<-monotonic nmx x ax ) ⟫
333 326
334 zsup : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f) → (zc1 : ZChain1 A (& s) f (& A) ) → SUP A (ZChain.chain (ZChain1.zc zc1)) 327 zsup : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f) → (zc1 : ZChain1 A (& s) f (& A) ) → SUP A (ZChain.chain (ZChain1.zc zc1))
335 zsup f mf zc1 = supP (ZChain.chain zc) (ZChain.chain⊆A zc) ( ZChain.f-total zc ) where 328 zsup f mf zc1 = supP (ZChain.chain zc) (ZChain.chain⊆A zc) ( ZChain1.f-total zc1 {!!} ) where
336 zc = ZChain1.zc zc1 329 zc = ZChain1.zc zc1
337 A∋zsup : (nmx : ¬ Maximal A ) (zc1 : ZChain1 A (& s) (cf nmx) (& A) ) 330 A∋zsup : (nmx : ¬ Maximal A ) (zc1 : ZChain1 A (& s) (cf nmx) (& A) )
338 → A ∋ * ( & ( SUP.sup (zsup (cf nmx) (cf-is-≤-monotonic nmx) zc1 ))) 331 → A ∋ * ( & ( SUP.sup (zsup (cf nmx) (cf-is-≤-monotonic nmx) zc1 )))
339 A∋zsup nmx zc1 = subst (λ k → odef A (& k )) (sym *iso) ( SUP.A∋maximal (zsup (cf nmx) (cf-is-≤-monotonic nmx) zc1 ) ) 332 A∋zsup nmx zc1 = subst (λ k → odef A (& k )) (sym *iso) ( SUP.A∋maximal (zsup (cf nmx) (cf-is-≤-monotonic nmx) zc1 ) )
340 sp0 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) (zc1 : ZChain1 A (& s) f (& A) ) → SUP A (ZChain.chain (ZChain1.zc zc1)) 333 sp0 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) (zc1 : ZChain1 A (& s) f (& A) ) → SUP A (ZChain.chain (ZChain1.zc zc1))
341 sp0 f mf zc1 = supP (ZChain.chain zc) (ZChain.chain⊆A zc) (ZChain.f-total zc) where 334 sp0 f mf zc1 = supP (ZChain.chain zc) (ZChain.chain⊆A zc) (ZChain1.f-total zc1 {!!} ) where
342 zc = ZChain1.zc zc1 335 zc = ZChain1.zc zc1
343 zc< : {x y z : Ordinal} → {P : Set n} → (x o< y → P) → x o< z → z o< y → P 336 zc< : {x y z : Ordinal} → {P : Set n} → (x o< y → P) → x o< z → z o< y → P
344 zc< {x} {y} {z} {P} prev x<z z<y = prev (ordtrans x<z z<y) 337 zc< {x} {y} {z} {P} prev x<z z<y = prev (ordtrans x<z z<y)
345 338
346 --- 339 ---
373 z20 {y} zy with SUP.x<sup sp1 (subst (λ k → odef chain k ) (sym &iso) zy) 366 z20 {y} zy with SUP.x<sup sp1 (subst (λ k → odef chain k ) (sym &iso) zy)
374 ... | case1 y=p = case1 (subst (λ k → k ≡ _ ) &iso ( cong (&) y=p )) 367 ... | case1 y=p = case1 (subst (λ k → k ≡ _ ) &iso ( cong (&) y=p ))
375 ... | case2 y<p = case2 (subst (λ k → * y < k ) (sym *iso) y<p ) 368 ... | case2 y<p = case2 (subst (λ k → * y < k ) (sym *iso) y<p )
376 -- λ {y} zy → subst (λ k → (y ≡ & k ) ∨ (y << & k)) ? (SUP.x<sup sp1 ? ) } 369 -- λ {y} zy → subst (λ k → (y ≡ & k ) ∨ (y << & k)) ? (SUP.x<sup sp1 ? ) }
377 z14 : f (& (SUP.sup (sp0 f mf zc1))) ≡ & (SUP.sup (sp0 f mf zc1)) 370 z14 : f (& (SUP.sup (sp0 f mf zc1))) ≡ & (SUP.sup (sp0 f mf zc1))
378 z14 with ZChain.f-total zc (subst (λ k → odef chain k) (sym &iso) (ZChain.f-next zc z12 )) z12 371 z14 with ZChain1.f-total zc1 {!!} (subst (λ k → odef chain k) (sym &iso) (ZChain.f-next zc z12 )) z12
379 ... | tri< a ¬b ¬c = ⊥-elim z16 where 372 ... | tri< a ¬b ¬c = ⊥-elim z16 where
380 z16 : ⊥ 373 z16 : ⊥
381 z16 with proj1 (mf (& ( SUP.sup sp1)) ( SUP.A∋maximal sp1 )) 374 z16 with proj1 (mf (& ( SUP.sup sp1)) ( SUP.A∋maximal sp1 ))
382 ... | case1 eq = ⊥-elim (¬b (subst₂ (λ j k → j ≡ k ) refl *iso (sym eq) )) 375 ... | case1 eq = ⊥-elim (¬b (subst₂ (λ j k → j ≡ k ) refl *iso (sym eq) ))
383 ... | case2 lt = ⊥-elim (¬c (subst₂ (λ j k → k < j ) refl *iso lt )) 376 ... | case2 lt = ⊥-elim (¬c (subst₂ (λ j k → k < j ) refl *iso lt ))
416 -- we have previous ordinal to use induction 409 -- we have previous ordinal to use induction
417 -- 410 --
418 open ZChain 411 open ZChain
419 412
420 px = Oprev.oprev op 413 px = Oprev.oprev op
421 supf : Ordinal → SupF A 414 supf : Ordinal → HOD
422 supf = ZChain1.supf (prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) ay) 415 supf = ZChain1.supf (prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) ay)
423 zc1 : ZChain1 A y f (Oprev.oprev op) 416 zc1 : ZChain1 A y f (Oprev.oprev op)
424 zc1 = prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) ay 417 zc1 = prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) ay
425 zc0 : ZChain A y f (ZChain1.supf (prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) ay)) (Oprev.oprev op) 418 zc0 : ZChain A y f (ZChain1.supf (prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) ay)) (Oprev.oprev op)
426 zc0 = ZChain1.zc (prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) ay) 419 zc0 = ZChain1.zc (prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ) ay)
434 no-extenion : ( {a b : Ordinal} → odef (ZChain.chain zc0) a → b o< osuc x → (ab : odef A b) → 427 no-extenion : ( {a b : Ordinal} → odef (ZChain.chain zc0) a → b o< osuc x → (ab : odef A b) →
435 HasPrev A (ZChain.chain zc0) ab f ∨ IsSup A (ZChain.chain zc0) ab → 428 HasPrev A (ZChain.chain zc0) ab f ∨ IsSup A (ZChain.chain zc0) ab →
436 * a < * b → odef (ZChain.chain zc0) b ) → ZChain1 A y f x 429 * a < * b → odef (ZChain.chain zc0) b ) → ZChain1 A y f x
437 no-extenion is-max = record { supf = supf0 ; zc = record { chain⊆A = subst (λ k → k ⊆' A ) seq (ZChain.chain⊆A zc0) 430 no-extenion is-max = record { supf = supf0 ; zc = record { chain⊆A = subst (λ k → k ⊆' A ) seq (ZChain.chain⊆A zc0)
438 ; initial = subst (λ k → {y₁ : Ordinal} → odef k y₁ → * y ≤ * y₁ ) seq (ZChain.initial zc0) 431 ; initial = subst (λ k → {y₁ : Ordinal} → odef k y₁ → * y ≤ * y₁ ) seq (ZChain.initial zc0)
439 ; f-total = subst (λ k → IsTotalOrderSet k ) seq (ZChain.f-total zc0)
440 ; f-next = subst (λ k → {a : Ordinal} → odef k a → odef k (f a) ) seq (ZChain.f-next zc0) 432 ; f-next = subst (λ k → {a : Ordinal} → odef k a → odef k (f a) ) seq (ZChain.f-next zc0)
441 ; f-immediate = subst (λ k → {x₁ : Ordinal} {y₁ : Ordinal} → odef k x₁ → odef k y₁ → 433 ; f-immediate = subst (λ k → {x₁ : Ordinal} {y₁ : Ordinal} → odef k x₁ → odef k y₁ →
442 ¬ (* x₁ < * y₁) ∧ (* y₁ < * (f x₁)) ) seq (ZChain.f-immediate zc0) ; chain∋x = subst (λ k → odef k y ) seq (ZChain.chain∋x zc0) 434 ¬ (* x₁ < * y₁) ∧ (* y₁ < * (f x₁)) ) seq (ZChain.f-immediate zc0) ; chain∋x = subst (λ k → odef k y ) seq (ZChain.chain∋x zc0)
443 ; is-max = subst (λ k → {a b : Ordinal} → odef k a → b o< osuc x → (ab : odef A b) → 435 ; is-max = subst (λ k → {a b : Ordinal} → odef k a → b o< osuc x → (ab : odef A b) →
444 HasPrev A k ab f ∨ IsSup A k ab → * a < * b → odef k b ) seq is-max } 436 HasPrev A k ab f ∨ IsSup A k ab → * a < * b → odef k b ) seq is-max }
445 ; chain-mono = mono } where 437 ; chain-mono = mono } where
446 supf0 : Ordinal → SupF A 438 supf0 : Ordinal → HOD
447 supf0 z with trio< z x 439 supf0 z with trio< z x
448 ... | tri< a ¬b ¬c = supf z 440 ... | tri< a ¬b ¬c = supf z
449 ... | tri≈ ¬a b ¬c = record { chain = & (ZChain.chain zc0) } 441 ... | tri≈ ¬a b ¬c = ZChain.chain zc0
450 ... | tri> ¬a ¬b c = record { chain = & (ZChain.chain zc0) } 442 ... | tri> ¬a ¬b c = ZChain.chain zc0
451 seq : ZChain.chain zc0 ≡ * (SupF.chain (supf0 x)) 443 seq : ZChain.chain zc0 ≡ supf0 x
452 seq with trio< x x 444 seq with trio< x x
453 ... | tri< a ¬b ¬c = ⊥-elim ( ¬b refl ) 445 ... | tri< a ¬b ¬c = ⊥-elim ( ¬b refl )
454 ... | tri≈ ¬a b ¬c = sym *iso 446 ... | tri≈ ¬a b ¬c = refl
455 ... | tri> ¬a ¬b c = sym *iso 447 ... | tri> ¬a ¬b c = refl
456 seq<x : {b : Ordinal } → b o< x → * (SupF.chain (supf b)) ≡ * (SupF.chain (supf0 b)) 448 seq<x : {b : Ordinal } → b o< x → supf b ≡ supf0 b
457 seq<x {b} b<x with trio< b x 449 seq<x {b} b<x with trio< b x
458 ... | tri< a ¬b ¬c = refl 450 ... | tri< a ¬b ¬c = refl
459 ... | tri≈ ¬a b₁ ¬c = ⊥-elim (¬a b<x ) 451 ... | tri≈ ¬a b₁ ¬c = ⊥-elim (¬a b<x )
460 ... | tri> ¬a ¬b c = ⊥-elim (¬a b<x ) 452 ... | tri> ¬a ¬b c = ⊥-elim (¬a b<x )
461 mono : {a b : Ordinal} → a o≤ b → b o< osuc x → 453 mono : {a b : Ordinal} → a o≤ b → b o< osuc x →
462 * (SupF.chain (supf0 a )) ⊆' * (SupF.chain (supf0 b )) 454 supf0 a ⊆' supf0 b
463 mono {a} {b} a≤b b<ox with osuc-≡< a≤b 455 mono {a} {b} a≤b b<ox with osuc-≡< a≤b
464 ... | case1 refl = λ x → x 456 ... | case1 refl = λ x → x
465 ... | case2 a<b with osuc-≡< b<ox 457 ... | case2 a<b with osuc-≡< b<ox
466 ... | case1 b=x = subst₂ (λ j k → j ⊆' k ) (seq<x a<x) nc00 ( ZChain1.chain-mono zc1 a≤px <-osuc ) where 458 ... | case1 b=x = subst₂ (λ j k → j ⊆' k ) (seq<x a<x) nc00 ( ZChain1.chain-mono zc1 a≤px <-osuc ) where
467 a<x : a o< x 459 a<x : a o< x
468 a<x with osuc-≡< b<ox 460 a<x with osuc-≡< b<ox
469 ... | case1 b=x = subst (λ k → a o< k ) b=x a<b 461 ... | case1 b=x = subst (λ k → a o< k ) b=x a<b
470 ... | case2 b<x = ordtrans a<b b<x 462 ... | case2 b<x = ordtrans a<b b<x
471 a≤px : a o≤ px 463 a≤px : a o≤ px
472 a≤px = subst (λ k → a o< k ) (sym (Oprev.oprev=x op)) a<x 464 a≤px = subst (λ k → a o< k ) (sym (Oprev.oprev=x op)) a<x
473 nc00 : * (SupF.chain (supf px)) ≡ * (SupF.chain (supf0 b)) 465 nc00 : supf px ≡ supf0 b
474 nc00 with trio< b x 466 nc00 with trio< b x
475 ... | tri< a ¬b ¬c = ⊥-elim ( ¬b b=x ) 467 ... | tri< a ¬b ¬c = ⊥-elim ( ¬b b=x )
476 ... | tri≈ ¬a b ¬c = sym *iso 468 ... | tri≈ ¬a b ¬c = refl
477 ... | tri> ¬a ¬b c = ⊥-elim ( ¬b b=x ) 469 ... | tri> ¬a ¬b c = ⊥-elim ( ¬b b=x )
478 ... | case2 b<x = subst₂ (λ j k → j ⊆' k ) (seq<x a<x ) (seq<x b<x ) 470 ... | case2 b<x = subst₂ (λ j k → j ⊆' k ) (seq<x a<x ) (seq<x b<x )
479 ( ZChain1.chain-mono zc1 a≤b (subst (λ k → b o< k) (sym (Oprev.oprev=x op)) b<x ) ) 471 ( ZChain1.chain-mono zc1 a≤b (subst (λ k → b o< k) (sym (Oprev.oprev=x op)) b<x ) )
480 where 472 where
481 a<x : a o< x 473 a<x : a o< x
501 zc17 {a} {b} za b<ox ab P a<b with osuc-≡< b<ox 493 zc17 {a} {b} za b<ox ab P a<b with osuc-≡< b<ox
502 ... | case2 lt = ZChain.is-max zc0 za (zc0-b<x b lt) ab P a<b 494 ... | case2 lt = ZChain.is-max zc0 za (zc0-b<x b lt) ab P a<b
503 ... | case1 b=x = subst (λ k → odef chain0 k ) (trans (sym (HasPrev.x=fy pr )) (trans &iso (sym b=x)) ) ( ZChain.f-next zc0 (HasPrev.ay pr)) 495 ... | case1 b=x = subst (λ k → odef chain0 k ) (trans (sym (HasPrev.x=fy pr )) (trans &iso (sym b=x)) ) ( ZChain.f-next zc0 (HasPrev.ay pr))
504 ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A (ZChain.chain zc0) ax ) 496 ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A (ZChain.chain zc0) ax )
505 ... | case1 is-sup = -- x is a sup of zc0 497 ... | case1 is-sup = -- x is a sup of zc0
506 record { zc = record { chain⊆A = {!!} ; f-total = {!!} ; f-next = {!!} ; chain∋sup = {!!} 498 record { zc = record { chain⊆A = {!!} ; f-total = {!!} ; f-next = {!!}
507 ; initial = {!!} ; f-immediate = {!!} ; chain∋x = {!!} ; is-max = {!!} ; fc∨sup = {!!} } ; supf = supf0 ; chain-mono = mono } where 499 ; initial = {!!} ; f-immediate = {!!} ; chain∋x = {!!} ; is-max = {!!} } ; supf = supf0 ; chain-mono = mono } where
508 sup0 : SUP A (ZChain.chain zc0) 500 sup0 : SUP A (ZChain.chain zc0)
509 sup0 = record { sup = * x ; A∋maximal = ax ; x<sup = x21 } where 501 sup0 = record { sup = * x ; A∋maximal = ax ; x<sup = x21 } where
510 x21 : {y : HOD} → ZChain.chain zc0 ∋ y → (y ≡ * x) ∨ (y < * x) 502 x21 : {y : HOD} → ZChain.chain zc0 ∋ y → (y ≡ * x) ∨ (y < * x)
511 x21 {y} zy with IsSup.x<sup is-sup zy 503 x21 {y} zy with IsSup.x<sup is-sup zy
512 ... | case1 y=x = case1 ( subst₂ (λ j k → j ≡ * k ) *iso &iso ( cong (*) y=x) ) 504 ... | case1 y=x = case1 ( subst₂ (λ j k → j ≡ * k ) *iso &iso ( cong (*) y=x) )
540 a<b = subst (λ k → a < k ) (trans sp=b *iso ) (subst (λ k → a < k ) (sym *iso) a<sp ) 532 a<b = subst (λ k → a < k ) (trans sp=b *iso ) (subst (λ k → a < k ) (sym *iso) a<sp )
541 ... | case2 a<sp | case2 sp<b = tri< a<b (λ eq → <-irr (case1 (sym eq)) a<b ) (λ lt → <-irr (case2 a<b) lt ) where 533 ... | case2 a<sp | case2 sp<b = tri< a<b (λ eq → <-irr (case1 (sym eq)) a<b ) (λ lt → <-irr (case2 a<b) lt ) where
542 a<b : a < b 534 a<b : a < b
543 a<b = ptrans (subst (λ k → a < k ) (sym *iso) a<sp ) ( subst₂ (λ j k → j < k ) refl *iso sp<b ) 535 a<b = ptrans (subst (λ k → a < k ) (sym *iso) a<sp ) ( subst₂ (λ j k → j < k ) refl *iso sp<b )
544 scmp : {a b : HOD} → odef schain (& a) → odef schain (& b) → Tri (a < b) (a ≡ b) (b < a ) 536 scmp : {a b : HOD} → odef schain (& a) → odef schain (& b) → Tri (a < b) (a ≡ b) (b < a )
545 scmp (case1 za) (case1 zb) = ZChain.f-total zc0 za zb 537 scmp (case1 za) (case1 zb) = ZChain1.f-total zc1 {!!} za zb
546 scmp {a} {b} (case1 za) (case2 fb) = cmp za fb 538 scmp {a} {b} (case1 za) (case2 fb) = cmp za fb
547 scmp (case2 fa) (case1 zb) with cmp zb fa 539 scmp (case2 fa) (case1 zb) with cmp zb fa
548 ... | tri< a ¬b ¬c = tri> ¬c (λ eq → ¬b (sym eq)) a 540 ... | tri< a ¬b ¬c = tri> ¬c (λ eq → ¬b (sym eq)) a
549 ... | tri≈ ¬a b ¬c = tri≈ ¬c (sym b) ¬a 541 ... | tri≈ ¬a b ¬c = tri≈ ¬c (sym b) ¬a
550 ... | tri> ¬a ¬b c = tri< c (λ eq → ¬b (sym eq)) ¬a 542 ... | tri> ¬a ¬b c = tri< c (λ eq → ¬b (sym eq)) ¬a
601 z24 p = record { x<sup = λ {y} zy → IsSup.x<sup p (case1 zy ) } 593 z24 p = record { x<sup = λ {y} zy → IsSup.x<sup p (case1 zy ) }
602 z23 : odef chain0 b 594 z23 : odef chain0 b
603 z23 with IsSup.x<sup (z24 p) ( ZChain.chain∋x zc0 ) 595 z23 with IsSup.x<sup (z24 p) ( ZChain.chain∋x zc0 )
604 ... | case1 y=b = subst (λ k → odef chain0 k ) y=b ( ZChain.chain∋x zc0 ) 596 ... | case1 y=b = subst (λ k → odef chain0 k ) y=b ( ZChain.chain∋x zc0 )
605 ... | case2 y<b = ZChain.is-max zc0 (ZChain.chain∋x zc0 ) (zc0-b<x b b<x) ab (case2 (z24 p)) y<b 597 ... | case2 y<b = ZChain.is-max zc0 (ZChain.chain∋x zc0 ) (zc0-b<x b b<x) ab (case2 (z24 p)) y<b
606 supf0 : Ordinal → SupF A 598 supf0 : Ordinal → HOD
607 supf0 z with trio< z x 599 supf0 z with trio< z x
608 ... | tri< a ¬b ¬c = supf z 600 ... | tri< a ¬b ¬c = supf z
609 ... | tri≈ ¬a b ¬c = record { chain = & schain } 601 ... | tri≈ ¬a b ¬c = schain
610 ... | tri> ¬a ¬b c = record { chain = & schain } 602 ... | tri> ¬a ¬b c = schain
611 seq : schain ≡ * (SupF.chain (supf0 x)) 603 seq : schain ≡ supf0 x
612 seq with trio< x x 604 seq with trio< x x
613 ... | tri< a ¬b ¬c = ⊥-elim ( ¬b refl ) 605 ... | tri< a ¬b ¬c = ⊥-elim ( ¬b refl )
614 ... | tri≈ ¬a b ¬c = sym *iso 606 ... | tri≈ ¬a b ¬c = refl
615 ... | tri> ¬a ¬b c = sym *iso 607 ... | tri> ¬a ¬b c = refl
616 seq<x : {b : Ordinal } → b o< x → * (SupF.chain (supf b)) ≡ * (SupF.chain (supf0 b)) 608 seq<x : {b : Ordinal } → b o< x → supf b ≡ supf0 b
617 seq<x {b} b<x with trio< b x 609 seq<x {b} b<x with trio< b x
618 ... | tri< a ¬b ¬c = refl 610 ... | tri< a ¬b ¬c = refl
619 ... | tri≈ ¬a b₁ ¬c = ⊥-elim (¬a b<x ) 611 ... | tri≈ ¬a b₁ ¬c = ⊥-elim (¬a b<x )
620 ... | tri> ¬a ¬b c = ⊥-elim (¬a b<x ) 612 ... | tri> ¬a ¬b c = ⊥-elim (¬a b<x )
621 mono : {a b : Ordinal} → a o≤ b → b o< osuc x → 613 mono : {a b : Ordinal} → a o≤ b → b o< osuc x → supf0 a ⊆' supf0 b
622 * (SupF.chain (supf0 a )) ⊆' * (SupF.chain (supf0 b ))
623 mono {a} {b} a≤b b<ox = {!!} 614 mono {a} {b} a≤b b<ox = {!!}
624 615
625 ... | case2 ¬x=sup = no-extenion z18 where -- x is not f y' nor sup of former ZChain from y -- no extention 616 ... | case2 ¬x=sup = no-extenion z18 where -- x is not f y' nor sup of former ZChain from y -- no extention
626 z18 : {a b : Ordinal} → odef (ZChain.chain zc0) a → b o< osuc x → (ab : odef A b) → 617 z18 : {a b : Ordinal} → odef (ZChain.chain zc0) a → b o< osuc x → (ab : odef A b) →
627 HasPrev A (ZChain.chain zc0) ab f ∨ IsSup A (ZChain.chain zc0) ab → 618 HasPrev A (ZChain.chain zc0) ab f ∨ IsSup A (ZChain.chain zc0) ab →
653 u-next {z} u = record { u = UZFChain.u u ; u<x = UZFChain.u<x u ; chain∋z = ZChain.f-next ( uzc u ) (UZFChain.chain∋z u) } 644 u-next {z} u = record { u = UZFChain.u u ; u<x = UZFChain.u<x u ; chain∋z = ZChain.f-next ( uzc u ) (UZFChain.chain∋z u) }
654 u-initial : {z : Ordinal} → odef Uz z → * y ≤ * z 645 u-initial : {z : Ordinal} → odef Uz z → * y ≤ * z
655 u-initial {z} u = ZChain.initial ( uzc u ) (UZFChain.chain∋z u) 646 u-initial {z} u = ZChain.initial ( uzc u ) (UZFChain.chain∋z u)
656 u-chain∋x : odef Uz y 647 u-chain∋x : odef Uz y
657 u-chain∋x = record { u = y ; u<x = {!!} ; chain∋z = ZChain.chain∋x (ZChain1.zc (prev y {!!} ay )) } 648 u-chain∋x = record { u = y ; u<x = {!!} ; chain∋z = ZChain.chain∋x (ZChain1.zc (prev y {!!} ay )) }
658 supf0 : Ordinal → SupF A 649 supf0 : Ordinal → HOD
659 supf0 z with trio< z x 650 supf0 z with trio< z x
660 ... | tri< a ¬b ¬c = ZChain1.supf (prev z a {y} ay) z 651 ... | tri< a ¬b ¬c = ZChain1.supf (prev z a {y} ay) z
661 ... | tri≈ ¬a b ¬c = record { chain = & Uz } 652 ... | tri≈ ¬a b ¬c = Uz
662 ... | tri> ¬a ¬b c = record { chain = & Uz } 653 ... | tri> ¬a ¬b c = Uz
663 seq : Uz ≡ * (SupF.chain (supf0 x)) 654 seq : Uz ≡ supf0 x
664 seq with trio< x x 655 seq with trio< x x
665 ... | tri< a ¬b ¬c = ⊥-elim ( ¬b refl ) 656 ... | tri< a ¬b ¬c = ⊥-elim ( ¬b refl )
666 ... | tri≈ ¬a b ¬c = sym *iso 657 ... | tri≈ ¬a b ¬c = refl
667 ... | tri> ¬a ¬b c = sym *iso 658 ... | tri> ¬a ¬b c = refl
668 seq<x : {b : Ordinal } → (b<x : b o< x ) → * (SupF.chain (ZChain1.supf (prev b b<x {y} ay) b)) ≡ * (SupF.chain (supf0 b)) 659 seq<x : {b : Ordinal } → (b<x : b o< x ) → ZChain1.supf (prev b b<x {y} ay) b ≡ supf0 b
669 seq<x {b} b<x with trio< b x 660 seq<x {b} b<x with trio< b x
670 ... | tri< a ¬b ¬c = cong (λ k → * (SupF.chain (ZChain1.supf (prev b k {y} ay) b)) ) o<-irr -- b<x ≡ a 661 ... | tri< a ¬b ¬c = cong (λ k → ZChain1.supf (prev b k {y} ay) b) o<-irr -- b<x ≡ a
671 ... | tri≈ ¬a b₁ ¬c = ⊥-elim (¬a b<x ) 662 ... | tri≈ ¬a b₁ ¬c = ⊥-elim (¬a b<x )
672 ... | tri> ¬a ¬b c = ⊥-elim (¬a b<x ) 663 ... | tri> ¬a ¬b c = ⊥-elim (¬a b<x )
673 u-mono : ( a b : Ordinal ) → b o< x → a o< osuc b → (za : ZChain1 A y f a) (zb : ZChain1 A y f b) → ZChain.chain (ZChain1.zc za) ⊆' ZChain.chain (ZChain1.zc zb) 664 u-mono : ( a b : Ordinal ) → b o< x → a o< osuc b → (za : ZChain1 A y f a) (zb : ZChain1 A y f b) → ZChain.chain (ZChain1.zc za) ⊆' ZChain.chain (ZChain1.zc zb)
674 u-mono a b b<x a≤b za zb {i} zai = ZChain1.chain-mono zb a≤b <-osuc (uz01 zai) where 665 u-mono a b b<x a≤b za zb {i} zai = ZChain1.chain-mono zb a≤b <-osuc (uz01 zai) where
675 uz01 : odef (* (SupF.chain (ZChain1.supf za a))) i → odef (* (SupF.chain (ZChain1.supf zb a))) i 666 uz01 : odef (ZChain1.supf za a) i → odef (ZChain1.supf zb a) i
676 uz01 = {!!} 667 uz01 = {!!}
677 u-total : IsTotalOrderSet Uz 668 u-total : IsTotalOrderSet Uz
678 u-total {x} {y} ux uy with trio< (UZFChain.u ux) (UZFChain.u uy) 669 u-total {x} {y} ux uy with trio< (UZFChain.u ux) (UZFChain.u uy)
679 ... | tri< a ¬b ¬c = ZChain.f-total (uzc uy) (u-mono (UZFChain.u ux) (UZFChain.u uy) 670 ... | tri< a ¬b ¬c = ZChain1.f-total (uzc1 uy) {!!} (u-mono (UZFChain.u ux) (UZFChain.u uy)
680 (UZFChain.u<x uy) (ordtrans a <-osuc ) (uzc1 ux) (uzc1 uy) (UZFChain.chain∋z ux)) (UZFChain.chain∋z uy) 671 (UZFChain.u<x uy) (ordtrans a <-osuc ) (uzc1 ux) (uzc1 uy) (UZFChain.chain∋z ux)) (UZFChain.chain∋z uy)
681 ... | tri≈ ¬a b ¬c = ZChain.f-total (uzc ux) (UZFChain.chain∋z ux) (u-mono (UZFChain.u uy) (UZFChain.u ux) 672 ... | tri≈ ¬a b ¬c = ZChain1.f-total (uzc1 ux) {!!} (UZFChain.chain∋z ux) (u-mono (UZFChain.u uy) (UZFChain.u ux)
682 (UZFChain.u<x ux) (subst (λ k → k o< osuc (UZFChain.u ux)) b <-osuc) (uzc1 uy) (uzc1 ux) (UZFChain.chain∋z uy)) 673 (UZFChain.u<x ux) (subst (λ k → k o< osuc (UZFChain.u ux)) b <-osuc) (uzc1 uy) (uzc1 ux) (UZFChain.chain∋z uy))
683 ... | tri> ¬a ¬b c = ZChain.f-total (uzc ux) (UZFChain.chain∋z ux) (u-mono (UZFChain.u uy) (UZFChain.u ux) 674 ... | tri> ¬a ¬b c = ZChain1.f-total (uzc1 ux) {!!} (UZFChain.chain∋z ux) (u-mono (UZFChain.u uy) (UZFChain.u ux)
684 (UZFChain.u<x ux) (ordtrans c <-osuc) (uzc1 uy) (uzc1 ux) (UZFChain.chain∋z uy)) 675 (UZFChain.u<x ux) (ordtrans c <-osuc) (uzc1 uy) (uzc1 ux) (UZFChain.chain∋z uy))
685 676
686 SZ : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) → {y : Ordinal} (ya : odef A y) → ZChain1 A y f (& A) 677 SZ : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) → {y : Ordinal} (ya : odef A y) → ZChain1 A y f (& A)
687 SZ f mf = TransFinite {λ z → {y : Ordinal } → (ay : odef A y ) → ZChain1 A y f z } (ind f mf) (& A) 678 SZ f mf = TransFinite {λ z → {y : Ordinal } → (ay : odef A y ) → ZChain1 A y f z } (ind f mf) (& A)
688 679