Setoid of lists over a setoid and associated definitions
data .ListEquality : (a : Setoid) -> Rel (List (U a))Nil : a .ListEquality [] [](::) : (a .equivalence) .relation x y -> a .ListEquality xs ys -> a .ListEquality (x :: xs) (y :: ys).ListEqualityReflexive : (a : Setoid) -> (xs : List (U a)) -> a .ListEquality xs xs.ListEqualitySymmetric : (a : Setoid) -> (xs : List (U a)) -> (ys : List (U a)) -> a .ListEquality xs ys -> a .ListEquality ys xs.ListEqualityTransitive : (a : Setoid) -> (xs : List (U a)) -> (ys : List (U a)) -> (zs : List (U a)) -> a .ListEquality xs ys -> a .ListEquality ys zs -> a .ListEquality xs zsListSetoid : Setoid -> SetoidListMapFunctionHomomorphism : (f : a ~> b) -> SetoidHomomorphism (ListSetoid a) (ListSetoid b) (map (f .H))ListMapHomomorphism : a ~> b -> ListSetoid a ~> ListSetoid bListMapIsHomomorphism : SetoidHomomorphism (a ~~> b) (ListSetoid a ~~> ListSetoid b) ListMapHomomorphismListMap : (a ~~> b) ~> (ListSetoid a ~~> ListSetoid b)reverseHomomorphic : (x : List (U a)) -> (y : List (U a)) -> a .ListEquality x y -> a .ListEquality (reverse x) (reverse y)appendCongruence : (x1 : List (U a)) -> (x2 : List (U a)) -> (y1 : List (U a)) -> (y2 : List (U a)) -> a .ListEquality x1 y1 -> a .ListEquality x2 y2 -> a .ListEquality (x1 ++ x2) (y1 ++ y2)