Fixpoint find_id (id: ident) (G: funspecs) : option funspec  :=
 match G with
 | (id', f)::G' => if eq_dec id id' then Some f else find_id id G'
 | nil => None
 end.

(* Specifications: *)
Lemma in_map_fst: forall {A B: Type} (i: A) (j: B) (G: list (A*B)), In (i,j) G -> In i (map (@fst _ _ ) G).
Lemma find_id_i: forall id fs G, In (id,fs) G -> list_norepet (map (@fst _ _) G) -> find_id id G = Some fs.
Lemma find_id_e: forall id G fs, find_id id G = Some fs -> In (id,fs) G.