Polymorphic Definition Fun@{d c} (A : Type@{d}) (B : Type@{c}) := A -> B.Polymorphic Variables (T : Type) (U : Type) (tT : type T) (tU : type U).Global Polymorphic Instance type_Fun  : type (T -> U) :=
  { equal := fun f g => respectful equal equal f g
  ; proper := fun x => respectful equal equal x x
  }.Polymorphic Variables (tOk : typeOk tT) (uOk : typeOk tU).Global Polymorphic Instance typeOk_Fun : typeOk type_Fun.Global Polymorphic Instance proper_app : forall (f : T -> U) (a : T),
    proper f -> proper a -> proper (f a).

(* Specifications: *)
Polymorphic Theorem proper_fun : forall (f : T -> U), (forall x y, equal x y -> equal (f x) (f y)) -> proper f.
Polymorphic Theorem equal_fun : forall (f g : T -> U), (forall x y, equal x y -> equal (f x) (g y)) -> equal f g.
Polymorphic Theorem equal_app : forall (f g : T -> U) (x y : T), equal f g -> equal x y -> equal (f x) (g y).