comparison src/zorn.agda @ 690:33f90b483211

Chain with chainf
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 11 Jul 2022 04:53:45 +0900
parents 34650e39e553
children 46d05d12df57
comparison
equal deleted inserted replaced
689:34650e39e553 690:33f90b483211
251 ∈∧P→o< {A } {y} p = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) (proj1 p ))) 251 ∈∧P→o< {A } {y} p = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) (proj1 p )))
252 252
253 UnionCF : (A : HOD) (x : Ordinal) (chainf : (z : Ordinal ) → z o< x → HOD ) → HOD 253 UnionCF : (A : HOD) (x : Ordinal) (chainf : (z : Ordinal ) → z o< x → HOD ) → HOD
254 UnionCF A x chainf = record { od = record { def = λ z → odef A z ∧ UChain x chainf z } ; odmax = & A ; <odmax = λ {y} sy → ∈∧P→o< sy } 254 UnionCF A x chainf = record { od = record { def = λ z → odef A z ∧ UChain x chainf z } ; odmax = & A ; <odmax = λ {y} sy → ∈∧P→o< sy }
255 255
256 data Chain (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) : Ordinal → Ordinal → Set n where 256 --
257 ch-init : (z : Ordinal) → FClosure A f y z → Chain A f mf ay y z 257 -- sup and its fclosure is in a chain HOD
258 ch-is-sup : {x z : Ordinal } (init<x : y << x) (lty : y o< x ) ( ax : odef A x ) 258 -- chain HOD is sorted by sup as Ordinal and <-ordered
259 → ( is-sup : (x1 w : Ordinal) → ( x1 ≡ y ) ∨ ( (y << x1) ∧ (x1 o< x) ) → Chain A f mf ay x1 w → w << x ) 259 -- whole chain is a union of separated Chain
260 → ( fc : FClosure A f x z ) → Chain A f mf ay x z 260 -- minimum index is y not ϕ
261 --
262
263 record ChainP (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {x y : Ordinal} (ay : odef A y) (chainf : (z : Ordinal ) → z o< x → HOD) (sup z : Ordinal) : Set n where
264 field
265 asup : odef A sup
266 y<sup : y o< sup
267 y<<sup : y << sup
268 sup<x : sup o< x
269 csupz : odef (chainf sup sup<x) z
270 order : (sup1 z1 : Ordinal) → (lt : sup1 o< sup ) → odef (chainf sup1 (ordtrans lt sup<x ) ) z1 → z1 << z
271
272 data Chain (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {x y : Ordinal} (ay : odef A y) (chainf : (z : Ordinal ) → z o< x → HOD) : Ordinal → Ordinal → Set n where
273 ch-init : (z : Ordinal) → FClosure A f y z → Chain A f mf ay chainf y z
274 ch-is-sup : {sup z : Ordinal }
275 → ( is-sup : ChainP A f mf ay chainf sup z)
276 → ( fc : FClosure A f sup z ) → Chain A f mf ay chainf sup z
261 277
262 record ZChain1 ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal } (ay : odef A y ) ( z : Ordinal ) : Set (Level.suc n) where 278 record ZChain1 ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal } (ay : odef A y ) ( z : Ordinal ) : Set (Level.suc n) where
263 field 279 field
264 psup : Ordinal → Ordinal 280 psup : Ordinal → Ordinal
265 p≤z : (x : Ordinal ) → odef A (psup x) 281 p≤z : (x : Ordinal ) → odef A (psup x)
266 chainf : (x : Ordinal) → HOD 282 chainf : (x : Ordinal) → x o< z → HOD
267 is-chain : (x w : Ordinal) → odef (chainf x) w → Chain A f mf ay (psup x) w 283 is-chain : (x w : Ordinal) → (x<z : x o< z) → odef (chainf x x<z) w → Chain A f mf ay chainf (psup x) w
268 284
269 record ZChain ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {init : Ordinal} (ay : odef A init) 285 record ZChain ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {init : Ordinal} (ay : odef A init)
270 (zc0 : (x : Ordinal) → ZChain1 A f mf ay x ) ( z : Ordinal ) : Set (Level.suc n) where 286 (zc0 : (x : Ordinal) → ZChain1 A f mf ay x ) ( z : Ordinal ) : Set (Level.suc n) where
271 chain : HOD 287 chain : HOD
272 chain = UnionCF A (& A) ( λ x _ → ZChain1.chainf (zc0 (& A)) x ) 288 chain = UnionCF A (& A) ( λ x _ → ZChain1.chainf (zc0 (& A)) x ? )
273 field 289 field
274 chain⊆A : chain ⊆' A 290 chain⊆A : chain ⊆' A
275 chain∋init : odef chain init 291 chain∋init : odef chain init
276 initial : {y : Ordinal } → odef chain y → * init ≤ * y 292 initial : {y : Ordinal } → odef chain y → * init ≤ * y
277 f-next : {a : Ordinal } → odef chain a → odef chain (f a) 293 f-next : {a : Ordinal } → odef chain a → odef chain (f a)
291 307
292 -- data Chain (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) : Ordinal → Ordinal → Set n where 308 -- data Chain (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) : Ordinal → Ordinal → Set n where
293 -- 309 --
294 -- data Chain is total 310 -- data Chain is total
295 311
296 chain-total : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) 312 chain-total : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {x y : Ordinal} (ay : odef A y) (chainf : (z : Ordinal ) → z o< x → HOD)
297 {s s1 a b : Ordinal } ( ca : Chain A f mf ay s a ) ( cb : Chain A f mf ay s1 b ) → Tri (* a < * b) (* a ≡ * b) (* b < * a ) 313 {s s1 a b : Ordinal } ( ca : Chain A f mf ay chainf s a ) ( cb : Chain A f mf ay chainf s1 b ) → Tri (* a < * b) (* a ≡ * b) (* b < * a )
298 chain-total A f mf {y} ay {xa} {xb} {a} {b} ca cb = ct-ind xa xb ca cb where 314 chain-total A f mf {x} {y} ay chainf {xa} {xb} {a} {b} ca cb = ct-ind xa xb ca cb where
299 ct-ind : (xa xb : Ordinal) → {a b : Ordinal} → Chain A f mf ay xa a → Chain A f mf ay xb b → Tri (* a < * b) (* a ≡ * b) (* b < * a) 315 ct-ind : (xa xb : Ordinal) → {a b : Ordinal} → Chain A f mf ay chainf xa a → Chain A f mf ay chainf xb b → Tri (* a < * b) (* a ≡ * b) (* b < * a)
300 ct-ind xa xb {a} {b} (ch-init a fca) (ch-init b fcb) = fcn-cmp y f mf fca fcb 316 ct-ind xa xb {a} {b} (ch-init a fca) (ch-init b fcb) = fcn-cmp y f mf fca fcb
301 ct-ind xa xb {a} {b} (ch-init a fca) (ch-is-sup y<xb ltyb axb supb fcb) = tri< ct01 (λ eq → <-irr (case1 (sym eq)) ct01) (λ lt → <-irr (case2 ct01) lt) where 317 ct-ind xa xb {a} {b} (ch-init a fca) (ch-is-sup supb fcb) = tri< ct01 (λ eq → <-irr (case1 (sym eq)) ct01) (λ lt → <-irr (case2 ct01) lt) where
302 ct00 : * a < * xb 318 ct00 : * a < * xb
303 ct00 = supb _ _ (case1 refl) (ch-init a fca) 319 ct00 = ?
304 ct01 : * a < * b 320 ct01 : * a < * b
305 ct01 with s≤fc xb f mf fcb 321 ct01 with s≤fc xb f mf fcb
306 ... | case1 eq = subst (λ k → * a < k ) eq ct00 322 ... | case1 eq = subst (λ k → * a < k ) eq ct00
307 ... | case2 lt = IsStrictPartialOrder.trans POO ct00 lt 323 ... | case2 lt = IsStrictPartialOrder.trans POO ct00 lt
308 ct-ind xa xb {a} {b} (ch-is-sup y<x ltya ax supa fca) (ch-init b fcb)= tri> (λ lt → <-irr (case2 ct01) lt) (λ eq → <-irr (case1 eq) ct01) ct01 where 324 ct-ind xa xb {a} {b} (ch-is-sup supa fca) (ch-init b fcb)= tri> (λ lt → <-irr (case2 ct01) lt) (λ eq → <-irr (case1 eq) ct01) ct01 where
309 ct00 : * b < * xa 325 ct00 : * b < * xa
310 ct00 = supa _ _ (case1 refl) (ch-init b fcb) 326 ct00 = ?
311 ct01 : * b < * a 327 ct01 : * b < * a
312 ct01 with s≤fc xa f mf fca 328 ct01 with s≤fc xa f mf fca
313 ... | case1 eq = subst (λ k → * b < k ) eq ct00 329 ... | case1 eq = subst (λ k → * b < k ) eq ct00
314 ... | case2 lt = IsStrictPartialOrder.trans POO ct00 lt 330 ... | case2 lt = IsStrictPartialOrder.trans POO ct00 lt
315 ct-ind xa xb {a} {b} (ch-is-sup y<xa ltya axa supa fca) (ch-is-sup y<xb ltyb axb supb fcb) with trio< xa xb 331 ct-ind xa xb {a} {b} (ch-is-sup supa fca) (ch-is-sup supb fcb) with trio< xa xb
316 ... | tri< a₁ ¬b ¬c = tri< ct02 (λ eq → <-irr (case1 (sym eq)) ct02) (λ lt → <-irr (case2 ct02) lt) where 332 ... | tri< a₁ ¬b ¬c = tri< ct02 (λ eq → <-irr (case1 (sym eq)) ct02) (λ lt → <-irr (case2 ct02) lt) where
317 ct03 : * a < * xb 333 ct03 : * a < * xb
318 ct03 = supb _ _ (case2 ⟪ y<xa , a₁ ⟫) (ch-is-sup y<xa ltya axa supa fca) 334 ct03 = ?
319 ct02 : * a < * b 335 ct02 : * a < * b
320 ct02 with s≤fc xb f mf fcb 336 ct02 with s≤fc xb f mf fcb
321 ... | case1 eq = subst (λ k → * a < k ) eq ct03 337 ... | case1 eq = subst (λ k → * a < k ) eq ct03
322 ... | case2 lt = IsStrictPartialOrder.trans POO ct03 lt 338 ... | case2 lt = IsStrictPartialOrder.trans POO ct03 lt
323 ... | tri≈ ¬a refl ¬c = fcn-cmp xa f mf fca fcb 339 ... | tri≈ ¬a refl ¬c = fcn-cmp xa f mf fca fcb
324 ... | tri> ¬a ¬b c = tri> (λ lt → <-irr (case2 ct04) lt) (λ eq → <-irr (case1 (eq)) ct04) ct04 where 340 ... | tri> ¬a ¬b c = tri> (λ lt → <-irr (case2 ct04) lt) (λ eq → <-irr (case1 (eq)) ct04) ct04 where
325 ct05 : * b < * xa 341 ct05 : * b < * xa
326 ct05 = supa _ _ (case2 ⟪ y<xb , c ⟫) (ch-is-sup y<xb ltyb axb supb fcb) 342 ct05 = ?
327 ct04 : * b < * a 343 ct04 : * b < * a
328 ct04 with s≤fc xa f mf fca 344 ct04 with s≤fc xa f mf fca
329 ... | case1 eq = subst (λ k → * b < k ) eq ct05 345 ... | case1 eq = subst (λ k → * b < k ) eq ct05
330 ... | case2 lt = IsStrictPartialOrder.trans POO ct05 lt 346 ... | case2 lt = IsStrictPartialOrder.trans POO ct05 lt
331 347
464 px<x : px o< x 480 px<x : px o< x
465 px<x = subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc 481 px<x = subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc
466 sc : ZChain1 A f mf ay px 482 sc : ZChain1 A f mf ay px
467 sc = prev px px<x 483 sc = prev px px<x
468 pchain : HOD 484 pchain : HOD
469 pchain = chainf sc px 485 pchain = chainf sc px ?
470 486
471 no-ext : ZChain1 A f mf ay x 487 no-ext : ZChain1 A f mf ay x
472 no-ext = record { psup = psup1 ; p≤z = p≤z1 ; chainf = chainf1 ; is-chain = is-chain1 } where 488 no-ext = record { psup = psup1 ; p≤z = p≤z1 ; chainf = chainf1 ; is-chain = is-chain1 } where
473 psup1 : Ordinal → Ordinal 489 psup1 : Ordinal → Ordinal
474 psup1 z with o≤? z x 490 psup1 z with o≤? z x
476 ... | no _ = ZChain1.psup sc x 492 ... | no _ = ZChain1.psup sc x
477 p≤z1 : (z : Ordinal ) → odef A (psup1 z) 493 p≤z1 : (z : Ordinal ) → odef A (psup1 z)
478 p≤z1 z with o≤? z x 494 p≤z1 z with o≤? z x
479 ... | yes _ = ZChain1.p≤z sc z 495 ... | yes _ = ZChain1.p≤z sc z
480 ... | no _ = ZChain1.p≤z sc x 496 ... | no _ = ZChain1.p≤z sc x
481 chainf1 : (z : Ordinal ) → HOD 497 chainf1 : (z : Ordinal ) → z o< x → HOD
482 chainf1 z with o≤? z x 498 chainf1 z z<x with o≤? z x
483 ... | yes _ = ZChain1.chainf sc z 499 ... | yes _ = ZChain1.chainf sc z ?
484 ... | no _ = ZChain1.chainf sc x 500 ... | no _ = ZChain1.chainf sc x ?
485 is-chain1 : {!!} 501 is-chain1 : {!!}
486 is-chain1 = {!!} 502 is-chain1 = {!!}
487 sc4 : ZChain1 A f mf ay x 503 sc4 : ZChain1 A f mf ay x
488 sc4 with ODC.∋-p O A (* x) 504 sc4 with ODC.∋-p O A (* x)
489 ... | no noax = no-ext 505 ... | no noax = no-ext
495 schain = {!!} -- record { od = record { def = λ z → odef A z ∧ ( odef (ZChain1.chain sc ) z ∨ (FClosure A f x z)) } 511 schain = {!!} -- record { od = record { def = λ z → odef A z ∧ ( odef (ZChain1.chain sc ) z ∨ (FClosure A f x z)) }
496 -- ; odmax = & A ; <odmax = λ {y} sy → ∈∧P→o< sy } 512 -- ; odmax = & A ; <odmax = λ {y} sy → ∈∧P→o< sy }
497 ... | case2 ¬x=sup = no-ext 513 ... | case2 ¬x=sup = no-ext
498 ... | no ¬ox = sc4 where 514 ... | no ¬ox = sc4 where
499 pchainf : (z : Ordinal) → z o< x → HOD 515 pchainf : (z : Ordinal) → z o< x → HOD
500 pchainf z z<x = ZChain1.chainf (prev z z<x) z 516 pchainf z z<x = ZChain1.chainf (prev z z<x) z ?
501 pzc : (z : Ordinal) → z o< x → ZChain1 A f mf ay z 517 pzc : (z : Ordinal) → z o< x → ZChain1 A f mf ay z
502 pzc z z<x = prev z z<x 518 pzc z z<x = prev z z<x
503 UZ : HOD 519 UZ : HOD
504 UZ = UnionCF A x pchainf 520 UZ = UnionCF A x pchainf
505 total-UZ : IsTotalOrderSet UZ 521 total-UZ : IsTotalOrderSet UZ
506 total-UZ {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where 522 total-UZ {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where
507 uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) ) 523 uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) )
508 uz01 = chain-total A f mf ay (ZChain1.is-chain (pzc _ (UChain.u<x (proj2 ca))) _ _ (UChain.chain∋z (proj2 ca))) 524 uz01 = chain-total A f mf ay pchainf
509 (ZChain1.is-chain (pzc _ (UChain.u<x (proj2 cb))) _ _ (UChain.chain∋z (proj2 cb))) 525 (ZChain1.is-chain (pzc _ (UChain.u<x (proj2 ca))) _ _ ? (UChain.chain∋z (proj2 ca)))
526 (ZChain1.is-chain (pzc _ (UChain.u<x (proj2 cb))) _ _ ? (UChain.chain∋z (proj2 cb)))
510 usup : SUP A UZ 527 usup : SUP A UZ
511 usup = supP UZ (λ lt → proj1 lt) total-UZ 528 usup = supP UZ (λ lt → proj1 lt) total-UZ
512 spu = & (SUP.sup usup) 529 spu = & (SUP.sup usup)
513 sc4 : ZChain1 A f mf ay x 530 sc4 : ZChain1 A f mf ay x
514 sc4 = record { psup = psup1 ; p≤z = p≤z1 ; chainf = chainf1 ; is-chain = is-chain1 } where 531 sc4 = record { psup = psup1 ; p≤z = p≤z1 ; chainf = chainf1 ; is-chain = is-chain1 } where
525 ... | yes _ = record { od = record { def = λ w → odef A w ∧ FClosure A f spu w } ; odmax = & A ; <odmax = {!!} } 542 ... | yes _ = record { od = record { def = λ w → odef A w ∧ FClosure A f spu w } ; odmax = & A ; <odmax = {!!} }
526 ... | no z<x = ZChain1.chainf (pzc z (o¬≤→< z<x)) z 543 ... | no z<x = ZChain1.chainf (pzc z (o¬≤→< z<x)) z
527 is-chain1 : (z w : Ordinal) → odef (chainf1 z) w → Chain A f mf ay (psup1 z ) w 544 is-chain1 : (z w : Ordinal) → odef (chainf1 z) w → Chain A f mf ay (psup1 z ) w
528 is-chain1 z w lt with o≤? x z 545 is-chain1 z w lt with o≤? x z
529 ... | no z<x = ZChain1.is-chain (pzc z (o¬≤→< z<x)) z w lt 546 ... | no z<x = ZChain1.is-chain (pzc z (o¬≤→< z<x)) z w lt
530 is-chain1 z w ⟪ ax , ux ⟫ | yes _ = ch-is-sup y<spu lty aspu {!!} ux where 547 is-chain1 z w ⟪ ax , ux ⟫ | yes _ = ch-is-sup {!!} ux where
531 y<spu : y << spu 548 y<spu : y << spu
532 y<spu = {!!} 549 y<spu = {!!}
533 lty : y o< spu 550 lty : y o< spu
534 lty = {!!} 551 lty = {!!}
535 aspu : odef A spu 552 aspu : odef A spu