...     return a
      ...
      >>> f_no_mutations_and_views_traced = make_fx(functionalize(f, remove='mutations_and_views'))(inpt)
      >>> #
      >>> # All mutations and views have been removed,
      >>> # but there is an extra copy_ in the graph to correctly apply the mutation to the input
      >>> # after the function has completed.
      >>> print(f_no_mutations_and_views_traced.code)
  def forward(self, a_1):
      view_copy = torch.ops.aten.view_copy(a_1, [-1])
      add = torch.ops.aten.add(view_copy, 1);  view_copy = None
      view_copy_1 = torch.ops.aten.view_copy(add, [2]);  add = None
      copy_ = torch.ops.aten.copy_(a_1, view_copy_1);  a_1 = None
      return view_copy_1

There are a few "failure modes" for functionalize that are worth
   calling out:
      1. Like other torch.func transforms, functionalize() doesn't
         work with functions that directly use .backward(). The same