Это короче, но не намного полезнее ...
liftM2 {A B R} {m} : Monad m -> (A -> B -> R) -> m A -> m B -> m R.
Я не понимаю, почему вы хотите или нуждаетесь в этом короче, чем сейчас. Каждая вещь имеет свою важность, и немногие имена помогают ее читать.
Этот лифтM2 выглядит настолько легким, насколько это возможно.
Однако, если вы определяете множество функций, которые имеют общие параметры, вы можете определить его внутри раздела, внутри которого вы можете иметь параметры. Например, посмотрите, как здесь определяется liftM2:
http://mattam.org/repos/coq/oldprelude/Monad.v
mon : Monad m
определен внутри раздела и будет передан всем функциям, которые фактически его используют. После закрытия раздела вы можете проверить подпись, чтобы убедиться, что она действительно пропущена.