code: def test_DDM_is_lower():
      # Tall matrices:
      A = DDM(
          [
              [QQ(1), QQ(2), QQ(3), QQ(4)],
              [QQ(0), QQ(5), QQ(6), QQ(7)],
              [QQ(0), QQ(0), QQ(8), QQ(9)],
          ],
          (3, 4),
          QQ,
      ).transpose()
      B = DDM(
          [
              [QQ(1), QQ(2), QQ(3), QQ(4)],
              [QQ(0), QQ(5), QQ(6), QQ(7)],
              [QQ(0), QQ(7), QQ(8), QQ(9)],
          ],
          (3, 4),
          QQ,
      ).transpose()
      assert A.is_lower() is True
      assert B.is_lower() is False
  
      # Wide matrices:
      A = DDM(
          [
              [QQ(1), QQ(2), QQ(3)],
              [QQ(0), QQ(5), QQ(6)],
              [QQ(0), QQ(0), QQ(8)],
              [QQ(0), QQ(0), QQ(0)],
          ],
          (4, 3),
          QQ,
      ).transpose()
      B = DDM(
          [
              [QQ(1), QQ(2), QQ(3)],
              [QQ(0), QQ(5), QQ(6)],
              [QQ(0), QQ(0), QQ(8)],
              [QQ(0), QQ(0), QQ(10)],
          ],
          (4, 3),
          QQ,
      ).transpose()
      assert A.is_lower() is True
      assert B.is_lower() is False
  
imports: from sympy.testing.pytest import raises
  from sympy.external.gmpy import GROUND_TYPES
  from sympy.polys import ZZ, QQ
  from sympy.polys.matrices.ddm import DDM
  from sympy.polys.matrices.exceptions import DMShapeError, DMNonInvertibleMatrixError, DMDomainError, DMBadInputError
label_desc: Use image node_id 34 for calling a global function with example usage: test_DDM_is_lower() without return types