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