comparison src/zorn.agda @ 1016:aeda5d0537d7

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 24 Nov 2022 08:48:38 +0900
parents c804e302f110
children ffdfd8d1303a
comparison
equal deleted inserted replaced
1015:c804e302f110 1016:aeda5d0537d7
534 u<b = supf-inject ( subst (λ k → k o< supf b) (sym (ChainP.supu=u is-sup)) u<x ) 534 u<b = supf-inject ( subst (λ k → k o< supf b) (sym (ChainP.supu=u is-sup)) u<x )
535 su<z : supf u o< z 535 su<z : supf u o< z
536 su<z = subst (λ k → k o< z ) (sym (ChainP.supu=u is-sup)) ( ordtrans<-≤ u<b b≤z ) 536 su<z = subst (λ k → k o< z ) (sym (ChainP.supu=u is-sup)) ( ordtrans<-≤ u<b b≤z )
537 z52 : supf (supf b) ≡ supf b 537 z52 : supf (supf b) ≡ supf b
538 z52 = sup=u asupf sfb≤x ⟪ record { x≤sup = z54 } , IsMinSUP→NotHasPrev asupf z54 ( λ ax → proj1 (mf< _ ax)) ⟫ 538 z52 = sup=u asupf sfb≤x ⟪ record { x≤sup = z54 } , IsMinSUP→NotHasPrev asupf z54 ( λ ax → proj1 (mf< _ ax)) ⟫
539
540 fc-inject : {x y : Ordinal } → (mf< : <-monotonic-f A f) → x o≤ z → y o≤ z → supf x o< z → supf y o< z
541 → { wx wy : Ordinal} → FClosure A f (supf x) wx → FClosure A f (supf y) wy → wx ≡ wy → supf x ≡ supf y
542 fc-inject mf< x≤z y≤z sx<z sy<z = ? where
543 z53 : {x y : Ordinal } → supf x o< supf y → FClosure A f (supf x) wx → wx << supf y
544 z53 = ?
545
546 539
547 supf-unique : ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) 540 supf-unique : ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f)
548 {y xa xb : Ordinal} → (ay : odef A y) → (xa o≤ xb ) → (za : ZChain A f mf ay xa ) (zb : ZChain A f mf ay xb ) 541 {y xa xb : Ordinal} → (ay : odef A y) → (xa o≤ xb ) → (za : ZChain A f mf ay xa ) (zb : ZChain A f mf ay xb )
549 → {z : Ordinal } → z o≤ xa → ZChain.supf za z ≡ ZChain.supf zb z 542 → {z : Ordinal } → z o≤ xa → ZChain.supf za z ≡ ZChain.supf zb z
550 supf-unique A f mf {y} {xa} {xb} ay xa≤xb za zb {z} z≤xa = TransFinite0 {λ z → z o≤ xa → ZChain.supf za z ≡ ZChain.supf zb z } ind z z≤xa where 543 supf-unique A f mf {y} {xa} {xb} ay xa≤xb za zb {z} z≤xa = TransFinite0 {λ z → z o≤ xa → ZChain.supf za z ≡ ZChain.supf zb z } ind z z≤xa where
777 770
778 -- 771 --
779 -- maximality of chain 772 -- maximality of chain
780 -- 773 --
781 -- supf is fixed for z ≡ & A , we can prove order and is-max 774 -- supf is fixed for z ≡ & A , we can prove order and is-max
782 -- 775 -- we have supf-unique now, it is provable in the first Tranfinte induction
783 776
784 SZ1 : ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) (mf< : <-monotonic-f A f) 777 SZ1 : ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) (mf< : <-monotonic-f A f)
785 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) (x : Ordinal) → x o≤ & A → ZChain1 A f mf ay zc x 778 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) (x : Ordinal) → x o≤ & A → ZChain1 A f mf ay zc x
786 SZ1 f mf mf< {y} ay zc x x≤A = zc1 x x≤A where 779 SZ1 f mf mf< {y} ay zc x x≤A = zc1 x x≤A where
787 chain-mono1 : {a b c : Ordinal} → a o≤ b 780 chain-mono1 : {a b c : Ordinal} → a o≤ b
1339 ... | refl = ⊥-elim (¬sp=x zcsup ) 1332 ... | refl = ⊥-elim (¬sp=x zcsup )
1340 zc31 (case2 hasPrev ) with zc30 1333 zc31 (case2 hasPrev ) with zc30
1341 ... | refl = ⊥-elim ( proj2 is-sup record { ax = HasPrev.ax hasPrev ; y = HasPrev.y hasPrev 1334 ... | refl = ⊥-elim ( proj2 is-sup record { ax = HasPrev.ax hasPrev ; y = HasPrev.y hasPrev
1342 ; ay = ? ; x=fy = HasPrev.x=fy hasPrev } ) 1335 ; ay = ? ; x=fy = HasPrev.x=fy hasPrev } )
1343 1336
1344 ... | no lim = zc5 where 1337 ... | no lim = ? where
1345 1338
1346 pzc : {z : Ordinal} → z o< x → ZChain A f mf ay z 1339 pzc : {z : Ordinal} → z o< x → ZChain A f mf ay z
1347 pzc {z} z<x = prev z z<x 1340 pzc {z} z<x = prev z z<x
1348 1341
1349 ysp = MinSUP.sup (ysup f mf ay) 1342 ysp = MinSUP.sup (ysup f mf ay)
1426 supf-mono {x} {y} x≤y with trio< y x 1419 supf-mono {x} {y} x≤y with trio< y x
1427 ... | tri< a ¬b ¬c = ? 1420 ... | tri< a ¬b ¬c = ?
1428 ... | tri≈ ¬a b ¬c = ? 1421 ... | tri≈ ¬a b ¬c = ?
1429 ... | tri> ¬a ¬b c = ? 1422 ... | tri> ¬a ¬b c = ?
1430 1423
1431 zc5 : ZChain A f mf ay x 1424 cfcs : (mf< : <-monotonic-f A f) {a b w : Ordinal }
1432 zc5 = ? where 1425 → a o< b → b o≤ x → supf1 a o< x → FClosure A f (supf1 a) w → odef (UnionCF A f mf ay supf1 b) w
1433 cfcs : (mf< : <-monotonic-f A f) {a b w : Ordinal } 1426 cfcs mf< {a} {b} {w} a<b b≤x sa<x fc with osuc-≡< b≤x
1434 → a o< b → b o≤ x → supf1 a o< x → FClosure A f (supf1 a) w → odef (UnionCF A f mf ay supf1 b) w 1427 ... | case1 b=x with trio< a x
1435 cfcs mf< {a} {b} {w} a<b b≤x sa<x fc with trio< a x 1428 ... | tri< a<x ¬b ¬c = zc40 where
1436 ... | tri< a<x ¬b ¬c = zc40 where 1429 sa = ZChain.supf (pzc (ob<x lim a<x)) a
1437 sa = ZChain.supf (pzc (ob<x lim a<x)) a 1430 m = omax a sa
1438 m = omax a sa 1431 m<x : m o< x
1439 m<x : m o< x 1432 m<x with trio< a sa | inspect (omax a) sa
1440 m<x with trio< a sa | inspect (omax a) sa 1433 ... | tri< a<sa ¬b ¬c | record { eq = eq } = ob<x lim sa<x
1441 ... | tri< a<sa ¬b ¬c | record { eq = eq } = ob<x lim sa<x 1434 ... | tri≈ ¬a a=sa ¬c | record { eq = eq } = subst (λ k → k o< x) eq zc41 where
1442 ... | tri≈ ¬a a=sa ¬c | record { eq = eq } = subst (λ k → k o< x) eq zc41 where 1435 zc41 : omax a sa o< x
1443 zc41 : omax a sa o< x 1436 zc41 = osucprev ( begin
1444 zc41 = osucprev ( begin 1437 osuc ( omax a sa ) ≡⟨ cong (λ k → osuc (omax a k)) (sym a=sa) ⟩
1445 osuc ( omax a sa ) ≡⟨ cong (λ k → osuc (omax a k)) (sym a=sa) ⟩ 1438 osuc ( omax a a ) ≡⟨ cong osuc (omxx _) ⟩
1446 osuc ( omax a a ) ≡⟨ cong osuc (omxx _) ⟩ 1439 osuc ( osuc a ) ≤⟨ o<→≤ (ob<x lim (ob<x lim a<x)) ⟩
1447 osuc ( osuc a ) ≤⟨ o<→≤ (ob<x lim (ob<x lim a<x)) ⟩ 1440 x ∎ ) where open o≤-Reasoning O
1448 x ∎ ) where open o≤-Reasoning O 1441 ... | tri> ¬a ¬b c | record { eq = eq } = ob<x lim a<x
1449 ... | tri> ¬a ¬b c | record { eq = eq } = ob<x lim a<x 1442 sam = ZChain.supf (pzc (ob<x lim m<x)) a
1450 sam = ZChain.supf (pzc (ob<x lim m<x)) a 1443 zc42 : osuc a o≤ osuc m
1451 zc42 : osuc a o≤ osuc m 1444 zc42 = osucc (o<→≤ ( omax-x _ _ ) )
1452 zc42 = osucc (o<→≤ ( omax-x _ _ ) ) 1445 sam<m : sam o< m
1453 sam<m : sam o< m 1446 sam<m = subst (λ k → k o< m ) (supf-unique A f mf ay zc42 (pzc (ob<x lim a<x)) (pzc (ob<x lim m<x)) (o<→≤ <-osuc)) ( omax-y _ _ )
1454 sam<m = subst (λ k → k o< m ) (supf-unique A f mf ay zc42 (pzc (ob<x lim a<x)) (pzc (ob<x lim m<x)) (o<→≤ <-osuc)) ( omax-y _ _ ) 1447 fcm : FClosure A f (ZChain.supf (pzc (ob<x lim m<x)) a) w
1455 fcm : FClosure A f (ZChain.supf (pzc (ob<x lim m<x)) a) w 1448 fcm = subst (λ k → FClosure A f k w ) (zeq (ob<x lim a<x) (ob<x lim m<x) zc42 (o<→≤ <-osuc) ) fc
1456 fcm = subst (λ k → FClosure A f k w ) (zeq (ob<x lim a<x) (ob<x lim m<x) zc42 (o<→≤ <-osuc) ) fc 1449 zcm : odef (UnionCF A f mf ay (ZChain.supf (pzc (ob<x lim m<x))) (osuc (omax a sa))) w
1457 zc40 : odef (UnionCF A f mf ay supf1 b) w 1450 zcm = ZChain.cfcs (pzc (ob<x lim m<x)) mf< (o<→≤ (omax-x _ _)) o≤-refl (o<→≤ sam<m) fcm
1458 zc40 with ZChain.cfcs (pzc (ob<x lim m<x)) mf< (o<→≤ (omax-x _ _)) o≤-refl (o<→≤ sam<m) fcm 1451 zc40 : odef (UnionCF A f mf ay supf1 b) w
1459 ... | ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫ 1452 zc40 with ZChain.cfcs (pzc (ob<x lim m<x)) mf< (o<→≤ (omax-x _ _)) o≤-refl (o<→≤ sam<m) fcm
1460 ... | ⟪ az , ch-is-sup u u<x is-sup fc1 ⟫ = ⟪ az , ch-is-sup u u<b ? fc2 ⟫ where -- u o< px → u o< b ? 1453 ... | ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫
1461 zc55 : u o< osuc m 1454 ... | ⟪ az , ch-is-sup u u<x is-sup fc1 ⟫ = ⟪ az , ch-is-sup u u<b ? fc2 ⟫ where -- u o< px → u o< b ?
1462 zc55 = u<x 1455 zc55 : u o< osuc m
1463 zc56 : u ≡ supf1 a 1456 zc55 = u<x
1464 zc56 = ? 1457 zc56 : u ≡ supf1 a
1465 u<b : u o< b -- b o≤ u → b o≤ a -- u ≡ supf1 a 1458 zc56 = ?
1466 u<b = ? 1459 u<b : u o< b -- b o≤ u → b o≤ a -- u ≡ supf1 a
1467 fc1m : FClosure A f (ZChain.supf (pzc (ob<x lim m<x)) u) w 1460 u<b = ?
1468 fc1m = fc1 1461 fc1m : FClosure A f (ZChain.supf (pzc (ob<x lim m<x)) u) w
1469 fc2 : FClosure A f (supf1 u) w 1462 fc1m = fc1
1470 fc2 = subst (λ k → FClosure A f k w) (trans (sym (zeq _ _ zc57 (o<→≤ <-osuc))) (sym (sf1=sf (ordtrans≤-< u<x m<x))) ) fc1 where 1463 fc1a : FClosure A f (ZChain.supf (pzc (ob<x lim a<x)) a) w
1471 zc57 : osuc u o≤ osuc m 1464 fc1a = fc
1472 zc57 = osucc u<x 1465 fc2 : FClosure A f (supf1 u) w
1473 fc1a : FClosure A f (ZChain.supf (pzc (ob<x lim a<x)) a) w 1466 fc2 = subst (λ k → FClosure A f k w) (trans (sym (zeq _ _ zc57 (o<→≤ <-osuc))) (sym (sf1=sf (ordtrans≤-< u<x m<x))) ) fc1 where
1474 fc1a = fc 1467 zc57 : osuc u o≤ osuc m
1475 ... | tri≈ ¬a b ¬c = ⊥-elim ( ¬a (ordtrans<-≤ a<b b≤x)) 1468 zc57 = osucc u<x
1476 ... | tri> ¬a ¬b c = ⊥-elim ( ¬a (ordtrans<-≤ a<b b≤x)) 1469 ... | tri≈ ¬a b ¬c = ⊥-elim ( ¬a (ordtrans<-≤ a<b b≤x))
1477 1470 ... | tri> ¬a ¬b c = ⊥-elim ( ¬a (ordtrans<-≤ a<b b≤x))
1471 cfcs mf< {a} {b} {w} a<b b≤x sa<x fc | case2 b<x = zc40 where
1472 zcb : odef (UnionCF A f mf ay (ZChain.supf (pzc (ob<x lim b<x))) b) w
1473 zcb = ZChain.cfcs (pzc (ob<x lim b<x)) mf< ? ? ? ?
1474 zc40 : odef (UnionCF A f mf ay supf1 b) w
1475 zc40 with zcb
1476 ... | ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫
1477 ... | ⟪ az , ch-is-sup u u<x is-sup fc1 ⟫ = ⟪ az , ch-is-sup u ? ? ? ⟫
1478
1478 --- 1479 ---
1479 --- the maximum chain has fix point of any ≤-monotonic function 1480 --- the maximum chain has fix point of any ≤-monotonic function
1480 --- 1481 ---
1481 1482
1482 SZ : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) → {y : Ordinal} (ay : odef A y) → (x : Ordinal) → ZChain A f mf ay x 1483 SZ : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) → {y : Ordinal} (ay : odef A y) → (x : Ordinal) → ZChain A f mf ay x