-
Notifications
You must be signed in to change notification settings - Fork 112
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
some more docu for invariant theory #599
Conversation
@joschmitt: I am not awake yet. Of course I mean reynolds_operator(IR::InvRing, f::MPolyElem) |
Hello. Could explain more what you mean by expand? |
@tthsqe12: See for example the docu for hilbert_series_expanded under Affine Algebras |
It looks like you mean power series. I think we have power series. |
Yeah I think what @decker wants is to have a way to compute the first N coefficients of the power series expansion of a rational function (i.e., the N-th Taylor polynomial) Looking at the documentation for |
We have my FactoredField https://gist.github.com/tthsqe12/73a17c5bb2182df8e9ff112e96d29606 which supports everything up to partial fractions and addition/subtraction. But I think this is overkill here, as we do not need to add/subtract these things? I think there is already something in hecke for representing factored elements and multplying them together. |
@fingolfin: we have three functions for affine algebras, |
@fingolfin, @ThomasBreuer: Do we have or do we plan to have a concept of group actions in Oscar? |
@wdecker The objects for describing group actions are G-sets. This is work in progress. |
docs/src/InvariantTheory/it.md
Outdated
|
||
The *invariants* of $G$ are the fixed points of this action, its *ring of invariants* is the graded subalgebra | ||
|
||
$K[x]^G\cong K[V]^G=\{f\in K[V] \mid \pi f=f {\text { for any }} \pi\in G\}\subset K[V].$ | ||
$K[x]^G = K[x_1, \dots, x_n]^G\cong K[V]^G=\{f\in K[V] \mid \pi f=f {\text { for any }} \pi\in G\}\subset K[V].$ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The notation K[x]^G
to me always indicates a right action, i.e. a map SET x GROUP -> SET
. That would suggest writing \pi ^ f = f
. This would be consistent with our plan to do everything in Oscar based on right actions, like it is done in GAP and in MAGMA. Indeed, MAGMA even does this in invariant theory, see:
- http://magma.maths.usyd.edu.au/magma/handbook/text/1323 for their definition of
K[V]^g
- http://magma.maths.usyd.edu.au/magma/handbook/text/1327 for their matrix action on polynomials: for a polynomial
f
, a matrixg
and a coordinate vectorx
, they definef^g(x) := f(x.g)
, which is indeed a right action. Translated to the notation used above:f^\pi(v) = f(v \rho(\pi))
This is in contrast to the action described above in line 22/23, which is a left action (and has to invert or transpose the acting matrix to achieve that).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually, the action Magma describes is a left action after all... Now I am confused what they do, I will check with actual code.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For what it's worth, I think finvar.lib in Singular does right actions. So the matrix M =
( a b )
( c d )
acts on K[x, y] by mapping x to ax + by and y to cx + dy. At least I would call this a right action because I would identify x with the vector (1 0) and then (1 0)*M is (a b), so the matrix acts "from the right".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The hallmark of a right action is it must satisfy (f^a)^b = f^{a*b}
while for a left action it is a*(b*f) = (a*b)*f
(or, if one uses the notation for right actions to write down a left action, one gets (f^a)^b = f^{b*a}
. So, just take two matrices a,b that do not commute and compare (f^a)^band
f^{ab}`.
So that's what one should check for the Singular computations.
As to Magma, I verified they do implement a right action on polynomials via the above rules:
> K := QuadraticField(2);
> Aq := [ x / K.1 : x in [1, 1, -1, 1]];
> Bq := [ x * One(K) : x in [0, 1, 1, 0]];
> G := MatrixGroup<2, K | Aq, Bq>;
> P<x, y> := PolynomialRing(K, 2);
> f := x^2 + x * y + y^2;
# equal:
> f^(G.1*G.2);
3/2*x^2 + 1/2*y^2
> (f^G.1)^G.2;
3/2*x^2 + 1/2*y^2
# different
> (f^G.2)^G.1;
1/2*x^2 + 3/2*y^2
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's not quite as easy to reproduce this in Singular / finvar.lib, because the action of a matrix on a polynomial is just not implemented. Doing the action by hand as in evaluate_reynolds()
for example the results are exactly as in Magma.
@fingolfin, @joschmitt, @thofma, @fieker: I suggest that we discuss next week on how to proceed |
This is very much WIP, but can be merged so that @joschmitt can add more of the Singular functionality: Please implement the following functions:
reynolds_operator(f::MPolyElem)
molien_series(IR::InvRing) as rational function
hilbert_series(IR::InvRing) = molien_series(IR)
invariant_basis(d::Int)
Do we have an expand function for rational functions?