Fixpoint Cond0 (A:Type) (Interp:A->R) (l:list A) : Prop :=
match l with
| List.nil => True
| a::l => Interp a == 0 /\ Cond0 A Interp l
end.

(* Specifications: *)
Lemma mult_l_correct : forall l la lp,
Cond0 PolZ (PhiR l) lp ->
PhiR l (mult_l la lp) == 0.
Lemma compute_list_correct : forall l lla lp,
Cond0 PolZ (PhiR l) lp ->
Cond0 PolZ (PhiR l) (compute_list lla lp).
Lemma check_correct :
forall l lpe qe certif,
check lpe qe certif = true ->
Cond0 PEZ (PEevalR l) lpe ->
PEevalR l qe == 0.