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.

<< xAct`xTensor`;
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: enter image description here enter image description here

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}]


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

Will produce the error.


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.


2 Answers 2


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.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.