Excellent, thanks so much!
One more thing: what would be the canonical way to expand out/simplify vector field expressions for the purposes of substitution/MakeRule?
(e.g., I'd like to input as assumption [X,Y] = Z and have X(Y(f)) - Y(X(f)) simplified to Z(f)).
With the following convenience functions defined, neither of the rules below appear to do additional simplification:
ExpBrDeriv[x_] := ToCanonical[LieDToCovD[BracketToCovD[x]]]
ApplyRule[LHS_ == RHS_] := MakeRule[Evaluate[{LHS, RHS}], MetricOn -> All, ContractMetrics -> True]
expr = LieD[X[a]][LieD[Y[a]][f[]]] - LieD[Y[a]][LieD[X[a]][f[]]] // ExpBrDeriv (*[X,Y] f*)
rule1 = MakeRule[{LieD[Bracket[X[b], Y[b]][a]][f[]], 0}]
rule2 = MakeRule[{Bracket[X[b], Y[b]][a], 0}]
rule3 = ApplyRule[LieD[Bracket[X[b], Y[b]][a]][f[]] == 0]
rule4 = ApplyRule[Bracket[X[b], Y[b]][a] == 0]
expr /.rule1 (*rule 2, rule 3, etc.*)
Attempting to canonicalize these expressions within MakeRule/ApplyRule also seems to cause issues, e.g. all of the following cause MakeRule to throw the error "There is more than one term on the LHS of rule":
rule5 = MakeRule[{LieD[Bracket[X[b], Y[b]][a]][f[]] // ExpBrDeriv, 0}]
rule6 = ApplyRule[LieD[Bracket[X[b], Y[b]][a]][f[]] // ExpBrDeriv == 0]
etc.
(admittedly, it seems like the better solution might be to just expand all the Lie bracket identities/Leibniz rule expansion symbolically in Mathematica first, then to port the result to xAct - I'll make an attempt at this before bothering you all again!)
Thanks!
Ethan