code: def test_karr_proposition_2b():
      # Test Karr, page 309, proposition 2, part b
      i, u, v, w = symbols("i u v w", integer=True)
  
      def test_the_product(l, n, m):
          # Productmand
          s = i**3
          # First product
          a = l
          b = n - 1
          S1 = Product(s, (i, a, b)).doit()
          # Second product
          a = l
          b = m - 1
          S2 = Product(s, (i, a, b)).doit()
          # Third product
          a = m
          b = n - 1
          S3 = Product(s, (i, a, b)).doit()
          # Test if S1 = S2 * S3 as required
          assert combsimp(S1 / (S2 * S3)) == 1
  
      # l < m < n
      test_the_product(u, u + v, u + v + w)
      # l < m = n
      test_the_product(u, u + v, u + v)
      # l < m > n
      test_the_product(u, u + v + w, v)
      # l = m < n
      test_the_product(u, u, u + v)
      # l = m = n
      test_the_product(u, u, u)
      # l = m > n
      test_the_product(u + v, u + v, u)
      # l > m < n
      test_the_product(u + v, u, u + w)
      # l > m = n
      test_the_product(u + v, u, u)
      # l > m > n
      test_the_product(u + v + w, u + v, u)
  
imports: from sympy.concrete.products import Product, product
  from sympy.concrete.summations import Sum
  from sympy.core.function import Derivative, Function, diff
  from sympy.core.numbers import Rational, oo, pi
  from sympy.core.singleton import S
  from sympy.core.symbol import Dummy, Symbol, symbols
  from sympy.functions.combinatorial.factorials import rf, factorial
  from sympy.functions.elementary.exponential import exp, log
  from sympy.functions.elementary.miscellaneous import sqrt
  from sympy.functions.elementary.trigonometric import cos, sin
  from sympy.functions.special.tensor_functions import KroneckerDelta
  from sympy.simplify.combsimp import combsimp
  from sympy.simplify.simplify import simplify
  from sympy.testing.pytest import raises
label_desc: Use image node_id 3 for calling a global function with example usage: test_karr_proposition_2b() without return types