Definition fprod A1 A2 B1 B2 (f1 : A1 -> B1) (f2 : A2 -> B2) :=
  fun (x : A1 * A2) => (f1 x.1, f2 x.2).Notation "f1 \* f2" := (fprod f1 f2) (at level 42, left associativity).

(* Specifications: *)
Lemma ext A (B : A -> Type) (f1 f2 : forall x, B x) : f1 = f2 -> forall x, f1 x = f2 x.