Definition partial_functional {A: Type} (R: relation A): Prop :=
  forall m n n', R m n -> R m n' -> n = n'.Class PartialFunctional {A: Type} (R: relation A): Prop :=
  partial_functionality: forall m n n', R m n -> R m n' -> n = n'.Class PartialFunctional {A: Type} (R: relation A): Prop :=
  partial_functionality: forall m n n', R m n -> R m n' -> n = n'.Definition functional {A: Type} (R: relation A): Prop :=
  forall m, exists n, forall n', R m n' <-> n' = n.Class Functional {A: Type} (R: relation A): Prop :=
  functionality: forall m, exists n, forall n', R m n' <-> n' = n.Class Functional {A: Type} (R: relation A): Prop :=
  functionality: forall m, exists n, forall n', R m n' <-> n' = n.Definition serial {A: Type} (R: relation A): Prop :=
  forall m, exists n, R m n.Class Serial {A: Type} (R: relation A): Prop :=
  seriality: forall m, exists n, R m n.Class Serial {A: Type} (R: relation A): Prop :=
  seriality: forall m, exists n, R m n.

Lemma function_Functional {A: Type} {f: A -> A}: Functional (fun a => eq (f a)).