Definition id {X} (x: X): X := x.(* extensional equality on simple functions *)

Definition ext_eq {A B: Type} (f g: A -> B): Prop := forall x, f x = g x.

(* Specifications: *)
Lemma ext_eq_trans: forall A B, transitive _ (@ext_eq A B).
Lemma ext_eq_refl: forall A B, reflexive _ (@ext_eq A B).
Lemma ext_eq_sym: forall A B, symmetric _ (@ext_eq A B).