Section Reductions.
Variable (X Y Z: Type).
Implicit Types (P: X -> Prop) (Q: Y -> Prop) (R: Z -> Prop).
Definition Neg {X} (P: X -> Prop) (x: X) := ~ P x.
Definition reduction {X Y: Type} (P: X -> Prop) (Q: Y -> Prop) :=
exists f, forall x, P x <-> Q (f x).
Notation "P ⪯ Q" := (reduction P Q) (at level 60).

Lemma reduction_neg P Q: P ⪯ Q -> Neg P ⪯ Neg Q.