Create the (relative) Brauer group over $\mathbb{Q}$ and build a central simple algebra with given Schur-indices/ local invariants.
Find groups and characters with Schur index 3, 4, 5 and 6.
Explore the connection between gmodule
s and matrix_group
s.
Start easy, say with some dihedral group.
Find a normal extension $K$ of degree 4 over $\mathbb{Q}$. For some primes (including ramified and (if possible) inert ones define the completions at those primes.
For a local field, study the structure of the multiplicative group, in particular at varying precision. Compare this to the theoretical structure.
Verify that the $H^1(K_p^*)$ is indeed trivial and the $H^2$ is cyclic.
Let $f = x^3 + x^2 - 2x - 1$. For which primes $p$ does $f$ have 3 roots mod $p$? Can you spot the pattern? Can you explain the pattern?
For R = Z/8Z
and the matrix m = matrix(R, 2, 2, [4, 2, 0, 0])
explain the difference between hnf(m)
and howel_form(m)
.
Find all automorphisms of the unit group of Z/12Z
and Z/120Z
. What is
the structure?
Find all endomorphisms of Z/12Z
and Z/120Z
Let A = matrix(ZZ, rand(-10:10, 1000, 1000))
and
b = matrix(ZZ, rand(-10:10, 1, 1000))
. What is the best method in Oscar
to solve xA = b
for rational x
? (Maybe start with smaller matrices)
How many ways are there to compute determinants of matrices of univariate polynomials?
Find all integer solutions to Ax = b
and Cx >= 0
Solve Ax = b
for A
, b
and x
integral.
Find all integral solutions of 2x+3y = 7
Create some (natural) G-modules:
H^i
for i=0,1,2How many constructors for G-modules are there?
Compare
@time prod(i for i=1:10000)
(and note the result here)@time prod(ZZ(i) for i=1:10000);
@time prod(BigInt(i) for i=1:10000);
@time prod([ZZ(i) for i=1:10000]);
@time prod([ZZ(i) for i=1:100000]);
@time prod([BigInt(i) for i=1:100000]);
and explain the differences. Can you improve it further?Everyone(?) knows that in Z[\sqrt -5]
we have non-unique factorisation
(of 6 e.g.). Find more examples?
For a given integer n
there is a function that find the largest
exponent $e$ s.th. n = a^e
. Write s.th. similar for polynomials.
You can call any GAP function from OSCAR and vice versa. Have a look at the README and manual of GAP.jl.
fr
if you are Leon)
and try loading it in Julia (via GAP.jl’s GAP.Packages.load
command).These are not exercises but references.
Maybe a bit more advanced
Additional info:
This are not exercises but references.
Remove all packages from your global environment, except development tools.
Install the development tools you just learned about in your global environment.
(Revise
, Documenter
, Test
, …)
Fork and clone the OSCAR repository from GitHub, if you haven’t done so already.
Create a new function (in the src/Oscar.jl
file) that returns your favorite number.
Start a REPL with the OSCAR environment (i.e. in the folder where you cloned OSCAR, julia --project
).
Make sure that you can use OSCAR and your new function, and that changes to your function
are reflected without restarting julia (i.e. using Revise
).
Once you are done, use git
to remove your changes again.
Global environments’ names start with @
, and are stored in ~/.julia/environments/
.
Create a new global environment called @OSCAR
that contains only Oscar
.
This allows you to use OSCAR without affecting your other projects.
Verify that:
Base.active_project()
returns [...]/.julia/environments/OSCAR/Project.toml
)] status
shows only Oscar
)Read https://docs.julialang.org/en/v1/base/reflection/, you can skip the sections on “Expansion and Lowering” and the ones talking about code_*
and @code_*
functions.
You may also find some of the functionality mentioned in https://docs.julialang.org/en/v1/stdlib/InteractiveUtils/ helpful.
What arguments does pushfirst!
expect?
Without using Oscar
, list all methods that accept a Vector
argument.
After using Oscar
, list all methods that accept an ZZPolyRing
.
List all methods that accept both a ZZMatrix
and a ZZRingElem
.
Find the source code for the method computing the fraction ZZ(2)//ZZ(3)
. @less
: “q” stands for “quit”.
Yesterday and this morning, you solved some exercises using OSCAR. Since we removed all packages from your global environment, you cannot run your code for these exercises anymore. Create a new environment in a new folder that only contains the packages you need to run your code for these exercises, copy your code there, and verify that it works. If you work on any further of these exercises later, do it in this environment.
Fork and clone https://github.com/Nemocas/AbstractAlgebra.jl (one of OSCAR’s dependencies). Find a method that has a docstring, but no example in the docstring. Further requirement: You need to understand what the method does, so that you can write a meaningful example. Add an example to the docstring of this method, following the style of other examples in AbstractAlgebra.jl. Make sure that your example is run as a doctest when running the tests. Once you are done, create a pull request on GitHub with your changes.
Remark: You should only use the environment of AbstractAlgebra.jl for this exercise, not one with OSCAR.
Remark: You will have the best success in finding a suitable method in files that are named after algebraic structures,
e.g. Poly.jl
, MPoly.jl
, Matrix.jl
, both in src/
and in src/generic/
.
is_square_with_squareroot
is_square_with_squareroot(::ZZRingElem)
that checks whether a given integer is a perfect square, and if so, returns a tuple (true, sqrt)
where sqrt
is the square root of the integer, and false
otherwise. (You may use the pre-defined functions is_square
and sqrt
.)QQFieldElem
as well. Is it still type stable for both input types? If not, make it type stable.RingElem
types in OSCAR (at least for those that implement is_square
and sqrt
), while keeping it type stable.In some of the previous exercises, you wrote functions that use OSCAR. Go back to some of them, and check that they are type stable and do not allocate unnecessarily. If you find any issues, fix them.
How many different algorithms for determinants are implemented? What rings do they cover? Where are they defined?
Hint: (in AbstractAlgebra: AbstractAlgebra.det_clow
, AbstractAlgebra.det_df
, …;
Nemo: Nemo.det_given_divisor
, …;
Hecke: …;
Oscar: …)
Can you find references/ explanations for the algorithms implemented? How many can you call?
Let $K$ be $\mathbb{Q}[t]/f$ for f = $t^4-2$. This field is not normal.
Construct all group extensions of $C_2$ by $C_2$.
What are the possible Galois groups for a field $K/\mathbb{Q}$ of degree 4 that has a subfield of degree 2 as well? Can you match this to the group extensions?
Find a character and a group s.th. the Schur index is 2
Find a cubic cyclic field where the discriminant has 10 digits.
Let $K$ be a normal number field and $P$ be a prime ideal in $K$ lying above the prime number $p$. The ramification theory says that there is a field $K/D$ s.th. $P\cap D/p$ is totally split, a field $K/U/D$ s.th. $P \cap U/P\cap D$ is inert and s.th. $P/P \cap U$ is totally ramified.
Find an explicit example and verify the properties above.
If this is too boring: for non-normal fields, there is a correspondence between prime ideals and double cosets of the Galois group…
Let $G$ be dihedral of order $20$. Create $G$ as
Find all irreducible representations of $G$.
Harder: Create $G$ as a group of 2x2 matrices over a suitable number field (or over the algebraic closure of $\mathbb{Q}$).
Let $G = M_{11}$.
Let $G = S_4$. Find the
Hint/comment: draw the lattice on paper and label the groups by some id
Let $C = k[x, y]/ y^2-x^3+3x+2$ be a curve. For different fields $k\in{\mathbb{Q}, F_2, F_3, F_7}$
(via Geometry or Number Theory)
Find a plane curve over $k = F_7$ s.th. the Riemann-Roch space of the trivial divsor (zero divisor) has $k$ dimension $> 1$ and s.th. the genus is $>0$.
(via Geometry or Number Theory)
Let $K$ and $L$ be two number fields. Find the intersection. Figure out when this makes sense, is well defined, unique, …
Decide if 2 number fields are linearly disjoint, ie. the splitting fields are disjoint.
Compute the intersection of 2 (non-parallel) lines in the affine plane
Compute the intersection of 2 pairs of parallel lines in the affine plane $\mathbb{Q}^2$
Compute the intersection of 2 circles in $\mathbb{Q}^2$
Compute the intersection of a circle and an ellipse in $\mathbb{Q}^2$. Find an example, where you see all points (Bézout theorem) already as points in $\mathbb{Q}^2$
Let $G = \mathrm{SL}_5(\mathbb{F}_3)$.
rand_pseudo
to get
random elements without enumerating the group.matrix
to turn a group element into a matrix.factor
to
get the irreducible factors.Write functions that given some mystery surface $V(….)$ do the following:
Test your functions on $V(x^3+y^3+z^3+xyz,v^4+w^4+xvzw)$ in $\mathbb{P}^4$.
Write function that given some mystery scheme $X=V(…)$ do the following:
Test your functions on $X = V((x^2-y^2z)((x-1)^2+y^2+z^2))$.
Write functions that given some ideal $I$ in a multivariate polynomial ring do the following:
Test your functions on $(xy,xz,xw,yz,yw,zw)$.
Find an approximation for, and the minimal polynomial, $m$, of $\alpha = root(2,2) + root(3,3) + … + root(9,9)$ [Hint: use the algebraic closure of $\mathbb{Q}$]
A well-known computational complexity problem is that of determining which of two sums of square-roots of integers is the greater. For brevity we write ${n_1, n_2, …, n_k}$ to mean the sum of their square-roots.
Let $G = (V,E)$ be a (finite, simple) graph with vertices $V$ and edges $E$; each edge is specified by a subset of 2 vertices (there are no loops). Let $C$ be a colour palette: a set of colours. A $C$-vertex-colouring of $G$ is a map $col: V \to C$ such that if ${v_1, v_2}$ is an edge then $col(v_1)$ is different from $col(v_2)$, i.e. any two vertices joined by an edge have different colours. The main questions are: does $G$ have a $C$-colouring, and if so, produce (at least) one such colouring.
Recall the “weak” Nullstellensatz: a polynomial system $S = {f_1,…,f_r}$ has no solution (in the algebraic closure) iff the ideal generated by ${f_1,…,f_r}$ contains 1.
The problem can be converted into a question about solving a polynomial system. Let $P = k[v_1, …, v_n]$ be a polynomial ring where $n$ is the number of vertices in $G$. Let $C$ be a subset of $k$, and define $COL(x) = \prod( x-c \text{ for } c \in C )$, so each $COL(v_k)$ is a polynomial in $P$. Note that $COL(v_k)$ is square-free for every $v_k$. Observe that $EDGE(x,y) := (COL(x)-COL(y))/(x-y)$ is a polynomial in $P$ whenever $x$ and $y$ are in $P$. Let $c_1,c_2$ be in $C$; observe also that $EDGE(c_1,c_2)$ is zero if $c_1$ and $c_2$ are different, and non-zero if $c_1 = c_2$. Let $S$ be the polynomial system generated by $COL(v_k)$ for $k=1,2,…,n$ and by $EDGE(v_i,v_j)$ for every ${v_i,v_j} \in E$. Then any solution to $S$ is a $C$-colouring of $G$; indeed each solutions to $S$ gives a distinct colouring of $G$. By the Nullstellensatz there is no $C$-colouring of $G$ iff the ideal generated by these polynomials contains 1.
Write an OSCAR function which takes as input a Vector{Tuple{Int,Int}}
denoting the edges, and an Int
denoting the cardinality of $C$, and which
determines whether there is a $C$-colouring, and if so produces one.
Develop an OSCAR function which solves Sudoku puzzles. The input is an OSCAR matrix of integers ranging from 0 to 9, where 0 denotes an empty square, and the other values represent the given starting configuration.
Find a (univariate) polynomial whose square contains no more terms than the polynomial itself – we exclude trivial examples such as $c * x^k.$ The basic idea is to search degree by degree; in each degree, $d$, we start with a “generic” polynomial of degree $d$: $f = \sum( a_k*x^k \mid k=0,1,…,d )$ To simplify matters we assume that all the $a_k$ are non-zero. The coefficients of $f^2$ are polynomials in the $a_k$. If $f^2$ has at most as many (non-zero) terms as $f$ then at least $d$ of the coefficients in $f^2$ must be zero. We don’t know which subset of coefficients are zero, but there are only finitely many, so we can try them all. For each candidate subset we seek solutions to the polynomial system defined by the vanishing of the polynomials belonging to our “putative” subset of zero coefficients in the square. Recall that the polynomial system has no solutions iff the ideal generated by the polynomials contains 1 (think of the “Weak Nullstellensatz”). You now have enough information to start searching!