Opened 5 years ago

Closed 5 years ago

# 0 by 0 minor of a matrix should belong to the base ring

Reported by: Owned by: kedlaya major sage-7.2 linear algebra schemes, Jacobian, matrix, minors Kiran Kedlaya Frédéric Chapoton N/A 06a432a 06a432a988286bfae4a86e140e53022a9cbc4fc1

This shouldn't return an error:

sage: P.<x,y,z> = ProjectiveSpace(2, QQ)
sage: X = P.subscheme([])
sage: X.Jacobian_matrix() # This works
[]
sage: X.Jacobian() #This doesn't
...
AttributeError: 'sage.rings.integer.Integer' object has no attribute 'reduce'


I think the mathematically correct answer is that X.Jacobian() should equal the ideal (1). This is consistent with the definition in the docstring:

  * the d\times d minors of the Jacobian matrix, where d is
the :meth:codimension of the algebraic scheme, and

* the defining polynomials of the algebraic scheme. Note that
some authors do not include these in the definition of the
Jacobian ideal. An example of a reference that does include
the defining equations is [LazarsfeldJacobian].


In this case d=0, and the unique 0 by 0 minor of any matrix (empty or not) is equal to 1. And anyway, the Jacobian ideal of the full ambient space should cut out the empty subscheme.

### comment:1 Changed 5 years ago by kedlaya

• Description modified (diff)

### comment:2 Changed 5 years ago by kedlaya

• Cc nbruin removed
• Component changed from algebraic geometry to linear algebra
• Description modified (diff)
• Summary changed from Jacobian of the tautologous subscheme of a toric variety is broken to 0 by 0 minor of a matrix should belong to the base ring

In fact, the problem seems to be that the 0 by 0 minor of a matrix is returned as 1 in the ring of integers, not the base ring of the matrix. Retitled and reclassified accordingly.

### comment:3 Changed 5 years ago by kedlaya

• Branch set to u/kedlaya/jacobian_of_the_tautologous_subscheme_of_a_toric_variety_is_broken

### comment:4 Changed 5 years ago by kedlaya

• Authors set to Kiran Kedlaya
• Commit set to d2f604fa8ae2d4b16b4f3f38b4abd078268de401
• Status changed from new to needs_review

I changed matrix/matrix2.pyx to fix the underlying issue with minors, and added a doctest to schemes/generic/algebraic_scheme.py to confirm that Jacobian is no longer broken.

New commits:

 ​d2f604f Corrected return value of minors(0) for matrices

### comment:5 follow-up: ↓ 8 Changed 5 years ago by chapoton

• doc is not formatted correctly, the line before the tests should end with :: and be followed by a blank line
• please also use :trac:20512 instead of the bare #20512
• you should rather use .base_ring().one() instead of .base_ring()(1)

### comment:6 Changed 5 years ago by chapoton

• Status changed from needs_review to needs_work

### comment:7 Changed 5 years ago by git

• Commit changed from d2f604fa8ae2d4b16b4f3f38b4abd078268de401 to 06a432a988286bfae4a86e140e53022a9cbc4fc1

Branch pushed to git repo; I updated commit sha1. New commits:

 ​06a432a Fix Jacobian_matrix, docstrings

### comment:8 in reply to: ↑ 5 Changed 5 years ago by kedlaya

• doc is not formatted correctly, the line before the tests should end with :: and be followed by a blank line
• please also use :trac:20512 instead of the bare #20512
• you should rather use .base_ring().one() instead of .base_ring()(1)

All done. Also, I noticed that my fix wasn't actually sufficient: in algebraic_scheme, the Jacobian_matrix() method also needs to be forced to produce a matrix in the correct ring. The last commit does this.

### comment:9 Changed 5 years ago by kedlaya

• Status changed from needs_work to needs_review

### comment:10 Changed 5 years ago by chapoton

• Reviewers set to Frédéric Chapoton
• Status changed from needs_review to positive_review

ok, thanks. Good to go.

### comment:11 Changed 5 years ago by vbraun

• Branch changed from u/kedlaya/jacobian_of_the_tautologous_subscheme_of_a_toric_variety_is_broken to 06a432a988286bfae4a86e140e53022a9cbc4fc1
• Resolution set to fixed
• Status changed from positive_review to closed
Note: See TracTickets for help on using tickets.