diff options
author | Helmut Grohne <helmut@subdivi.de> | 2013-07-21 20:46:18 +0200 |
---|---|---|
committer | Helmut Grohne <helmut@subdivi.de> | 2013-07-21 20:46:18 +0200 |
commit | ffbdebbced2cbd32f7e121f19c1c0360be2053b8 (patch) | |
tree | d05940e7f0d483c36e5e07ffee49d4054a23b193 /Precond.agda | |
parent | dd95d0924df51daeac7176d4010a30d34bae2b02 (diff) | |
download | bidiragda-ffbdebbced2cbd32f7e121f19c1c0360be2053b8.tar.gz |
import _>>=_ and fmap from Data.Maybe
Also rename fmap to _<$>_ to match Agda naming conventions. The imported
_>>=_ appears to have different binding, so some braces were necessary.
Diffstat (limited to 'Precond.agda')
-rw-r--r-- | Precond.agda | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/Precond.agda b/Precond.agda index f1b5e82..e4699dc 100644 --- a/Precond.agda +++ b/Precond.agda @@ -5,7 +5,12 @@ module Precond (Carrier : Set) (deq : Decidable {A = Carrier} _≡_) where open import Data.Nat using (ℕ) open import Data.Fin using (Fin) open import Data.List using (List ; [] ; _∷_) +import Level +import Category.Monad +import Category.Functor open import Data.Maybe using (nothing ; just) +open Category.Monad.RawMonad {Level.zero} Data.Maybe.monad using (_>>=_) +open Category.Functor.RawFunctor {Level.zero} Data.Maybe.functor using (_<$>_) open import Data.Vec using (Vec ; [] ; _∷_ ; map ; lookup ; toList) open import Data.List.Any using (here ; there) open Data.List.Any.Membership-≡ using (_∉_) @@ -18,13 +23,13 @@ open Relation.Binary.PropositionalEquality.≡-Reasoning using (begin_ ; _≡⟨ open import FinMap using (FinMap ; FinMapMaybe ; lookupM ; union ; fromFunc ; empty ; insert ; lemma-lookupM-empty) import CheckInsert open CheckInsert Carrier deq using (checkInsert ; lemma-checkInsert-new ; lemma-lookupM-checkInsert-other) -open import BFF using (fmap ; _>>=_) +import BFF import Bidir open BFF.VecBFF Carrier deq using (get-type ; assoc ; enumerate ; denumerate ; bff) assoc-enough : {getlen : ℕ → ℕ} (get : get-type getlen) → {m : ℕ} → (s : Vec Carrier m) → (v : Vec Carrier (getlen m)) → ∃ (λ h → assoc (get (enumerate s)) v ≡ just h) → ∃ λ u → bff get s v ≡ just u -assoc-enough get s v (h , p) = u , cong (fmap (flip map s′ ∘ flip lookup) ∘ (fmap (flip union g))) p +assoc-enough get s v (h , p) = u , cong (_<$>_ (flip map s′ ∘ flip lookup) ∘ (_<$>_ (flip union g))) p where s′ = enumerate s g = fromFunc (denumerate s) u = map (flip lookup (union h g)) s′ @@ -50,7 +55,7 @@ different-assoc (u ∷ us) (v ∷ vs) (different-∷ u∉us diff-us) with differ different-assoc (u ∷ us) (v ∷ vs) (different-∷ u∉us diff-us) | h , p' = insert u v h , (begin assoc (u ∷ us) (v ∷ vs) ≡⟨ refl ⟩ - assoc us vs >>= checkInsert u v + (assoc us vs >>= checkInsert u v) ≡⟨ cong (flip _>>=_ (checkInsert u v)) p' ⟩ checkInsert u v h ≡⟨ lemma-checkInsert-new u v h (lemma-∉-lookupM-assoc u us vs h p' u∉us) ⟩ |