comparison OD.agda @ 209:e59e682ad120

∀-imply-or
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 01 Aug 2019 10:22:16 +0900
parents 64ef1db53c49
children 2c7d45734e3b
comparison
equal deleted inserted replaced
208:64ef1db53c49 209:e59e682ad120
561 561
562 record choiced {n : Level} ( X : OD {suc n}) : Set (suc (suc n)) where 562 record choiced {n : Level} ( X : OD {suc n}) : Set (suc (suc n)) where
563 field 563 field
564 a-choice : OD {suc n} 564 a-choice : OD {suc n}
565 is-in : X ∋ a-choice 565 is-in : X ∋ a-choice
566 choice-func' : (X : OD {suc n} ) → (∋-p : (A x : OD {suc n} ) → Dec ( A ∋ x ) ) → ¬ ( X == od∅ ) → choiced X 566 choice-func' : (X : OD {suc n} ) → (p∨¬p : { n : Level } → ( p : Set (suc n) ) → p ∨ ( ¬ p )) → ¬ ( X == od∅ ) → choiced X
567 choice-func' X ∋-p not = have_to_find 567 choice-func' X p∨¬p not = have_to_find
568 where 568 where
569 ψ : ( ox : Ordinal {suc n}) → Set (suc (suc n)) 569 ψ : ( ox : Ordinal {suc n}) → Set (suc (suc n))
570 ψ ox = ( x : Ordinal {suc n}) → x o< ox → ( ¬ def X x ) ∨ choiced X 570 ψ ox = (( x : Ordinal {suc n}) → x o< ox → ( ¬ def X x )) ∨ choiced X
571 lemma-ord : ( ox : Ordinal {suc n} ) → ψ ox 571 lemma-ord : ( ox : Ordinal {suc n} ) → ψ ox
572 lemma-ord ox = TransFinite {n} {suc (suc n)} {ψ} caseΦ caseOSuc ox where 572 lemma-ord ox = TransFinite {n} {suc (suc n)} {ψ} caseΦ caseOSuc ox where
573 ∋-p' : (A x : OD {suc n} ) → Dec ( A ∋ x )
574 ∋-p' A x with p∨¬p ( A ∋ x )
575 ∋-p' A x | case1 t = yes t
576 ∋-p' A x | case2 t = no t
577 ∀-imply-or : {n : Level} {A : Ordinal {suc n} → Set (suc n) } {B : Set (suc (suc n)) }
578 → ((x : Ordinal {suc n}) → A x ∨ B) → ((x : Ordinal {suc n}) → A x) ∨ B
579 ∀-imply-or {n} {A} {B} ∀AB with p∨¬p ((x : Ordinal {suc n}) → A x)
580 ∀-imply-or {n} {A} {B} ∀AB | case1 t = case1 t
581 ∀-imply-or {n} {A} {B} ∀AB | case2 x = case2 (lemma x) where
582 lemma : ¬ ((x : Ordinal {suc n}) → A x) → B
583 lemma not with p∨¬p B
584 lemma not | case1 b = b
585 lemma not | case2 ¬b = ⊥-elim (not (λ x → dont-orb (∀AB x) ¬b ))
573 caseΦ : (lx : Nat) → ( (x : Ordinal {suc n} ) → x o< ordinal lx (Φ lx) → ψ x) → ψ (ordinal lx (Φ lx) ) 586 caseΦ : (lx : Nat) → ( (x : Ordinal {suc n} ) → x o< ordinal lx (Φ lx) → ψ x) → ψ (ordinal lx (Φ lx) )
574 caseΦ lx prev with ∋-p X ( ord→od (ordinal lx (Φ lx) )) 587 caseΦ lx prev with ∋-p' X ( ord→od (ordinal lx (Φ lx) ))
575 caseΦ lx prev | yes p = {!!} -- case2 ( record { a-choice = ord→od (ordinal lx (Φ lx)) ; is-in = p } ) 588 caseΦ lx prev | yes p = case2 ( record { a-choice = ord→od (ordinal lx (Φ lx)) ; is-in = p } )
576 caseΦ lx prev | no ¬p = {!!} 589 caseΦ lx prev | no ¬p = lemma where
590 lemma1 : (x : Ordinal) → (((Suc (lv x) ≤ lx) ∨ (ord x d< Φ lx) → def X x → ⊥) ∨ choiced X)
591 lemma1 x with trio< x (ordinal lx (Φ lx))
592 lemma1 x | tri< a ¬b ¬c with prev x a
593 lemma1 x | tri< a ¬b ¬c | case1 not_found = case1 {!!}
594 lemma1 x | tri< a ¬b ¬c | case2 found = case2 found
595 lemma1 x | tri≈ ¬a refl ¬c = case1 ( λ lt → ⊥-elim (o<¬≡ refl lt ))
596 lemma1 x | tri> ¬a ¬b c = case1 ( λ lt → ⊥-elim (o<> lt c ))
597 lemma : ((x : Ordinal) → (Suc (lv x) ≤ lx) ∨ (ord x d< Φ lx) → def X x → ⊥) ∨ choiced X
598 lemma = ∀-imply-or lemma1
577 caseOSuc : (lx : Nat) (x : OrdinalD lx) → ψ ( ordinal lx x ) → ψ ( ordinal lx (OSuc lx x) ) 599 caseOSuc : (lx : Nat) (x : OrdinalD lx) → ψ ( ordinal lx x ) → ψ ( ordinal lx (OSuc lx x) )
578 caseOSuc lx x prev with ∋-p X (ord→od record { lv = lx ; ord = x } ) 600 caseOSuc lx x prev with ∋-p' X (ord→od record { lv = lx ; ord = x } )
579 caseOSuc lx x prev | yes p = {!!} -- case2 (record { a-choice = ord→od record { lv = lx ; ord = x } ; is-in = p }) 601 caseOSuc lx x prev | yes p = case2 (record { a-choice = ord→od record { lv = lx ; ord = x } ; is-in = p })
580 caseOSuc lx x prev | no ¬p = {!!} 602 caseOSuc lx x (case1 not_found) | no ¬p = case1 lemma where
603 lemma : (y : Ordinal) → (Suc (lv y) ≤ lx) ∨ (ord y d< OSuc lx x) → def X y → ⊥
604 lemma y lt with trio< y (ordinal lx x )
605 lemma y lt | tri< a ¬b ¬c = not_found y a
606 lemma y lt | tri≈ ¬a refl ¬c = subst (λ k → def X k → ⊥ ) diso ¬p
607 lemma y lt | tri> ¬a ¬b c with osuc-≡< lt
608 lemma y lt | tri> ¬a ¬b c | case1 refl = ⊥-elim ( ¬b refl )
609 lemma y lt | tri> ¬a ¬b c | case2 lt1 = ⊥-elim (o<> c lt1 )
610 caseOSuc lx x (case2 found) | no ¬p = case2 found
581 have_to_find : choiced X 611 have_to_find : choiced X
582 have_to_find with lemma-ord (od→ord X ) 612 have_to_find with lemma-ord (od→ord X )
583 have_to_find | t = dont-or ( t (od→ord X) {!!} ) {!!} 613 have_to_find | t = dont-or t {!!}
584 614