98 views

### John H Palmieri

Apr 1, 2014, 5:48:24 PM4/1/14
I've somewhat accidentally started to write code dealing with differential graded algebras, or at least free commutative DGAs. Right now I can:

- construct a free cDGA over a field; it may be graded by any finitely generated free abelian group. These are graded commutative, so "free commutative" means polynomial on evenly graded generators, exterior on oddly graded generators (unless you're in characteristic 2, in which case it's just polynomial).
- do basic algebra: add, multiply, etc.; plus compute differentials on elements.
- compute homology in a given degree, as a vector space.

For example, the easiest way to construct one of these is in two stages. First, define the algebra structure:

sage: D0 = FreeCDGA(degrees=(1,2))
sage: D0
Free commutative differential graded algebra over Rational Field on generators in degrees 1, 2
sage: D0.gens()
(a_1, b_2)
sage: a1 = D0.gen(0); b2 = D0.gen(1)

D0 is now (exterior on a1) tensor (polynomial on b2), but it has zero differential. To define the differential, call the constructor FreeCDGA again, with "differentials" set to a tuple, one entry for each algebra generator. Using D0 as the first argument below defines the algebra structure.

sage: D1 = FreeCDGA(D0, differentials=(0, a1*b2))
sage: D1.differential(D1.gen(1))
a_1 * b_2
sage: D1.homology(1)
Free module generated by {a_1} over Rational Field
sage: D1.homology(2)
Free module generated by {} over Rational Field

Things I can't do:

- construct nonfree cDGAs: how to input the relations? How to take them into account when computing the basis in a given degree? One way to input the relations would be in a several-stage process: first define a free cDGA, then impose relations. Either at the same time or later (or earlier, I suppose), also impose a differential.
- construct noncommutative DGAs. I haven't thought about how much of what I've done might work in a noncommutative setting.
- compute the homology as an algebra, not just as a vector space.
- grade over abelian groups which are not free.

Questions:

- Should I aim to include it in Sage? Should I open a ticket?
- If so, what feature requests do you have?