|
184 | 184 | :meth:`~FinitePoset.flag_h_polynomial` | Return the flag h-polynomial of the poset. |
185 | 185 | :meth:`~FinitePoset.order_polynomial` | Return the order polynomial of the poset. |
186 | 186 | :meth:`~FinitePoset.zeta_polynomial` | Return the zeta polynomial of the poset. |
| 187 | + :meth:`~FinitePoset.apozeta_polynomial` | Return the apozeta polynomial of the poset. |
187 | 188 | :meth:`~FinitePoset.M_triangle` | Return the M-triangle of the poset. |
188 | 189 | :meth:`~FinitePoset.kazhdan_lusztig_polynomial` | Return the Kazhdan-Lusztig polynomial of the poset. |
189 | 190 | :meth:`~FinitePoset.coxeter_polynomial` | Return the characteristic polynomial of the Coxeter transformation. |
@@ -7240,6 +7241,8 @@ def zeta_polynomial(self): |
7240 | 7241 | In particular, `Z(2)` is the number of vertices and `Z(3)` is |
7241 | 7242 | the number of intervals. |
7242 | 7243 |
|
| 7244 | + .. SEEALSO:: :meth:`apozeta_polynomial` |
| 7245 | +
|
7243 | 7246 | EXAMPLES:: |
7244 | 7247 |
|
7245 | 7248 | sage: posets.ChainPoset(2).zeta_polynomial() |
@@ -7280,6 +7283,53 @@ def zeta_polynomial(self): |
7280 | 7283 | f = g[n] + f / n |
7281 | 7284 | return f |
7282 | 7285 |
|
| 7286 | + def apozeta_polynomial(self): |
| 7287 | + r""" |
| 7288 | + Return the apozeta polynomial of the poset ``self``. |
| 7289 | +
|
| 7290 | + The poset is assumed to be graded. |
| 7291 | +
|
| 7292 | + The apozeta polynomial of a poset is the unique polynomial |
| 7293 | + `Z^{a}(q)` such that for every integer `m > 1`, `Z^{a}(m)` is |
| 7294 | + the number of weakly increasing sequences `x_1 \leq x_2 \leq |
| 7295 | + \dots \leq x_{m-1}` of elements of the poset whose largest |
| 7296 | + element belongs to the top level of the poset. |
| 7297 | +
|
| 7298 | + When the poset `P` has a unique maximal element, this is |
| 7299 | + equal to `Z(q-1)` where `Z` is the zeta polynomial of `P`. |
| 7300 | +
|
| 7301 | + The name comes from the greek radical ``apo``. |
| 7302 | +
|
| 7303 | + .. SEEALSO:: :meth:`zeta_polynomial` |
| 7304 | +
|
| 7305 | + EXAMPLES:: |
| 7306 | +
|
| 7307 | + sage: P = posets.NoncrossingPartitions(SymmetricGroup(4)) |
| 7308 | + sage: P.apozeta_polynomial() |
| 7309 | + 8/3*q^3 - 10*q^2 + 37/3*q - 5 |
| 7310 | +
|
| 7311 | + sage: P = Poset({"a": "bc", "b": "d", "c": "de"}) |
| 7312 | + sage: P.apozeta_polynomial() |
| 7313 | + 3/2*q^2 - 5/2*q + 1 |
| 7314 | + sage: P.zeta_polynomial() |
| 7315 | + 3/2*q^2 - 1/2*q |
| 7316 | +
|
| 7317 | + TESTS: |
| 7318 | +
|
| 7319 | + Checking the simplest case:: |
| 7320 | +
|
| 7321 | + sage: Poset({1: []}).apozeta_polynomial() |
| 7322 | + 1 |
| 7323 | + sage: parent(_) |
| 7324 | + Univariate Polynomial Ring in q over Rational Field |
| 7325 | + """ |
| 7326 | + R = PolynomialRing(QQ, 'q') |
| 7327 | + q = R.gen() |
| 7328 | + |
| 7329 | + top_level = self.level_sets()[-1] |
| 7330 | + return sum(binomial(q - 2, len(c) - 1) |
| 7331 | + for c in self.chains() if c and c[-1] in top_level) |
| 7332 | + |
7283 | 7333 | def M_triangle(self): |
7284 | 7334 | r""" |
7285 | 7335 | Return the M-triangle of the poset. |
|
0 commit comments