code: def test_nat_add():
      mod = tvm.IRModule()
      p = Prelude(mod)
      p.mod.import_from_std("nat.rly")
      nat, z, s = p.mod.get_type("nat")
      add = p.mod.get_global_var("nat_add")
      dev = tvm.device("llvm", 0)
      assert mod[add].checked_type == relay.FuncType(
          [nat(), nat()], nat()
      )
      assert (
          count(
              p,
              create_executor(
                  mod=mod, device=dev, target="llvm"
              ).evaluate(add(s(z()), s(z()))),
          )
          == 2
      )
      expr = add(s(z()), s(z()))
      f = relay.GlobalVar("f")
      mod[f] = relay.Function([], expr)
      mod = transform.InferType()(mod)
      mod = transform.ToBasicBlockNormalForm()(mod)
      opt_expr = mod["f"]
      assert (
          count(
              p,
              create_executor(
                  mod=mod, device=dev, target="llvm"
              ).evaluate(opt_expr.body),
          )
          == 2
      )
      assert not Feature.fLet in detect_feature(mod[add])
      check_basic_block_normal_form(opt_expr)
  
imports: import pytest
  import numpy
  import tvm
  from tvm import te
  from tvm import relay
  from tvm.relay.analysis import detect_feature
  from tvm.relay import op, create_executor, transform
  from tvm.relay.prelude import Prelude
  from tvm.relay.testing import count, create_workload
  from tvm.relay.analysis import Feature
  from tvm.relay.analysis import check_basic_block_normal_form
label_desc: Use image node_id 8 for calling a global function with example usage: test_nat_add() without return types