code: def test_sdm_add():
      assert sdm_add(
          [((1, 1, 1), QQ(1))], [((2, 0, 0), QQ(1))], lex, QQ
      ) == [((2, 0, 0), QQ(1)), ((1, 1, 1), QQ(1))]
      assert (
          sdm_add([((1, 1, 1), QQ(1))], [((1, 1, 1), QQ(-1))], lex, QQ)
          == []
      )
      assert sdm_add(
          [((1, 0, 0), QQ(1))], [((1, 0, 0), QQ(2))], lex, QQ
      ) == [((1, 0, 0), QQ(3))]
      assert sdm_add(
          [((1, 0, 1), QQ(1))], [((1, 1, 0), QQ(1))], lex, QQ
      ) == [((1, 1, 0), QQ(1)), ((1, 0, 1), QQ(1))]
  
imports: from sympy.polys.distributedmodules import sdm_monomial_mul, sdm_monomial_deg, sdm_monomial_divides, sdm_add, sdm_LM, sdm_LT, sdm_mul_term, sdm_zero, sdm_deg, sdm_LC, sdm_from_dict, sdm_spoly, sdm_ecart, sdm_nf_mora, sdm_groebner, sdm_from_vector, sdm_to_vector, sdm_monomial_lcm
  from sympy.polys.orderings import lex, grlex, InverseOrder
  from sympy.polys.domains import QQ
  from sympy.abc import x, y, z
label_desc: Use image node_id 7 for calling a global function with example usage: test_sdm_add() without return types