Section freem_def.
Variable A : Setoid.
Inductive Tlist : Type :=
| Empty : Tlist
| Concat1 : A -> Tlist -> Tlist.
Fixpoint Equal_Tlist (l : Tlist) : Tlist -> Prop :=
fun m : Tlist =>
match l, m with
| Empty, Empty => True
| Empty, _ => False
| Concat1 a l1, Concat1 b m1 => a =_S b /\ Equal_Tlist l1 m1
| _, _ => False
end.

Lemma Equal_Tlist_equiv : Equivalence Equal_Tlist.