Proof using.
intros a l; elim l; simpl in |- *; auto.
intros (a1, l1) l0 H H0.
case (eqA_dec a a1); auto.
intros H1; case (H0 l1); rewrite H1; auto.
intros H1; apply H; intros p; red in |- *; intros Hp; case (H0 p); auto.
Qed.

(* find_code is composed by append *)
Theorem find_code_app :
forall a l1 l2,
not_null l1 ->
find_code a (l1 ++ l2) =
match find_code a l1 with
| nil => find_code a l2
| b1 :: l3 => b1 :: l3
end.