code: def test_recursive_simplification():
      from nni.nas.profiler.pytorch.utils import MutableShape
  
      x = round(nni.choice("x", [32, 64]) / 2)
      y = nni.choice("y", [3, 5, 7]) - nni.choice("y", [3, 5, 7]) + 1
      z = (
          nni.choice("y", [3, 5, 7])
          + nni.choice("y", [3, 5, 7])
          - nni.choice("x", [32, 64])
      )
      shape = MutableShape(x, y, z)
      d = {"y": y, "w": (y, z), "v": [x, y, z], "shape": shape}
  
      simplified_z = _expression.expression_simplification(z)
      assert sorted(z.grid()) == sorted(simplified_z.grid())
  
      assert _mutable_equal(
          _expression.recursive_simplification(d),
          {
              "y": 1,
              "w": (1, simplified_z),
              "v": [x, 1, simplified_z],
              "shape": MutableShape(x, 1, simplified_z),
          },
      )
  
file_path: nni/test/ut/nas/profiler/test_utils.py
imports: import torch
  from torch import nn
  import nni
  import nni.nas.nn.pytorch
  from nni.mutable import Categorical, frozen_context
  from nni.mutable.mutable import _mutable_equal
  from nni.nas.profiler.pytorch.utils import _attrs, is_leaf_module, _expression
label_desc: Use image node_id 6 for calling a global function with example usage: test_recursive_simplification() without return types