Fixpoint MPcond (LM1: list (Mon * Pol)) (l: Env R) : Prop :=
match LM1 with
| cons (M1,P2) LM2 => (M1@@l == P2@l) /\ MPcond LM2 l
| _ => True
end.

(* Specifications: *)
Lemma PSubstL1_ok n LM1 P1 l :
MPcond LM1 l -> P1@l == (PSubstL1 P1 LM1 n)@l.
Lemma PSubstL_ok n LM1 P1 P2 l :
PSubstL P1 LM1 n = Some P2 -> MPcond LM1 l -> P1@l == P2@l.
Lemma PNSubstL_ok m n LM1 P1 l :
MPcond LM1 l -> P1@l == (PNSubstL P1 LM1 m n)@l.