module Vec.Permutation {a} {A : Set a} where

open import Data.Nat using (ℕ)
open import Data.Vec
open import Relation.Binary

private variable
  n : ℕ
  xs ys zs : Vec A n

infix 3 _↭_

data _↭_ : Rel (Vec A n) a where
  refl  :         xs ↭ xs
  prep  : ∀ x   → xs ↭ ys → x ∷ xs ↭ x ∷ ys
  swap  : ∀ x y → xs ↭ ys → x ∷ y ∷ xs ↭ y ∷ x ∷ ys
  trans :         xs ↭ ys → ys ↭ zs → xs ↭ zs