Example #1
0
 def i_3Inner(pT):
     answer = tensor()
     doublyDefined = pT[1]
     for generator, rel in doublyDefined.leftHandRepresentation:
         rightHandSide = generator * i_2(pureTensor([1,rel,1]),alg)
         answer = answer + pureTensor(1).tensorProduct(rightHandSide)
     return answer
Example #2
0
 def k_4Inner(pT):
     answer= tensor()
     doublyDefined = pT[1]
     for generator, rel in doublyDefined.leftHandRepresentation:
         answer = answer + pureTensor((generator,rel,1)).clean()
     for rel, generator in doublyDefined.rightHandRepresentation:
         answer = answer - pureTensor((1,rel,generator)).clean()
     return answer
Example #3
0
 def i_2Inner(pT):
     answer = tensor()
     rel = pT[1]
     for term in rel.leadingMonomial:
         answer = answer + term.coefficient * pureTensor((1,term[0],term[1],1))
     for term in rel.lowerOrderTerms:
         answer = answer - term.coefficient * pureTensor((1,term[0],term[1],1))
     return answer
Example #4
0
 def k_2Inner(tens):
     assert isinstance(tens,pureTensor)
     answer= tensor()
     rel =tens.monomials[1]
     for i in rel.leadingMonomial:
         answer = answer + i.coefficient * pureTensor((i.submonomial(0,1),i.submonomial(1,2), 1))
         answer = answer + i.coefficient * pureTensor((1,i.submonomial(0,1),i.submonomial(1,2)))
     for i in rel.lowerOrderTerms:
         answer = answer - i.coefficient * pureTensor((i.submonomial(0,1),i.submonomial(1,2), 1))
         answer = answer - i.coefficient * pureTensor((1,i.submonomial(0,1),i.submonomial(1,2)))
     return answer
Example #5
0
 def m_1Inner(b):
     b = b[1].clean()
     answer = tensor()
     if b.degree() != 0:
         for i in range(b.degree()):
             answer += b.coefficient * pureTensor([b[0:i],b[i],b[i+1:]])
     return answer
Example #6
0
                def pureTensorHelper(polynomials):
                    assert len(polynomials) > 0
                    for i in polynomials:
                        if i.isZero():
                            return tensor()

                    pureTensors = []
                    if len(polynomials) == 1:
                        for mono in polynomials[0]:
                            pureTensors.append(pureTensor.pureTensor( (mono,) ))
                    else:
                        tempTensors = pureTensorHelper(polynomials[1:])
                        for mono in polynomials[0]:
                            for pT in tempTensors:
                                pureTensors.append(pureTensor.pureTensor( (mono,) ).tensorProduct(pT))

                    return tuple(pureTensors)
Example #7
0
 def listOfPolysToTensors(ps):
     ps = iter(ps)
     pureTensors = [pureTensor.pureTensor(mono) for mono in next(ps)]
     for poly in ps:
         newPureTensors = []
         for mono in poly:
             newPureTensors.extend([x.tensorProduct(mono) for x in pureTensors])
         pureTensors = newPureTensors
     return tensor.tensor(pureTensors)
Example #8
0
 def b_nInner(tens):
     assert isinstance(tens, pureTensor)
     assert len(tens) >= 2
     tens = tens.clean()
     if len(tens) == 2:
         return tens[0] * tens[1]
     else:
         answer = tens.subTensor(1,len(tens) )
         answer = answer - pureTensor(1).tensorProduct(tens[1]*tens[2]).tensorProduct(tens.subTensor(3,len(tens)))
         if len(tens) != 3:
             answer = answer + tens.subTensor(0,2).tensorProduct(b_n(tens.subTensor(2,len(tens)), alg))
         return answer
Example #9
0
 def m_2Inner(PT):
     assert isinstance(PT, pureTensor)
     assert len(PT) == 4
     PT = PT.clean()
     w = PT[1] * PT[2]
     answer = tensor()
     sequence = alg.makeReductionSequence(w)
     for reductionFunction, weight in sequence:
         answer += PT.coefficient * weight * PT[0] \
             * pureTensor([reductionFunction.leftMonomial,
                           reductionFunction.relation,
                           reductionFunction.rightMonomial]) * PT[3]
     return answer
 def wrapped_func(tens):
     if tens == 0:
         return self.codomain.zero()
     tens = tens.clean()
     tens = self.domain.reduce(tens)
     firstItem = True
     for pure in tens:
         left =pure[0]
         right = pure[-1]
         middle = pureTensor.pureTensor(1).tensorProduct(pure.subTensor(1,len(pure)-1)).tensorProduct(1)
         if firstItem:
             answer = pure.coefficient * left * func(middle) * right
             firstItem = False
         else:
             answer = answer + pure.coefficient * left * func(middle) * right
     return self.codomain.reduce(answer)
Example #11
0
 def zero(self):
     return pureTensor.pureTensor([0] * len(self))
Example #12
0
 def k_1Inner(pT):
     assert isinstance(pT,pureTensor)
     generator = pT[1]
     return pureTensor([generator,1])-pureTensor([1,generator])
Example #13
0
 def localO(abcde):
     intermediate = g(pureTensor([1,abcde[2],abcde[3],1]))
     return f(abcde[:2].tensorProduct(intermediate).tensorProduct(abcde[4]))
Example #14
0
 def localO(abcde):
     intermediate = g(pureTensor([1,abcde[1],abcde[2],1]))
     return f(pureTensor(abcde[0]).tensorProduct(intermediate).tensorProduct(abcde[3:]))