Update aplK.py

This commit is contained in:
calquezar 2024-08-21 23:36:26 +02:00
parent d75b8e9d03
commit e35d7b4b57

16
aplK.py
View File

@ -83,7 +83,7 @@ class AplN(DifferentialGCAlgebra_multigraded, UniqueRepresentation):
#return value*factorial(self.n)*prod(self.gens()[self.n+2:]) #return value*factorial(self.n)*prod(self.gens()[self.n+2:])
gens = self.gens() gens = self.gens()
tExp = [randint(0,3) for i in range(self.n+1)] tExp = [0*randint(0,3) for i in range(self.n+1)]
yExp = [0]+[1]*self.n yExp = [0]+[1]*self.n
exp = tuple(tExp + yExp) exp = tuple(tExp + yExp)
#print(value, " - ", exp, flush=True) #print(value, " - ", exp, flush=True)
@ -138,8 +138,10 @@ class AplN(DifferentialGCAlgebra_multigraded, UniqueRepresentation):
N = len(self.gens())//2 N = len(self.gens())//2
ygens = self.gens()[N+1:] #N+1 because we remove y0 generator ygens = self.gens()[N+1:] #N+1 because we remove y0 generator
listProds = [prod(s) for s in self.findsubsets(self, ygens,ydegree)] listProds = [prod(s) for s in self.findsubsets(self, ygens,ydegree)]
V = VectorSpace(GF(tdegree),N-1) listCoefs = [tuple(2*N*[0])]
listCoefs = [tuple([0]+list(v)+N*[0]) for v in V] if tdegree>1:
V = VectorSpace(GF(tdegree),N-1)
listCoefs = [tuple([0]+list(v)+N*[0]) for v in V]
listPolinomials = [self.get_term(self, 1, c, self.gens()) for c in listCoefs] listPolinomials = [self.get_term(self, 1, c, self.gens()) for c in listCoefs]
cp = cartesian_product([listProds,listPolinomials]) cp = cartesian_product([listProds,listPolinomials])
elements = [prod(c) for c in cp] elements = [prod(c) for c in cp]
@ -585,14 +587,14 @@ class SimplicialAplN(AplN, UniqueRepresentation):
basis += apl.get_primitive_basis_of_a_monomial(apl,monomial) basis += apl.get_primitive_basis_of_a_monomial(apl,monomial)
basis = list(set(basis)) basis = list(set(basis))
#basis += p._add_kernel_terms_to_primitive_basis(basis) #basis += p._add_kernel_terms_to_primitive_basis(basis)
t_degree = 2 t_degree = 0
y_degree = self.parent().n #p.total_degree()#p.degree()[0] y_degree = self.total_degree() #self.parent().n #p.total_degree()#p.degree()[0]
basis += apl.add_kernel_terms_to_primitive_basis(apl,t_degree, y_degree-1) basis += apl.add_kernel_terms_to_primitive_basis(apl,t_degree, y_degree-1)
basis = list(set(basis)) basis = list(set(basis))
terms = [] terms = []
apl = self.parent() apl = self.parent()
for b in basis: for b in basis:
dim = len(b)//2 - 1 #dim = len(b)//2 - 1
terms.append(apl.get_term(apl,1, b, apl.gens())) terms.append(apl.get_term(apl,1, b, apl.gens()))
terms.sort(reverse=False) terms.sort(reverse=False)
return terms return terms
@ -1166,7 +1168,6 @@ class AlgebraAplK(UniqueRepresentation, Parent):
def _face_basis(self, basis, face_idx): def _face_basis(self, basis, face_idx):
face_basis = [] face_basis = []
for b in basis: for b in basis:
face_pol = b.face(face_idx).reduce() face_pol = b.face(face_idx).reduce()
apl = face_pol.parent() apl = face_pol.parent()
@ -1199,6 +1200,7 @@ class AlgebraAplK(UniqueRepresentation, Parent):
primitive_basis[simplex.tuple()] += pol._get_primitive_basis() primitive_basis[simplex.tuple()] += pol._get_primitive_basis()
primitive_basis[simplex.tuple()] = list(set(primitive_basis[simplex.tuple()])) primitive_basis[simplex.tuple()] = list(set(primitive_basis[simplex.tuple()]))
primitive_basis[simplex.tuple()].sort(reverse=False) primitive_basis[simplex.tuple()].sort(reverse=False)
print(primitive_basis[simplex.tuple()], flush=True)
# propagate the primitive basis through its faces # propagate the primitive basis through its faces
for f in range(n+1): for f in range(n+1):
simplex_face = S.face(simplex, f).tuple() simplex_face = S.face(simplex, f).tuple()