sig
  type t =
      Assign of Action.lhs * Expr.t
    | Emit of string
    | StateMove of string * string * string
  and lhs = { mutable l_desc : Action.lhs_desc; }
  and lhs_desc =
      LhsVar of string
    | LhsArrInd of string * Expr.t
    | LhsArrRange of string * Expr.t * Expr.t
    | LhsRField of string * string
  val mk_lhs : string -> Action.lhs
  val lhs_name : Action.lhs -> string
  val vars_of : Action.t -> Expr.VarSet.t * Expr.VarSet.t
  val rename : (string -> string) -> Action.t -> Action.t
  val subst : Eval.env -> Action.t -> Action.t
  val string_of_lhs : Action.lhs -> string
  val to_string : Action.t -> string
end