Skip to content
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

Update abelian group docs #1638

Merged
merged 1 commit into from
Oct 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions docs/src/manual/abelian/elements.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ DocTestSetup = quote
using Hecke
end
```
## Elements
# 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 @@ -22,22 +22,22 @@ rand(G::FinGenAbGroup)
rand(G::FinGenAbGroup, B::ZZRingElem)
parent(x::FinGenAbGroupElem)
```
### Access
## Access

```@docs
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
10 changes: 3 additions & 7 deletions docs/src/manual/abelian/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,14 @@ 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 @@ -51,7 +47,7 @@ using Hecke # hide
abelian_groups(8)
```

### Invariants
## Invariants
```@docs
is_snf(A::FinGenAbGroup)
number_of_generators(A::FinGenAbGroup)
Expand Down
2 changes: 1 addition & 1 deletion docs/src/manual/abelian/maps.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ DocTestSetup = quote
using Hecke
end
```
## Maps
# 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.
Expand Down
10 changes: 5 additions & 5 deletions docs/src/manual/abelian/structural.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ DocTestSetup = quote
using Hecke
end
```
## Structural Computations
# Structural Computations
Abelian groups support a wide range of structural operations such as
- enumeration of subgroups
- (outer) direct products
Expand All @@ -17,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 @@ -81,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/number_fields/conventions.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
### Number fields
# Conventions

By an absolute number field we mean finite extensions of $\mathbf Q$, which is
of type `AbsSimpleNumField` and whose elements are of type `AbsSimpleNumFieldElem`. Such an
Expand Down
2 changes: 1 addition & 1 deletion docs/src/manual/orders/orders.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ All of the functions have a very similar interface: they return
an abelian group and a map converting elements of the group
into the objects required. The maps also
allow a point-wise inverse to server as the *discrete logarithm* map.
For more information on abelian group, see [here](@ref AbelianGroupLink2),
For more information on abelian groups, see [here](@ref AbelianGroupLink2),
for ideals, [here](@ref NfOrdIdlLink2).

- [`torsion_unit_group(::AbsSimpleNumFieldOrder)`](@ref)
Expand Down
Loading