def oneEpsAsDeltas(eps, **tempOverride): '''Takes an instance of Eps and rewrites it as Deltas''' dim, indexRange = delta.getTempDimAndIndexRange(**tempOverride) if not isinstance(eps,Eps): raise TypeError('Error: input must be an Eps(*indecis)') if not len(eps.index)==dim: raise TypeError('Error: Eps must have dim number of indices') termList=[] for perm in permute_all(eps.index): factorList=[ perm['parity'] ] for (pos,index) in enumerate(perm['perm']): factorList.append( delta.Delta(pos+1,index) ) termList.append(sympy.Mul(*factorList)) return sympy.Add(*termList)
def simplify_OneEps(eps, evalLevel=2, **tempOverride): '''Takes an instance of Eps and tries to simplify. Returns 0 if any two indecis are equal. Rewrite eps as Deltas if the number of loose idecis (not in indexRange) of eps is equal to or less than evalLevel.''' indexRange = delta.getTempDimAndIndexRange(**tempOverride)[1] if not isinstance(eps,Eps): raise TypeError('Error: input must be an Eps(*indecis)') ints = 0 for (pos,ind) in enumerate(eps.index): if ind in eps.index[ind+1:]: return 0 if ind in indexRange: if ind>len(eps.index) or ind<1: ints += 1 if len(eps.index) - ints > evalLevel: return eps return delta.contractDeltas(epsAsDeltas(eps, **tempOverride), **tempOverride)