# How to set up symplectic geometry without(!) metric (with xAct/xTensor)?

I want to define a symplectic manifold with symplectic form $$\Omega_{[ab]}$$ with $$\Omega_{ab}\Omega^{ac} = \delta^c_b$$, but without having a metric.

I define a manifold and an antisymmetric (2,0) tensor.

<< xActxTensor;
DefManifold[sympl, 8, {a, b, c, d, e, f, g, h, i, j, k, l}];
DefTensor[Omega[a, b], sympl, Antisymmetric[{a, b}]];


To implement the relation to the inverse I define a rule

omegarule =
MakeRule[{ Omega[-a, -b] Omega[a, c], delta[c, -b]},
PatternIndices -> All];


But to define the rule I need to make use of the delta[] function and this is somehow associated to the metric. Thus sometimes Mathematica will complain and tell me:  E.g. I define

DefTensor[X[a, b], sympl, Symmetric[{a, b}]];
exp1 =  X[a, e] Omega[b, f] Omega[c, g] Omega[d, h] -
X[a, e] Omega[b, c] Omega[f, g] Omega[d, h]
exp1Asym =
24 Antisymmetrize[
24 Antisymmetrize[exp1, {a, b, c, d}], {e, f, g, h}]


But

exp1Asym Omega[-a, -b]   // ToCanonical
% /. omegarule


Will produce the error.

But

Antisymmetrize[(X[a, e] Omega[b, f] Omega[c, g]), {b,
c}] Omega[-f, -h] // ToCanonical
% /. omegarule


Will not produce the error, althought it is the same situation. Plus, if I do not use the % the rule is not being applied in these cases at all. But in smaller cases it is.

How do I treat symplectic geometry properly? If I do define a metric it will sometimes lower or raise indices of the symplectic form, which does not make sense.

I think you should define the tensor Omega[-a, -b] and its inverse, say iOmega[a, b], as separate antisymmetric tensors, and use them systematically with those index configurations. Because there is no (Riemannian) metric, you cannot raise and lower their indices.

To help with the visualization, I'm making both Omega and iOmega format as \[CapitalOmega]:

DefManifold[sympl, 4, {a, b, c, d, e, f, g, h}]

DefTensor[X[a, b], sympl, Symmetric[{a, b}]];

DefTensor[Omega[-a, -b], sympl, Antisymmetric[{1, 2}], PrintAs -> "\[CapitalOmega]"]

DefTensor[iOmega[a, b], sympl, Antisymmetric[{1, 2}], PrintAs -> "\[CapitalOmega]"]

exp1 = X[a, e] iOmega[b, f] iOmega[c, g] iOmega[d, h] - X[a, e] iOmega[b, c] iOmega[f, g] iOmega[d, h]

omegarule = MakeRule[{Omega[-a, -b] iOmega[a, c], delta[-b, c]}, PatternIndices -> All]

24 Antisymmetrize[24 Antisymmetrize[exp1, {a, b, c, d}], {e, f, g, h}] // ToCanonical
% /. omegarule

Antisymmetrize[(X[a, e] iOmega[b, f] iOmega[c, g]), {b, c}] Omega[-f, -h] // ToCanonical
% /. omegarule


The problem is actually an error in the order of the arguments of delta[] once this is reversed there is no problem with the above setup.

Though I do not know if this is the best setup.