Open mkoeppe opened 3 years ago
Description changed:
---
+++
@@ -1,4 +1,4 @@
-SymPy's `TensorSymmetry` (https://docs.sympy.org/latest/modules/tensor/tensor.html) uses a trick to represent tensor symmetries and antisymmetries as permutation groups: Two extra elements (in the example below, 3 and 4) keep track of the sign
+SymPy's `TensorSymmetry` (https://docs.sympy.org/latest/modules/tensor/tensor.html) uses a trick to represent (monoterm) tensor symmetries and antisymmetries as permutation groups: Two extra elements (in the example below, 3 and 4) keep track of the sign
sage: TensorSymmetry.fully_symmetric(3)
Description changed:
---
+++
@@ -13,6 +13,6 @@
We define a class `TensorSymmetryGroup`
- which can be initialized from `sage.tensor` `sym` and `antisym` lists
- can convert to/from `sympy.tensor.tensor.TensorSymmetry`
-- defines `_get_action_` for acting on tensor modules
+- defines `_get_action_` for acting on tensor modules / components
I'm thinking of putting this in sage.groups.tensor.monoterm_symmetry
the symmetry group there is an arbitrary permutation group, no? So sympy has an algorithm to find the autmorphism group of a weighted hypergraph?
New commits:
ad4f3f1 | src/sage/groups/tensor/monoterm_symmetry.py: New |
Replying to @dimpase:
the symmetry group there is an arbitrary permutation group, no? So sympy has an algorithm to find the autmorphism group of a weighted hypergraph?
The automorphism group is the input, not the output. This code is for defining spaces of tensors with prescribed symmetries.
Your input is a bunch of permutations, not a group. Why do you force the user to figure them out?
I'd rather see it as a group, and yes, it's perfectly possible in Sage to compute a strong generating set and a base, given a permutation group. E.g. one can use the corresponding GAP functionality via libgap.
Replying to @dimpase:
Your input is a bunch of permutations, not a group. Why do you force the user to figure them out?
Sorry, what are you referring to?
The example lines on the ticket description using SymPy show the output of SymPy's TensorSymmetry
constructor, which happens to show the BSGS.
In the branch attached here, the input is a symmetry specification in the style of sage.tensor
.
All I can see is an example with sym=(1, 2)
- it's totally unclear what kind of input is expected, due to lack of any documentation.
OK. I will adapt documentation from sage.tensor.modules.comp
, where this input is documented.
Branch pushed to git repo; I updated commit sha1. New commits:
3629386 | TensorSymmetryGroup: Adapt some documentation from sage.tensor.modules.comp |
+ * ``sym = [(0,2), (1,3,4)]`` for a symmetry between the 1st and 3rd
+ indices and a symmetry between the 2nd, 4th and 5th indices.
is ambiguous. E.g. sym = [(0,2), (1,3)]
might either mean one order 2 symmetry (i.e. group of symmetries of order 2), or
a list of generators for a group of order 4.
In the former can one should say something like `a symmetry which acts as a permutation
(13)(24)`. In the latter, say they generate a group...
SymPy's
TensorSymmetry
(https://docs.sympy.org/latest/modules/tensor/tensor.html) uses a trick to represent (monoterm) tensor symmetries and antisymmetries as permutation groups: Two extra elements (in the example below, 3 and 4) keep track of the signThe 2-cycle (3 4) represents the antisymmetry. What is displayed there is the "base and strong generating system".
This trick can of course be generalized to Mathematica's "phased permutation groups" (#30276) by using longer cycles.
We define a class
TensorSymmetryGroup
sage.tensor
sym
andantisym
listssympy.tensor.tensor.TensorSymmetry
_get_action_
for acting on tensor modules / componentsCC: @tscrim @egourgoulhon @dimpase @honglizhaobob @spaghettisalat
Component: linear algebra
Branch/Commit: u/mkoeppe/action_of_a_sympy_tensorsymmetry @
3629386
Issue created by migration from https://trac.sagemath.org/ticket/32029