code: def test_adt_compose():
      mod = tvm.IRModule()
      p = Prelude(mod)
  
      compose = mod.get_global_var("compose")
  
      # add_one = fun x -> x + 1
      sb = relay.ScopeBuilder()
      x = relay.var("x", "float32")
      x1 = sb.let("x1", x)
      xplusone = x1 + relay.const(1.0, "float32")
      sb.ret(xplusone)
      body = sb.get()
      add_one = relay.GlobalVar("add_one")
      add_one_func = relay.Function([x], body)
  
      # add_two = compose(add_one, add_one)
      sb = relay.ScopeBuilder()
      y = relay.var("y", "float32")
      add_two_func = sb.let(
          "add_two", compose(add_one_func, add_one_func)
      )
      add_two_res = add_two_func(y)
      sb.ret(add_two_res)
      add_two_body = sb.get()
  
      mod[add_one] = add_one_func
  
      f = relay.Function([y], add_two_body)
      mod["main"] = f
  
      x_data = np.array(np.random.rand()).astype("float32")
      result = get_serialized_output(mod, x_data)
      tvm.testing.assert_allclose(result.numpy(), x_data + 2.0)
  
imports: import pytest
  import numpy
  import tvm
  from tvm.runtime import vm
  from tvm.relay import vm
  from tvm import relay
  from tvm.relay.scope_builder import ScopeBuilder
  from tvm.relay import transform
  from tvm.relay.prelude import Prelude
  from tvm.contrib import utils
  from tvm.relay import testing
label_desc: Use image node_id 11 for calling a global function with example usage: test_adt_compose() without return types