Skip to content

Commit

Permalink
Merge branch 'thofma:master' into bd/sparse-gauss
Browse files Browse the repository at this point in the history
  • Loading branch information
BD-00 authored Nov 28, 2024
2 parents e25a850 + 5d2ba17 commit d1f0480
Show file tree
Hide file tree
Showing 331 changed files with 4,024 additions and 4,112 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ jobs:
matrix:
julia-version:
- '1.6'
- '1.9' # to be removed in the near future
- '1.10'
- '1.10' # to be removed in the near future
- '1.11'
- 'nightly'
os:
- ubuntu-latest
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/oscar.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ jobs:
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
env:
PR_NUMBER: ${{github.event.number}}
PR_NUMBER: ${{github.event.number || '0' }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v4
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,9 @@ deps/hecke/libhecke.so.0
deps/hecke/libhecke.so.0.0.0
docs/site/*
docs/build/*
docs/node_modules/*
docs/package-lock.json
Manifest.toml
.DS_Store
docs/node_modules/*
docs/package-lock.json
30 changes: 0 additions & 30 deletions LICENSE

This file was deleted.

29 changes: 29 additions & 0 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
Unless otherwise specified in a file, Hecke is licensed under the BSD 2-Clause
"Simplified" License.

> Copyright (c) 2015-2024: Hecke contributors, see <https://github.com/thofma/Hecke.jl/graphs/contributors>
>
> Redistribution and use in source and binary forms, with or without
> modification, are permitted provided that the following conditions are met:
>
> 1. Redistributions of source code must retain the above copyright notice, this
> list of conditions and the following disclaimer.
>
> 2. Redistributions in binary form must reproduce the above copyright notice,
> this list of conditions and the following disclaimer in the documentation
> and/or other materials provided with the distribution.
>
> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
> AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
> DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
> FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
> DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
> SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
> CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
> OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
> OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The following components included in Hecke have their own licences:

- src/Misc/AVLTrees [MIT] (see https://github.com/JuliaCollections/DataStructures.jl)
6 changes: 3 additions & 3 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name = "Hecke"
uuid = "3e1990a7-5d81-5526-99ce-9ba3ff248f21"
version = "0.34.4"
version = "0.34.8"

[deps]
AbstractAlgebra = "c3fe647b-3220-5bb0-a1ea-a7954cac585d"
Expand Down Expand Up @@ -28,7 +28,7 @@ GAPExt = "GAP"
PolymakeExt = "Polymake"

[compat]
AbstractAlgebra = "^0.43.1"
AbstractAlgebra = "^0.43.10"
Dates = "1.6"
Distributed = "1.6"
GAP = "0.9.6, 0.10, 0.11, 0.12"
Expand All @@ -37,7 +37,7 @@ LazyArtifacts = "1.6"
Libdl = "1.6"
LinearAlgebra = "1.6"
Markdown = "1.6"
Nemo = "^0.47.1"
Nemo = "^0.47.2"
Pkg = "1.6"
Polymake = "0.10, 0.11"
Printf = "1.6"
Expand Down
26 changes: 9 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,24 +68,16 @@ If your research depends on computations done with Hecke, please consider giving

Here is a quick example of using Hecke:

```julia
```
julia> using Hecke

Welcome to

_ _ _
| | | | | |
| |__| | ___ ___| | _____
| __ |/ _ \/ __| |/ / _ \
| | | | __/ (__| < __/
|_| |_|\___|\___|_|\_\___|

Version 0.22.8...
... which comes with absolutely no warranty whatsoever
(c) 2015-2024 by Claus Fieker, Tommy Hofmann and Carlo Sircana


julia> Qx, x = polynomial_ring(FlintQQ, "x");
_ _ _
| | | | | | | Software package for
| |__| | ___ ___| | _____ | algorithmic algebraic number theory
| __ |/ _ \/ __| |/ / _ \ |
| | | | __/ (__| < __/ | Manual: https://thofma.github.io/Hecke.jl
|_| |_|\___|\___|_|\_\___| | Version 0.34.6
julia> Qx, x = polynomial_ring(QQ, "x");
julia> f = x^3 + 2;
Expand Down
45 changes: 0 additions & 45 deletions docs/Build.jl
Original file line number Diff line number Diff line change
Expand Up @@ -6,51 +6,6 @@ module Build

using Pkg, Nemo, Documenter, DocumenterVitepress, DocumenterCitations

pages = [
"index.md",
"Number fields" => [ "number_fields/intro.md",
"number_fields/fields.md",
"number_fields/elements.md",
"number_fields/complex_embeddings.md",
"number_fields/internal.md"],
"Function fields" => [ "function_fields/intro.md",
"function_fields/basics.md",
"function_fields/elements.md",
"function_fields/internal.md",
"function_fields/degree_localization.md"],
"Orders" => [ "orders/introduction.md",
"orders/orders.md",
"orders/elements.md",
"orders/ideals.md",
"orders/frac_ideals.md"
],
"Quadratic and hermitian forms" => [ "quad_forms/introduction.md",
"quad_forms/basics.md",
"quad_forms/lattices.md",
"quad_forms/genusherm.md",
"quad_forms/integer_lattices.md",
"quad_forms/Zgenera.md",
"quad_forms/discriminant_group.md"
],
"Elliptic curves" => [ "elliptic_curves/intro.md",
"elliptic_curves/basics.md",
"elliptic_curves/finite_fields.md",
"elliptic_curves/number_fields.md",],
"Abelian groups" => "abelian/introduction.md",
"Class field theory" => "class_fields/intro.md",
"Misc" => ["FacElem.md",
"sparse/intro.md",
"pmat/introduction.md",
"misc/conjugacy.md",
],
"Extra features" => ["features/mset.md",
],
"Examples" => "examples.md",
"References" => "references.md",
"Developer" => [ "dev/test.md",
]
]

# Overwrite printing to make the header not full of redundant nonsense
# Turns
# Hecke.Order - Method
Expand Down
5 changes: 4 additions & 1 deletion docs/src/.vitepress/config.mts
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ export default defineConfig({
collapsed: true,
items: [
{ text: 'Introduction', link: 'manual/number_fields/intro'},
{ text: 'Conventions', link: 'manual/number_fields/conventions'},
{ text: 'Number field operations', link: 'manual/number_fields/fields'},
{ text: 'Elements', link: 'manual/number_fields/elements'},
{ text: 'Complex embeddings', link: 'manual/number_fields/complex_embeddings'},
Expand Down Expand Up @@ -94,6 +95,8 @@ export default defineConfig({
{ text: 'Introduction', link: 'manual/algebras/intro'},
{ text: 'Basics', link: 'manual/algebras/basics'},
{ text: 'Structure constant algebras', link: 'manual/algebras/structureconstant'},
{ text: 'Group algebras', link: 'manual/algebras/groupalgebras'},
{ text: 'Ideals', link: 'manual/algebras/ideals'},
]
},
{
Expand Down Expand Up @@ -131,8 +134,8 @@ export default defineConfig({
text: 'Developer',
collapsed: true,
items: [
{ text: 'Macros', link: 'manual/developer/macros'},
{ text: 'Tests', link: 'manual/developer/test'},
{ text: 'Documentation', link: 'manual/developer/documentation'},
]
}
]
Expand Down
2 changes: 1 addition & 1 deletion docs/src/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ If your research depends on computations done with Hecke, please consider giving
- Claus Fieker, William Hart, Tommy Hofmann and Fredrik Johansson, [Nemo/Hecke: Computer Algebra and Number Theory Packages
for the Julia Programming Language](https://doi.acm.org/10.1145/3087604.3087611). In: Proceedings of ISSAC '17, pages 157–164, New York, NY, USA, 2017. ACM.

```bib
```
@inproceedings{nemo,
author = {Fieker, Claus and Hart, William and Hofmann, Tommy and Johansson, Fredrik},
title = {Nemo/Hecke: Computer Algebra and Number Theory Packages for the Julia Programming Language},
Expand Down
19 changes: 13 additions & 6 deletions docs/src/manual/abelian/elements.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
## Elements
```@meta
CurrentModule = Hecke
DocTestSetup = quote
using Hecke
end
```
# Elements
Elements in a finitely generated abelian group are of type `FinGenAbGroupElem`
and are always given as a linear combination of the generators.
Internally this representation is normliased to have a unique
representative.

### Creation
## Creation
In addition to the standard function `id`, `zero` and `one` that can be
used to create the neutral element, we also support more targeted creation:
```@docs
Expand All @@ -16,22 +22,23 @@ rand(G::FinGenAbGroup)
rand(G::FinGenAbGroup, B::ZZRingElem)
parent(x::FinGenAbGroupElem)
```
### Access
## Access

```@docs
getindex(x::FinGenAbGroupElem, v::AbstractVector{Int})
getindex(x::FinGenAbGroupElem, i::Int)
```

### Predicates
## Predicates

We have the standard predicates `iszero`, `isone` and `is_identity`
to test an element for being trivial.

### Invariants
## Invariants
```@docs
order(A::FinGenAbGroupElem)
```
### Iterator
## Iterator
One can iterate over the elements of a finite abelian group.

```@repl
Expand Down
11 changes: 4 additions & 7 deletions docs/src/manual/abelian/introduction.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,17 @@
```@meta
CurrentModule = Hecke
DocTestSetup = quote
using Hecke
end
```
# [Abelian Groups](@id AbelianGroupLink2)

Here we describe the interface to abelian groups in Hecke.

## Introduction
# [Introduction](@id AbelianGroupLink2)

Within Hecke, abelian groups are of generic abstract type `GrpAb` which does not
have to be finitely generated, $\mathbb Q/\mathbb Z$ is an example of a more
general abelian group. Having said that, most of the functionality is
restricted to abelian groups that are finitely presented as $\mathbb Z$-modules.

### Basic Creation
## Basic Creation

Finitely presented (as $\mathbb Z$-modules) abelian groups are of type `FinGenAbGroup`
with elements of type `FinGenAbGroupElem`. The creation is mostly via a relation
Expand Down Expand Up @@ -50,7 +47,7 @@ using Hecke # hide
abelian_groups(8)
```

### Invariants
## Invariants
```@docs
is_snf(A::FinGenAbGroup)
number_of_generators(A::FinGenAbGroup)
Expand Down
9 changes: 8 additions & 1 deletion docs/src/manual/abelian/maps.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
```@meta
CurrentModule = Hecke
DocTestSetup = quote
using Hecke
end
```
# Maps
Maps between abelian groups are mainly of type `FinGenAbGroupHom`. They
allow normal map operations such as `image`, `preimage`, `domain`, `codomain`
and can be created in a variety of situations.
## Maps

Maps between abelian groups can be constructed via
- images of the generators
- pairs of elements
Expand Down
16 changes: 11 additions & 5 deletions docs/src/manual/abelian/structural.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
## Structural Computations
```@meta
CurrentModule = Hecke
DocTestSetup = quote
using Hecke
end
```
# Structural Computations
Abelian groups support a wide range of structural operations such as
- enumeration of subgroups
- (outer) direct products
Expand All @@ -11,7 +17,7 @@ snf(A::FinGenAbGroup)
Hecke.find_isomorphism(G, op, A::Hecke.GrpAb)
```

### Subgroups and Quotients
## Subgroups and Quotients
```@docs
torsion_subgroup(G::FinGenAbGroup)
sub(G::FinGenAbGroup, s::Vector{FinGenAbGroupElem})
Expand Down Expand Up @@ -75,21 +81,21 @@ The difference between `issubset =` $\subset$ and
intersect(mG::FinGenAbGroupHom, mH::FinGenAbGroupHom)
```

### Direct Products
## Direct Products
```@docs
direct_product(G::FinGenAbGroup...)
canonical_injection(G::FinGenAbGroup, i::Int)
canonical_projection(G::FinGenAbGroup, i::Int)
flat(G::FinGenAbGroup)
```

### Tensor Producs
## Tensor Producs
```@docs
tensor_product(G::FinGenAbGroup...)
hom_tensor(G::FinGenAbGroup, H::FinGenAbGroup, A::Vector{ <: Map{FinGenAbGroup, FinGenAbGroup}})
```

### Hom-Group
## Hom-Group
```@docs
hom(::FinGenAbGroup, ::FinGenAbGroup)
```
Expand Down
2 changes: 1 addition & 1 deletion docs/src/manual/algebras/basics.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ end

## Creation of algebras

See the corresponding sections in ?????
See the corresponding sections on [structure constant algebras](@ref SCA).
```@docs
zero_algebra(::Field)
```
Expand Down
Loading

0 comments on commit d1f0480

Please sign in to comment.