code: def dmp_sqf_norm(f, u, K):
      """
      Square-free norm of ``f`` in ``K[X]``, useful over algebraic domains.
  
      Returns ``s``, ``f``, ``r``, such that ``g(x) = f(x-sa)`` and ``r(x) = Norm(g(x))``
      is a square-free polynomial over K, where ``a`` is the algebraic extension of ``K``.
  
      Examples
      ========
  
      >>> from sympy.polys import ring, QQ
      >>> from sympy import I
  
      >>> K = QQ.algebraic_field(I)
      >>> R, x, y = ring("x,y", K)
      >>> _, X, Y = ring("x,y", QQ)
  
      >>> s, f, r = R.dmp_sqf_norm(x*y + y**2)
  
      >>> s == 1
      True
      >>> f == x*y + y**2 + K([QQ(-1), QQ(0)])*y
      True
      >>> r == X**2*Y**2 + 2*X*Y**3 + Y**4 + Y**2
      True
  
      """
      if not u:
          return dup_sqf_norm(f, K)
  
      if not K.is_Algebraic:
          raise DomainError("ground domain must be algebraic")
  
      g = dmp_raise(K.mod.to_list(), u + 1, 0, K.dom)
      F = dmp_raise([K.one, -K.unit], u, 0, K)
  
      s = 0
  
      while True:
          h, _ = dmp_inject(f, u, K, front=True)
          r = dmp_resultant(g, h, u + 1, K.dom)
  
          if dmp_sqf_p(r, u, K.dom):
              break
          else:
              f, s = dmp_compose(f, F, u, K), s + 1
  
      return s, f, r
  
imports: from sympy.polys.densearith import dup_neg, dmp_neg, dup_sub, dmp_sub, dup_mul, dup_quo, dmp_quo, dup_mul_ground, dmp_mul_ground
  from sympy.polys.densebasic import dup_strip, dup_LC, dmp_ground_LC, dmp_zero_p, dmp_ground, dup_degree, dmp_degree, dmp_raise, dmp_inject, dup_convert
  from sympy.polys.densetools import dup_diff, dmp_diff, dmp_diff_in, dup_shift, dmp_compose, dup_monic, dmp_ground_monic, dup_primitive, dmp_ground_primitive
  from sympy.polys.euclidtools import dup_inner_gcd, dmp_inner_gcd, dup_gcd, dmp_gcd, dmp_resultant
  from sympy.polys.galoistools import gf_sqf_list, gf_sqf_part
  from sympy.polys.polyerrors import MultivariatePolynomialError, DomainError
label_desc: Use image node_id 4 for calling a global function with example usage: dmp_sqf_norm(f, u, K) and returns: s,  f,  r, dup_sqf_norm