import public Data.List.Ex
import public Data.SortedMap
import public Data.Vect
import public Decidable.Equality
import public Language.Reflection
import public Language.Reflection.Syntax
import public Language.Reflection.Syntax.Ops
import public Syntax.IHateParens.List
import public Syntax.IHateParens.VectorderIndices : Ord a => (xs : List a) -> Vect (xs .length) (Fin (xs .length))reorder : Vect n (Fin n) -> Vect n a -> Vect n areorder' : (xs : List a) -> Vect (xs .length) (Fin (xs .length)) -> (ys : List a ** ys .length = xs .length)reorder'' : Maybe (n : Nat ** Vect n (Fin n)) -> List TTImp -> Maybe (List TTImp)reorderGend : Bool -> Vect n (Fin n) -> TTImp -> TTImpProduces expression returning a mkdpair in a different order, if needed
Direct means that given expression which returns ascending order, result is permutated; non-direct means vice versa.