Name: Rolf Mertig (email_not_shown)
Date: 03/01/12-03:08:12 PM Z

This is just how /. (ReplaceAll) works.

ReplaceAll looks at each part of expr, tries all the rules on it, and then goes on to the next part of expr. The first rule that applies to a particular part is used; no further rules are tried on that part, or on any of its subparts.


So, all what is need is to change /. to //. :

In[1]:= !!pol2.m <<HighEnergyPhysics`FeynCalc` Print[" "]; (* {$AL[1], $AL[2]} = {mu, nu}; (* $AL are predefined dummy indices *) *)

FI; IP = InputForm; constraint = { FeynCalcInternal[ FV[e2, muPAT] FV[e2, nuPAT] -> PolarizationSum[mu, nu, p2]] /. {muPAT :> mu_, nuPAT :> nu_}, FeynCalcInternal[ FV[e4, muPAT] FV[e4, nuPAT] -> PolarizationSum[mu, nu, p4]] /. {muPAT :> mu_, nuPAT :> nu_}}; M = SP[p1, e2]^2 SP[p2, e4]^2 tmp = Uncontract[Expand[M], e2, e4, Pair -> All, Unique -> False]; Print[" "]; Print["check constraint : ", IP@constraint]; Print[" "]; Print["contract and using the constraint : ", IP@FeynCalcExternal@Contract[tmp //. constraint]]

In[1]:= <<pol2.m Loading FeynCalc from /home/rolfm/HighEnergyPhysics FeynCalc 8.1.0 Type ?FeynCalc for help or visit $PrePrint is set to FeynCalcForm. Use FI and FC to change the display format. Loading FeynArts, see for documentation FeynArts 3.4 patched for use with FeynCalc check constraint : {Pair[LorentzIndex[mu_], Momentum[e2]]* Pair[LorentzIndex[nu_], Momentum[e2]] -> -Pair[LorentzIndex[mu], LorentzIndex[nu]] + (Pair[LorentzIndex[mu], Momentum[p2]]* Pair[LorentzIndex[nu], Momentum[p2]])/Pair[Momentum[p2], Momentum[p2]]\ , Pair[LorentzIndex[mu_], Momentum[e4]]* Pair[LorentzIndex[nu_], Momentum[e4]] -> -Pair[LorentzIndex[mu], LorentzIndex[nu]] + (Pair[LorentzIndex[mu], Momentum[p4]]* Pair[LorentzIndex[nu], Momentum[p4]])/Pair[Momentum[p4], Momentum[p4]]} contract and using the constraint : (-SP[p1, p1] + SP[p1, p2]^2/SP[p2, p2])* (-SP[p2, p2] + SP[p2, p4]^2/SP[p4, p4])

This archive was generated by hypermail 2b29 : 02/23/17-05:00:01 PM Z CET