comparison src/zorn.agda @ 735:5dacaf73eba8

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 19 Jul 2022 13:44:33 +0900
parents 753780183ddf
children 3c3e3a1291bb
comparison
equal deleted inserted replaced
734:753780183ddf 735:5dacaf73eba8
304 field 304 field
305 supf : Ordinal → Ordinal 305 supf : Ordinal → Ordinal
306 chain : HOD 306 chain : HOD
307 chain = UnionCF A f mf ay supf z 307 chain = UnionCF A f mf ay supf z
308 field 308 field
309 -- chain-mono : {z1 : Ordinal} → z1 o≤ z → UnionCF A f mf ay supf z1 ⊆' UnionCF A f mf ay supf z
310 chain<A : {z : Ordinal } → UnionCF A f mf ay supf z ⊆' UnionCF A f mf ay supf (& A) 309 chain<A : {z : Ordinal } → UnionCF A f mf ay supf z ⊆' UnionCF A f mf ay supf (& A)
311 chain⊆A : chain ⊆' A 310 chain⊆A : chain ⊆' A
312 chain∋init : odef chain init 311 chain∋init : odef chain init
313 initial : {y : Ordinal } → odef chain y → * init ≤ * y 312 initial : {y : Ordinal } → odef chain y → * init ≤ * y
314 f-next : {a : Ordinal } → odef chain a → odef chain (f a) 313 f-next : {a : Ordinal } → odef chain a → odef chain (f a)
315 f-total : IsTotalOrderSet chain 314 f-total : IsTotalOrderSet chain
315 sup=u : {b : Ordinal} → (ab : odef A b) → IsSup A chain ab → supf b ≡ b
316 316
317 record ZChain1 ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) 317 record ZChain1 ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f)
318 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) ( z : Ordinal ) : Set (Level.suc n) where 318 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) ( z : Ordinal ) : Set (Level.suc n) where
319 field 319 field
320 chain-mono2 : { a b c : Ordinal } → 320 chain-mono2 : { a b c : Ordinal } →
436 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) (x : Ordinal) → ZChain1 A f mf ay zc x 436 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) (x : Ordinal) → ZChain1 A f mf ay zc x
437 SZ1 A f mf {y} ay zc x = TransFinite { λ x → ZChain1 A f mf ay zc x } zc1 x where 437 SZ1 A f mf {y} ay zc x = TransFinite { λ x → ZChain1 A f mf ay zc x } zc1 x where
438 chain-mono2 : (x : Ordinal) {a b c : Ordinal} → a o≤ b → b o≤ x → 438 chain-mono2 : (x : Ordinal) {a b c : Ordinal} → a o≤ b → b o≤ x →
439 odef (UnionCF A f mf ay (ZChain.supf zc) a) c → odef (UnionCF A f mf ay (ZChain.supf zc) b) c 439 odef (UnionCF A f mf ay (ZChain.supf zc) a) c → odef (UnionCF A f mf ay (ZChain.supf zc) b) c
440 chain-mono2 x {a} {b} {c} a≤b b≤x ⟪ ua , record { u = _ ; u<x = u<x ; uchain = ch-init .c fc } ⟫ = 440 chain-mono2 x {a} {b} {c} a≤b b≤x ⟪ ua , record { u = _ ; u<x = u<x ; uchain = ch-init .c fc } ⟫ =
441 ⟪ ua , record { u = _ ; u<x = case2 refl ; uchain = ch-init c fc } ⟫ 441 ⟪ ua , record { u = _ ; u<x = case2 refl ; uchain = ch-init c fc } ⟫
442 chain-mono2 x {a} {b} {c} a≤b b≤x ⟪ ua , record { u = u ; u<x = case1 u<x ; uchain = ch-is-sup is-sup fc } ⟫ = 442 chain-mono2 x {a} {b} {c} a≤b b≤x ⟪ ua , record { u = u ; u<x = case1 u<x ; uchain = ch-is-sup is-sup fc } ⟫ =
443 ⟪ ua , record { u = u ; u<x = case1 (ordtrans<-≤ u<x a≤b) ; uchain = ch-is-sup is-sup fc } ⟫ 443 ⟪ ua , record { u = u ; u<x = case1 (ordtrans<-≤ u<x a≤b) ; uchain = ch-is-sup is-sup fc } ⟫
444 is-max-hp : (x : Ordinal) {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) a →
445 b o< x → (ab : odef A b) →
446 HasPrev A (UnionCF A f mf ay (ZChain.supf zc) x) ab f →
447 * a < * b → odef (UnionCF A f mf ay (ZChain.supf zc) x) b
448 is-max-hp x {a} {b} ua b<x ab has-prev a<b = m04 where
449 m04 : odef (UnionCF A f mf ay (ZChain.supf zc) x) b
450 m04 = ⟪ m07 , record { u = UChain.u (proj2 m06) ; u<x = UChain.u<x (proj2 m06)
451 ; uchain = subst (λ k → Chain A f mf ay (ZChain.supf zc) (UChain.u (proj2 m06)) k) (sym (HasPrev.x=fy has-prev)) m08 } ⟫ where
452 m06 : odef (UnionCF A f mf ay (ZChain.supf zc) x) (HasPrev.y has-prev )
453 m06 = HasPrev.ay has-prev
454 m07 : odef A b
455 m07 = subst (λ k → odef A k ) (sym (HasPrev.x=fy has-prev)) (proj2 (mf _ (proj1 m06) ))
456 m08 : Chain A f mf ay (ZChain.supf zc) (UChain.u (proj2 m06)) (f ( HasPrev.y has-prev ))
457 m08 with proj2 m06
458 ... | record { u = _ ; u<x = u<x ; uchain = ch-init .(HasPrev.y has-prev) fc } =
459 ch-init (f (HasPrev.y has-prev)) (fsuc _ fc)
460 ... | record { u = u ; u<x = u<x ; uchain = ch-is-sup is-sup fc } = ch-is-sup ? (fsuc _ fc)
444 zc1 : (x : Ordinal) → ((y₁ : Ordinal) → y₁ o< x → ZChain1 A f mf ay zc y₁) → ZChain1 A f mf ay zc x 461 zc1 : (x : Ordinal) → ((y₁ : Ordinal) → y₁ o< x → ZChain1 A f mf ay zc y₁) → ZChain1 A f mf ay zc x
445 zc1 x prev with Oprev-p x 462 zc1 x prev with Oprev-p x
446 ... | yes op = record { is-max = is-max ; chain-mono2 = chain-mono2 x } where 463 ... | yes op = record { is-max = is-max ; chain-mono2 = chain-mono2 x } where
447 px = Oprev.oprev op 464 px = Oprev.oprev op
465 zc-b<x : (b : Ordinal ) → b o< x → b o< osuc px
466 zc-b<x b lt = subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) lt
448 is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) a → 467 is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) a →
449 b o< x → (ab : odef A b) → 468 b o< x → (ab : odef A b) →
450 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 → 469 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 →
451 * a < * b → odef (UnionCF A f mf ay (ZChain.supf zc) x) b 470 * a < * b → odef (UnionCF A f mf ay (ZChain.supf zc) x) b
452 is-max {a} {b} ua b<x ab (case1 has-prev) a<b = m04 where 471 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
453 m04 : odef (UnionCF A f mf ay (ZChain.supf zc) x) b
454 m04 = ?
455 is-max {a} {b} ua b<x ab (case2 is-sup) a<b with ODC.p∨¬p O ( HasPrev A (UnionCF A f mf ay (ZChain.supf zc) x) ab f ) 472 is-max {a} {b} ua b<x ab (case2 is-sup) a<b with ODC.p∨¬p O ( HasPrev A (UnionCF A f mf ay (ZChain.supf zc) x) ab f )
456 ... | case1 has-prev = m04 where 473 ... | case1 has-prev = is-max-hp x {a} {b} ua b<x ab has-prev a<b
457 m04 : odef (UnionCF A f mf ay (ZChain.supf zc) x) b
458 m04 = ⟪ m07 , record { u = UChain.u (proj2 m06) ; u<x = UChain.u<x (proj2 m06) ; uchain = ? } ⟫ where
459 m06 : odef (UnionCF A f mf ay (ZChain.supf zc) x) (HasPrev.y has-prev )
460 m06 = HasPrev.ay has-prev
461 m07 : odef A b
462 m07 = subst (λ k → odef A k ) (sym (HasPrev.x=fy has-prev)) (proj2 (mf _ (proj1 m06) ))
463 m08 : Chain A f mf ay (ZChain.supf zc) (UChain.u (proj2 m06)) (f ( HasPrev.y has-prev ))
464 m08 with proj2 m06
465 ... | record { u = _ ; u<x = u<x ; uchain = ch-init .(HasPrev.y has-prev) fc } =
466 ch-init (f (HasPrev.y has-prev)) (fsuc _ fc)
467 ... | record { u = u ; u<x = u<x ; uchain = ch-is-sup is-sup fc } = ch-is-sup ? (fsuc _ fc)
468 ... | case2 ¬fy<x = m01 where 474 ... | case2 ¬fy<x = m01 where
475 px<x : px o< x
476 px<x = subst (λ k → px o< k ) (Oprev.oprev=x op) <-osuc
469 m01 : odef (UnionCF A f mf ay (ZChain.supf zc) x) b 477 m01 : odef (UnionCF A f mf ay (ZChain.supf zc) x) b
470 m01 with trio< px b 478 m01 with trio< b px
471 ... | tri< a ¬b ¬c = ZChain1.chain-mono2 (prev px {!!}) {!!} {!!} m04 where 479 ... | tri> ¬a ¬b c = ⊥-eim ()
480 ... | tri< b<px ¬b ¬c = chain-mono2 x ( o<→≤ (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc )) o≤-refl m04 where
481 m03 : odef (UnionCF A f mf ay (ZChain.supf zc) px) a
482 m03 = ?
472 m04 : odef (UnionCF A f mf ay (ZChain.supf zc) px) b 483 m04 : odef (UnionCF A f mf ay (ZChain.supf zc) px) b
473 m04 = ZChain1.is-max (prev px {!!}) {!!} {!!} ab {!!} a<b 484 m04 = ZChain1.is-max (prev px px<x) m03 b<px ab
474 ... | tri≈ ¬a b ¬c = {!!} 485 (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
475 ... | tri> ¬a ¬b c = {!!} 486 ... | tri≈ ¬a b=px ¬c = {!!}
476 ... | no lim = record { is-max = {!!} ; chain-mono2 = chain-mono2 x } where 487 ... | no lim = record { is-max = is-max ; chain-mono2 = chain-mono2 x } where
477 is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) a → 488 is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) a →
478 b o< x → (ab : odef A b) → 489 b o< x → (ab : odef A b) →
479 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 → 490 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 →
480 * a < * b → odef (UnionCF A f mf ay (ZChain.supf zc) x) b 491 * a < * b → odef (UnionCF A f mf ay (ZChain.supf zc) x) b
481 is-max {a} {b} ua b<x ab (case1 has-prev) a<b = ? 492 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
482 is-max {a} {b} ua b<x ab (case2 is-sup) a<b = ? 493 is-max {a} {b} ua b<x ab (case2 is-sup) a<b = chain-mono2 x ? o≤-refl m04 where
483 --- with ODC.p∨¬p O ( HasPrev A (UnionCF A f mf ay (ZChain.supf zc) x) ab f ) 494 m05 : b ≡ ZChain.supf zc b
484 --- m04 : odef (UnionCF A f mf ay (ZChain.supf zc) (osuc b)) b 495 m05 = sym (ZChain.sup=u ? ab is-sup)
485 --- m04 = ZChain1.is-max (prev (osuc b) {!!} ) {!!} <-osuc ab {!!} a<b 496 m04 : odef (UnionCF A f mf ay (ZChain.supf zc) (osuc b)) b
497 m04 = ⟪ ab , record { u = b ; u<x = case1 <-osuc ; uchain = ch-is-sup ? (subst (λ k → FClosure A f k b) m05 (init ab)) } ⟫
486 498
487 --- 499 ---
488 --- the maximum chain has fix point of any ≤-monotonic function 500 --- the maximum chain has fix point of any ≤-monotonic function
489 --- 501 ---
490 fixpoint : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) (zc : ZChain A f mf as0 (& A) ) 502 fixpoint : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) (zc : ZChain A f mf as0 (& A) )