comparison src/zorn.agda @ 924:a48dc906796c

supf usp0 instead of supf (& A) ?
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 19 Oct 2022 09:10:27 +0900
parents 85f6238a38db
children babd8ac79a91
comparison
equal deleted inserted replaced
923:85f6238a38db 924:a48dc906796c
1314 → IsTotalOrderSet (UnionZF f mf ay supf ) 1314 → IsTotalOrderSet (UnionZF f mf ay supf )
1315 uztotal f mf ay sz {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where 1315 uztotal f mf ay sz {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where
1316 uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) ) 1316 uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) )
1317 uz01 = ? 1317 uz01 = ?
1318 1318
1319 sp0 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {x y : Ordinal} (ay : odef A y) 1319 usp0 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {x y : Ordinal} (ay : odef A y)
1320 → ( supf : Ordinal → Ordinal ) 1320 → ( supf : Ordinal → Ordinal )
1321 → SUP A (UnionZF f mf ay supf ) 1321 → SUP A (UnionZF f mf ay supf )
1322 -- sp0 f mf {x} ay = supP (UnionZF f mf ay ) (λ lt → proj1 (ZChainP.zc lt)) (uztotal f mf ay) 1322 usp0 f mf {x} ay supf = supP (UnionZF f mf ay supf ) (λ lt → ? ) (uztotal f mf ay supf )
1323 sp0 f mf {x} ay supf = supP (UnionZF f mf ay supf ) (λ lt → ? ) (uztotal f mf ay supf ) 1323
1324 1324 sp0 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {x y : Ordinal} (ay : odef A y)
1325 sp00 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {x y : Ordinal} (ay : odef A y)
1326 → (zc : ZChain A f mf ay x ) 1325 → (zc : ZChain A f mf ay x )
1327 → SUP A (UnionCF A f mf ay (ZChain.supf zc) x) 1326 → SUP A (UnionCF A f mf ay (ZChain.supf zc) x)
1328 sp00 f mf {x} ay zc = supP (UnionCF A f mf ay (ZChain.supf zc) x) (ZChain.chain⊆A zc) ztotal where 1327 sp0 f mf {x} ay zc = supP (UnionCF A f mf ay (ZChain.supf zc) x) (ZChain.chain⊆A zc) ztotal where
1329 ztotal : IsTotalOrderSet (ZChain.chain zc) 1328 ztotal : IsTotalOrderSet (ZChain.chain zc)
1330 ztotal {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where 1329 ztotal {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where
1331 uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) ) 1330 uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) )
1332 uz01 = chain-total A f mf ay (ZChain.supf zc) ( (proj2 ca)) ( (proj2 cb)) 1331 uz01 = chain-total A f mf ay (ZChain.supf zc) ( (proj2 ca)) ( (proj2 cb))
1333 1332
1334 fixpoint : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) 1333 fixpoint : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) (zc : ZChain A f mf as0 (& A) )
1335 → f (& (SUP.sup (sp0 f mf as0 ? ))) ≡ & (SUP.sup (sp0 f mf as0 ? )) 1334 → f (& (SUP.sup (sp0 f mf as0 zc ))) ≡ & (SUP.sup (sp0 f mf as0 zc ))
1336 fixpoint f mf = z14 where 1335 fixpoint f mf zc = z14 where
1337 chain = UnionZF f mf as0 ? 1336 chain = ZChain.chain zc
1338 supf : Ordinal → Ordinal 1337 supf = ZChain.supf zc
1339 supf = ? 1338 sp1 : SUP A chain
1340 sp1 : SUP A ? 1339 sp1 = sp0 f mf as0 zc
1341 sp1 = sp0 f mf as0 ?
1342 z10 : {a b : Ordinal } → (ca : odef chain a ) → supf b o< supf (& A) → (ab : odef A b ) 1340 z10 : {a b : Ordinal } → (ca : odef chain a ) → supf b o< supf (& A) → (ab : odef A b )
1343 → HasPrev A chain b f ∨ IsSup A chain {b} ab 1341 → HasPrev A chain b f ∨ IsSup A chain {b} ab
1344 → * a < * b → odef chain b 1342 → * a < * b → odef chain b
1345 z10 = ? -- ZChain1.is-max (SZ1 f mf as0 zc (& A) ) 1343 z10 = ZChain1.is-max (SZ1 f mf as0 zc (& A) )
1346 z22 : & (SUP.sup sp1) o< & A 1344 z22 : & (SUP.sup sp1) o< & A
1347 z22 = c<→o< ( SUP.as sp1 ) 1345 z22 = c<→o< ( SUP.as sp1 )
1348 z21 : supf (& (SUP.sup sp1)) o< supf (& A) 1346 z21 : supf (& (SUP.sup sp1)) o< supf (& A)
1349 z21 = ? 1347 z21 = ?
1350 -- z21 : supf (& (SUP.sup sp1)) o< & A 1348 -- z21 : supf (& (SUP.sup sp1)) o< & A
1351 -- z21 = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k) (sym &iso) (ZChain.asupf zc ) )) 1349 -- z21 = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k) (sym &iso) (ZChain.asupf zc ) ))
1352 z12 : odef chain (& (SUP.sup sp1)) 1350 z12 : odef chain (& (SUP.sup sp1))
1353 z12 with o≡? (& s) (& (SUP.sup sp1)) 1351 z12 with o≡? (& s) (& (SUP.sup sp1))
1354 ... | yes eq = subst (λ k → odef chain k) eq ? -- ( ZChain.chain∋init zc ) 1352 ... | yes eq = subst (λ k → odef chain k) eq ( ZChain.chain∋init zc )
1355 ... | no ne = ? where -- ZChain1.is-max (SZ1 f mf as0 zc (& A)) {& s} {& (SUP.sup sp1)} ( ZChain.chain∋init zc ) z21 (SUP.as sp1) 1353 ... | no ne = ZChain1.is-max (SZ1 f mf as0 zc (& A)) {& s} {& (SUP.sup sp1)} ( ZChain.chain∋init zc ) z21 (SUP.as sp1)
1356 -- (case2 ? ) z13 where 1354 (case2 z19 ) z13 where
1357 z13 : * (& s) < * (& (SUP.sup sp1)) 1355 z13 : * (& s) < * (& (SUP.sup sp1))
1358 z13 with SUP.x<sup sp1 ? 1356 z13 with SUP.x<sup sp1 ( ZChain.chain∋init zc )
1359 ... | case1 eq = ⊥-elim ( ne (cong (&) eq) ) 1357 ... | case1 eq = ⊥-elim ( ne (cong (&) eq) )
1360 ... | case2 lt = subst₂ (λ j k → j < k ) (sym *iso) (sym *iso) lt 1358 ... | case2 lt = subst₂ (λ j k → j < k ) (sym *iso) (sym *iso) lt
1361 z19 : IsSup A chain {& (SUP.sup sp1)} (SUP.as sp1) 1359 z19 : IsSup A chain {& (SUP.sup sp1)} (SUP.as sp1)
1362 z19 = record { x<sup = z20 } where 1360 z19 = record { x<sup = z20 } where
1363 z20 : {y : Ordinal} → odef chain y → (y ≡ & (SUP.sup sp1)) ∨ (y << & (SUP.sup sp1)) 1361 z20 : {y : Ordinal} → odef chain y → (y ≡ & (SUP.sup sp1)) ∨ (y << & (SUP.sup sp1))
1364 z20 {y} zy with SUP.x<sup sp1 ? 1362 z20 {y} zy with SUP.x<sup sp1 (subst (λ k → odef chain k ) (sym &iso) zy)
1365 ... | case1 y=p = case1 (subst (λ k → k ≡ _ ) &iso ( cong (&) y=p )) 1363 ... | case1 y=p = case1 (subst (λ k → k ≡ _ ) &iso ( cong (&) y=p ))
1366 ... | case2 y<p = case2 (subst (λ k → * y < k ) (sym *iso) y<p ) 1364 ... | case2 y<p = case2 (subst (λ k → * y < k ) (sym *iso) y<p )
1367 z14 : f (& (SUP.sup (sp0 f mf as0 ? ))) ≡ & (SUP.sup (sp0 f mf as0 ? )) 1365 ztotal : IsTotalOrderSet (ZChain.chain zc)
1368 z14 = ? -- with ? 1366 ztotal {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where
1369 -- ... | tri< a ¬b ¬c = ⊥-elim z16 where 1367 uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) )
1370 -- z16 : ⊥ 1368 uz01 = chain-total A f mf as0 supf ( (proj2 ca)) ( (proj2 cb))
1371 -- z16 with proj1 (mf (& ( SUP.sup sp1)) ( SUP.as sp1 )) 1369 z14 : f (& (SUP.sup (sp0 f mf as0 zc ))) ≡ & (SUP.sup (sp0 f mf as0 zc ))
1372 -- ... | case1 eq = ⊥-elim (¬b (subst₂ (λ j k → j ≡ k ) refl *iso (sym eq) )) 1370 z14 with ztotal (subst (λ k → odef chain k) (sym &iso) (ZChain.f-next zc z12 )) z12
1373 -- ... | case2 lt = ⊥-elim (¬c (subst₂ (λ j k → k < j ) refl *iso lt )) 1371 ... | tri< a ¬b ¬c = ⊥-elim z16 where
1374 -- ... | tri≈ ¬a b ¬c = subst ( λ k → k ≡ & (SUP.sup sp1) ) &iso ( cong (&) b ) 1372 z16 : ⊥
1375 -- ... | tri> ¬a ¬b c = ⊥-elim z17 where 1373 z16 with proj1 (mf (& ( SUP.sup sp1)) ( SUP.as sp1 ))
1376 -- z15 : (* (f ( & ( SUP.sup sp1 ))) ≡ SUP.sup sp1) ∨ (* (f ( & ( SUP.sup sp1 ))) < SUP.sup sp1) 1374 ... | case1 eq = ⊥-elim (¬b (subst₂ (λ j k → j ≡ k ) refl *iso (sym eq) ))
1377 -- z15 = SUP.x<sup sp1 ? -- (subst (λ k → odef chain k ) (sym &iso) (ZChain.f-next zc z12 )) 1375 ... | case2 lt = ⊥-elim (¬c (subst₂ (λ j k → k < j ) refl *iso lt ))
1378 -- z17 : ⊥ 1376 ... | tri≈ ¬a b ¬c = subst ( λ k → k ≡ & (SUP.sup sp1) ) &iso ( cong (&) b )
1379 -- z17 with z15 1377 ... | tri> ¬a ¬b c = ⊥-elim z17 where
1380 -- ... | case1 eq = ¬b eq 1378 z15 : (* (f ( & ( SUP.sup sp1 ))) ≡ SUP.sup sp1) ∨ (* (f ( & ( SUP.sup sp1 ))) < SUP.sup sp1)
1381 -- ... | case2 lt = ¬a lt 1379 z15 = SUP.x<sup sp1 (subst (λ k → odef chain k ) (sym &iso) (ZChain.f-next zc z12 ))
1380 z17 : ⊥
1381 z17 with z15
1382 ... | case1 eq = ¬b eq
1383 ... | case2 lt = ¬a lt
1384
1382 1385
1383 -- ZChain contradicts ¬ Maximal 1386 -- ZChain contradicts ¬ Maximal
1384 -- 1387 --
1385 -- ZChain forces fix point on any ≤-monotonic function (fixpoint) 1388 -- ZChain forces fix point on any ≤-monotonic function (fixpoint)
1386 -- ¬ Maximal create cf which is a <-monotonic function by axiom of choice. This contradicts fix point of ZChain 1389 -- ¬ Maximal create cf which is a <-monotonic function by axiom of choice. This contradicts fix point of ZChain
1387 -- 1390 --
1388 z04 : (nmx : ¬ Maximal A ) → ⊥ 1391
1389 z04 nmx = ? where -- <-irr0 ? ? 1392 z04 : (nmx : ¬ Maximal A ) → (zc : ZChain A (cf nmx) (cf-is-≤-monotonic nmx) as0 (& A)) → ⊥
1390 --(case1 ?) -- x ≡ f x ̄ 1393 z04 nmx zc = <-irr0 {* (cf nmx c)} {* c} (subst (λ k → odef A k ) (sym &iso) (proj1 (is-cf nmx (SUP.as sp1 ))))
1391 -- ? where -- x < f x 1394 (subst (λ k → odef A (& k)) (sym *iso) (SUP.as sp1) )
1392 sp1 : SUP A ? 1395 (case1 ( cong (*)( fixpoint (cf nmx) (cf-is-≤-monotonic nmx ) zc ))) -- x ≡ f x ̄
1393 sp1 = sp0 (cf nmx) (cf-is-≤-monotonic nmx) as0 ? 1396 (proj1 (cf-is-<-monotonic nmx c (SUP.as sp1 ))) where -- x < f x
1394 z041 : ? 1397 sp1 : SUP A (ZChain.chain zc)
1395 z041 = cong (*)( fixpoint (cf nmx) (cf-is-≤-monotonic nmx ) ) 1398 sp1 = sp0 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc
1396 c = & (SUP.sup sp1) 1399 c = & (SUP.sup sp1)
1397 z042 : ?
1398 z042 = is-cf nmx (SUP.as ? )
1399 z043 = proj1 (cf-is-<-monotonic nmx ? (SUP.as ? ))
1400 zorn00 : Maximal A 1400 zorn00 : Maximal A
1401 zorn00 with is-o∅ ( & HasMaximal ) -- we have no Level (suc n) LEM 1401 zorn00 with is-o∅ ( & HasMaximal ) -- we have no Level (suc n) LEM
1402 ... | no not = record { maximal = ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) ; as = zorn01 ; ¬maximal<x = zorn02 } where 1402 ... | no not = record { maximal = ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) ; as = zorn01 ; ¬maximal<x = zorn02 } where
1403 -- yes we have the maximal 1403 -- yes we have the maximal
1404 zorn03 : odef HasMaximal ( & ( ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) ) ) 1404 zorn03 : odef HasMaximal ( & ( ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) ) )
1405 zorn03 = ODC.x∋minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) -- Axiom of choice 1405 zorn03 = ODC.x∋minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) -- Axiom of choice
1406 zorn01 : A ∋ ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) 1406 zorn01 : A ∋ ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq))
1407 zorn01 = proj1 zorn03 1407 zorn01 = proj1 zorn03
1408 zorn02 : {x : HOD} → A ∋ x → ¬ (ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) < x) 1408 zorn02 : {x : HOD} → A ∋ x → ¬ (ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) < x)
1409 zorn02 {x} ax m<x = proj2 zorn03 (& x) ax (subst₂ (λ j k → j < k) (sym *iso) (sym *iso) m<x ) 1409 zorn02 {x} ax m<x = proj2 zorn03 (& x) ax (subst₂ (λ j k → j < k) (sym *iso) (sym *iso) m<x )
1410 ... | yes ¬Maximal = ⊥-elim ( z04 nmx ) where 1410 ... | yes ¬Maximal = ⊥-elim ( z04 nmx ? ) where
1411 -- if we have no maximal, make ZChain, which contradict SUP condition 1411 -- if we have no maximal, make ZChain, which contradict SUP condition
1412 nmx : ¬ Maximal A 1412 nmx : ¬ Maximal A
1413 nmx mx = ∅< {HasMaximal} zc5 ( ≡o∅→=od∅ ¬Maximal ) where 1413 nmx mx = ∅< {HasMaximal} zc5 ( ≡o∅→=od∅ ¬Maximal ) where
1414 zc5 : odef A (& (Maximal.maximal mx)) ∧ (( y : Ordinal ) → odef A y → ¬ (* (& (Maximal.maximal mx)) < * y)) 1414 zc5 : odef A (& (Maximal.maximal mx)) ∧ (( y : Ordinal ) → odef A y → ¬ (* (& (Maximal.maximal mx)) < * y))
1415 zc5 = ⟪ Maximal.as mx , (λ y ay mx<y → Maximal.¬maximal<x mx (subst (λ k → odef A k ) (sym &iso) ay) (subst (λ k → k < * y) *iso mx<y) ) ⟫ 1415 zc5 = ⟪ Maximal.as mx , (λ y ay mx<y → Maximal.¬maximal<x mx (subst (λ k → odef A k ) (sym &iso) ay) (subst (λ k → k < * y) *iso mx<y) ) ⟫