@@ -1,8 +1,8 @@
1module Control.Isomorphism.Vect
1module Control.Isomorphism.Vect
3−import Interfaces.Verified
4import Control.Isomorphism
3import Control.Isomorphism
5import Data.Vect
4import Data.Vect
5+import Interfaces.Verified
7%default total
7%default total
8%access public export
8%access public export
@@ -31,15 +31,6 @@ splitPair {n} {m} = MkIso (splitAt n) (uncurry (++)) toFrom fromTo
31 toFrom (ns, ms) = trans (splitAtTakeDrop n (ns ++ ms)) $ pairify (takePrefix ns ms) (dropPrefix ns ms)
31 toFrom (ns, ms) = trans (splitAtTakeDrop n (ns ++ ms)) $ pairify (takePrefix ns ms) (dropPrefix ns ms)
32 fromTo xs = rewrite splitAtTakeDrop {m=m} n xs in takeDropConcat n xs
32 fromTo xs = rewrite splitAtTakeDrop {m=m} n xs in takeDropConcat n xs
34−vectLiftIso : Iso l r -> Iso (Vect n l) (Vect n r)
35−vectLiftIso (MkIso to from toFrom fromTo) = MkIso (map to) (map from) toFrom' fromTo'
36− where toFrom' : {n : Nat} -> (rs : Vect n r) -> map to (map from rs) = rs
38− toFrom' (x :: xs) = rewrite toFrom x in rewrite toFrom' xs in Refl
39− fromTo' : {n : Nat} -> (ls : Vect n l) -> map from (map to ls) = ls
41− fromTo' (x :: xs) = rewrite fromTo x in rewrite fromTo' xs in Refl
43zipped : Iso (Vect n a, Vect n b) (Vect n (a, b))
34zipped : Iso (Vect n a, Vect n b) (Vect n (a, b))
44zipped = MkIso (uncurry zip) unzip toFrom (\(as, bs) => fromTo as bs)
35zipped = MkIso (uncurry zip) unzip toFrom (\(as, bs) => fromTo as bs)
45 where toFrom : {n : Nat} -> (xs : Vect n (a, b)) -> uncurry Vect.zip (unzip xs) = xs
36 where toFrom : {n : Nat} -> (xs : Vect n (a, b)) -> uncurry Vect.zip (unzip xs) = xs