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 zs
ListSetoid : Setoid -> Setoid
ListMapFunctionHomomorphism : (f : a ~> b) -> SetoidHomomorphism (ListSetoid a) (ListSetoid b) (map (f .H))
ListMapHomomorphism : a ~> b -> ListSetoid a ~> ListSetoid b
ListMapIsHomomorphism : SetoidHomomorphism (a ~~> b) (ListSetoid a ~~> ListSetoid b) ListMapHomomorphism
ListMap : (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)