comparison src/zorn.agda @ 741:adbe43c07ce7

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 21 Jul 2022 03:56:54 +0900
parents 11f46927e3f7
children de9d9c70a0d7
comparison
equal deleted inserted replaced
740:11f46927e3f7 741:adbe43c07ce7
247 field 247 field
248 sup : HOD 248 sup : HOD
249 A∋maximal : A ∋ sup 249 A∋maximal : A ∋ sup
250 x<sup : {x : HOD} → B ∋ x → (x ≡ sup ) ∨ (x < sup ) -- B is Total, use positive 250 x<sup : {x : HOD} → B ∋ x → (x ≡ sup ) ∨ (x < sup ) -- B is Total, use positive
251 251
252 record IsSup>b (A : HOD) (b : Ordinal) (p : Ordinal) : Set n where
253 field
254 x2 : Ordinal
255 ax2 : odef A x2
256 b<x2 : b o< x2
257 is-sup>b : IsSup A (* p) ax2
258 -- 252 --
259 -- sup and its fclosure is in a chain HOD 253 -- sup and its fclosure is in a chain HOD
260 -- chain HOD is sorted by sup as Ordinal and <-ordered 254 -- chain HOD is sorted by sup as Ordinal and <-ordered
261 -- whole chain is a union of separated Chain 255 -- whole chain is a union of separated Chain
262 -- minimum index is y not ϕ 256 -- minimum index is y not ϕ
265 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 259 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
266 field 260 field
267 fcy<sup : {z : Ordinal } → FClosure A f y z → z << supf u 261 fcy<sup : {z : Ordinal } → FClosure A f y z → z << supf u
268 csupz : FClosure A f (supf u) z 262 csupz : FClosure A f (supf u) z
269 order : {sup1 z1 : Ordinal} → (lt : sup1 o< u ) → FClosure A f (supf sup1 ) z1 → z1 << supf u 263 order : {sup1 z1 : Ordinal} → (lt : sup1 o< u ) → FClosure A f (supf sup1 ) z1 → z1 << supf u
270
271 -- u>0 : o∅ o< u -- ¬ ch-init
272 -- supf=u : supf u ≡ u
273 -- supf-mono : {a b : Ordinal } → a o≤ b → supf a o≤ supf b
274 -- supf-< : {a b : Ordinal } → a o≤ b → (supf a ≡ supf b) ∨ (supf a << supf b)
275 -- au : odef A u
276 -- ¬u=fx : {x : Ordinal} → ¬ ( u ≡ f x )
277 -- asup : (x : Ordinal) → odef A (supf x)
278
279 264
280 data Chain (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal) : Ordinal → Ordinal → Set n where 265 data Chain (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal) : Ordinal → Ordinal → Set n where
281 ch-init : (z : Ordinal) → FClosure A f y z → Chain A f mf ay supf o∅ z 266 ch-init : (z : Ordinal) → FClosure A f y z → Chain A f mf ay supf o∅ z
282 ch-is-sup : {sup z : Ordinal } 267 ch-is-sup : {sup z : Ordinal }
283 → ( is-sup : ChainP A f mf ay supf sup z) 268 → ( is-sup : ChainP A f mf ay supf sup z)
311 chain⊆A : chain ⊆' A 296 chain⊆A : chain ⊆' A
312 chain∋init : odef chain init 297 chain∋init : odef chain init
313 initial : {y : Ordinal } → odef chain y → * init ≤ * y 298 initial : {y : Ordinal } → odef chain y → * init ≤ * y
314 f-next : {a : Ordinal } → odef chain a → odef chain (f a) 299 f-next : {a : Ordinal } → odef chain a → odef chain (f a)
315 f-total : IsTotalOrderSet chain 300 f-total : IsTotalOrderSet chain
316 sup=u : {b : Ordinal} → (ab : odef A b) → IsSup A chain ab → supf b ≡ b 301 sup=u : {b : Ordinal} → {ab : odef A b} → b o< z → IsSup A chain ab → supf b ≡ b
317 -- chain<A : {z : Ordinal } → UnionCF A f mf ay supf z ⊆' UnionCF A f mf ay supf (& A) 302 order : {sup1 b z1 : Ordinal} → b o< z → sup1 o< b → FClosure A f (supf sup1) z1 → z1 << supf b
318 303
319 record ZChain1 ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) 304 record ZChain1 ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f)
320 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) ( z : Ordinal ) : Set (Level.suc n) where 305 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) ( z : Ordinal ) : Set (Level.suc n) where
321 field 306 field
322 chain-mono2 : { a b c : Ordinal } → 307 chain-mono2 : { a b c : Ordinal } →
323 a o≤ b → b o≤ z → odef (UnionCF A f mf ay (ZChain.supf zc) a) c → odef (UnionCF A f mf ay (ZChain.supf zc) b) c 308 a o≤ b → b o≤ z → odef (UnionCF A f mf ay (ZChain.supf zc) a) c → odef (UnionCF A f mf ay (ZChain.supf zc) b) c
324 is-max : {a b : Ordinal } → (ca : odef (UnionCF A f mf ay (ZChain.supf zc) z) a ) → b o< z → (ab : odef A b) 309 is-max : {a b : Ordinal } → (ca : odef (UnionCF A f mf ay (ZChain.supf zc) z) a ) → b o< z → (ab : odef A b)
325 → HasPrev A (UnionCF A f mf ay (ZChain.supf zc) z) ab f ∨ IsSup A (UnionCF A f mf ay (ZChain.supf zc) z) ab 310 → HasPrev A (UnionCF A f mf ay (ZChain.supf zc) z) ab f ∨ IsSup A (UnionCF A f mf ay (ZChain.supf zc) z) ab
326 → * a < * b → odef ((UnionCF A f mf ay (ZChain.supf zc) z)) b 311 → * a < * b → odef ((UnionCF A f mf ay (ZChain.supf zc) z)) b
312 fcy<sup : {u w : Ordinal } → u o< z → FClosure A f init w → w << (ZChain.supf zc) u
327 313
328 record Maximal ( A : HOD ) : Set (Level.suc n) where 314 record Maximal ( A : HOD ) : Set (Level.suc n) where
329 field 315 field
330 maximal : HOD 316 maximal : HOD
331 A∋maximal : A ∋ maximal 317 A∋maximal : A ∋ maximal
498 is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) a → 484 is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) a →
499 b o< x → (ab : odef A b) → 485 b o< x → (ab : odef A b) →
500 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 → 486 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 →
501 * a < * b → odef (UnionCF A f mf ay (ZChain.supf zc) x) b 487 * a < * b → odef (UnionCF A f mf ay (ZChain.supf zc) x) b
502 is-max {a} {b} ua b<x ab (case1 has-prev) a<b = is-max-hp x {a} {b} ua b<x ab has-prev a<b 488 is-max {a} {b} ua b<x ab (case1 has-prev) a<b = is-max-hp x {a} {b} ua b<x ab has-prev a<b
503 is-max {a} {b} ua b<x ab (case2 is-sup) a<b = chain-mono2 x ? o≤-refl m04 where 489 is-max {a} {b} ua b<x ab (case2 is-sup) a<b = chain-mono2 x (o<→≤ ob<x) o≤-refl m04 where
504 m12 : {sup1 z1 : Ordinal} → sup1 o< b → FClosure A f (ZChain.supf zc sup1) z1 → odef (UnionCF A f mf ay (ZChain.supf zc) x) z1 490 ob<x : osuc b o< x
505 m12 = ? 491 ob<x with trio< (osuc b) x
506 m11 : {sup1 z1 : Ordinal} → sup1 o< b → FClosure A f (ZChain.supf zc sup1) z1 → z1 << ZChain.supf zc b 492 ... | tri< a ¬b ¬c = a
507 m11 {sup1} {z1} s<b fc with IsSup.x<sup is-sup (m12 s<b fc) 493 ... | tri≈ ¬a ob=x ¬c = ⊥-elim ( lim record { op = b ; oprev=x = ob=x } )
508 ... | t = ? 494 ... | tri> ¬a ¬b c = ⊥-elim ( ¬p<x<op ⟪ b<x , c ⟫ )
509 m07 : {z : Ordinal} → FClosure A f y z → z << ZChain.supf zc b 495 m07 : {z : Ordinal} → FClosure A f y z → z << ZChain.supf zc b
510 m07 {y} (init ay1) = ? 496 m07 {z} fc = ZChain1.fcy<sup (prev (osuc b) ob<x) <-osuc fc
511 m07 {.(f x)} (fsuc x fc) with proj1 (mf x (A∋fc y f mf fc)) 497 m08 : {sup1 z1 : Ordinal} → sup1 o< b → FClosure A f (ZChain.supf zc sup1) z1 → z1 << ZChain.supf zc b
512 ... | case1 eq = subst ( λ k → k << ZChain.supf zc b) (subst₂ (λ j k → j ≡ k) &iso &iso (cong (&) eq)) (m07 fc) 498 m08 = ?
513 ... | case2 lt with ODC.p∨¬p O ( f x << ZChain.supf zc b )
514 ... | case1 p = p
515 ... | case2 np = ? where
516 m08 : x << ZChain.supf zc b
517 m08 = m07 fc
518 m09 : ⊥
519 m09 = fcn-imm y f mf ? ? ⟪ m08 , ? ⟫
520 m10 : ? ∨ ( ? << b )
521 m10 = IsSup.x<sup is-sup ? -- (proj2 (mf x (A∋fc y f mf fc)))
522 m05 : b ≡ ZChain.supf zc b 499 m05 : b ≡ ZChain.supf zc b
523 m10 : {sup1 z1 : Ordinal} → sup1 o< b → FClosure A f (ZChain.supf zc sup1) z1 → z1 << ZChain.supf zc b 500 m05 = sym (ZChain.sup=u zc {_} {ab} ?
524 m05 = sym (ZChain.sup=u ? ab is-sup) -- ZChain on x 501 record { x<sup = λ lt → IsSup.x<sup is-sup (chain-mono2 x (o<→≤ ob<x) o≤-refl ? )} ) -- ZChain on x
525 m06 : ChainP A f mf ay (ZChain.supf zc) b b 502 m06 : ChainP A f mf ay (ZChain.supf zc) b b
526 m06 = record { fcy<sup = ? ; csupz = subst (λ k → FClosure A f k b ) m05 (init ab) ; order = ? } 503 m06 = record { fcy<sup = m07 ; csupz = subst (λ k → FClosure A f k b ) m05 (init ab) ; order = m08 }
527 m04 : odef (UnionCF A f mf ay (ZChain.supf zc) (osuc b)) b 504 m04 : odef (UnionCF A f mf ay (ZChain.supf zc) (osuc b)) b
528 m04 = ⟪ ab , record { u = b ; u<x = case1 <-osuc ; uchain = ch-is-sup m06 (subst (λ k → FClosure A f k b) m05 (init ab)) } ⟫ 505 m04 = ⟪ ab , record { u = b ; u<x = case1 <-osuc ; uchain = ch-is-sup m06 (subst (λ k → FClosure A f k b) m05 (init ab)) } ⟫
529 506
530 --- 507 ---
531 --- the maximum chain has fix point of any ≤-monotonic function 508 --- the maximum chain has fix point of any ≤-monotonic function