comparison src/zorn.agda @ 1032:382680c3e9be

minsup is not obvious in ZChain
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 30 Nov 2022 20:43:01 +0900
parents f276cf614fc5
children 2da8dcbb0825
comparison
equal deleted inserted replaced
1031:f276cf614fc5 1032:382680c3e9be
80 80
81 <-irr : {a b : HOD} → (a ≡ b ) ∨ (a < b ) → b < a → ⊥ 81 <-irr : {a b : HOD} → (a ≡ b ) ∨ (a < b ) → b < a → ⊥
82 <-irr {a} {b} (case1 a=b) b<a = IsStrictPartialOrder.irrefl PO (sym a=b) b<a 82 <-irr {a} {b} (case1 a=b) b<a = IsStrictPartialOrder.irrefl PO (sym a=b) b<a
83 <-irr {a} {b} (case2 a<b) b<a = IsStrictPartialOrder.irrefl PO refl 83 <-irr {a} {b} (case2 a<b) b<a = IsStrictPartialOrder.irrefl PO refl
84 (IsStrictPartialOrder.trans PO b<a a<b) 84 (IsStrictPartialOrder.trans PO b<a a<b)
85
86 <<-irr : {a b : Ordinal } → a ≤ b → b << a → ⊥
87 <<-irr {a} {b} (case1 a=b) b<a = IsStrictPartialOrder.irrefl PO (cong (*) (sym a=b)) b<a
88 <<-irr {a} {b} (case2 a<b) b<a = IsStrictPartialOrder.irrefl PO refl (IsStrictPartialOrder.trans PO b<a a<b)
85 89
86 ptrans = IsStrictPartialOrder.trans PO 90 ptrans = IsStrictPartialOrder.trans PO
87 91
88 open _==_ 92 open _==_
89 open _⊆_ 93 open _⊆_
217 221
218 _⊆'_ : ( A B : HOD ) → Set n 222 _⊆'_ : ( A B : HOD ) → Set n
219 _⊆'_ A B = {x : Ordinal } → odef A x → odef B x 223 _⊆'_ A B = {x : Ordinal } → odef A x → odef B x
220 224
221 -- 225 --
222 -- inductive maxmum tree from x 226 -- inductive masum tree from x
223 -- tree structure 227 -- tree structure
224 -- 228 --
225 229
226 record HasPrev (A B : HOD) ( f : Ordinal → Ordinal ) (x : Ordinal ) : Set n where 230 record HasPrev (A B : HOD) ( f : Ordinal → Ordinal ) (x : Ordinal ) : Set n where
227 field 231 field
264 268
265 fc-total : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) (supf : Ordinal → Ordinal ) 269 fc-total : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) (supf : Ordinal → Ordinal )
266 (order : {x y w : Ordinal } → x o< y → FClosure A f (supf x) w → w ≤ supf y) 270 (order : {x y w : Ordinal } → x o< y → FClosure A f (supf x) w → w ≤ supf y)
267 {s s1 a b : Ordinal } ( fa : FClosure A f (supf s) a )( fb : FClosure A f (supf s1) b ) → Tri (* a < * b) (* a ≡ * b) (* b < * a ) 271 {s s1 a b : Ordinal } ( fa : FClosure A f (supf s) a )( fb : FClosure A f (supf s1) b ) → Tri (* a < * b) (* a ≡ * b) (* b < * a )
268 fc-total A f mf supf order {xa} {xb} {a} {b} ca cb with trio< xa xb 272 fc-total A f mf supf order {xa} {xb} {a} {b} ca cb with trio< xa xb
269 ... | tri< a₁ ¬b ¬c with order a₁ ca 273 ... | tri< a₁ ¬b ¬c with ≤-ftrans (order a₁ ca ) (s≤fc (supf xb) f mf cb )
270 ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00 (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where 274 ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00 (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where
271 ct00 : * a ≡ * b 275 ct00 : * a ≡ * b
272 ct00 = ? -- trans (cong (*) eq) eq1 276 ct00 = cong (*) eq1
273 ... | case2 lt = tri< ct02 (λ eq → <-irr (case1 (sym eq)) ct02) (λ lt → <-irr (case2 ct02) lt) where 277 ... | case2 a<b = tri< a<b (λ eq → <-irr (case1 (sym eq)) a<b ) (λ lt → <-irr (case2 a<b ) lt)
274 ct02 : * a < * b 278 fc-total A f mf supf order {xa} {xb} {a} {b} ca cb | tri≈ _ refl _ = fcn-cmp _ f mf ca cb
275 ct02 = ? -- subst (λ k → * k < * b ) (sym eq) lt 279 fc-total A f mf supf order {xa} {xb} {a} {b} ca cb | tri> ¬a ¬b c with ≤-ftrans (order c cb ) (s≤fc (supf xa) f mf ca )
276 fc-total f mf supf {xa} {xb} {a} {b} ca cb | tri≈ a₁ ¬b ¬c = ? 280 ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00 (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where
277 fc-total A f mf supf order {xa} {xb} {a} {b} ca cb | tri> ¬a ¬b c = ? 281 ct00 : * a ≡ * b
282 ct00 = cong (*) (sym eq1)
283 ... | case2 b<a = tri> (λ lt → <-irr (case2 b<a ) lt) (λ eq → <-irr (case1 eq) b<a ) b<a
278 284
279 285
280 ∈∧P→o< : {A : HOD } {y : Ordinal} → {P : Set n} → odef A y ∧ P → y o< & A 286 ∈∧P→o< : {A : HOD } {y : Ordinal} → {P : Set n} → odef A y ∧ P → y o< & A
281 ∈∧P→o< {A } {y} p = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) (proj1 p ))) 287 ∈∧P→o< {A } {y} p = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) (proj1 p )))
282 288
309 ... | case1 eq = ⊥-elim ( o<¬≡ (sym eq) sx<sy ) 315 ... | case1 eq = ⊥-elim ( o<¬≡ (sym eq) sx<sy )
310 ... | case2 lt = ⊥-elim ( o<> sx<sy lt ) 316 ... | case2 lt = ⊥-elim ( o<> sx<sy lt )
311 317
312 record IsMinSUP ( A B : HOD ) (sup : Ordinal) : Set n where 318 record IsMinSUP ( A B : HOD ) (sup : Ordinal) : Set n where
313 field 319 field
314 axm : odef A sup 320 as : odef A sup
315 x≤sup : {x : Ordinal } → odef B x → (x ≡ sup ) ∨ (x << sup ) 321 x≤sup : {x : Ordinal } → odef B x → (x ≡ sup ) ∨ (x << sup )
316 minsup : { sup1 : Ordinal } → odef A sup1 322 minsup : { sup1 : Ordinal } → odef A sup1
317 → ( {x : Ordinal } → odef B x → (x ≡ sup1 ) ∨ (x << sup1 )) → sup o≤ sup1 323 → ( {x : Ordinal } → odef B x → (x ≡ sup1 ) ∨ (x << sup1 )) → sup o≤ sup1
318 324
319 record MinSUP ( A B : HOD ) : Set n where 325 record MinSUP ( A B : HOD ) : Set n where
320 field 326 field
321 sup : Ordinal 327 sup : Ordinal
322 isMinSUP : IsMinSUP A B sup 328 isMinSUP : IsMinSUP A B sup
323 axm = IsMinSUP.axm isMinSUP 329 as = IsMinSUP.as isMinSUP
324 x≤sup = IsMinSUP.x≤sup isMinSUP 330 x≤sup = IsMinSUP.x≤sup isMinSUP
325 minsup = IsMinSUP.minsup isMinSUP 331 minsup = IsMinSUP.minsup isMinSUP
326 332
327 z09 : {b : Ordinal } { A : HOD } → odef A b → b o< & A 333 z09 : {b : Ordinal } { A : HOD } → odef A b → b o< & A
328 z09 {b} {A} ab = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab)) 334 z09 {b} {A} ab = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab))
330 M→S : { A : HOD } { f : Ordinal → Ordinal } {mf : ≤-monotonic-f A f} {y : Ordinal} {ay : odef A y} { x : Ordinal } 336 M→S : { A : HOD } { f : Ordinal → Ordinal } {mf : ≤-monotonic-f A f} {y : Ordinal} {ay : odef A y} { x : Ordinal }
331 → (supf : Ordinal → Ordinal ) 337 → (supf : Ordinal → Ordinal )
332 → MinSUP A (UnionCF A f supf x) 338 → MinSUP A (UnionCF A f supf x)
333 → SUP A (UnionCF A f supf x) 339 → SUP A (UnionCF A f supf x)
334 M→S {A} {f} {mf} {y} {ay} {x} supf ms = record { sup = * (MinSUP.sup ms) 340 M→S {A} {f} {mf} {y} {ay} {x} supf ms = record { sup = * (MinSUP.sup ms)
335 ; isSUP = record { ax = subst (λ k → odef A k) (sym &iso) (MinSUP.axm ms) ; x≤sup = ? } } where 341 ; isSUP = record { ax = subst (λ k → odef A k) (sym &iso) (MinSUP.as ms) ; x≤sup = ms00 } } where
336 msup = MinSUP.sup ms 342 ms00 : {z : Ordinal} → odef (UnionCF A f supf x) z → (z ≡ & (* (MinSUP.sup ms))) ∨ (z << & (* (MinSUP.sup ms)))
337 ms00 : {z : HOD} → UnionCF A f supf x ∋ z → (z ≡ * msup) ∨ (z < * msup)
338 ms00 {z} uz with MinSUP.x≤sup ms uz 343 ms00 {z} uz with MinSUP.x≤sup ms uz
339 ... | case1 eq = case1 (subst (λ k → k ≡ _) *iso ( cong (*) eq)) 344 ... | case1 eq = case1 (subst (λ k → z ≡ k) (sym &iso) eq)
340 ... | case2 lt = case2 (subst₂ (λ j k → j < k ) *iso refl lt ) 345 ... | case2 lt = case2 (subst (λ k → * z < k ) (sym *iso) lt )
341 346
342 347
343 chain-mono : {A : HOD} ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal ) 348 chain-mono : {A : HOD} ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal )
344 (supf-mono : {x y : Ordinal } → x o≤ y → supf x o≤ supf y ) {a b c : Ordinal} → a o≤ b 349 (supf-mono : {x y : Ordinal } → x o≤ y → supf x o≤ supf y ) {a b c : Ordinal} → a o≤ b
345 → odef (UnionCF A f supf a) c → odef (UnionCF A f supf b) c 350 → odef (UnionCF A f supf a) c → odef (UnionCF A f supf b) c
346 chain-mono f mf ay supf supf-mono {a} {b} {c} a≤b ⟪ ua , ch-is-sup u u<x supu=u fc ⟫ = ⟪ ua , ch-is-sup u (ordtrans<-≤ u<x a≤b) supu=u fc ⟫ 351 chain-mono f mf ay supf supf-mono {a} {b} {c} a≤b ⟪ ua , ch-is-sup u u<x supu=u fc ⟫ = ⟪ ua , ch-is-sup u (ordtrans<-≤ u<x a≤b) supu=u fc ⟫
347 352
348 chain-minsup : {A : HOD} ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) (supf : Ordinal → Ordinal )
349 ( order : {x y w : Ordinal } → x o< y → FClosure A f (supf x) w → w ≤ supf y)
350 {x : Ordinal} → IsMinSUP A (UnionCF A f supf x) x
351 chain-minsup = ?
352
353 record ZChain ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) 353 record ZChain ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f)
354 {y : Ordinal} (ay : odef A y) ( z : Ordinal ) : Set (Level.suc n) where 354 {y : Ordinal} (ay : odef A y) ( z : Ordinal ) : Set (Level.suc n) where
355 field 355 field
356 supf : Ordinal → Ordinal 356 supf : Ordinal → Ordinal
357 357
358 sup=u : {b : Ordinal} → (ab : odef A b) → b o≤ z
359 → IsSUP A (UnionCF A f supf b) b ∧ (¬ HasPrev A (UnionCF A f supf b) f b ) → supf b ≡ b
360 cfcs : (mf< : <-monotonic-f A f) 358 cfcs : (mf< : <-monotonic-f A f)
361 {a b w : Ordinal } → a o< b → b o≤ z → supf a o< b → FClosure A f (supf a) w → odef (UnionCF A f supf b) w 359 {a b w : Ordinal } → a o< b → b o≤ z → supf a o< b → FClosure A f (supf a) w → odef (UnionCF A f supf b) w
360 fcy<sup : {w : Ordinal } → FClosure A f y w → (w ≡ supf o∅ ) ∨ ( w << supf o∅ )
362 order : {x y w : Ordinal } → x o< y → FClosure A f (supf x) w → w ≤ supf y 361 order : {x y w : Ordinal } → x o< y → FClosure A f (supf x) w → w ≤ supf y
363 362
364 asupf : {x : Ordinal } → odef A (supf x) 363 asupf : {x : Ordinal } → odef A (supf x)
365 supf-mono : {x y : Ordinal } → x o≤ y → supf x o≤ supf y 364 supf-mono : {x y : Ordinal } → x o≤ y → supf x o≤ supf y
366 supfmax : {x : Ordinal } → z o< x → supf x ≡ supf z 365 supfmax : {x : Ordinal } → z o< x → supf x ≡ supf z
367 supf0 : supf o∅ ≡ y 366
368 367 is-minsup : {x : Ordinal } → (x≤z : x o≤ z) → IsMinSUP A (UnionCF A f supf x) (supf x)
369 minsup : {x : Ordinal } → x o≤ z → MinSUP A (UnionCF A f supf x) 368 sup=u : {b : Ordinal} → (ab : odef A b) → b o≤ z
370 supf-is-minsup : {x : Ordinal } → (x≤z : x o≤ z) → supf x ≡ MinSUP.sup ( minsup x≤z ) 369 → IsSUP A (UnionCF A f supf b) b ∧ (¬ HasPrev A (UnionCF A f supf b) f b ) → supf b ≡ b
371 370
372 chain : HOD 371 chain : HOD
373 chain = UnionCF A f supf z 372 chain = UnionCF A f supf z
374 chain⊆A : chain ⊆' A 373 chain⊆A : chain ⊆' A
375 chain⊆A = λ lt → proj1 lt 374 chain⊆A = λ lt → proj1 lt
376
377 sup : {x : Ordinal } → x o≤ z → SUP A (UnionCF A f supf x)
378 sup {x} x≤z = M→S supf (minsup x≤z)
379
380 s=ms : {x : Ordinal } → (x≤z : x o≤ z ) → & (SUP.sup (sup x≤z)) ≡ MinSUP.sup (minsup x≤z)
381 s=ms {x} x≤z = &iso
382 375
383 chain∋init : odef chain y 376 chain∋init : odef chain y
384 chain∋init = ⟪ ay , ? ⟫ 377 chain∋init = ⟪ ay , ? ⟫
385 f-next : {a z : Ordinal} → odef (UnionCF A f supf z) a → odef (UnionCF A f supf z) (f a) 378 f-next : {a z : Ordinal} → odef (UnionCF A f supf z) a → odef (UnionCF A f supf z) (f a)
386 f-next {a} ⟪ aa , cp ⟫ = ? 379 f-next {a} ⟪ aa , cp ⟫ = ?
387 initial : {z : Ordinal } → odef chain z → y ≤ z 380 initial : {z : Ordinal } → odef chain z → y ≤ z
388 initial {a} ⟪ aa , ua ⟫ = ? 381 initial {a} ⟪ aa , ua ⟫ = ?
389 f-total : IsTotalOrderSet chain 382 f-total : IsTotalOrderSet chain
390 f-total {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where 383 f-total {a} {b} ca cb = ?
391 uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) ) 384 -- subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where
392 uz01 = ? -- chain-total A f supf ( (proj2 ca)) ( (proj2 cb)) 385 -- uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) )
386 -- uz01 with trio< (& a) (& b)
387 -- ... | tri> ¬a ¬b c = ?
388 -- ... | tri≈ ¬a b ¬c = ?
389 -- ... | tri< a ¬b ¬c = ?
393 390
394 supf-inject : {x y : Ordinal } → supf x o< supf y → x o< y 391 supf-inject : {x y : Ordinal } → supf x o< supf y → x o< y
395 supf-inject {x} {y} sx<sy with trio< x y 392 supf-inject {x} {y} sx<sy with trio< x y
396 ... | tri< a ¬b ¬c = a 393 ... | tri< a ¬b ¬c = a
397 ... | tri≈ ¬a refl ¬c = ⊥-elim ( o<¬≡ (cong supf refl) sx<sy ) 394 ... | tri≈ ¬a refl ¬c = ⊥-elim ( o<¬≡ (cong supf refl) sx<sy )
404 401
405 csupf : (mf< : <-monotonic-f A f) {b : Ordinal } 402 csupf : (mf< : <-monotonic-f A f) {b : Ordinal }
406 → supf b o< supf z → supf b o< z → odef (UnionCF A f supf z) (supf b) -- supf z is not an element of this chain 403 → supf b o< supf z → supf b o< z → odef (UnionCF A f supf z) (supf b) -- supf z is not an element of this chain
407 csupf mf< {b} sb<sz sb<z = cfcs mf< (supf-inject sb<sz) o≤-refl sb<z (init asupf refl) 404 csupf mf< {b} sb<sz sb<z = cfcs mf< (supf-inject sb<sz) o≤-refl sb<z (init asupf refl)
408 405
409 fcy<sup : {u w : Ordinal } → u o≤ z → FClosure A f y w → (w ≡ supf u ) ∨ ( w << supf u ) -- different from order because y o< supf 406 minsup : {x : Ordinal } → x o≤ z → MinSUP A (UnionCF A f supf x)
410 fcy<sup {u} {w} u≤z fc with MinSUP.x≤sup (minsup u≤z) ⟪ subst (λ k → odef A k ) (sym &iso) (A∋fc {A} y f mf fc) , ? ⟫ 407 minsup {x} x≤z = record { sup = supf x ; isMinSUP = is-minsup x≤z }
411 ... | case1 eq = case1 (subst (λ k → k ≡ supf u ) &iso (trans eq (sym (supf-is-minsup u≤z ) ) )) 408
412 ... | case2 lt = case2 (subst₂ (λ j k → j << k ) &iso (sym (supf-is-minsup u≤z )) lt ) 409 supf-is-minsup : {x : Ordinal } → (x≤z : x o≤ z) → supf x ≡ MinSUP.sup (minsup x≤z)
413 410 supf-is-minsup _ = refl
414 -- ordering is not proved here but in ZChain1 411
412 chain-minsup : {x : Ordinal} → IsMinSUP A (UnionCF A f supf x) (supf x)
413 chain-minsup {x} = record { as = as ; x≤sup = cp1 ; minsup = cpm } where
414 as : odef A (supf x)
415 as = asupf
416 cp1 : {z : Ordinal} → odef (UnionCF A f supf x) z → (z ≡ supf x) ∨ (z << supf x)
417 cp1 {z} ⟪ az , ch-is-sup u u<x supu=u fc ⟫ = order u<x fc
418 cpm : {s : Ordinal} → odef A s → ({z : Ordinal} → odef (UnionCF A f supf x) z → (z ≡ s) ∨ (z << s)) → supf x o≤ s
419 cpm {s} as z≤s with trio< (supf x) s
420 ... | tri< a ¬b ¬c = o<→≤ a
421 ... | tri≈ ¬a b ¬c = o≤-refl0 b
422 ... | tri> ¬a ¬b c = ? where
423 cp4 : supf (supf s) ≡ supf s
424 cp4 = ?
425 cp3 : supf s o< x
426 cp3 = ?
427 cp2 : odef (UnionCF A f supf x) (supf s)
428 cp2 = ⟪ asupf , ch-is-sup (supf s) cp3 cp4 (init asupf cp4) ⟫
429 -- ... | case1 eq = ?
430 -- ... | case2 lt = ?
415 431
416 IsMinSUP→NotHasPrev : {x sp : Ordinal } → odef A sp 432 IsMinSUP→NotHasPrev : {x sp : Ordinal } → odef A sp
417 → ({y : Ordinal} → odef (UnionCF A f supf x) y → (y ≡ sp ) ∨ (y << sp )) 433 → ({y : Ordinal} → odef (UnionCF A f supf x) y → (y ≡ sp ) ∨ (y << sp ))
418 → ( {a : Ordinal } → odef A a → a << f a ) 434 → ( {a : Ordinal } → odef A a → a << f a )
419 → ¬ ( HasPrev A (UnionCF A f supf x) f sp ) 435 → ¬ ( HasPrev A (UnionCF A f supf x) f sp )
420 IsMinSUP→NotHasPrev {x} {sp} asp is-sup <-mono-f hp = ⊥-elim (<-irr ? sp<fsp ) where 436 IsMinSUP→NotHasPrev {x} {sp} asp is-sup <-mono-f hp = ⊥-elim (<<-irr fsp≤sp sp<fsp ) where
421 sp<fsp : sp << f sp 437 sp<fsp : sp << f sp
422 sp<fsp = <-mono-f asp 438 sp<fsp = <-mono-f asp
423 pr = HasPrev.y hp 439 pr = HasPrev.y hp
424 im00 : f (f pr) ≤ sp 440 im00 : f (f pr) ≤ sp
425 im00 = is-sup ( f-next (f-next (HasPrev.ay hp))) 441 im00 = is-sup ( f-next (f-next (HasPrev.ay hp)))
491 sxa=sxb with trio< (supfa x) (supfb x) 507 sxa=sxb with trio< (supfa x) (supfb x)
492 ... | tri≈ ¬a b ¬c = b 508 ... | tri≈ ¬a b ¬c = b
493 ... | tri< a ¬b ¬c = ⊥-elim ( o≤> ( 509 ... | tri< a ¬b ¬c = ⊥-elim ( o≤> (
494 begin 510 begin
495 supfb x ≡⟨ sbx=spb ⟩ 511 supfb x ≡⟨ sbx=spb ⟩
496 spb ≤⟨ MinSUP.minsup mb (MinSUP.axm ma) (λ {z} uzb → MinSUP.x≤sup ma (z53 uzb)) ⟩ 512 spb ≤⟨ MinSUP.minsup mb (MinSUP.as ma) (λ {z} uzb → MinSUP.x≤sup ma (z53 uzb)) ⟩
497 spa ≡⟨ sym sax=spa ⟩ 513 spa ≡⟨ sym sax=spa ⟩
498 supfa x ∎ ) a ) where 514 supfa x ∎ ) a ) where
499 open o≤-Reasoning O 515 open o≤-Reasoning O
500 z53 : {z : Ordinal } → odef (UnionCF A f (ZChain.supf zb) x) z → odef (UnionCF A f (ZChain.supf za) x) z 516 z53 : {z : Ordinal } → odef (UnionCF A f (ZChain.supf zb) x) z → odef (UnionCF A f (ZChain.supf za) x) z
501 z53 {z} ⟪ as , cp ⟫ = ⟪ as , ? ⟫ 517 z53 {z} ⟪ as , cp ⟫ = ⟪ as , ? ⟫
502 ... | tri> ¬a ¬b c = ⊥-elim ( o≤> ( 518 ... | tri> ¬a ¬b c = ⊥-elim ( o≤> (
503 begin 519 begin
504 supfa x ≡⟨ sax=spa ⟩ 520 supfa x ≡⟨ sax=spa ⟩
505 spa ≤⟨ MinSUP.minsup ma (MinSUP.axm mb) (λ uza → MinSUP.x≤sup mb (z53 uza)) ⟩ 521 spa ≤⟨ MinSUP.minsup ma (MinSUP.as mb) (λ uza → MinSUP.x≤sup mb (z53 uza)) ⟩
506 spb ≡⟨ sym sbx=spb ⟩ 522 spb ≡⟨ sym sbx=spb ⟩
507 supfb x ∎ ) c ) where 523 supfb x ∎ ) c ) where
508 open o≤-Reasoning O 524 open o≤-Reasoning O
509 z53 : {z : Ordinal } → odef (UnionCF A f (ZChain.supf za) x) z → odef (UnionCF A f (ZChain.supf zb) x) z 525 z53 : {z : Ordinal } → odef (UnionCF A f (ZChain.supf za) x) z → odef (UnionCF A f (ZChain.supf zb) x) z
510 z53 {z} ⟪ as , cp ⟫ = ⟪ as , ? ⟫ 526 z53 {z} ⟪ as , cp ⟫ = ⟪ as , ? ⟫
576 ... | tri≈ ¬a b ¬c = case1 ( λ lt → ⊥-elim ( ¬a lt ) ) 592 ... | tri≈ ¬a b ¬c = case1 ( λ lt → ⊥-elim ( ¬a lt ) )
577 ... | tri> ¬a ¬b c = case1 ( λ lt → ⊥-elim ( ¬a lt ) ) 593 ... | tri> ¬a ¬b c = case1 ( λ lt → ⊥-elim ( ¬a lt ) )
578 ... | tri< a ¬b ¬c with prev z a 594 ... | tri< a ¬b ¬c with prev z a
579 ... | case2 mins = case2 mins 595 ... | case2 mins = case2 mins
580 ... | case1 not with ODC.p∨¬p O (odef A z ∧ xsup z) 596 ... | case1 not with ODC.p∨¬p O (odef A z ∧ xsup z)
581 ... | case1 mins = case2 record { sup = z ; isMinSUP = record { axm = proj1 mins ; x≤sup = proj2 mins ; minsup = m04 } } where 597 ... | case1 mins = case2 record { sup = z ; isMinSUP = record { as = proj1 mins ; x≤sup = proj2 mins ; minsup = m04 } } where
582 m04 : {sup1 : Ordinal} → odef A sup1 → ({w : Ordinal} → odef B w → (w ≡ sup1) ∨ (w << sup1)) → z o≤ sup1 598 m04 : {sup1 : Ordinal} → odef A sup1 → ({w : Ordinal} → odef B w → (w ≡ sup1) ∨ (w << sup1)) → z o≤ sup1
583 m04 {s} as lt with trio< z s 599 m04 {s} as lt with trio< z s
584 ... | tri< a ¬b ¬c = o<→≤ a 600 ... | tri< a ¬b ¬c = o<→≤ a
585 ... | tri≈ ¬a b ¬c = o≤-refl0 b 601 ... | tri≈ ¬a b ¬c = o≤-refl0 b
586 ... | tri> ¬a ¬b s<z = ⊥-elim ( not s s<z ⟪ as , lt ⟫ ) 602 ... | tri> ¬a ¬b s<z = ⊥-elim ( not s s<z ⟪ as , lt ⟫ )
867 883
868 asupf1 : {z : Ordinal } → odef A (supf1 z) 884 asupf1 : {z : Ordinal } → odef A (supf1 z)
869 asupf1 {z} with trio< z px 885 asupf1 {z} with trio< z px
870 ... | tri< a ¬b ¬c = ZChain.asupf zc 886 ... | tri< a ¬b ¬c = ZChain.asupf zc
871 ... | tri≈ ¬a b ¬c = ZChain.asupf zc 887 ... | tri≈ ¬a b ¬c = ZChain.asupf zc
872 ... | tri> ¬a ¬b c = MinSUP.axm sup1 888 ... | tri> ¬a ¬b c = MinSUP.as sup1
873 889
874 supf1-mono : {a b : Ordinal } → a o≤ b → supf1 a o≤ supf1 b 890 supf1-mono : {a b : Ordinal } → a o≤ b → supf1 a o≤ supf1 b
875 supf1-mono {a} {b} a≤b with trio< b px 891 supf1-mono {a} {b} a≤b with trio< b px
876 ... | tri< a ¬b ¬c = subst₂ (λ j k → j o≤ k ) (sym (sf1=sf0 (o<→≤ (ordtrans≤-< a≤b a)))) refl ( supf-mono a≤b ) 892 ... | tri< a ¬b ¬c = subst₂ (λ j k → j o≤ k ) (sym (sf1=sf0 (o<→≤ (ordtrans≤-< a≤b a)))) refl ( supf-mono a≤b )
877 ... | tri≈ ¬a b ¬c = subst₂ (λ j k → j o≤ k ) (sym (sf1=sf0 (subst (λ k → a o≤ k) b a≤b))) refl ( supf-mono a≤b ) 893 ... | tri≈ ¬a b ¬c = subst₂ (λ j k → j o≤ k ) (sym (sf1=sf0 (subst (λ k → a o≤ k) b a≤b))) refl ( supf-mono a≤b )
880 zc21 : MinSUP A (UnionCF A f supf0 a) 896 zc21 : MinSUP A (UnionCF A f supf0 a)
881 zc21 = ZChain.minsup zc (o<→≤ a<px) 897 zc21 = ZChain.minsup zc (o<→≤ a<px)
882 zc24 : {x₁ : Ordinal} → odef (UnionCF A f supf0 a) x₁ → (x₁ ≡ sp1) ∨ (x₁ << sp1) 898 zc24 : {x₁ : Ordinal} → odef (UnionCF A f supf0 a) x₁ → (x₁ ≡ sp1) ∨ (x₁ << sp1)
883 zc24 {x₁} ux = MinSUP.x≤sup sup1 (case1 (chain-mono f mf ay supf0 (ZChain.supf-mono zc) (o<→≤ a<px) ux ) ) 899 zc24 {x₁} ux = MinSUP.x≤sup sup1 (case1 (chain-mono f mf ay supf0 (ZChain.supf-mono zc) (o<→≤ a<px) ux ) )
884 zc19 : supf0 a o≤ sp1 900 zc19 : supf0 a o≤ sp1
885 zc19 = subst (λ k → k o≤ sp1) (sym (ZChain.supf-is-minsup zc (o<→≤ a<px))) ( MinSUP.minsup zc21 (MinSUP.axm sup1) zc24 ) 901 zc19 = subst (λ k → k o≤ sp1) (sym (ZChain.supf-is-minsup zc (o<→≤ a<px))) ( MinSUP.minsup zc21 (MinSUP.as sup1) zc24 )
886 ... | tri≈ ¬a b ¬c = zc18 where 902 ... | tri≈ ¬a b ¬c = zc18 where
887 zc21 : MinSUP A (UnionCF A f supf0 a) 903 zc21 : MinSUP A (UnionCF A f supf0 a)
888 zc21 = ZChain.minsup zc (o≤-refl0 b) 904 zc21 = ZChain.minsup zc (o≤-refl0 b)
889 zc20 : MinSUP.sup zc21 ≡ supf0 a 905 zc20 : MinSUP.sup zc21 ≡ supf0 a
890 zc20 = sym (ZChain.supf-is-minsup zc (o≤-refl0 b)) 906 zc20 = sym (ZChain.supf-is-minsup zc (o≤-refl0 b))
891 zc24 : {x₁ : Ordinal} → odef (UnionCF A f supf0 a) x₁ → (x₁ ≡ sp1) ∨ (x₁ << sp1) 907 zc24 : {x₁ : Ordinal} → odef (UnionCF A f supf0 a) x₁ → (x₁ ≡ sp1) ∨ (x₁ << sp1)
892 zc24 {x₁} ux = MinSUP.x≤sup sup1 (case1 (chain-mono f mf ay supf0 (ZChain.supf-mono zc) (o≤-refl0 b) ux ) ) 908 zc24 {x₁} ux = MinSUP.x≤sup sup1 (case1 (chain-mono f mf ay supf0 (ZChain.supf-mono zc) (o≤-refl0 b) ux ) )
893 zc18 : supf0 a o≤ sp1 909 zc18 : supf0 a o≤ sp1
894 zc18 = subst (λ k → k o≤ sp1) zc20( MinSUP.minsup zc21 (MinSUP.axm sup1) zc24 ) 910 zc18 = subst (λ k → k o≤ sp1) zc20( MinSUP.minsup zc21 (MinSUP.as sup1) zc24 )
895 ... | tri> ¬a ¬b c = o≤-refl 911 ... | tri> ¬a ¬b c = o≤-refl
896 912
897 sf≤ : { z : Ordinal } → x o≤ z → supf0 x o≤ supf1 z 913 sf≤ : { z : Ordinal } → x o≤ z → supf0 x o≤ supf1 z
898 sf≤ {z} x≤z with trio< z px 914 sf≤ {z} x≤z with trio< z px
899 ... | tri< a ¬b ¬c = ⊥-elim ( o<> (osucc a) (subst (λ k → k o≤ z) (sym (Oprev.oprev=x op)) x≤z ) ) 915 ... | tri< a ¬b ¬c = ⊥-elim ( o<> (osucc a) (subst (λ k → k o≤ z) (sym (Oprev.oprev=x op)) x≤z ) )
1053 tsup : MinSUP A (UnionCF A f supf1 z) 1069 tsup : MinSUP A (UnionCF A f supf1 z)
1054 tsup=sup : supf1 z ≡ MinSUP.sup tsup 1070 tsup=sup : supf1 z ≡ MinSUP.sup tsup
1055 1071
1056 sup : {z : Ordinal} → (z≤x : z o≤ x ) → STMP z≤x 1072 sup : {z : Ordinal} → (z≤x : z o≤ x ) → STMP z≤x
1057 sup {z} z≤x with trio< z px 1073 sup {z} z≤x with trio< z px
1058 ... | tri< a ¬b ¬c = record { tsup = record { sup = MinSUP.sup m ; asm = MinSUP.axm m 1074 ... | tri< a ¬b ¬c = record { tsup = record { sup = MinSUP.sup m ; asm = MinSUP.as m
1059 ; x≤sup = ms00 ; minsup = ms01 } ; tsup=sup = trans (sf1=sf0 (o<→≤ a) ) (ZChain.supf-is-minsup zc (o<→≤ a)) } where 1075 ; x≤sup = ms00 ; minsup = ms01 } ; tsup=sup = trans (sf1=sf0 (o<→≤ a) ) (ZChain.supf-is-minsup zc (o<→≤ a)) } where
1060 m = ZChain.minsup zc (o<→≤ a) 1076 m = ZChain.minsup zc (o<→≤ a)
1061 ms00 : {x : Ordinal} → odef (UnionCF A f supf1 z) x → (x ≡ MinSUP.sup m) ∨ (x << MinSUP.sup m) 1077 ms00 : {x : Ordinal} → odef (UnionCF A f supf1 z) x → (x ≡ MinSUP.sup m) ∨ (x << MinSUP.sup m)
1062 ms00 {w} ⟪ az , cp ⟫ = MinSUP.x≤sup m ⟪ az , ? ⟫ 1078 ms00 {w} ⟪ az , cp ⟫ = MinSUP.x≤sup m ⟪ az , ? ⟫
1063 ms01 : {sup2 : Ordinal} → odef A sup2 → ({x : Ordinal} → 1079 ms01 : {sup2 : Ordinal} → odef A sup2 → ({x : Ordinal} →
1064 odef (UnionCF A f supf1 z) x → (x ≡ sup2) ∨ (x << sup2)) → MinSUP.sup m o≤ sup2 1080 odef (UnionCF A f supf1 z) x → (x ≡ sup2) ∨ (x << sup2)) → MinSUP.sup m o≤ sup2
1065 ms01 {sup2} us P = MinSUP.minsup m us ? 1081 ms01 {sup2} us P = MinSUP.minsup m us ?
1066 ... | tri≈ ¬a b ¬c = record { tsup = record { sup = MinSUP.sup m ; asm = MinSUP.axm m 1082 ... | tri≈ ¬a b ¬c = record { tsup = record { sup = MinSUP.sup m ; asm = MinSUP.as m
1067 ; x≤sup = ms00 ; minsup = ms01 } ; tsup=sup = trans (sf1=sf0 (o≤-refl0 b) ) (ZChain.supf-is-minsup zc (o≤-refl0 b)) } where 1083 ; x≤sup = ms00 ; minsup = ms01 } ; tsup=sup = trans (sf1=sf0 (o≤-refl0 b) ) (ZChain.supf-is-minsup zc (o≤-refl0 b)) } where
1068 m = ZChain.minsup zc (o≤-refl0 b) 1084 m = ZChain.minsup zc (o≤-refl0 b)
1069 ms00 : {x : Ordinal} → odef (UnionCF A f supf1 z) x → (x ≡ MinSUP.sup m) ∨ (x << MinSUP.sup m) 1085 ms00 : {x : Ordinal} → odef (UnionCF A f supf1 z) x → (x ≡ MinSUP.sup m) ∨ (x << MinSUP.sup m)
1070 ms00 {x} ux = MinSUP.x≤sup m ? 1086 ms00 {x} ux = MinSUP.x≤sup m ?
1071 ms01 : {sup2 : Ordinal} → odef A sup2 → ({x : Ordinal} → 1087 ms01 : {sup2 : Ordinal} → odef A sup2 → ({x : Ordinal} →
1072 odef (UnionCF A f supf1 z) x → (x ≡ sup2) ∨ (x << sup2)) → MinSUP.sup m o≤ sup2 1088 odef (UnionCF A f supf1 z) x → (x ≡ sup2) ∨ (x << sup2)) → MinSUP.sup m o≤ sup2
1073 ms01 {sup2} us P = MinSUP.minsup m us ? 1089 ms01 {sup2} us P = MinSUP.minsup m us ?
1074 ... | tri> ¬a ¬b px<z = record { tsup = record { sup = sp1 ; asm = MinSUP.axm sup1 1090 ... | tri> ¬a ¬b px<z = record { tsup = record { sup = sp1 ; asm = MinSUP.as sup1
1075 ; x≤sup = ms00 ; minsup = ms01 } ; tsup=sup = sf1=sp1 px<z } where 1091 ; x≤sup = ms00 ; minsup = ms01 } ; tsup=sup = sf1=sp1 px<z } where
1076 m = sup1 1092 m = sup1
1077 ms00 : {x : Ordinal} → odef (UnionCF A f supf1 z) x → (x ≡ MinSUP.sup m) ∨ (x << MinSUP.sup m) 1093 ms00 : {x : Ordinal} → odef (UnionCF A f supf1 z) x → (x ≡ MinSUP.sup m) ∨ (x << MinSUP.sup m)
1078 ms00 {x} ux = MinSUP.x≤sup m ? 1094 ms00 {x} ux = MinSUP.x≤sup m ?
1079 ms01 : {sup2 : Ordinal} → odef A sup2 → ({x : Ordinal} → 1095 ms01 : {sup2 : Ordinal} → odef A sup2 → ({x : Ordinal} →
1171 ... | tri> ¬a ¬b px<z = zc35 where 1187 ... | tri> ¬a ¬b px<z = zc35 where
1172 zc30 : z ≡ x 1188 zc30 : z ≡ x
1173 zc30 with osuc-≡< z≤x 1189 zc30 with osuc-≡< z≤x
1174 ... | case1 eq = eq 1190 ... | case1 eq = eq
1175 ... | case2 z<x = ⊥-elim (¬p<x<op ⟪ px<z , subst (λ k → z o< k ) (sym (Oprev.oprev=x op)) z<x ⟫ ) 1191 ... | case2 z<x = ⊥-elim (¬p<x<op ⟪ px<z , subst (λ k → z o< k ) (sym (Oprev.oprev=x op)) z<x ⟫ )
1176 zc32 = ZChain.sup zc o≤-refl 1192 zc32 = ?
1177 zc34 : ¬ (supf0 px ≡ px) → {w : HOD} → UnionCF A f supf0 z ∋ w → (w ≡ SUP.sup zc32) ∨ (w < SUP.sup zc32) 1193 zc34 : ¬ (supf0 px ≡ px) → {w : HOD} → UnionCF A f supf0 z ∋ w → (w ≡ SUP.sup zc32) ∨ (w < SUP.sup zc32)
1178 zc34 ne {w} lt = ? 1194 zc34 ne {w} lt = ?
1179 zc33 : supf0 z ≡ & (SUP.sup zc32) 1195 zc33 : supf0 z ≡ & (SUP.sup zc32)
1180 zc33 = ? -- trans (sym (supfx (o≤-refl0 (sym zc30)))) ( ZChain.supf-is-minsup zc o≤-refl ) 1196 zc33 = ? -- trans (sym (supfx (o≤-refl0 (sym zc30)))) ( ZChain.supf-is-minsup zc o≤-refl )
1181 zc36 : ¬ (supf0 px ≡ px) → STMP z≤x 1197 zc36 : ¬ (supf0 px ≡ px) → STMP z≤x
1372 chain = ZChain.chain zc 1388 chain = ZChain.chain zc
1373 supf = ZChain.supf zc 1389 supf = ZChain.supf zc
1374 sp : Ordinal 1390 sp : Ordinal
1375 sp = MinSUP.sup sp1 1391 sp = MinSUP.sup sp1
1376 asp : odef A sp 1392 asp : odef A sp
1377 asp = MinSUP.axm sp1 1393 asp = MinSUP.as sp1
1378 z10 : {a b : Ordinal } → (ca : odef chain a ) → b o< (& A) → (ab : odef A b ) 1394 z10 : {a b : Ordinal } → (ca : odef chain a ) → b o< (& A) → (ab : odef A b )
1379 → HasPrev A chain f b ∨ IsSUP A (UnionCF A f (ZChain.supf zc) b) b 1395 → HasPrev A chain f b ∨ IsSUP A (UnionCF A f (ZChain.supf zc) b) b
1380 → * a < * b → odef chain b 1396 → * a < * b → odef chain b
1381 z10 = ZChain1.is-max (SZ1 f mf mf< as0 zc (& A) o≤-refl ) 1397 z10 = ZChain1.is-max (SZ1 f mf mf< as0 zc (& A) o≤-refl )
1382 z22 : sp o< & A 1398 z22 : sp o< & A
1398 ... | case2 y<p = case2 (subst (λ k → * k < _ ) &iso y<p ) 1414 ... | case2 y<p = case2 (subst (λ k → * k < _ ) &iso y<p )
1399 z14 : f sp ≡ sp 1415 z14 : f sp ≡ sp
1400 z14 with ZChain.f-total zc (subst (λ k → odef chain k) (sym &iso) (ZChain.f-next zc z12 )) (subst (λ k → odef chain k) (sym &iso) z12 ) 1416 z14 with ZChain.f-total zc (subst (λ k → odef chain k) (sym &iso) (ZChain.f-next zc z12 )) (subst (λ k → odef chain k) (sym &iso) z12 )
1401 ... | tri< a ¬b ¬c = ⊥-elim z16 where 1417 ... | tri< a ¬b ¬c = ⊥-elim z16 where
1402 z16 : ⊥ 1418 z16 : ⊥
1403 z16 with proj1 (mf (( MinSUP.sup sp1)) ( MinSUP.axm sp1 )) 1419 z16 with proj1 (mf (( MinSUP.sup sp1)) ( MinSUP.as sp1 ))
1404 ... | case1 eq = ⊥-elim (¬b (sym (cong (*) eq ) )) 1420 ... | case1 eq = ⊥-elim (¬b (sym (cong (*) eq ) ))
1405 ... | case2 lt = ⊥-elim (¬c lt ) 1421 ... | case2 lt = ⊥-elim (¬c lt )
1406 ... | tri≈ ¬a b ¬c = subst₂ (λ j k → j ≡ k ) &iso &iso ( cong (&) b ) 1422 ... | tri≈ ¬a b ¬c = subst₂ (λ j k → j ≡ k ) &iso &iso ( cong (&) b )
1407 ... | tri> ¬a ¬b c = ⊥-elim z17 where 1423 ... | tri> ¬a ¬b c = ⊥-elim z17 where
1408 z15 : (f sp ≡ MinSUP.sup sp1) ∨ (* (f sp) < * (MinSUP.sup sp1) ) 1424 z15 : (f sp ≡ MinSUP.sup sp1) ∨ (* (f sp) < * (MinSUP.sup sp1) )
1429 -- ¬ Maximal create cf which is a <-monotonic function by axiom of choice. This contradicts fix point of ZChain 1445 -- ¬ Maximal create cf which is a <-monotonic function by axiom of choice. This contradicts fix point of ZChain
1430 -- 1446 --
1431 1447
1432 z04 : (nmx : ¬ Maximal A ) → (zc : ZChain A (cf nmx) (cf-is-≤-monotonic nmx) as0 (& A)) → ⊥ 1448 z04 : (nmx : ¬ Maximal A ) → (zc : ZChain A (cf nmx) (cf-is-≤-monotonic nmx) as0 (& A)) → ⊥
1433 z04 nmx zc = <-irr0 {* (cf nmx c)} {* c} 1449 z04 nmx zc = <-irr0 {* (cf nmx c)} {* c}
1434 (subst (λ k → odef A k ) (sym &iso) (proj1 (is-cf nmx (MinSUP.axm msp1 )))) 1450 (subst (λ k → odef A k ) (sym &iso) (proj1 (is-cf nmx (MinSUP.as msp1 ))))
1435 (subst (λ k → odef A k) (sym &iso) (MinSUP.axm msp1) ) 1451 (subst (λ k → odef A k) (sym &iso) (MinSUP.as msp1) )
1436 (case1 ( cong (*)( fixpoint (cf nmx) (cf-is-≤-monotonic nmx ) (cf-is-<-monotonic nmx ) zc msp1 ))) -- x ≡ f x ̄ 1452 (case1 ( cong (*)( fixpoint (cf nmx) (cf-is-≤-monotonic nmx ) (cf-is-<-monotonic nmx ) zc msp1 ))) -- x ≡ f x ̄
1437 (proj1 (cf-is-<-monotonic nmx c (MinSUP.axm msp1 ))) where -- x < f x 1453 (proj1 (cf-is-<-monotonic nmx c (MinSUP.as msp1 ))) where -- x < f x
1438 1454
1439 supf = ZChain.supf zc 1455 supf = ZChain.supf zc
1440 msp1 : MinSUP A (ZChain.chain zc) 1456 msp1 : MinSUP A (ZChain.chain zc)
1441 msp1 = msp0 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc 1457 msp1 = msp0 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc
1442 c : Ordinal 1458 c : Ordinal