def gf_sqf_part(f, p, K):
 (_, sqf) = gf_sqf_list(f, p, K)
 g = [K.one]
 for (f, _) in sqf:
  g = gf_mul(g, f, p, K)
 return g

def gf_sqf_part ( f , p , K ) : ( _ , sqf ) = gf_sqf_list ( f , p , K ) g = [ K . one ] for ( f , _ ) in sqf : g = gf_mul ( g , f , p , K ) return g
return square-free part of a gf(p)[x] polynomial .