Definition pl_produit_ref_ok_0 (la pl : prec_list) : Prop :=
forall (a b : ad) (l : prec_list) (n : nat),
prec_occur (pl_produit_0 a la pl n l) b ->
(exists a0 : ad,
(exists a1 : ad,
b = iad_conv a0 a1 /\ prec_occur la a0 /\ prec_occur pl a1)) \/
(exists a1 : ad, b = iad_conv a a1 /\ prec_occur pl a1) \/ prec_occur l b.
Definition pl_produit_ref_ok_1 (p0 p1 : prec_list) : Prop :=
forall (b : ad) (n : nat),
prec_occur (pl_produit_1 p0 n p1) b ->
exists a0 : ad,
(exists a1 : ad,
b = iad_conv a0 a1 /\ prec_occur p0 a0 /\ prec_occur p1 a1).

Lemma preDTA_produit_r_ref_ok :
forall (d d0 d1 : preDTA) (s : state) (a : ad),
preDTA_ref_ok_distinct d d0 ->
preDTA_ref_ok_distinct (M1 state a s) d1 ->
preDTA_ref_ok_distinct (preDTA_produit_r a s d) (preDTA_produit d0 d1).