def hensel_lift_int(g0, f0, char, height, where)
      # self in MPolynomial/int
      # g0 in Polyomial/Z, candidate of factor of f0
      # f0 in Polyomial/Z, one variable reduction of self

      pheight = gelfond_bound(char)

      fk = _hensel_lift(g0, f0, char, height, where) do |ha, ary, cofacts|
        #    fk =  _hensel_lift(g0, f0, char, height) {|ha, ary, cofacts|
        decompose_on_cofactors_p_adic(ha, ary, cofacts, char, pheight)
      end
      mod = char**pheight
      g = centorize(fk[0], mod)
      h = centorize(fk[1], mod)

      r = self - g * h
      return [g, h] if r.zero?

      nil
    end
def hensel_lift_int(g0, f0, char, height, where)
      # self in MPolynomial/int
      # g0 in Polyomial/Z, candidate of factor of f0
      # f0 in Polyomial/Z, one variable reduction of self

      pheight = gelfond_bound(char)

      fk = _hensel_lift(g0, f0, char, height, where) do |ha, ary, cofacts|
        #    fk =  _hensel_lift(g0, f0, char, height) {|ha, ary, cofacts|
        decompose_on_cofactors_p_adic(ha, ary, cofacts, char, pheight)
      end
      mod = char**pheight
      g = centorize(fk[0], mod)
      h = centorize(fk[1], mod)

      r = self - g * h
      return [g, h] if r.zero?

      nil
    end
def hensel_lift_int(g0, f0, char, height)