#18133: Implement Orlik-Solomon algebra of an arrangement
-------------------------------------+-------------------------------------
       Reporter:  kcrisman           |        Owner:
           Type:  enhancement        |       Status:  needs_review
       Priority:  major              |    Milestone:  sage-6.10
      Component:  geometry           |   Resolution:
       Keywords:  hyperplane         |    Merged in:
  arrangements                       |    Reviewers:
        Authors:  Travis Scrimshaw,  |  Work issues:
  William Slofstra                   |       Commit:
Report Upstream:  N/A                |  241712977960b49fc83984c11d07462b045352cf
         Branch:                     |     Stopgaps:
  public/algebras/orlik_solomon-18133|
   Dependencies:                     |
-------------------------------------+-------------------------------------

Comment (by darij):

 I didn't know that this algebra could be defined for any matroid! That's
 really nice.

 On the other hand, I'm afraid the code doesn't properly iterate the
 reduction.
 {{{
             sage: M4 = matroids.CompleteGraphic(4)
             sage: OS = M4.orlik_solomon_algebra(QQ)
             sage: OS._reduce_broken_circuit(frozenset({2,3,4}))
             OS{1, 3, 4} + OS{1, 2, 3} - OS{1, 2, 4}
 }}}
 The result is malformed: {1, 3, 4} itself contains a broken circuit, so
 one of the monomials isn't actually a monomial. Now you could argue that
 this is an underscored method and might do with malformed results if the
 method calling it knows what it's doing, but first of all I'm not sure
 whether the CombinatorialFreeModule framework will keep accepting such
 monomials in the future, and second I cannot guarantee that the
 multiplication as you implemented it still works with this implementation
 of `_reduce_broken_circuit`.

 The point is, reducing an element modulo the ideal J(M) is a multistep
 process, as clearing out one broken circuit might create another. If you
 do it until no more broken circuits remain, then I think your product is
 correct (though I'll have to take another look).

 Another issue is the `algebra_generators`: You're setting the `i`-th
 generator to be `self.monomial(frozenset([i]))`, but this too might be
 malformed. (For example, if `M` is a uniform matroid `U_{n,1} =
 matroids.Uniform(1,n)`, then all basis elements are equal, which means
 that they cannot be distinct basis elements.)

 I think both of these issues can be fixed at once. Let me do it.

--
Ticket URL: <http://trac.sagemath.org/ticket/18133#comment:10>
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 https://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to