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