Inductive action :=
Inter (_ _ _ _ _: tvar)
| SFree (_:tvar) (_:var) (_: tvar) (_:var) (_: tvar).
Definition intera (a: action): Prop :=
match a with
| Inter x a b c d =>
{v[x]} = ({v[a]} ∨ {v[b]}) ∧ ({v[c]} ∨ {v[d]}) :> vect K
| SFree x a b c d =>
{v[x]} = {k[a]} .* {v[b]} + {k[c]} .* {v[d]} :> vect K
end.
Fixpoint interla (l : list action) (c : Prop) : Prop :=
match l with
| nil => c
| a :: l1 => intera a -> interla l1 c
end.
Definition interla_refine (c1 c2 : Prop) l :
(c1 -> c2) -> (interla l c1 -> interla l c2).
Definition do_auto n l e :=
let e1 := resolve l e in
let e2 := rp_val _ (iter_contra 10 e1) in
rp_val _ (iter_step n e2).

(* Specifications: *)
Lemma do_auto_c n l e :
interla l ({e1[e]} = {e1[do_auto n l e]}).