t=isFreeDivisor(M)
t=isFreeDivisor(m)
t=isFreeDivisor(f)
Determine whether the given object is associated to a free divisor, using a variety of methods. A free divisor is a hypersurface germ $X$ for which the associated module of logarithmic vector fields (see derlog) is free.
When given a RingElement f, this tests whether f=0 is a free divisor by computing derlog(ideal (f)) and then testing if this is a free module by computing a partial resolution. This method may give false negatives if the resolution computed is not minimal; use with caution.
When given a Matrix M, this tests whether the given vector fields are a free set of generators of the module of logarithmic vector fields for a free divisor. A criterion of Kyoji Saito is used: if the number of vector fields provided equals the dimension of the ambient space (i.e., M is square), the vector fields generate a Lie algebra, and the determinant of the matrix is reduced (square-free), then the provided vector fields are a free basis of the free module derlog(ideal det(M)), and det(M)=0 defines a free divisor. This method may give false negatives if redundant generators are provided.
When given a Module, this tests whether the module is the module of logarithmic vector fields of a free divisor. The method applies the Matrix version of the command to the generators given by gens(m). If the generators provided by generators are not minimal, then this may give false negatives; use trim first.
For example, this is not a free divisor:
|
|
|
|
|
|
This is a free divisor:
|
|
|
|
|
This is a free divisor:
|
|
|
|
but the vector fields in M are not a generating set of the logarithmic vector fields:
|
|
|
False negatives can occur with a set of generators that is not minimal:
|
|
The object isFreeDivisor is a method function.