comparison ordinal.agda @ 85:7494ae6b83c6

omax-induction does not work
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 05 Jun 2019 02:58:17 +0900
parents 4b2aff372b7c
children 08be6351927e
comparison
equal deleted inserted replaced
84:4b2aff372b7c 85:7494ae6b83c6
197 maxα x y with <-cmp (lv x) (lv y) 197 maxα x y with <-cmp (lv x) (lv y)
198 maxα x y | tri< a ¬b ¬c = x 198 maxα x y | tri< a ¬b ¬c = x
199 maxα x y | tri> ¬a ¬b c = y 199 maxα x y | tri> ¬a ¬b c = y
200 maxα x y | tri≈ ¬a refl ¬c = record { lv = lv x ; ord = maxαd (ord x) (ord y) } 200 maxα x y | tri≈ ¬a refl ¬c = record { lv = lv x ; ord = maxαd (ord x) (ord y) }
201 201
202 --
203 -- max ( osuc x , osuc y )
204 --
202 omax : {n : Level} ( x y : Ordinal {suc n} ) → Ordinal {suc n} 205 omax : {n : Level} ( x y : Ordinal {suc n} ) → Ordinal {suc n}
203 omax {n} x y with <-cmp (lv x) (lv y) 206 omax {n} x y with <-cmp (lv x) (lv y)
204 omax {n} x y | tri< a ¬b ¬c = osuc y 207 omax {n} x y | tri< a ¬b ¬c = osuc y
205 omax {n} x y | tri> ¬a ¬b c = osuc x 208 omax {n} x y | tri> ¬a ¬b c = osuc x
206 omax {n} x y | tri≈ ¬a refl ¬c with triOrdd (ord x) (ord y) 209 omax {n} x y | tri≈ ¬a refl ¬c with triOrdd (ord x) (ord y)
207 omax {n} x y | tri≈ ¬a refl ¬c | tri< a ¬b ¬c₁ = osuc y 210 omax {n} x y | tri≈ ¬a refl ¬c | tri< a ¬b ¬c₁ = osuc y
208 omax {n} x y | tri≈ ¬a refl ¬c | tri≈ ¬a₁ b ¬c₁ = osuc x 211 omax {n} x y | tri≈ ¬a refl ¬c | tri≈ ¬a₁ b ¬c₁ = osuc x
209 omax {n} x y | tri≈ ¬a refl ¬c | tri> ¬a₁ ¬b c = osuc x 212 omax {n} x y | tri≈ ¬a refl ¬c | tri> ¬a₁ ¬b c = osuc x
213
214 omax-induction : {n : Level} ( x y : Ordinal {suc n} ) → { ψ : ( m : Ordinal {suc n} ) → m ≡ omax x y → Set (suc n) }
215 → ( lv x < lv y → ( m : Ordinal {suc n} ) → (eq : m ≡ omax x y ) → ψ m eq )
216 → ( lv y < lv x → ( m : Ordinal {suc n} ) → (eq : m ≡ omax x y ) → ψ m eq )
217 → ( lv y ≡ lv x → ord x ≅ ord y → ( m : Ordinal {suc n} ) → (eq : m ≡ omax x y ) → ψ m eq )
218 → ( lv y ≡ lv x → ord x d< ord y → ( m : Ordinal {suc n} ) → (eq : m ≡ omax x y ) → ψ m eq )
219 → ( lv y ≡ lv x → ord y d< ord x → ( m : Ordinal {suc n} ) → (eq : m ≡ omax x y ) → ψ m eq )
220 → ψ ( omax x y ) refl
221 omax-induction {n} x y c1 c2 c3 c4 c5 with <-cmp (lv x) (lv y)
222 omax-induction {n} x y c1 c2 c3 c4 c5 | tri< a ¬b ¬c = c1 a (osuc y) refl
223 omax-induction {n} x y c1 c2 c3 c4 c5 | tri> ¬a ¬b c = c2 c (osuc x) refl
224 omax-induction {n} x y c1 c2 c3 c4 c5 | tri≈ ¬a refl ¬c with triOrdd (ord x) (ord y)
225 omax-induction {n} x y c1 c2 c3 c4 c5 | tri≈ ¬a refl ¬c | tri< a ¬b ¬c₁ = c4 refl a (osuc y) refl
226 omax-induction {n} x y c1 c2 c3 c4 c5 | tri≈ ¬a refl ¬c | tri≈ ¬a₁ refl ¬c₁ = c3 refl refl (osuc x) refl
227 omax-induction {n} x y c1 c2 c3 c4 c5 | tri≈ ¬a refl ¬c | tri> ¬a₁ ¬b c = c5 refl c (osuc x) refl
210 228
211 omax< : {n : Level} ( x y : Ordinal {suc n} ) → x o< y → osuc y ≡ omax x y 229 omax< : {n : Level} ( x y : Ordinal {suc n} ) → x o< y → osuc y ≡ omax x y
212 omax< {n} x y lt with <-cmp (lv x) (lv y) 230 omax< {n} x y lt with <-cmp (lv x) (lv y)
213 omax< {n} x y lt | tri< a ¬b ¬c = refl 231 omax< {n} x y lt | tri< a ¬b ¬c = refl
214 omax< {n} x y (case1 lt) | tri> ¬a ¬b c = ⊥-elim (¬a lt) 232 omax< {n} x y (case1 lt) | tri> ¬a ¬b c = ⊥-elim (¬a lt)
218 omax< {n} x y (case2 lt) | tri≈ ¬a refl ¬c | tri< a ¬b ¬c₁ = refl 236 omax< {n} x y (case2 lt) | tri≈ ¬a refl ¬c | tri< a ¬b ¬c₁ = refl
219 omax< {n} x y (case2 lt) | tri≈ ¬a refl ¬c | tri≈ ¬a₁ b ¬c₁ = ⊥-elim ( trio<≡ b lt ) 237 omax< {n} x y (case2 lt) | tri≈ ¬a refl ¬c | tri≈ ¬a₁ b ¬c₁ = ⊥-elim ( trio<≡ b lt )
220 omax< {n} x y (case2 lt) | tri≈ ¬a refl ¬c | tri> ¬a₁ ¬b c = ⊥-elim ( o<> (case2 lt) (case2 c) ) 238 omax< {n} x y (case2 lt) | tri≈ ¬a refl ¬c | tri> ¬a₁ ¬b c = ⊥-elim ( o<> (case2 lt) (case2 c) )
221 239
222 omaxx : {n : Level} ( x y : Ordinal {suc n} ) → x o< omax x y 240 omaxx : {n : Level} ( x y : Ordinal {suc n} ) → x o< omax x y
223 omaxx {n} x y with trio< x y 241 omaxx {n} x y = omax-induction {n} x y {λ om refl → x o< om }
224 omaxx {n} x y | tri< a ¬b ¬c = {!!} 242 ( λ lx<ly omax refl → ordtrans (case1 lx<ly) <-osuc )
225 omaxx {n} x y | tri> ¬a ¬b c = {!!} 243 ( λ lx>ly omax → {!!} ) -- ordtrans (case1 lx>ly) <-osuc )
226 omaxx {n} x y | tri≈ ¬a b ¬c = {!!} 244 ( λ refl refl omax refl → {!!} ) -- <-osuc )
245 ( λ refl ox<oy omax → {!!} ) -- ordtrans (case2 ox<oy) <-osuc )
246 ( λ refl ox>oy omax → {!!} ) -- ordtrans (case2 ox>oy) <-osuc )
227 247
228 OrdTrans : {n : Level} → Transitive {suc n} _o≤_ 248 OrdTrans : {n : Level} → Transitive {suc n} _o≤_
229 OrdTrans (case1 refl) (case1 refl) = case1 refl 249 OrdTrans (case1 refl) (case1 refl) = case1 refl
230 OrdTrans (case1 refl) (case2 lt2) = case2 lt2 250 OrdTrans (case1 refl) (case2 lt2) = case2 lt2
231 OrdTrans (case2 lt1) (case1 refl) = case2 lt1 251 OrdTrans (case2 lt1) (case1 refl) = case2 lt1