(* axiome utilise frequement disant que l'egalite fonctionnelle est la
meme que l'egalite denotationnelle, il est possible que cet axiome ne
soit utilise que sur des ensembles finis sur lequel il pourrait etre
demontre. Il est possible aussi que l'on puisse s'en passer mais il
simplifie bien la vie *)

Axiom
  funct_eq :
    forall (E F : Set) (g h : E -> F), (forall e : E, g e = h e) -> g = h.

(* Specifications: *)
Lemma in_not_in : forall (E : Set) (a b : E) (l : list E), In a l -> ~ In b l -> a <> b.