Skip to content
This repository has been archived by the owner on Jul 1, 2022. It is now read-only.

new Oscar features #8

Open
fieker opened this issue May 20, 2020 · 5 comments
Open

new Oscar features #8

fieker opened this issue May 20, 2020 · 5 comments

Comments

@fieker
Copy link

fieker commented May 20, 2020

A possibility would be to change the notebook/ implementation to use the recent Oscar features. On Oscar#master this should work

Qt, T = PolynomialRing(QQ, :T=>1:10)
D = free_abelian_group(5)
Q = [...]
w = [D(Q[i, :]) for i=1:10]
R = grade(Qt, w)
a = ideal(R, [T[5]*T[10] - T[6]*T[9] + T[7]*T[8],
T[1]*T[9] - T[2]*T[7] + T[4]*T[5],
T[1]*T[8] - T[2]*T[6] + T[3]*T[5],
T[1]*T[10] - T[3]*T[7] + T[4]*T[6],
T[2]*T[10] - T[3]*T[9] + T[4]*T[8]])

or
a = ideal([R[5] * R[10] ....])

q, mq = quo(R, a)

...
Of course, internally all serious computations in R, a, Qt, are done in Singular, but it looks neater
Also, in the notebook, now automatically, you should see T_1 with proper subscripts

It would be cool if fans, cones, ... would be proper julia structures, then some of the interfacing would be easier to read....

@ThomasBreuer
Copy link
Member

This issue has several aspects.

  1. Do not specify the subsystem from which some functions or objects are taken (here: QQ instead of Singular.QQ or Ǹemo.QQ or ...) whenever Oscar handles the situation automatically.
  2. Put information into the objects whenever possible (here: the graded polynomial ring).
  3. Where possible, introduce objects representing mathematical structures (here: fans, cones, ...) instead of just encoding them by some low level data.

All this makes sense, however, the aim of the example notebook is to show the interaction between the subsystems, not to hide them.
Perhaps it is an option to have an alternative variant that focuses on the "Oscar perspective"?

@fieker
Copy link
Author

fieker commented Jun 3, 2020 via email

@ThomasBreuer
Copy link
Member

Currently I get stuck in the "oscarification" of the code.
The following (taken from the old code) works.

using Singular
R, T = Singular.PolynomialRing(Singular.QQ, ["x1", "x2"]);
z = R(0);
pol = T[1] * T[2]^2;
perm = [2, 1];
Singular.nvars( R )
Singular.substitute_variable(pol, 1, z)
mx = Singular.MaximalIdeal(R, 1)
Singular.satstd(a, mx)
Singular.permute_variables(pol, perm, R)

But when I start with

using Oscar
R, T = PolynomialRing(QQ, ["x1", "x2"]);

then there seem to be no replacements for Singular.substitute_variable, Singular.MaximalIdeal, Singular.satstd, and Singular.permute_variables.

(And when I try the proposed approach using a graded polynomial ring R then also nvars(R) does not work; one can use nvars(R.R) so this is not really a problem.)

@fieker
Copy link
Author

fieker commented Sep 4, 2020

You're thinking Singular, not math...
Some of it is genuinely missing (and trivial to add) other I don't even know what it should be, most is available, possibly (for now) not quite as fast as it could be.
substritue_variable => evaluate(f, [1, T[2]])
mx = ideal(R, gens(R)) #in general mxi = ideal(R, monomials(R, i)) (defined in Examples/Reynolds currently, sorry)
saturate(a, mx)
permute_variables(pol, perm) => pol^perm #(thanks to GaloisGroup)

the missing nvars is a error

@ThomasBreuer
Copy link
Member

@fieker Thanks.
(Just yesterday I had observed part of what you write.)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants