Section type.
Universe uT uU.
Variables (T : Type@{uT}) (U : Type@{uU}) (tT : type T) (tU : type U).
Global Instance type_Fun@{uU'} : type@{uU'} (T -> U) :=
{ equal := fun f g => respectful equal equal f g
; proper := fun x => respectful equal equal x x
}.
Variables (tOk : typeOk tT) (uOk : typeOk tU).
Global Instance typeOk_Fun@{uU'} : typeOk@{uU'} type_Fun.
Global Instance proper_app@{uU'} : forall (f : T -> U) (a : T),
proper@{uU'} f -> proper a -> proper (f a).

Theorem proper_fun@{uU'} : forall (f : T -> U),
(forall x y, equal x y -> equal (f x) (f y)) ->
proper@{uU'} f.