DataType[exp, type] = True defines the object
exp to have data-type type.
DataType[exp1, exp2, ..., type] defines the objects
exp1, exp2, ... to have data-type type.
The default setting is DataType[__, _] := False.
To assign a certain data-type, do, e.g.,
DataType[x, PositiveInteger] = True. Currently used
DataTypes:
NonCommutative
PositiveInteger
NegativeInteger
PositiveNumber
FreeIndex
GrassmannParity
FCTensor
ImplicitDiracIndex
ImplicitPauliIndex
ImplicitSUNFIndex
If loaded, PHI adds the DataTypes: UMatrix,
UScalar.
Overview, DeclareNonCommutative, NonCommutative, PositiveInteger, NegativeInteger, PositiveNumber, FreeIndex, GrassmannParity, FCTensor, ImplicitDiracIndex, ImplicitPauliIndex, ImplicitSUNFIndex.
NonCommutative is just a data-type.
DataType[f, g, NonCommutative] = True;
t = f . g - g . (2 a) . ff.g-g.(2 a).f
Since f and g have DataType
NonCommutative, the function DotSimplify
extracts only a out of the noncommutative product.
DotSimplify[t]f.g-2 a g.f
DataType[m, odd] = DataType[a, even] = True;
ptest1[x_] := x /. (-1)^n_ /; DataType[n, odd] :> -1;
ptest2[x_] := x /. (-1)^n_ /; DataType[n, even] :> 1;
t = (-1)^m + (-1)^a + (-1)^z(-1)^a+(-1)^m+(-1)^z
ptest1[t]
ptest2[%](-1)^a+(-1)^z-1
(-1)^z
Clear[ptest1, ptest2, t, a, m];DataType[m, integer] = True;
f[x_] := x /. {(-1)^p_ /; DataType[p, integer] :> 1};test = (-1)^m + (-1)^n x(-1)^m+(-1)^n x
f[test](-1)^n x+1
Clear[f, test];
DataType[f, g, NonCommutative] = False;
DataType[m, odd] = DataType[a, even] = False;Certain FeynCalc objects have DataType
PositiveInteger set to True.
DataType[OPEm, PositiveInteger]\text{True}
PowerSimplify uses the DataType information.
PowerSimplify[ (-1)^(2 OPEm)]1
PowerSimplify[ (- SO[q])^OPEm](\Delta \cdot q)^m e^{2 i \pi m \left\lfloor -\frac{\arg (\Delta \cdot q)}{2 \pi }\right\rfloor +i \pi m}