#14789: Implement hyperplane arrangements
---------------------------------+------------------------------
       Reporter:  kcrisman       |         Owner:  sage-combinat
           Type:  enhancement    |        Status:  needs_review
       Priority:  major          |     Milestone:  sage-5.11
      Component:  combinatorics  |    Resolution:
       Keywords:                 |     Merged in:
        Authors:                 |     Reviewers:
Report Upstream:  N/A            |   Work issues:
         Branch:                 |  Dependencies:
       Stopgaps:                 |
---------------------------------+------------------------------

Comment (by darij):

 This is a wonderful addition to Sage. Just a couple comments (not a
 review, not even close):

 - There needs to be a way to call the empty hyperplane arrangement; this
 should not happen:

 {{{
 sage:  b = HyperplaneArrangement([])
 ---------------------------------------------------------------------------
 IndexError                                Traceback (most recent call
 last)
 <ipython-input-5-df3005fcbc9c> in <module>()
 ----> 1 b = HyperplaneArrangement([])

 /home/darij/sage-5.11.beta3/local/lib/python2.7/site-
 packages/sage/geometry/hyperplane_arrangement.pyc in __init__(self, A, K,
 check_for_duplicates)
    1398             self._hyperplanes = [Hyperplane(h,K) for h in eqns]
    1399         self._base_field = K
 -> 1400         self._dim = len(eqns[0])-1 # we trust the user on this
 point
    1401         self._ambient_space = VectorSpace(K,self._dim)
    1402

 IndexError: list index out of range
 sage:
 }}}

 - The reference [RS] is available online (
 http://math.mit.edu/~rstan/arrangements/arr.html ), and you should also
 correct its title (it's "An Introduction to Hyperplane Arrangements").

 - "The default base field is QQ": when you write something like that in a
 docstring, there is no reason not to put the QQ in double-backticks
 (``QQ``).

 - "A hyperplane arrangement is *essential* is the normals to its
 hyperplane span " the "is" should be an "if".

 - "    Class for an affine space (a translation of a linear subspace). "
 You want to say "affine subspace", not "affine space"!

 - Not sure if this is a good thing:

 {{{
 sage:  a = HyperplaneArrangement([[2,4,6],[1,0,1]])
 sage:  b = HyperplaneArrangement([[1,0,1],[2,4,6]])
 sage: a == b
 True
 sage: a.sign_vector((2, -2))
 [-1, 1]
 sage: b.sign_vector((2, -2))
 [1, -1]
 }}}

 This, of course, is hard to avert unless you either make equality much
 more restrictive or use hyperplane arrangements that are lists, rather
 than sets, of hyperplanes. The latter might in fact be more useful in the
 long run -- e. g., what if I need to keep track of what happens to each
 hyperplane when I am changing base field, and I cannot assume that the
 hyperplanes keep their indices in the {{{.hyperplanes()}}} list because
 some hyperplanes might collapse on base change? I assume restriction to a
 hyperplane would lead to the same problem.

 - Double "is" in "A *face* is is the".

 - The [GZ] reference, like any other Transactions paper, is online:
 http://www.ams.org/journals/tran/1983-280-01/S0002-9947-1983-0712251-1/

 - In the definitions of the Catalan and braid arrangements (in their
 respective docstrings), replace i \leq j by i < j.

--
Ticket URL: <http://trac.sagemath.org/ticket/14789#comment:17>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to