code: def test_region_bound_not_independent():
      # (i, i+2) and (i+2, i+4) are dependent, this the lowerbound is not available
      i = tvm.tir.Var("i", "int32")
      var_dom = {
          i: tvm.ir.Range(begin=0, end=64),
      }
      check_region_bound(
          {(i, i + 2): None, (i + 2, i + 4): None},
          var_dom,
          mode="lowerbound",
      )
      check_region_bound(
          {(i, i + 2): (0, 65), (i + 2, i + 4): (2, 67)},
          var_dom,
          mode="upperbound",
      )
  
      # when only a subset of access indices are affine
      i, j, k = (
          tvm.tir.Var("i", "int32"),
          tvm.tir.Var("j", "int32"),
          tvm.tir.Var("k", "int32"),
      )
      var_dom = {
          i: tvm.ir.Range(begin=0, end=16),
          j: tvm.ir.Range(begin=0, end=16),
          k: tvm.ir.Range(begin=0, end=16),
      }
      check_region_bound(
          {i // 4: None, j * 4 + i % 4: None, tir.truncdiv(k, 2): None},
          var_dom,
          predicate=j * 4 + i % 4 > 3,
          mode="lowerbound",
      )
      check_region_bound(
          {
              i // 4: (0, 4),
              j * 4 + i % 4: (4, 64),
              tir.truncdiv(k, 2): (0, 8),
          },
          var_dom,
          predicate=j * 4 + i % 4 > 3,
          mode="upperbound",
      )
  
imports: import tvm
  import tvm.testing
  from tvm import te
  from tvm import tir
  from tvm.arith.analyzer import Analyzer
label_desc: Use image node_id 9 for calling a global function with example usage: test_region_bound_not_independent() without return types