code: def test_kahane_simplify1():
      (
          i0,
          i1,
          i2,
          i3,
          i4,
          i5,
          i6,
          i7,
          i8,
          i9,
          i10,
          i11,
          i12,
          i13,
          i14,
          i15,
      ) = tensor_indices("i0:16", LorentzIndex)
      mu, nu, rho, sigma = tensor_indices(
          "mu, nu, rho, sigma", LorentzIndex
      )
      D = 4
      t = G(i0) * G(i1)
      r = kahane_simplify(t)
      assert r.equals(t)
  
      t = G(i0) * G(i1) * G(-i0)
      r = kahane_simplify(t)
      assert r.equals(-2 * G(i1))
      t = G(i0) * G(i1) * G(-i0)
      r = kahane_simplify(t)
      assert r.equals(-2 * G(i1))
  
      t = G(i0) * G(i1)
      r = kahane_simplify(t)
      assert r.equals(t)
      t = G(i0) * G(i1)
      r = kahane_simplify(t)
      assert r.equals(t)
      t = G(i0) * G(-i0)
      r = kahane_simplify(t)
      assert r.equals(4 * eye(4))
      t = G(i0) * G(-i0)
      r = kahane_simplify(t)
      assert r.equals(4 * eye(4))
      t = G(i0) * G(-i0)
      r = kahane_simplify(t)
      assert r.equals(4 * eye(4))
      t = G(i0) * G(i1) * G(-i0)
      r = kahane_simplify(t)
      assert r.equals(-2 * G(i1))
      t = G(i0) * G(i1) * G(-i0) * G(-i1)
      r = kahane_simplify(t)
      assert r.equals((2 * D - D**2) * eye(4))
      t = G(i0) * G(i1) * G(-i0) * G(-i1)
      r = kahane_simplify(t)
      assert r.equals((2 * D - D**2) * eye(4))
      t = G(i0) * G(-i0) * G(i1) * G(-i1)
      r = kahane_simplify(t)
      assert r.equals(16 * eye(4))
      t = G(mu) * G(nu) * G(-nu) * G(-mu)
      r = kahane_simplify(t)
      assert r.equals(D**2 * eye(4))
      t = G(mu) * G(nu) * G(-nu) * G(-mu)
      r = kahane_simplify(t)
      assert r.equals(D**2 * eye(4))
      t = G(mu) * G(nu) * G(-nu) * G(-mu)
      r = kahane_simplify(t)
      assert r.equals(D**2 * eye(4))
      t = G(mu) * G(nu) * G(-rho) * G(-nu) * G(-mu) * G(rho)
      r = kahane_simplify(t)
      assert r.equals((4 * D - 4 * D**2 + D**3) * eye(4))
      t = (
          G(-mu)
          * G(-nu)
          * G(-rho)
          * G(-sigma)
          * G(nu)
          * G(mu)
          * G(sigma)
          * G(rho)
      )
      r = kahane_simplify(t)
      assert r.equals(
          (-16 * D + 24 * D**2 - 8 * D**3 + D**4) * eye(4)
      )
      t = (
          G(-mu)
          * G(nu)
          * G(-rho)
          * G(sigma)
          * G(rho)
          * G(-nu)
          * G(mu)
          * G(-sigma)
      )
      r = kahane_simplify(t)
      assert r.equals(
          (8 * D - 12 * D**2 + 6 * D**3 - D**4) * eye(4)
      )
  
      # Expressions with free indices:
      t = G(mu) * G(nu) * G(rho) * G(sigma) * G(-mu)
      r = kahane_simplify(t)
      assert r.equals(-2 * G(sigma) * G(rho) * G(nu))
      t = G(mu) * G(-mu) * G(rho) * G(sigma)
      r = kahane_simplify(t)
      assert r.equals(4 * G(rho) * G(sigma))
      t = G(rho) * G(sigma) * G(mu) * G(-mu)
      r = kahane_simplify(t)
      assert r.equals(4 * G(rho) * G(sigma))
  
file_path: sympy/sympy/physics/hep/tests/test_gamma_matrices.py
imports: from sympy.matrices.dense import eye, Matrix
  from sympy.tensor.tensor import tensor_indices, TensorHead, tensor_heads, TensExpr, canon_bp
  from sympy.physics.hep.gamma_matrices import GammaMatrix, LorentzIndex, kahane_simplify, gamma_trace, _simplify_single_line, simplify_gamma_expression
  from sympy import Symbol
label_desc: Use image node_id 4 for calling a global function with example usage: test_kahane_simplify1() without return types