# HG changeset patch # User Shinji KONO # Date 1574042431 -32400 # Node ID ed0a2dad62f4b2e2323de9953fcc7ecd1b15c590 # Parent 795850729aaafacdce66d65da538884bcc6890c5 finite diff -r 795850729aaa -r ed0a2dad62f4 agda/finiteSet.agda --- a/agda/finiteSet.agda Sun Nov 17 18:07:47 2019 +0900 +++ b/agda/finiteSet.agda Mon Nov 18 11:00:31 2019 +0900 @@ -1,3 +1,4 @@ +{-# OPTIONS --allow-unsolved-metas #-} module finiteSet where open import Data.Nat hiding ( _≟_ ) @@ -128,3 +129,65 @@ not-found← : { p : Q → Bool } → exists p ≡ false → (q : Q ) → p q ≡ false not-found← {p} np q = ¬-bool-t ( contra-position {_} {_} {_} {exists p ≡ true} (found q) (λ ep → ¬-bool np ep ) ) +fin-∨' : {A B : Set} → { a b : ℕ } → FiniteSet A {a} → FiniteSet B {b} → FiniteSet (A ∨ B) {a Data.Nat.+ b} +fin-∨' {A} {B} {a} {b} fa fb = record { + Q←F = Q←F + ; F←Q = F←Q + ; finiso→ = finiso→ + ; finiso← = finiso← + } where + n : ℕ + n = a Data.Nat.+ b + Q : Set + Q = A ∨ B + Q←F : Fin n → Q + Q←F f with Data.Nat.Properties.<-cmp (toℕ f) a + Q←F f | tri< lt ¬b ¬c = case1 (FiniteSet.Q←F fa (fromℕ≤ lt )) + Q←F f | tri≈ ¬a eq ¬c = case2 (FiniteSet.Q←F fb (fromℕ≤ 0 ¬a ¬b c = case2 (FiniteSet.Q←F fb (fromℕ≤ f-a