Section MapLists.
Fixpoint ad_in_list (a:ad) (l:list ad) {struct l} : bool :=
match l with
| nil => false
| a' :: l' => orb (N.eqb a a') (ad_in_list a l')
end.
Fixpoint ad_list_stutters (l:list ad) : bool :=
match l with
| nil => false
| a :: l' => orb (ad_in_list a l') (ad_list_stutters l')
end.

Lemma ad_in_list_forms_circuit :
forall (x:ad) (l:list ad),
ad_in_list x l = true ->
{l1 : list ad &  {l2 : list ad | l = l1 ++ x :: l2}}.