BeginPackage["deltasimplify`"] (* deltasimplify.m This package defines objects and procedures to carry out spin sums. Programmer: Dick Furnstahl furnstahl.1@osu.edu Revision history: 09-Feb-2003 --- original version *) Unprotect["deltasimplify`*"] Clear["deltasimplify`*"] (***********************************************************************) DeltaSimplify::usage = "DeltaSimplify[e] simplifies a spin sum" del::usage = "del[a,b] is a Kronecker delta function with indices a,b." (***********************************************************************) Begin["`Private`"] deltasimprules = { x_ (del[a_,b_]+y_) :> x*del[a,b] + x*y, del[a_,b_]*del[b_,c_] :> del[a,c], del[a_,b_]*del[c_,b_] :> del[a,c], del[a_,b_]*del[a_,c_] :> del[b,c], del[a_,b_]*del[c_,a_] :> del[b,c], del[a_,b_]*del[a_,b_] :> del[a,a], del[a_,b_]*del[b_,a_] :> del[a,a], del[a_,a_] :> -Global`g } DeltaSimplify[e_] := FixedPoint[ Expand[# //. deltasimprules]&, e] End[(* "`Private`" *)] (***********************************************************************) Protect["deltasimplify`*"] EndPackage[]