comparison src/zorn.agda @ 769:34678c0ad278

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 Jul 2022 23:38:38 +0900
parents 67c7d4b43844
children 798d8b8c36b1
comparison
equal deleted inserted replaced
768:67c7d4b43844 769:34678c0ad278
262 record ChainP (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal) (u z : Ordinal) : Set n where 262 record ChainP (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal) (u z : Ordinal) : Set n where
263 field 263 field
264 csupz : FClosure A f (supf u) z 264 csupz : FClosure A f (supf u) z
265 supfu=u : supf u ≡ u 265 supfu=u : supf u ≡ u
266 fcy<sup : {z : Ordinal } → FClosure A f y z → (z ≡ supf u) ∨ ( z << supf u ) 266 fcy<sup : {z : Ordinal } → FClosure A f y z → (z ≡ supf u) ∨ ( z << supf u )
267 order : {sup1 z1 : Ordinal} → (lt : sup1 o< u ) → FClosure A f (supf sup1 ) z1 → (z1 ≡ supf u ) ∨ ( z1 << supf u ) 267 order : {sup1 z1 : Ordinal} → (lt : supf sup1 o< supf u ) → FClosure A f (supf sup1 ) z1 → (z1 ≡ supf u ) ∨ ( z1 << supf u )
268 268
269 -- Union of supf z which o< x 269 -- Union of supf z which o< x
270 -- 270 --
271 271
272 data UChain ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal } (ay : odef A y ) 272 data UChain ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal } (ay : odef A y )
294 chain∋init : odef chain init 294 chain∋init : odef chain init
295 initial : {y : Ordinal } → odef chain y → * init ≤ * y 295 initial : {y : Ordinal } → odef chain y → * init ≤ * y
296 f-next : {a : Ordinal } → odef chain a → odef chain (f a) 296 f-next : {a : Ordinal } → odef chain a → odef chain (f a)
297 f-total : IsTotalOrderSet chain 297 f-total : IsTotalOrderSet chain
298 298
299 supf-mono : { a b : Ordinal } → a o< b → supf a o≤ supf b
299 csupf : {z : Ordinal } → odef chain (supf z) 300 csupf : {z : Ordinal } → odef chain (supf z)
300 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 301 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
301 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 302 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
302 order : {b sup1 z1 : Ordinal} → b o< z → sup1 o< b → FClosure A f (supf sup1) z1 → (z1 ≡ supf b) ∨ (z1 << supf b) 303 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)
303 304
304 305
305 record ZChain1 ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) 306 record ZChain1 ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f)
306 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) ( z : Ordinal ) : Set (Level.suc n) where 307 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) ( z : Ordinal ) : Set (Level.suc n) where
307 field 308 field
350 ct00 = lt 351 ct00 = lt
351 ct01 : * b < * a 352 ct01 : * b < * a
352 ct01 with s≤fc (supf ua) f mf fca 353 ct01 with s≤fc (supf ua) f mf fca
353 ... | case1 eq = subst (λ k → * b < k ) eq ct00 354 ... | case1 eq = subst (λ k → * b < k ) eq ct00
354 ... | case2 lt = IsStrictPartialOrder.trans POO ct00 lt 355 ... | case2 lt = IsStrictPartialOrder.trans POO ct00 lt
355 ct-ind xa xb {a} {b} (ch-is-sup ua supa fca) (ch-is-sup ub supb fcb) with trio< ua ub 356 ct-ind xa xb {a} {b} (ch-is-sup ua supa fca) (ch-is-sup ub supb fcb) with trio< (supf ua) (supf ub)
356 ... | tri< a₁ ¬b ¬c with ChainP.order supb a₁ (ChainP.csupz supa) 357 ... | tri< a₁ ¬b ¬c with ChainP.order supb a₁ (ChainP.csupz supa)
357 ... | case1 eq with s≤fc (supf ub) f mf fcb 358 ... | case1 eq with s≤fc (supf ub) f mf fcb
358 ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00 (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where 359 ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00 (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where
359 ct00 : * a ≡ * b 360 ct00 : * a ≡ * b
360 ct00 = trans (cong (*) eq) eq1 361 ct00 = trans (cong (*) eq) eq1
366 ct03 = lt 367 ct03 = lt
367 ct02 : * a < * b 368 ct02 : * a < * b
368 ct02 with s≤fc (supf ub) f mf fcb 369 ct02 with s≤fc (supf ub) f mf fcb
369 ... | case1 eq = subst (λ k → * a < k ) eq ct03 370 ... | case1 eq = subst (λ k → * a < k ) eq ct03
370 ... | case2 lt = IsStrictPartialOrder.trans POO ct03 lt 371 ... | case2 lt = IsStrictPartialOrder.trans POO ct03 lt
371 ct-ind xa xb {a} {b} (ch-is-sup ua supa fca) (ch-is-sup ub supb fcb) | tri≈ ¬a refl ¬c = fcn-cmp (supf ua) f mf fca fcb 372 ct-ind xa xb {a} {b} (ch-is-sup ua supa fca) (ch-is-sup ub supb fcb) | tri≈ ¬a eq ¬c
373 = fcn-cmp (supf ua) f mf fca (subst (λ k → FClosure A f k b ) (sym eq) fcb )
372 ct-ind xa xb {a} {b} (ch-is-sup ua supa fca) (ch-is-sup ub supb fcb) | tri> ¬a ¬b c with ChainP.order supa c (ChainP.csupz supb) 374 ct-ind xa xb {a} {b} (ch-is-sup ua supa fca) (ch-is-sup ub supb fcb) | tri> ¬a ¬b c with ChainP.order supa c (ChainP.csupz supb)
373 ... | case1 eq with s≤fc (supf ua) f mf fca 375 ... | case1 eq with s≤fc (supf ua) f mf fca
374 ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00 (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where 376 ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00 (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where
375 ct00 : * a ≡ * b 377 ct00 : * a ≡ * b
376 ct00 = sym (trans (cong (*) eq) eq1) 378 ct00 = sym (trans (cong (*) eq) eq1)
516 m07 = osucc (ordtrans b<px px<x ) 518 m07 = osucc (ordtrans b<px px<x )
517 fcb : FClosure A f (ZChain.supf zc b) b 519 fcb : FClosure A f (ZChain.supf zc b) b
518 fcb = subst (λ k → FClosure A f k b ) (sym (ZChain.sup=u zc ab (z09 ab) 520 fcb = subst (λ k → FClosure A f k b ) (sym (ZChain.sup=u zc ab (z09 ab)
519 (record {x<sup = λ {z} lt → IsSup.x<sup is-sup (chain-mono2 x m07 o≤-refl lt) } ) )) ( init ab ) 521 (record {x<sup = λ {z} lt → IsSup.x<sup is-sup (chain-mono2 x m07 o≤-refl lt) } ) )) ( init ab )
520 m08 : odef (UnionCF A f mf ay (ZChain.supf zc) px) a 522 m08 : odef (UnionCF A f mf ay (ZChain.supf zc) px) a
521 m08 with subst (λ k → b <= k ) su=u ( ZChain.order zc u<A (ordtrans b<px c) fcb ) 523 m08 with osuc-≡< (ZChain.supf-mono zc (ordtrans b<px c))
524 ... | case1 eq = ?
525 ... | case2 lt with subst (λ k → b <= k ) su=u ( ZChain.order zc u<A lt fcb )
522 ... | case2 b<u = ⊥-elim (<-irr u≤a (ptrans a<b b<u ) ) 526 ... | case2 b<u = ⊥-elim (<-irr u≤a (ptrans a<b b<u ) )
523 ... | case1 eq = ⊥-elim ( <-irr (s≤fc u f mf (subst (λ k → FClosure A f k a ) su=u fc )) (subst (λ k → * a < * k) eq a<b )) 527 ... | case1 eq = ⊥-elim ( <-irr (s≤fc u f mf (subst (λ k → FClosure A f k a ) su=u fc )) (subst (λ k → * a < * k) eq a<b ))
524 m04 : odef (UnionCF A f mf ay (ZChain.supf zc) px) b 528 m04 : odef (UnionCF A f mf ay (ZChain.supf zc) px) b
525 m04 = ZChain1.is-max (prev px px<x) m03 b<px ab 529 m04 = ZChain1.is-max (prev px px<x) m03 b<px ab
526 (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 530 (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
530 m05 : b ≡ ZChain.supf zc b 534 m05 : b ≡ ZChain.supf zc b
531 m05 = sym ( ZChain.sup=u zc ab (z09 ab) 535 m05 = sym ( ZChain.sup=u zc ab (z09 ab)
532 record { x<sup = λ {z} uz → IsSup.x<sup is-sup (chain-mono2 x (osucc b<x) o≤-refl uz ) } ) 536 record { x<sup = λ {z} uz → IsSup.x<sup is-sup (chain-mono2 x (osucc b<x) o≤-refl uz ) } )
533 m08 : {z : Ordinal} → (fcz : FClosure A f y z ) → z <= ZChain.supf zc b 537 m08 : {z : Ordinal} → (fcz : FClosure A f y z ) → z <= ZChain.supf zc b
534 m08 {z} fcz = ZChain.fcy<sup zc b<A fcz 538 m08 {z} fcz = ZChain.fcy<sup zc b<A fcz
535 m09 : {sup1 z1 : Ordinal} → sup1 o< b → FClosure A f (ZChain.supf zc sup1) z1 → z1 <= ZChain.supf zc b 539 m09 : {sup1 z1 : Ordinal} → (ZChain.supf zc sup1) o< (ZChain.supf zc b)
536 m09 {sup1} {z} s<b fcz = ZChain.order zc b<A s<b fcz 540 → FClosure A f (ZChain.supf zc sup1) z1 → z1 <= ZChain.supf zc b
541 m09 {sup1} {z} s<b fcz = ZChain.order zc b<A ? fcz
537 m06 : ChainP A f mf ay (ZChain.supf zc) b b 542 m06 : ChainP A f mf ay (ZChain.supf zc) b b
538 m06 = record { csupz = subst (λ k → FClosure A f k b) m05 (init ab) ; supfu=u = sym m05 543 m06 = record { csupz = subst (λ k → FClosure A f k b) m05 (init ab) ; supfu=u = sym m05
539 ; fcy<sup = m08 ; order = m09 } 544 ; fcy<sup = m08 ; order = m09 }
540 ... | no lim = record { is-max = is-max } where 545 ... | no lim = record { is-max = is-max } where
541 is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) a → 546 is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) a →
542 b o< x → (ab : odef A b) → 547 b o< x → (ab : odef A b) →
543 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 → 548 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 →
544 * a < * b → odef (UnionCF A f mf ay (ZChain.supf zc) x) b 549 * a < * b → odef (UnionCF A f mf ay (ZChain.supf zc) x) b
549 ... | case2 y<b = chain-mono2 x (o<→≤ (ob<x lim b<x) ) o≤-refl m04 where 554 ... | case2 y<b = chain-mono2 x (o<→≤ (ob<x lim b<x) ) o≤-refl m04 where
550 m09 : b o< & A 555 m09 : b o< & A
551 m09 = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab)) 556 m09 = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab))
552 m07 : {z : Ordinal} → FClosure A f y z → z <= ZChain.supf zc b 557 m07 : {z : Ordinal} → FClosure A f y z → z <= ZChain.supf zc b
553 m07 {z} fc = ZChain.fcy<sup zc m09 fc 558 m07 {z} fc = ZChain.fcy<sup zc m09 fc
554 m08 : {sup1 z1 : Ordinal} → sup1 o< b → FClosure A f (ZChain.supf zc sup1) z1 → z1 <= ZChain.supf zc b 559 m08 : {sup1 z1 : Ordinal} → (ZChain.supf zc sup1) o< (ZChain.supf zc b)
560 → FClosure A f (ZChain.supf zc sup1) z1 → z1 <= ZChain.supf zc b
555 m08 {sup1} {z1} s<b fc = ZChain.order zc m09 s<b fc 561 m08 {sup1} {z1} s<b fc = ZChain.order zc m09 s<b fc
556 m05 : b ≡ ZChain.supf zc b 562 m05 : b ≡ ZChain.supf zc b
557 m05 = sym (ZChain.sup=u zc ab m09 563 m05 = sym (ZChain.sup=u zc ab m09
558 record { x<sup = λ lt → IsSup.x<sup is-sup (chain-mono2 x (o<→≤ (ob<x lim b<x)) o≤-refl lt )} ) -- ZChain on x 564 record { x<sup = λ lt → IsSup.x<sup is-sup (chain-mono2 x (o<→≤ (ob<x lim b<x)) o≤-refl lt )} ) -- ZChain on x
559 m06 : ChainP A f mf ay (ZChain.supf zc) b b 565 m06 : ChainP A f mf ay (ZChain.supf zc) b b
560 m06 = record { fcy<sup = m07 ; csupz = subst (λ k → FClosure A f k b ) m05 (init ab) ; order = m08 566 m06 = record { fcy<sup = m07 ; csupz = subst (λ k → FClosure A f k b ) m05 (init ab) ; order = m08
561 ; supfu=u = sym m05 } 567 ; supfu=u = sym m05 }
562 m04 : odef (UnionCF A f mf ay (ZChain.supf zc) (osuc b)) b 568 m04 : odef (UnionCF A f mf ay (ZChain.supf zc) (osuc b)) b
563 m04 = ⟪ ab , ch-is-sup b m06 (subst (λ k → FClosure A f k b) m05 (init ab)) ⟫ 569 m04 = ⟪ ab , ch-is-sup b m06 (subst (λ k → FClosure A f k b) m05 (init ab)) ⟫
564 570
565 --- 571 ---
672 ... | case1 eq = case1 ( begin 678 ... | case1 eq = case1 ( begin
673 z ≡⟨ sym &iso ⟩ 679 z ≡⟨ sym &iso ⟩
674 & (* z) ≡⟨ cong (&) eq ⟩ 680 & (* z) ≡⟨ cong (&) eq ⟩
675 spi ∎ ) where open ≡-Reasoning 681 spi ∎ ) where open ≡-Reasoning
676 ... | case2 lt = case2 (subst (λ k → * z < k ) (sym *iso) lt ) 682 ... | case2 lt = case2 (subst (λ k → * z < k ) (sym *iso) lt )
677 uz04 : {sup1 z1 : Ordinal} → sup1 o< spi → FClosure A f (isupf sup1) z1 → (z1 ≡ isupf spi) ∨ (z1 << isupf spi) 683 uz04 : {sup1 z1 : Ordinal} → isupf sup1 o< isupf spi → FClosure A f (isupf sup1) z1 → (z1 ≡ isupf spi) ∨ (z1 << isupf spi)
678 uz04 {s} {z} s<spi fcz = ? 684 uz04 {s} {z} s<spi fcz = ⊥-elim ( o<¬≡ refl s<spi )
679 uz02 : ChainP A f mf ay isupf spi (isupf z) 685 uz02 : ChainP A f mf ay isupf spi (isupf z)
680 uz02 = record { csupz = init asi ; supfu=u = refl ; fcy<sup = uz03 ; order = ? } 686 uz02 = record { csupz = init asi ; supfu=u = refl ; fcy<sup = uz03 ; order = λ {s} {z} → uz04 {s} {z} }
681 687
682 688
683 -- 689 --
684 -- create all ZChains under o< x 690 -- create all ZChains under o< x
685 -- 691 --