# isHomogeneousVectorField -- determine whether a matrix or module is generated by homogeneous vector fields

## Synopsis

• Usage:
b=isHomogeneousVectorField(M)
b=isHomogeneousVectorField(m)
b=isHomogeneousVectorField(M,s)
b=isHomogeneousVectorField(m,s)
• Inputs:
• M, , of vector fields
• m, , of vector fields
• s, a list, of degrees
• s, a set, of degrees
• Outputs:
• b, , whether the vector fields are homogeneous, or homogeneous of a type in s

## Description

Determine whether the matrix or module is generated by homogeneous vector fields, or homogeneous vector fields of degrees appearing in s. See homogeneousVectorFieldDegree for more information on degrees.

This is not homogeneous because of $1 \partial_x + 2x \partial_y$:

 i1 : R=QQ[x,y]; i2 : M1=derlog(ideal (x^2-y)) o2 = image | x 1 | | 2y 2x | 2 o2 : R-module, submodule of R i3 : isHomogeneousVectorField(gens M1) o3 = false

This is homogeneous, of degree -1 and 0:

 i4 : M2=gens derlog(ideal (x)) o4 = | 0 x | | 1 0 | 2 2 o4 : Matrix R <--- R i5 : homogeneousVectorFieldDegree(M2) o5 = {{-1}, {0}} o5 : List i6 : isHomogeneousVectorField(M2) o6 = true i7 : isHomogeneousVectorField(M2,{{-1},{0}}) o7 = true

This is homogeneous, of degrees 0, 1, and -infinity:

 i8 : M3=matrix {{x,0,0},{0,y^2,0}} o8 = | x 0 0 | | 0 y2 0 | 2 3 o8 : Matrix R <--- R i9 : homogeneousVectorFieldDegree(M3) o9 = {{0}, {1}, -infinity} o9 : List i10 : isHomogeneousVectorField(M3) o10 = true i11 : isHomogeneousVectorField(M3,{{1},{0}}) o11 = false i12 : isHomogeneousVectorField(M3,{-infinity,{1},{0}}) o12 = true

If the parameter is a module, then the generators given by generators are studied. Consequently, the routine may return false even though a module may have a homogeneous basis:

 i13 : m=matrix {{0,0},{x,x^3+x}} o13 = | 0 0 | | x x3+x | 2 2 o13 : Matrix R <--- R i14 : isHomogeneousVectorField(image m) o14 = false i15 : isHomogeneousVectorField(trim image m) o15 = true

## Caveat

Despite the name, the function does not check the number of vector fields provided.