Generalizable Variables n m.
Definition d_𝐦 P := fun Q => P ≡𝐦 Q.
Record mdegree :=
{ mdegree_a :> (term -> Prop) -> Prop ;
mdegree_spec : exists P, forall Q, mdegree_a Q <-> P ≡𝐦 Q
}.
Implicit Types a b : mdegree.
Notation "P ∈ a" := (mdegree_a a P) (at level 50).

(* Specifications: *)
Lemma mdegree_nonempty a : exists P, P ∈ a.
Definition mdegree_of (R : (term -> Prop)) : mdegree.