Ltac destr_mfactor R S := match goal with
| H : context [MFactor ?P _] |- context [MFactor ?P ?M] =>
specialize (H M); destruct MFactor as (R,S)
end.

Lemma Mphi_ok P M l :
let (Q,R) := MFactor P M in
P@l == Q@l + M@@l * R@l.