let assigned env t =
    (* (ZD) DO preserve this filter, as \empty is polymorphic! *)
    match t.term_node with
      |  Tempty_set  | TLval (TResult _, _ ) -> []
      | _ ->
          let data = data_of_assignable env t in
          let te =
            match t.term_type with
              | Ctype te -> te
              | Ltype( {lt_name="set"} , [Ctype elt] ) -> elt
               | _ -> WpLog.fatal
                  "unexpected logic-type for assignable term %a"
                    !Ast_printer.d_logic_type t.term_type
          in
          assigned_of_data (object_of te) [] data