schubmult 1.2.8__tar.gz → 1.2.10__tar.gz

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.
Files changed (22) hide show
  1. {schubmult-1.2.8 → schubmult-1.2.10}/PKG-INFO +1 -1
  2. {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/schubmult_yz/schubmult_yz.py +31 -12
  3. {schubmult-1.2.8 → schubmult-1.2.10}/schubmult.egg-info/PKG-INFO +1 -1
  4. {schubmult-1.2.8 → schubmult-1.2.10}/setup.py +1 -1
  5. {schubmult-1.2.8 → schubmult-1.2.10}/LICENSE +0 -0
  6. {schubmult-1.2.8 → schubmult-1.2.10}/README.md +0 -0
  7. {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/__init__.py +0 -0
  8. {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/perm_lib.py +0 -0
  9. {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/schubmult_double/__init__.py +0 -0
  10. {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/schubmult_double/__main__.py +0 -0
  11. {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/schubmult_double/schubmult_double.py +0 -0
  12. {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/schubmult_py/__init__.py +0 -0
  13. {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/schubmult_py/__main__.py +0 -0
  14. {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/schubmult_py/schubmult_py.py +0 -0
  15. {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/schubmult_yz/__init__.py +0 -0
  16. {schubmult-1.2.8 → schubmult-1.2.10}/schubmult/schubmult_yz/__main__.py +0 -0
  17. {schubmult-1.2.8 → schubmult-1.2.10}/schubmult.egg-info/SOURCES.txt +0 -0
  18. {schubmult-1.2.8 → schubmult-1.2.10}/schubmult.egg-info/dependency_links.txt +0 -0
  19. {schubmult-1.2.8 → schubmult-1.2.10}/schubmult.egg-info/entry_points.txt +0 -0
  20. {schubmult-1.2.8 → schubmult-1.2.10}/schubmult.egg-info/requires.txt +0 -0
  21. {schubmult-1.2.8 → schubmult-1.2.10}/schubmult.egg-info/top_level.txt +0 -0
  22. {schubmult-1.2.8 → schubmult-1.2.10}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: schubmult
3
- Version: 1.2.8
3
+ Version: 1.2.10
4
4
  Summary: Computing Littlewood-Richardson coefficients of Schubert polynomials
5
5
  Home-page: https://github.com/matthematics/schubmult
6
6
  Author: Matt Samuel
@@ -736,12 +736,12 @@ def is_hook(cd):
736
736
  return True
737
737
  return False
738
738
 
739
- @cached(cache={}, key=lambda val, u2,v2,w2,var2=var2,var3=var3,msg=False: hashkey(u2,v2,w2,var2,var3,msg))
740
- def posify(val,u2,v2,w2,var2=var2,var3=var3,msg=False):
739
+ @cached(cache={}, key=lambda val, u2,v2,w2,var2=var2,var3=var3,msg=False,do_pos_neg=True: hashkey(u2,v2,w2,var2,var3,msg,do_pos_neg))
740
+ def posify(val,u2,v2,w2,var2=var2,var3=var3,msg=False,do_pos_neg=True):
741
741
  if inv(u2)+inv(v2) - inv(w2)<=1:
742
742
  return expand(val)
743
743
  cdv = code(v2)
744
- if set(cdv) == set([0,1]):
744
+ if set(cdv) == set([0,1]) and do_pos_neg:
745
745
  return val
746
746
  #if is_hook(cdv):
747
747
  # print(f"Could've {cdv}")
@@ -975,9 +975,9 @@ def posify(val,u2,v2,w2,var2=var2,var3=var3,msg=False):
975
975
  if len(v3)<=3:
976
976
  v3 += [4]
977
977
  v3[2], v3[3] = v3[3], v3[2]
978
- coeff = permy(posify(schubmult_one((1,3,2),tuple(permtrim([*v3]))).get((2,4,3,1),0),(1,3,2),tuple(permtrim([*v3])),(2,4,3,1),var2,var3,msg),2)
978
+ coeff = permy(posify(schubmult_one((1,3,2),tuple(permtrim([*v3])),var2,var3).get((2,4,3,1),0),(1,3,2),tuple(permtrim([*v3])),(2,4,3,1),var2,var3,msg,do_pos_neg),2)
979
979
  else:
980
- coeff = permy(schubmult_one((1,3,2),tuple(permtrim([*v3]))).get((2,4,1,3),0),2)
980
+ coeff = permy(schubmult_one((1,3,2),tuple(permtrim([*v3])),var2,var3).get((2,4,1,3),0),2)
981
981
  tomul = sympify(coeff)
982
982
  toadd = 1
983
983
  for i in range(len(L[0])):
@@ -1038,7 +1038,7 @@ def posify(val,u2,v2,w2,var2=var2,var3=var3,msg=False):
1038
1038
  for new_w in coeff_dict:
1039
1039
  tomul = coeff_dict[new_w]
1040
1040
  newval = schubmult_one(new_w,tuple(permtrim(uncode(newc))),var2,var3).get(tuple(permtrim([*w])),0)
1041
- newval = posify(newval,new_w,tuple(permtrim(uncode(newc))),w,var2,var3,msg)
1041
+ newval = posify(newval,new_w,tuple(permtrim(uncode(newc))),w,var2,var3,msg,do_pos_neg)
1042
1042
  val += tomul*shiftsubz(newval)
1043
1043
  elif c01[0] == c02[0] and c01[0] != 0:
1044
1044
  varl = c01[0]
@@ -1046,7 +1046,7 @@ def posify(val,u2,v2,w2,var2=var2,var3=var3,msg=False):
1046
1046
  w3 = uncode([0] + c02[1:])
1047
1047
  val = 0
1048
1048
  val = schubmult_one(tuple(permtrim(u3)),tuple(permtrim([*v])),var2,var3).get(tuple(permtrim(w3)),0)
1049
- val = posify(val,tuple(permtrim(u3)),tuple(permtrim([*v])),tuple(permtrim(w3)),var2,var3,msg)
1049
+ val = posify(val,tuple(permtrim(u3)),tuple(permtrim([*v])),tuple(permtrim(w3)),var2,var3,msg,do_pos_neg)
1050
1050
  for i in range(varl):
1051
1051
  val = permy(val,i+1)
1052
1052
  elif c1[0] == c2[0]:
@@ -1062,10 +1062,10 @@ def posify(val,u2,v2,w2,var2=var2,var3=var3,msg=False):
1062
1062
  tomul*=var2[1] - var3[arr[i]]
1063
1063
 
1064
1064
  val2 = schubmult_one(tuple(permtrim(u3)),tuple(permtrim(v3)),var2,var3).get(tuple(permtrim(w3)),0)
1065
- val2 = posify(val2,u3,tuple(permtrim(v3)),w3,var2,var3,msg)
1065
+ val2 = posify(val2,u3,tuple(permtrim(v3)),w3,var2,var3,msg,do_pos_neg)
1066
1066
  val += tomul*shiftsub(val2)
1067
1067
  else:
1068
- val2 = compute_positive_rep(val,var2,var3,msg)
1068
+ val2 = compute_positive_rep(val,var2,var3,msg,do_pos_neg)
1069
1069
  if val2 is not None:
1070
1070
  val = val2
1071
1071
  return val
@@ -1187,7 +1187,25 @@ def main():
1187
1187
  cd = code(mperm)
1188
1188
  perms[0] = mperm
1189
1189
  pos = perms[1]
1190
+ pos2 = []
1191
+ last_descent = -1
1192
+ poso = []
1193
+ for i in range(len(perms[0])-1):
1194
+ if perms[0][i]>perms[0][i+1]:
1195
+ last_descent = i+1
1196
+ for i in range(1,last_descent+1):
1197
+ if i not in pos:
1198
+ pos2 += [i-1]
1199
+ else:
1200
+ poso += [i-1]
1201
+
1202
+ mu_W = uncode(theta(inverse(perms[0])))
1203
+
1204
+ the_top_perm = tuple(permtrim(mulperm(list(perms[0]),mu_W)))
1190
1205
 
1206
+ muA = uncode(mu_A(code(mu_W),poso))
1207
+ muB = uncode(mu_A(code(mu_W),pos2))
1208
+ #print(f"{code(mu_W)=},{pos=},{poso=} {pos2=},{p_trans(code(mu_W))=},{p_trans(code(muA))=},{p_trans(code(muB))=},{code(muA)=},{code(muB)=}")
1191
1209
  while cd[-1] == 0:
1192
1210
  cd.pop()
1193
1211
  k = len(pos)
@@ -1253,10 +1271,11 @@ def main():
1253
1271
 
1254
1272
  if val != 0:
1255
1273
  if display_positive:
1256
- if expand(val) != 0:
1257
- val2 = compute_positive_rep(val,var2neg,var3neg,msg,False)
1274
+ if val != 0:
1275
+ val2 = posify(val,tuple(permtrim(mulperm(firstperm,muA))),tuple(permtrim(mulperm(secondperm,muB))),the_top_perm,tuple(var2neg.tolist()),tuple(var3neg.tolist()),msg,False)
1258
1276
  if expand(val - val2) != 0:
1259
- print(f"error; write to schubmult@gmail.com with the case {perms=} {firstperm=} {secondperm=} {val2=} {val=}")
1277
+ print(f"error; write to schubmult@gmail.com with the case {perms=}\n{code(firstperm)=} {code(secondperm)=}\n{val2=}\n{val=}")
1278
+ print(f"{code(tuple(permtrim(mulperm(firstperm,muA))))=},{code(tuple(permtrim(mulperm(secondperm,muB))))=},{code(the_top_perm)=}\n{expand(val-val2)=}")
1260
1279
  exit(1)
1261
1280
  val = val2
1262
1281
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: schubmult
3
- Version: 1.2.8
3
+ Version: 1.2.10
4
4
  Summary: Computing Littlewood-Richardson coefficients of Schubert polynomials
5
5
  Home-page: https://github.com/matthematics/schubmult
6
6
  Author: Matt Samuel
@@ -6,7 +6,7 @@ long_description = (this_directory / "README.md").read_text()
6
6
 
7
7
  setup(
8
8
  name="schubmult",
9
- version="1.2.8",
9
+ version="1.2.10",
10
10
  description="Computing Littlewood-Richardson coefficients of Schubert polynomials",
11
11
  long_description=long_description,
12
12
  long_description_content_type='text/markdown',
File without changes
File without changes
File without changes