Helper Functions For Freeness Of Hyperplane Arrangements¶
This contains the algorithms to check for freeness of a hyperplane
arrangement. See
sage.geometry.hyperplane_arrangement.HyperplaneArrangementElement.is_free()
for details.
Note
This could be extended to a freeness check for more general modules over a polynomial ring.
- sage.geometry.hyperplane_arrangement.check_freeness.construct_free_chain(A)[source]¶
Construct the free chain for the hyperplanes
A
.ALGORITHM:
We follow Algorithm 6.5 in [BC2012].
INPUT:
A
– a hyperplane arrangement
EXAMPLES:
sage: from sage.geometry.hyperplane_arrangement.check_freeness import construct_free_chain sage: H.<x,y,z> = HyperplaneArrangements(QQ) sage: A = H(z, y+z, x+y+z) sage: construct_free_chain(A) [ [1 0 0] [ 1 0 0] [ 0 1 0] [0 1 0] [ 0 z -1] [y + z 0 -1] [0 0 z], [ 0 y 1], [ x 0 1] ]
>>> from sage.all import * >>> from sage.geometry.hyperplane_arrangement.check_freeness import construct_free_chain >>> H = HyperplaneArrangements(QQ, names=('x', 'y', 'z',)); (x, y, z,) = H._first_ngens(3) >>> A = H(z, y+z, x+y+z) >>> construct_free_chain(A) [ [1 0 0] [ 1 0 0] [ 0 1 0] [0 1 0] [ 0 z -1] [y + z 0 -1] [0 0 z], [ 0 y 1], [ x 0 1] ]
- sage.geometry.hyperplane_arrangement.check_freeness.less_generators(X)[source]¶
Reduce the generator matrix of the module defined by
X
.This is Algorithm 6.4 in [BC2012] and relies on the row syzygies of the matrix
X
.EXAMPLES:
sage: from sage.geometry.hyperplane_arrangement.check_freeness import less_generators sage: R.<x,y,z> = QQ[] sage: m = matrix([[1, 0, 0], [0, z, -1], [0, 0, 0], [0, y, 1]]) sage: less_generators(m) [ 1 0 0] [ 0 z -1] [ 0 y 1]
>>> from sage.all import * >>> from sage.geometry.hyperplane_arrangement.check_freeness import less_generators >>> R = QQ['x, y, z']; (x, y, z,) = R._first_ngens(3) >>> m = matrix([[Integer(1), Integer(0), Integer(0)], [Integer(0), z, -Integer(1)], [Integer(0), Integer(0), Integer(0)], [Integer(0), y, Integer(1)]]) >>> less_generators(m) [ 1 0 0] [ 0 z -1] [ 0 y 1]