Module Test.
Variable A : Type.
Print counterexample.
End Test.
Fixpoint add_list l:=
match l with
| nil => 0
| h::tl => h + (add_list tl)
end.
Inductive subseq {A: Type}: list A -> list A -> Prop :=
| nil_subseq : subseq nil nil
| hd_subseq: forall a l1 l2, subseq l1 l2 -> subseq (a :: l1) (a :: l2)
| tl_subseq: forall a l1 l2, subseq l1 l2 -> subseq l1 (a :: l2)
.
Inductive subseq' {A: Type}: list A -> list A -> Prop :=
| nilss : forall l, subseq' nil l
| hdss: forall a l l1 l2, subseq' l l2 -> subseq' (a :: l) (l1 ++ a :: l2)
.

Theorem ssss: forall A (l1 l2: list A), subseq l1 l2 <-> subseq' l1 l2.