schubmult 2.0.2__py3-none-any.whl → 2.0.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- schubmult/__init__.py +1 -1
- schubmult/_base_argparse.py +35 -6
- schubmult/_tests.py +9 -0
- schubmult/sage_integration/__init__.py +1 -0
- schubmult/sage_integration/_fast_double_schubert_polynomial_ring.py +68 -11
- schubmult/sage_integration/_fast_schubert_polynomial_ring.py +43 -5
- schubmult/sage_integration/_indexing.py +11 -4
- schubmult/schubmult_double/__init__.py +6 -2
- schubmult/schubmult_double/__main__.py +1 -1
- schubmult/schubmult_double/_funcs.py +112 -32
- schubmult/schubmult_double/_script.py +109 -51
- schubmult/schubmult_py/__init__.py +5 -2
- schubmult/schubmult_py/__main__.py +1 -1
- schubmult/schubmult_py/_funcs.py +54 -9
- schubmult/schubmult_py/_script.py +33 -52
- schubmult/schubmult_q/__init__.py +1 -0
- schubmult/schubmult_q/__main__.py +1 -1
- schubmult/schubmult_q/_funcs.py +21 -37
- schubmult/schubmult_q/_script.py +19 -16
- schubmult/schubmult_q_double/__init__.py +1 -0
- schubmult/schubmult_q_double/__main__.py +1 -1
- schubmult/schubmult_q_double/_funcs.py +57 -24
- schubmult/schubmult_q_double/_script.py +200 -139
- {schubmult-2.0.2.dist-info → schubmult-2.0.3.dist-info}/METADATA +4 -4
- schubmult-2.0.3.dist-info/RECORD +30 -0
- {schubmult-2.0.2.dist-info → schubmult-2.0.3.dist-info}/WHEEL +1 -1
- schubmult-2.0.3.dist-info/entry_points.txt +5 -0
- {schubmult-2.0.2.dist-info → schubmult-2.0.3.dist-info}/top_level.txt +0 -1
- schubmult/schubmult_double/_vars.py +0 -18
- schubmult/schubmult_py/_vars.py +0 -3
- schubmult/schubmult_q/_vars.py +0 -18
- schubmult/schubmult_q_double/_vars.py +0 -21
- schubmult-2.0.2.dist-info/RECORD +0 -36
- schubmult-2.0.2.dist-info/entry_points.txt +0 -5
- tests/__init__.py +0 -0
- tests/test_fast_double_schubert.py +0 -145
- tests/test_fast_schubert.py +0 -38
- {schubmult-2.0.2.dist-info → schubmult-2.0.3.dist-info}/licenses/LICENSE +0 -0
@@ -1,145 +0,0 @@
|
|
1
|
-
from sage.all import ZZ
|
2
|
-
from schubmult.sage_integration import (
|
3
|
-
FastDoubleSchubertPolynomialRing,
|
4
|
-
FastSchubertPolynomialRing,
|
5
|
-
FastQuantumSchubertPolynomialRing,
|
6
|
-
FastQuantumDoubleSchubertPolynomialRing,
|
7
|
-
)
|
8
|
-
|
9
|
-
|
10
|
-
def test_schub_expand():
|
11
|
-
"""
|
12
|
-
Test expand
|
13
|
-
"""
|
14
|
-
X = FastDoubleSchubertPolynomialRing(ZZ, 100, "x", "y")
|
15
|
-
assert X._base_polynomial_ring(X([3, 1, 2]).expand()) == X._base_polynomial_ring(
|
16
|
-
"(x1 - y1)*(x1 - y2)"
|
17
|
-
)
|
18
|
-
assert X(X([3, 4, 1, 2]).expand() * X([4, 1, 2, 3]).expand()) == X(
|
19
|
-
[3, 4, 1, 2]
|
20
|
-
) * X([4, 1, 2, 3])
|
21
|
-
assert (
|
22
|
-
X(X._base_polynomial_ring("x1")) * X([3, 4, 1, 2])
|
23
|
-
).expand() == X._base_polynomial_ring("y3") * (X([3, 4, 1, 2]).expand()) + X(
|
24
|
-
[4, 3, 1, 2]
|
25
|
-
).expand()
|
26
|
-
|
27
|
-
|
28
|
-
def test_coproduct():
|
29
|
-
"""
|
30
|
-
Test coproduct
|
31
|
-
"""
|
32
|
-
X = FastDoubleSchubertPolynomialRing(ZZ, 100, "x", "y")
|
33
|
-
R = X._base_polynomial_ring
|
34
|
-
indices = [0, 1, 3]
|
35
|
-
indices2 = [0, 2, 4]
|
36
|
-
X.set_coproduct_indices(indices[1:])
|
37
|
-
subs_dict1 = {R.gens()[i]: R.gens()[indices[i]] for i in range(len(indices))}
|
38
|
-
subs_dict2 = {R.gens()[i]: R.gens()[indices2[i]] for i in range(len(indices))}
|
39
|
-
|
40
|
-
perm = [3, 5, 1, 4, 2]
|
41
|
-
assert X(perm) == X(
|
42
|
-
sum(
|
43
|
-
[
|
44
|
-
X._base_polynomial_ring(v)
|
45
|
-
* (X(*k[0]).expand().subs(subs_dict1))
|
46
|
-
* (X(*k[1]).expand().subs(subs_dict2))
|
47
|
-
for k, v in X(perm).coproduct().monomial_coefficients().items()
|
48
|
-
]
|
49
|
-
)
|
50
|
-
)
|
51
|
-
|
52
|
-
# double coproduct
|
53
|
-
X = FastDoubleSchubertPolynomialRing(ZZ, 100, "x", ("y", "z"))
|
54
|
-
R = X._base_polynomial_ring
|
55
|
-
X.set_coproduct_indices(indices[1:])
|
56
|
-
subs_dict1 = {R.gens()[i]: R.gens()[indices[i]] for i in range(len(indices))}
|
57
|
-
subs_dict2 = {R.gens()[i]: R.gens()[indices2[i]] for i in range(len(indices))}
|
58
|
-
assert X(perm) == X(
|
59
|
-
sum(
|
60
|
-
[
|
61
|
-
X._base_polynomial_ring(v)
|
62
|
-
* (X(*k[0]).expand().subs(subs_dict1))
|
63
|
-
* (X(*k[1]).expand().subs(subs_dict2))
|
64
|
-
for k, v in X(perm).coproduct().monomial_coefficients().items()
|
65
|
-
]
|
66
|
-
)
|
67
|
-
)
|
68
|
-
|
69
|
-
|
70
|
-
def test_associative():
|
71
|
-
"""
|
72
|
-
Test associative on some large perms
|
73
|
-
"""
|
74
|
-
X = FastDoubleSchubertPolynomialRing(ZZ, 100, "x", "y")
|
75
|
-
perm1 = [1, 5, 3, 4, 2]
|
76
|
-
perm2 = [1, 3, 2, 5, 4]
|
77
|
-
perm3 = [3, 1, 4, 2, 5]
|
78
|
-
assert (X(perm1) * X(perm2)) * X(perm3) == X(perm1) * (X(perm2) * X(perm3))
|
79
|
-
|
80
|
-
X = FastDoubleSchubertPolynomialRing(ZZ, 100, "x", ("y", "z"))
|
81
|
-
assert (X(perm1) * X(perm2)) * X(perm3, "z") == X(perm1) * (
|
82
|
-
X(perm2) * X(perm3, "z")
|
83
|
-
)
|
84
|
-
|
85
|
-
|
86
|
-
def test_coerce():
|
87
|
-
XD = FastDoubleSchubertPolynomialRing(ZZ, 100, "x", ("y", "z"))
|
88
|
-
XDQ = FastQuantumDoubleSchubertPolynomialRing(ZZ, 100, "x", ("y", "z"))
|
89
|
-
XS = FastSchubertPolynomialRing(ZZ, 100, "x")
|
90
|
-
XSQ = FastQuantumSchubertPolynomialRing(ZZ, 100, "x")
|
91
|
-
R = XD._base_polynomial_ring
|
92
|
-
|
93
|
-
assert (
|
94
|
-
XD([2, 3, 5, 4, 1], "z") * R("x2^2") - R("x2^2") * XD([2, 3, 5, 4, 1], "z") == 0
|
95
|
-
)
|
96
|
-
|
97
|
-
assert XS([3,1,4,2]) * XD([4,1,3,2], "z") == XD([4,1,3,2], "z") * XS([3,1,4,2])
|
98
|
-
assert XS([3,1,4,2]) * XDQ([1], "z") == XSQ([1]) * XS([3,1,4,2])
|
99
|
-
|
100
|
-
def test_mixed_equal():
|
101
|
-
"""
|
102
|
-
Test mixed equality
|
103
|
-
"""
|
104
|
-
X = FastDoubleSchubertPolynomialRing(ZZ, 100, "x", ("y", "z"))
|
105
|
-
R = X._coeff_polynomial_ring
|
106
|
-
perms = [
|
107
|
-
[1],
|
108
|
-
[1, 2, 4, 3],
|
109
|
-
[2, 1],
|
110
|
-
[1, 2, 5, 3, 4],
|
111
|
-
[2, 1, 4, 3],
|
112
|
-
[2, 1, 5, 3, 4],
|
113
|
-
[3, 1, 4, 2],
|
114
|
-
[3, 1, 5, 2, 4],
|
115
|
-
]
|
116
|
-
coeffs = [
|
117
|
-
"(y1 - z3)*((y1 - z1)*(y1 - z2)*(y3 - z2) + (y2 - z1)*(y1 - z1)*(y1 - z2)) + (y3 - z4)*((y1 - z1)*(y1 - z2)*(y3 - z2) + (y2 - z1)*(y1 - z1)*(y1 - z2)) + (y2 - z1)*(y1 - z1)*(y1 - z2)*(y2 - z2)",
|
118
|
-
"(y1 - z1)*(y1 - z2)*(y3 - z2) + (y1 - z1)*(y1 - z2)*(y4 - z4) + (y1 - z1)*(y1 - z3)*(y1 - z2) + (y2 - z1)*(y1 - z1)*(y1 - z2)",
|
119
|
-
"(y2 - z3)*((y1 - z1)*(y3 - z2) + (y2 - z1)*(y1 - z1) + (y3 - z2)*(y2 - z2)) + (y3 - z4)*((y1 - z1)*(y3 - z2) + (y2 - z1)*(y1 - z1) + (y3 - z2)*(y2 - z2)) + (y1 - z1)*(y1 - z2)*(y3 - z2) + (y2 - z1)*(y1 - z1)*(y1 - z2)",
|
120
|
-
"(y1 - z1)*(y1 - z2)",
|
121
|
-
"(y1 - z1)*(y1 - z2) + (y1 - z1)*(y3 - z2) + (y2 - z1)*(y1 - z1) + (y3 - z2)*(y2 - z2) + (y1 + y2 - z1 - z2)*(y2 - z3) + (y1 + y2 - z1 - z2)*(y4 - z4)",
|
122
|
-
"y1 + y2 - z1 - z2",
|
123
|
-
"y1 + y2 + y3 + y4 - z1 - z2 - z3 - z4",
|
124
|
-
1,
|
125
|
-
]
|
126
|
-
|
127
|
-
other_perm = [3, 1, 5, 2, 4]
|
128
|
-
|
129
|
-
assert len(perms) == len(coeffs)
|
130
|
-
|
131
|
-
assert sum([R(coeffs[i]) * X(perms[i]) for i in range(len(coeffs))]) == X(
|
132
|
-
other_perm, "z"
|
133
|
-
)
|
134
|
-
|
135
|
-
assert X([3, 1, 5, 2, 4]) * X([5, 3, 1, 2, 4], "z") == X([5, 3, 1, 2, 4], "z") * X(
|
136
|
-
[3, 1, 5, 2, 4]
|
137
|
-
)
|
138
|
-
|
139
|
-
assert X([3, 1, 5, 2, 4], "z") * X([5, 3, 1, 2, 4], "z") != X(
|
140
|
-
[5, 3, 1, 2, 4], "z"
|
141
|
-
) * X([3, 1, 5, 2, 4])
|
142
|
-
|
143
|
-
assert X([3, 1, 5, 2, 4], "z") * X([5, 3, 1, 2, 4]) == X([5, 3, 1, 2, 4]) * X(
|
144
|
-
[3, 1, 5, 2, 4], "z"
|
145
|
-
)
|
tests/test_fast_schubert.py
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
from sage.all import ZZ
|
2
|
-
from schubmult.sage_integration import FastSchubertPolynomialRing
|
3
|
-
|
4
|
-
|
5
|
-
def test_schub_expand():
|
6
|
-
"""
|
7
|
-
Test expand
|
8
|
-
"""
|
9
|
-
X = FastSchubertPolynomialRing(ZZ, 100, "x")
|
10
|
-
R = X._polynomial_ring
|
11
|
-
assert X([3,1,2]).expand() == R("x1^2")
|
12
|
-
assert X([5,3,4,1,2]).expand() * X([4,1,5,2,3]).expand() - X([5,3,4,1,2]) * X([4,1,5,2,3]) == 0
|
13
|
-
assert R("x1")*X([3,4,1,2]) == R("x1^3*x2^2")
|
14
|
-
|
15
|
-
def test_coproduct():
|
16
|
-
"""
|
17
|
-
Test coproduct
|
18
|
-
"""
|
19
|
-
X = FastSchubertPolynomialRing(ZZ, 100, "x")
|
20
|
-
R = X._polynomial_ring
|
21
|
-
indices = [0, 1, 3, 5]
|
22
|
-
indices2 = [0, 2, 4, 6]
|
23
|
-
X.set_coproduct_indices(indices[1:])
|
24
|
-
subs_dict1 = {R.gens()[i]: R.gens()[indices[i]] for i in range(len(indices))}
|
25
|
-
subs_dict2 = {R.gens()[i]: R.gens()[indices2[i]] for i in range(len(indices))}
|
26
|
-
|
27
|
-
perm = [3,6,5,1,4,7,2]
|
28
|
-
assert X(perm) == X(sum([v*X(list(k[0])).expand().subs(subs_dict1)*(X(list(k[1])).expand().subs(subs_dict2)) for k,v in X(perm).coproduct().monomial_coefficients().items()]))
|
29
|
-
|
30
|
-
def test_associative():
|
31
|
-
"""
|
32
|
-
Test associative on some large perms
|
33
|
-
"""
|
34
|
-
X = FastSchubertPolynomialRing(ZZ, 100, "x")
|
35
|
-
perm1 = [6,7,1,5,3,4,2]
|
36
|
-
perm2 = [1,3,2,7,6,5,4]
|
37
|
-
perm3 = [3,7,1,6,4,2,5]
|
38
|
-
assert (X(perm1)*X(perm2))*X(perm3) == X(perm1)*(X(perm2)*X(perm3))
|
File without changes
|