Wolfram mathematica Mathematica中的虚拟索引和约束

Wolfram mathematica Mathematica中的虚拟索引和约束,wolfram-mathematica,indices,Wolfram Mathematica,Indices,我希望Mathematica根据一些约束条件简化表达式。例如: M = p.k p.k 鉴于限制条件: p(mu) * p(nu) = \delta(mu,nu) 应该给 M = k^2 但是我不知道如何指定虚拟索引,而且我也不太确定约束本身应该放在哪里。在[1]中的Simplify?参数中:=FilePrint[“dummyindex.m”] In[1]:= FilePrint["dummyindices.m"] <<HighEnergyPhysics`FeynCalc` P

我希望Mathematica根据一些约束条件简化表达式。例如:

M = p.k p.k
鉴于限制条件:

p(mu) * p(nu) = \delta(mu,nu)
应该给

M = k^2
但是我不知道如何指定虚拟索引,而且我也不太确定约束本身应该放在哪里。在[1]中的Simplify?

参数中:=FilePrint[“dummyindex.m”]
In[1]:= FilePrint["dummyindices.m"]
<<HighEnergyPhysics`FeynCalc`
Print[" "];
{$AL[1], $AL[2]} = {mu, nu};  (* $AL are predefined dummy indices *)
M = SP[p,k] * SP[p,k];        (* this defines p.k * p.k *)
SP[k, k] = k2;                (* abbreviate the scalar product k^2 by k2 *)
constraint = FeynCalcInternal[ 
               FourVector[p,mu] FourVector[p,nu] -> MetricTensor[mu, nu] 
];       (* this is one way of specifying the constraint *)
(* use the Uncontract function http://www.feyncalc.org/FeynCalcBook/Uncontract/*)
Print["uncontracting : ", FCF[ tmp = Uncontract[M, k, Pair->All, Unique->False]]];
Print["contract and using the constraint : ",
       FeynCalcExternal @ Contract[tmp /. constraint]
]

In[2]:= <<dummyindices.m
Loading FeynCalc from /home/rolfm/HighEnergyPhysics
FeynCalc 8.1.0 Type ?FeynCalc for help or visit http://www.feyncalc.org/
$PrePrint is set to FeynCalcForm. Use FI and FC to change the display format.
Loading FeynArts, see www.feynarts.de for documentation
FeynArts 3.4 patched for use with FeynCalc

uncontracting :  k[mu] k[nu] p[mu] p[nu]
contract and using the constraint : k2
全部,唯一->错误]]]; 打印[“合同和使用约束:”, FeynCalcExternal@Contract[tmp/.constraint] ]
[2]中:=许多内置函数(例如,
简化
)支持指定约束的
假设
选项。您可以解释您的符号或使用标准的Mathematica符号吗?点表示点积。p(mu)表示指数mu处的p(p和k是向量),δ是Kroneckerδ。