Skip to content

Commit 47985dd

Browse files
committed
Minor fixes, update to the paper
1 parent ebfb4af commit 47985dd

8 files changed

Lines changed: 3995 additions & 345 deletions

File tree

examples/FunKitPaper.nb

Lines changed: 3529 additions & 107 deletions
Large diffs are not rendered by default.

modules/DiANE.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
Useful for understanding the diagrammatic structure of functional calculations.
3232
Integrates with Mathematica's plotting capabilities for high-quality output.";
3333

34-
AddTexStyles::usage = "AddTexStyles[styleRules]
34+
FAddTexStyles::usage = "AddTexStyles[styleRules]
3535
Adds custom LaTeX styling rules for specific mathematical objects or fields.
3636
Allows customization of how fields, indices, and operators appear in LaTeX output.
3737
Style rules should be given as replacement rules (e.g., field -> \"\\mathbf{field}\").
@@ -41,7 +41,7 @@ Style rules should be given as replacement rules (e.g., field -> \"\\mathbf{fiel
4141
Sets the complete LaTeX styling dictionary for mathematical notation.
4242
Replaces all existing TeX styles with the provided style rules.
4343
Style rules define how fields, operators, and indices are formatted in LaTeX.
44-
Use AddTexStyles to extend existing styles rather than replace them completely.
44+
Use FAddTexStyles to extend existing styles rather than replace them completely.
4545
Essential for consistent mathematical notation across documents.";
4646

4747
(* ::Section:: *)

modules/DiANE/FPrint.m

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -222,12 +222,12 @@
222222

223223
$Setup = {};
224224

225-
AddTexStyles::invalidRule = "The given set of style rules does not follow the pattern Symbol->String.";
225+
FAddTexStyles::invalidRule = "The given set of style rules does not follow the pattern Symbol->String.";
226226

227-
AddTexStyles[a__Rule] :=
227+
FAddTexStyles[a__Rule] :=
228228
Module[{},
229229
If[Or @@ Map[Head[#] =!= String&, Values[{a}]],
230-
Message[AddTexStyles::invalidRule];
230+
Message[FAddTexStyles::invalidRule];
231231
Abort[]
232232
];
233233
$TexStyles = DeleteDuplicates[Join[$TexStyles, {a}]];
@@ -236,7 +236,7 @@
236236
FSetTexStyles[a__Rule] :=
237237
Module[{},
238238
If[Or @@ Map[Head[#] =!= String&, Values[{a}]],
239-
Message[AddTexStyles::invalidRule];
239+
Message[FAddTexStyles::invalidRule];
240240
Abort[]
241241
];
242242
$TexStyles = DeleteDuplicates[{a}];
@@ -427,12 +427,8 @@
427427
];
428428
Format[FTerm[a__], TeXForm] :=
429429
Module[{obj, integrals, replNames, idx, prefix, postfix, body, fac, terms},
430-
integrals = Join[
431-
Pick[$availableLoopMomenta, Map[MemberQ[{a}, #, Infinity]&, $availableLoopMomenta]],
432-
Pick[$availableLoopMomentaf, Map[MemberQ[{a}, #, Infinity]&, $availableLoopMomentaf]]
433-
];
434-
replNames = Join[Thread[$availableLoopMomenta -> Table[Subscript[Symbol[$loopMomentumName], idx], {idx, 1, Length[$availableLoopMomenta]}]],
435-
Thread[$availableLoopMomentaf -> Table[Subsuperscript[Symbol[$loopMomentumName], idx, "(f)"], {idx, 1, Length[$availableLoopMomentaf]}]]];
430+
integrals = Join[Pick[$availableLoopMomenta, Map[MemberQ[{a}, #, Infinity]&, $availableLoopMomenta]], Pick[$availableLoopMomentaf, Map[MemberQ[{a}, #, Infinity]&, $availableLoopMomentaf]]];
431+
replNames = Join[Thread[$availableLoopMomenta -> Table[Subscript[Symbol[$loopMomentumName], idx], {idx, 1, Length[$availableLoopMomenta]}]], Thread[$availableLoopMomentaf -> Table[Subsuperscript[Symbol[$loopMomentumName], idx, "(f)"], {idx, 1, Length[$availableLoopMomentaf]}]]];
436432
prefix = StringJoin[Map["\\int_{" <> ToString[TeXForm[#]] <> "}"&, integrals //. replNames]];
437433
postfix = "";
438434
{fac, body} = SplitPrefactor[$Setup, FTerm[a]];

modules/FEDeriK/Checks.m

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -54,59 +54,38 @@
5454

5555
FieldSpaceDefQ::association = "The field space definition must be an Association.";
5656

57-
FieldSpaceDefQ::keys = "The field space definition must contain the keys {\"Commuting\",\"Grassmann\"} and may optionally contain {\"CommutingSource\",\"GrassmannSource\"}.";
57+
FieldSpaceDefQ::keys = "The field space definition may only contain the keys {\"Commuting\",\"Grassmann\",\"CommutingSource\",\"GrassmannSource\"}. Unknown keys were provided.";
5858

5959
FieldSpaceDefQ::list = "The entries of the field space definition must be lists.";
6060

6161
FieldSpaceDefQ::fields = "The entries of the field space definition must contain valid field definitions.";
6262

6363
FieldSpaceDefQ[fieldSpace_] :=
64-
Module[{keys, allowedKeys, requiredKeys, sourceKey},
64+
Module[{keys, allowedKeys, optionalKey},
6565
If[Head[fieldSpace] =!= Association,
6666
Message[FieldSpaceDefQ::association];
6767
Return[False]
6868
];
6969
keys = Keys[fieldSpace];
70-
requiredKeys = {"Commuting", "Grassmann"};
7170
allowedKeys = {"Commuting", "Grassmann", "CommutingSource", "GrassmannSource"};
72-
If[Not @ ContainsAll[keys, requiredKeys],
73-
Message[FieldSpaceDefQ::keys];
74-
Return[False]
75-
];
7671
If[Not @ ContainsAll[allowedKeys, keys],
7772
Message[FieldSpaceDefQ::keys];
7873
Return[False]
7974
];
80-
If[Not @ ListQ[fieldSpace["Commuting"]],
81-
Message[FieldSpaceDefQ::list];
82-
Return[False]
83-
];
84-
If[Not @ (And @@ Map[FieldDefQ, fieldSpace["Commuting"]]),
85-
Message[FieldSpaceDefQ::fields];
86-
Return[False]
87-
];
88-
If[Not @ ListQ[fieldSpace["Grassmann"]],
89-
Message[FieldSpaceDefQ::list];
90-
Return[False]
91-
];
92-
If[Not @ (And @@ Map[FieldDefQ, fieldSpace["Grassmann"]]),
93-
Message[FieldSpaceDefQ::fields];
94-
Return[False]
95-
];
96-
(* Validate optional source field keys when present *)
75+
(* Validate all keys when present *)
9776
Do[
98-
If[KeyExistsQ[fieldSpace, sourceKey],
99-
If[Not @ ListQ[fieldSpace[sourceKey]],
77+
If[KeyExistsQ[fieldSpace, optionalKey],
78+
If[Not @ ListQ[fieldSpace[optionalKey]],
10079
Message[FieldSpaceDefQ::list];
10180
Return[False]
10281
];
103-
If[Not @ (And @@ Map[FieldDefQ, fieldSpace[sourceKey]]),
82+
If[Not @ (And @@ Map[FieldDefQ, fieldSpace[optionalKey]]),
10483
Message[FieldSpaceDefQ::fields];
10584
Return[False]
10685
];
10786
];
10887
,
109-
{sourceKey, {"CommutingSource", "GrassmannSource"}}
88+
{optionalKey, allowedKeys}
11089
];
11190
Return[True];
11291
];

modules/FEDeriK/IndexedObjects.m

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
Head[#]
1212
]&
1313
,
14-
setup["FieldSpace"]["Commuting"]
14+
Lookup[setup["FieldSpace"], "Commuting", {}]
1515
];
1616

1717
GetAntiCommutingFields[setup_] :=
@@ -24,7 +24,7 @@
2424
{}
2525
]&
2626
,
27-
setup["FieldSpace"]["Commuting"]
27+
Lookup[setup["FieldSpace"], "Commuting", {}]
2828
]
2929
,
3030
# =!= {}&
@@ -39,7 +39,7 @@
3939
Head[#]
4040
]&
4141
,
42-
setup["FieldSpace"]["Grassmann"]
42+
Lookup[setup["FieldSpace"], "Grassmann", {}]
4343
];
4444

4545
GetAntiGrassmannFields[setup_] :=
@@ -52,7 +52,7 @@
5252
{}
5353
]&
5454
,
55-
setup["FieldSpace"]["Grassmann"]
55+
Lookup[setup["FieldSpace"], "Grassmann", {}]
5656
]
5757
,
5858
# =!= {}&
@@ -70,7 +70,7 @@
7070
Head[#]
7171
]&
7272
,
73-
setup["FieldSpace"]["Commuting"]
73+
Lookup[setup["FieldSpace"], "Commuting", {}]
7474
]
7575
,
7676
# =!= {}&
@@ -91,7 +91,7 @@
9191
Head[#]
9292
]&
9393
,
94-
setup["FieldSpace"]["Grassmann"]
94+
Lookup[setup["FieldSpace"], "Grassmann", {}]
9595
]
9696
,
9797
# =!= {}&
@@ -101,16 +101,16 @@
101101
];
102102

103103
GetFieldPairs[setup_] :=
104-
GetFieldPairs[setup] = Map[{Head[#[[1]]], Head[#[[2]]]}&, Select[Join[setup["FieldSpace"]["Grassmann"], setup["FieldSpace"]["Commuting"]], Head[#] === List&]];
104+
GetFieldPairs[setup] = Map[{Head[#[[1]]], Head[#[[2]]]}&, Select[Join[Lookup[setup["FieldSpace"], "Grassmann", {}], Lookup[setup["FieldSpace"], "Commuting", {}]], Head[#] === List&]];
105105

106106
GetSingleFields[setup_] :=
107107
GetSingleFields[setup] = Join[
108-
Map[Head[#]&, Select[Join[setup["FieldSpace"]["Grassmann"], setup["FieldSpace"]["Commuting"]], Head[#] =!= List&]],
108+
Map[Head[#]&, Select[Join[Lookup[setup["FieldSpace"], "Grassmann", {}], Lookup[setup["FieldSpace"], "Commuting", {}]], Head[#] =!= List&]],
109109
GetAllSourceFields[setup]
110110
];
111111

112112
GetAllFields[setup_] :=
113-
GetAllFields[setup] = Join[Flatten @ GetFieldPairs[setup], Map[Head[#]&, Select[Join[setup["FieldSpace"]["Grassmann"], setup["FieldSpace"]["Commuting"]], Head[#] =!= List&]], GetAllSourceFields[setup]];
113+
GetAllFields[setup] = Join[Flatten @ GetFieldPairs[setup], Map[Head[#]&, Select[Join[Lookup[setup["FieldSpace"], "Grassmann", {}], Lookup[setup["FieldSpace"], "Commuting", {}]], Head[#] =!= List&]], GetAllSourceFields[setup]];
114114

115115
(**********************************************************************************
116116
Source field accessors
@@ -130,7 +130,7 @@
130130

131131
GetNonSourceFields[setup_] :=
132132
GetNonSourceFields[setup] =
133-
Join[Flatten @ GetFieldPairs[setup], Map[Head[#]&, Select[Join[setup["FieldSpace"]["Grassmann"], setup["FieldSpace"]["Commuting"]], Head[#] =!= List&]]];
133+
Join[Flatten @ GetFieldPairs[setup], Map[Head[#]&, Select[Join[Lookup[setup["FieldSpace"], "Grassmann", {}], Lookup[setup["FieldSpace"], "Commuting", {}]], Head[#] =!= List&]]];
134134

135135
(**********************************************************************************
136136
Getting single field properties

modules/SeDecA.m

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -197,40 +197,52 @@ The basis should be a TensorBases tensor structure (e.g., TB[\"SO(3)\", {1, 1}])
197197

198198
AddCField[setup_, name_Symbol[p_Symbol]] :=
199199
Module[{},
200-
If[MemberQ[Join[setup["FieldSpace"]["Commuting"], setup["FieldSpace"]["Grassmann"]], name[__], Infinity],
200+
If[MemberQ[Join[Lookup[setup["FieldSpace"], "Commuting", {}], Lookup[setup["FieldSpace"], "Grassmann", {}]], name[__], Infinity],
201201
Message[SeDecA::FieldExists, name];
202202
Abort[]
203203
];
204+
If[Not @ KeyExistsQ[setup["FieldSpace"], "Commuting"],
205+
AppendTo[setup["FieldSpace"], "Commuting" -> {}]
206+
];
204207
AppendTo[setup["FieldSpace"]["Commuting"], name[p]];
205208
setup
206209
];
207210

208211
AddCField[setup_, name_Symbol[p_Symbol, {ind__Symbol}]] :=
209212
Module[{},
210-
If[MemberQ[Join[setup["FieldSpace"]["Commuting"], setup["FieldSpace"]["Grassmann"]], name[__], Infinity],
213+
If[MemberQ[Join[Lookup[setup["FieldSpace"], "Commuting", {}], Lookup[setup["FieldSpace"], "Grassmann", {}]], name[__], Infinity],
211214
Message[SeDecA::FieldExists, name];
212215
Abort[]
213216
];
217+
If[Not @ KeyExistsQ[setup["FieldSpace"], "Commuting"],
218+
AppendTo[setup["FieldSpace"], "Commuting" -> {}]
219+
];
214220
AppendTo[setup["FieldSpace"]["Commuting"], name[p, {ind}]];
215221
setup
216222
];
217223

218224
AddCField[setup_, {name1_Symbol[p_Symbol], name2_Symbol[p_Symbol]}] :=
219225
Module[{},
220-
If[MemberQ[Join[setup["FieldSpace"]["Commuting"], setup["FieldSpace"]["Grassmann"]], name1[__] | name2[__], Infinity],
226+
If[MemberQ[Join[Lookup[setup["FieldSpace"], "Commuting", {}], Lookup[setup["FieldSpace"], "Grassmann", {}]], name1[__] | name2[__], Infinity],
221227
Message[SeDecA::FieldExists, {name1, name2}];
222228
Abort[]
223229
];
230+
If[Not @ KeyExistsQ[setup["FieldSpace"], "Commuting"],
231+
AppendTo[setup["FieldSpace"], "Commuting" -> {}]
232+
];
224233
AppendTo[setup["FieldSpace"]["Commuting"], {name1[p], name2[p]}];
225234
setup
226235
];
227236

228237
AddCField[setup_, {name1_Symbol[p_Symbol, {ind__Symbol}], name2_Symbol[p_Symbol, {ind__Symbol}]}] :=
229238
Module[{},
230-
If[MemberQ[Join[setup["FieldSpace"]["Commuting"], setup["FieldSpace"]["Grassmann"]], name1[__] | name2[__], Infinity],
239+
If[MemberQ[Join[Lookup[setup["FieldSpace"], "Commuting", {}], Lookup[setup["FieldSpace"], "Grassmann", {}]], name1[__] | name2[__], Infinity],
231240
Message[SeDecA::FieldExists, {name1, name2}];
232241
Abort[]
233242
];
243+
If[Not @ KeyExistsQ[setup["FieldSpace"], "Commuting"],
244+
AppendTo[setup["FieldSpace"], "Commuting" -> {}]
245+
];
234246
AppendTo[setup["FieldSpace"]["Commuting"], {name1[p, {ind}], name2[p, {ind}]}];
235247
setup
236248
];
@@ -245,40 +257,52 @@ The basis should be a TensorBases tensor structure (e.g., TB[\"SO(3)\", {1, 1}])
245257

246258
AddGrassmann[setup_, name_Symbol[p_Symbol]] :=
247259
Module[{},
248-
If[MemberQ[Join[setup["FieldSpace"]["Commuting"], setup["FieldSpace"]["Grassmann"]], name[__], Infinity],
260+
If[MemberQ[Join[Lookup[setup["FieldSpace"], "Commuting", {}], Lookup[setup["FieldSpace"], "Grassmann", {}]], name[__], Infinity],
249261
Message[SeDecA::FieldExists, name];
250262
Abort[]
251263
];
264+
If[Not @ KeyExistsQ[setup["FieldSpace"], "Grassmann"],
265+
AppendTo[setup["FieldSpace"], "Grassmann" -> {}]
266+
];
252267
AppendTo[setup["FieldSpace"]["Grassmann"], name[p]];
253268
setup
254269
];
255270

256271
AddGrassmann[setup_, name_Symbol[p_Symbol, {ind__Symbol}]] :=
257272
Module[{},
258-
If[MemberQ[Join[setup["FieldSpace"]["Commuting"], setup["FieldSpace"]["Grassmann"]], name[__], Infinity],
273+
If[MemberQ[Join[Lookup[setup["FieldSpace"], "Commuting", {}], Lookup[setup["FieldSpace"], "Grassmann", {}]], name[__], Infinity],
259274
Message[SeDecA::FieldExists, name];
260275
Abort[]
261276
];
277+
If[Not @ KeyExistsQ[setup["FieldSpace"], "Grassmann"],
278+
AppendTo[setup["FieldSpace"], "Grassmann" -> {}]
279+
];
262280
AppendTo[setup["FieldSpace"]["Grassmann"], name[p, {ind}]];
263281
setup
264282
];
265283

266284
AddGrassmann[setup_, {name1_Symbol[p_Symbol], name2_Symbol[p_Symbol]}] :=
267285
Module[{},
268-
If[MemberQ[Join[setup["FieldSpace"]["Commuting"], setup["FieldSpace"]["Grassmann"]], name1[__] | name2[__], Infinity],
286+
If[MemberQ[Join[Lookup[setup["FieldSpace"], "Commuting", {}], Lookup[setup["FieldSpace"], "Grassmann", {}]], name1[__] | name2[__], Infinity],
269287
Message[SeDecA::FieldExists, {name1, name2}];
270288
Abort[]
271289
];
290+
If[Not @ KeyExistsQ[setup["FieldSpace"], "Grassmann"],
291+
AppendTo[setup["FieldSpace"], "Grassmann" -> {}]
292+
];
272293
AppendTo[setup["FieldSpace"]["Grassmann"], {name1[p], name2[p]}];
273294
setup
274295
];
275296

276297
AddGrassmann[setup_, {name1_Symbol[p_Symbol, {ind__Symbol}], name2_Symbol[p_Symbol, {ind__Symbol}]}] :=
277298
Module[{},
278-
If[MemberQ[Join[setup["FieldSpace"]["Commuting"], setup["FieldSpace"]["Grassmann"]], name1[__] | name2[__], Infinity],
299+
If[MemberQ[Join[Lookup[setup["FieldSpace"], "Commuting", {}], Lookup[setup["FieldSpace"], "Grassmann", {}]], name1[__] | name2[__], Infinity],
279300
Message[SeDecA::FieldExists, {name1, name2}];
280301
Abort[]
281302
];
303+
If[Not @ KeyExistsQ[setup["FieldSpace"], "Grassmann"],
304+
AppendTo[setup["FieldSpace"], "Grassmann" -> {}]
305+
];
282306
AppendTo[setup["FieldSpace"]["Grassmann"], {name1[p, {ind}], name2[p, {ind}]}];
283307
setup
284308
];
@@ -299,7 +323,7 @@ The basis should be a TensorBases tensor structure (e.g., TB[\"SO(3)\", {1, 1}])
299323

300324
AddCSource[setup_, name_Symbol[p_Symbol]] :=
301325
Module[{},
302-
If[MemberQ[Join[setup["FieldSpace"]["Commuting"], setup["FieldSpace"]["Grassmann"], Lookup[setup["FieldSpace"], "CommutingSource", {}], Lookup[setup["FieldSpace"], "GrassmannSource", {}]], name[__], Infinity],
326+
If[MemberQ[Join[Lookup[setup["FieldSpace"], "Commuting", {}], Lookup[setup["FieldSpace"], "Grassmann", {}], Lookup[setup["FieldSpace"], "CommutingSource", {}], Lookup[setup["FieldSpace"], "GrassmannSource", {}]], name[__], Infinity],
303327
Message[SeDecA::FieldExists, name];
304328
Abort[]
305329
];
@@ -312,7 +336,7 @@ The basis should be a TensorBases tensor structure (e.g., TB[\"SO(3)\", {1, 1}])
312336

313337
AddCSource[setup_, name_Symbol[p_Symbol, {ind__Symbol}]] :=
314338
Module[{},
315-
If[MemberQ[Join[setup["FieldSpace"]["Commuting"], setup["FieldSpace"]["Grassmann"], Lookup[setup["FieldSpace"], "CommutingSource", {}], Lookup[setup["FieldSpace"], "GrassmannSource", {}]], name[__], Infinity],
339+
If[MemberQ[Join[Lookup[setup["FieldSpace"], "Commuting", {}], Lookup[setup["FieldSpace"], "Grassmann", {}], Lookup[setup["FieldSpace"], "CommutingSource", {}], Lookup[setup["FieldSpace"], "GrassmannSource", {}]], name[__], Infinity],
316340
Message[SeDecA::FieldExists, name];
317341
Abort[]
318342
];
@@ -333,7 +357,7 @@ The basis should be a TensorBases tensor structure (e.g., TB[\"SO(3)\", {1, 1}])
333357

334358
AddGrassmannSource[setup_, name_Symbol[p_Symbol]] :=
335359
Module[{},
336-
If[MemberQ[Join[setup["FieldSpace"]["Commuting"], setup["FieldSpace"]["Grassmann"], Lookup[setup["FieldSpace"], "CommutingSource", {}], Lookup[setup["FieldSpace"], "GrassmannSource", {}]], name[__], Infinity],
360+
If[MemberQ[Join[Lookup[setup["FieldSpace"], "Commuting", {}], Lookup[setup["FieldSpace"], "Grassmann", {}], Lookup[setup["FieldSpace"], "CommutingSource", {}], Lookup[setup["FieldSpace"], "GrassmannSource", {}]], name[__], Infinity],
337361
Message[SeDecA::FieldExists, name];
338362
Abort[]
339363
];
@@ -346,7 +370,7 @@ The basis should be a TensorBases tensor structure (e.g., TB[\"SO(3)\", {1, 1}])
346370

347371
AddGrassmannSource[setup_, name_Symbol[p_Symbol, {ind__Symbol}]] :=
348372
Module[{},
349-
If[MemberQ[Join[setup["FieldSpace"]["Commuting"], setup["FieldSpace"]["Grassmann"], Lookup[setup["FieldSpace"], "CommutingSource", {}], Lookup[setup["FieldSpace"], "GrassmannSource", {}]], name[__], Infinity],
373+
If[MemberQ[Join[Lookup[setup["FieldSpace"], "Commuting", {}], Lookup[setup["FieldSpace"], "Grassmann", {}], Lookup[setup["FieldSpace"], "CommutingSource", {}], Lookup[setup["FieldSpace"], "GrassmannSource", {}]], name[__], Infinity],
350374
Message[SeDecA::FieldExists, name];
351375
Abort[]
352376
];

modules/TRACY/FORM.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@
168168
169169
id FTxsp(p1?exMom,l1?loopMom)^-1 = (sqrt(FTxsp(p,p))*sqrt(FTxsp(l1,l1))*cos(p1,l1))^-1;
170170
id FTxsp(p1?exMom,l1?loopMom) = (sqrt(FTxsp(p,p))*sqrt(FTxsp(l1,l1))*cos(p1,l1));
171+
171172
#endprocedure
172173
173174
#call SCALL(ProjSP)

0 commit comments

Comments
 (0)