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

Changes in direct sums construction #985

Merged
merged 11 commits into from
Mar 7, 2023
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
6 changes: 3 additions & 3 deletions docs/src/quad_forms/Zgenera.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Zgenera(sig_pair::Tuple{Int,Int}, determinant::Union{Int,ZZRingElem})
```
### From other genus symbols
```@docs
orthogonal_sum(G1::ZGenus, G2::ZGenus)
direct_sum(G1::ZGenus, G2::ZGenus)
```

## Attributes of the genus
Expand Down Expand Up @@ -127,9 +127,9 @@ gram_matrix(S::ZpGenus)
rescale(S::ZpGenus, a::RationalUnion)
```

### Orthogonal sums
### Direct sums
```@docs
orthogonal_sum(S1::ZpGenus, S2::ZpGenus)
direct_sum(S1::ZpGenus, S2::ZpGenus)
```

### Embeddings/Representations
Expand Down
33 changes: 24 additions & 9 deletions docs/src/quad_forms/basics.md
Original file line number Diff line number Diff line change
Expand Up @@ -211,13 +211,35 @@ is_represented_by(H2, H)
```
---

## Categorical constructions
One can construct direct sums of spaces of the same kind. Since those are also
direct products, they are called biproducts in this context. Depending on the user
usage, one of the following three methods can be called to obtain the direct
sum of a finite collection of spaces. Note that the corresponding copies
of the original spaces in the direct sum are pairwise orthogonal.

```@docs
direct_sum(x::Vector{AbstractSpace})
direct_product(x::Vector{AbstractSpace})
biproduct(x::Vector{AbstractSpace})
```

### Example

```@repl 2
using Hecke # hide
E, b = cyclotomix_field_as_cm_extensions(7);
H = hermitian_space(E, 3);
H2 = hermitian_space(E, E[-1 0 0; 0 1 0; 0 0 -1]);
H3, inj, proj = biproduct(H, H2)
isone(compose(inj[1], proj[1]))
iszero(compose(inj[1], proj[2]))
```
## Orthogonality operations

```@docs
orthogonal_complement(::AbstractSpace, ::MatElem)
orthogonal_projection(::AbstractSpace, ::MatElem)
orthogonal_sum(::AbstractSpace, ::AbstractSpace)
direct_sum(x::Vararg{QuadSpace})
```

### Example
Expand All @@ -226,15 +248,8 @@ direct_sum(x::Vararg{QuadSpace})
using Hecke # hide
K, a = CyclotomicRealSubfield(7);
Kt, t = K["t"];
E, b = number_field(t^2-a*t+1, "b");
Q = quadratic_space(K, K[0 1; 1 0]);
H = hermitian_space(E, 3);
H2 = hermitian_space(E, E[-1 0 0; 0 1 0; 0 0 -1]);
orthogonal_complement(Q, matrix(K, 1, 2, [1 0]))
H3, map1, map2 = orthogonal_sum(H, H2);
H3
map1
map2
```
---

Expand Down
7 changes: 4 additions & 3 deletions docs/src/quad_forms/discriminant_group.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,9 @@ brown_invariant(T::TorQuadModule)
is_genus(T::TorQuadModule, signature_pair::Tuple{Int, Int})
```

### Orthogonal sums
### Categorical constructions
```@docs
orthogonal_sum(T::TorQuadModule, U::TorQuadModule)
direct_sum(x::Vararg{TorQuadModule})
direct_sum(x::Vector{TorQuadModule})
direct_product(x::Vector{TorQuadModule})
biproduct(x::Vector{TorQuadModule})
```
8 changes: 4 additions & 4 deletions docs/src/quad_forms/genusherm.md
Original file line number Diff line number Diff line change
Expand Up @@ -435,8 +435,8 @@ length(representatives(G1))
## Sum of genera

```@docs
orthogonal_sum(::HermLocalGenus, ::HermLocalGenus)
orthogonal_sum(::HermGenus, ::HermGenus)
direct_sum(::HermLocalGenus, ::HermLocalGenus)
direct_sum(::HermGenus, ::HermGenus)
```

### Examples
Expand All @@ -458,8 +458,8 @@ gens = Vector{Hecke.NfRelElem{nf_elem}}[map(E, [1, 0, 0]), map(E, [a, 0, 0]), ma
L = hermitian_lattice(E, gens, gram = D);
g2 = genus(L, p);
G2 = genus(L);
orthogonal_sum(g1, g2)
orthogonal_sum(G1, G2)
direct_sum(g1, g2)
direct_sum(G1, G2)
```

---
Expand Down
9 changes: 7 additions & 2 deletions docs/src/quad_forms/integer_lattices.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,11 +132,16 @@ divisibility(::ZLat, ::Union{Vector, QQMatrix})

## Embeddings

### Categorical constructions
```@docs
direct_sum(x::Vector{ZLat})
direct_product(x::Vector{ZLat})
biproduct(x::Vector{ZLat})
```

### Orthogonal sublattices
```@docs
orthogonal_sum(::ZLat, ::ZLat)
orthogonal_submodule(::ZLat, ::ZLat)
direct_sum(x::Vararg{ZLat})
irreducible_components(::ZLat)
```

Expand Down
11 changes: 11 additions & 0 deletions docs/src/quad_forms/lattices.md
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,17 @@ ambient_space(rescale(Lquad,3*a))
pseudo_matrix(Lquad)
```

## Categorical constructions
Given finite collections of lattices, one can construct their direct sums, which
are also direct products in this context. They are also sometimes called biproducts.
Depending on the user usage, it is possible to call one of the following functions.

```@docs
direct_sum(x::Vector{AbstractLat})
direct_product(x::Vector{AbstractLat})
biproduct(x::Vector{AbstractLat})
```

---

## Invariants
Expand Down
4 changes: 4 additions & 0 deletions src/Deprecations.jl
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@

@deprecate automorphisms(x::LocalField, y::Union{FlintPadicField, FlintQadicField, LocalField}) automorphism_list(x, y)

# Deprecated during 0.18.*

@deprecate orthogonal_sum(x::T, y::T) where T <: Union{AbstractSpace, ZGenus, ZpGenus, HermGenus, HermLocalGenus, QuadGenus, QuadLocalGenus, JorDec, LocalQuadSpaceCls, QuadSpaceCls} direct_sum(x, y)

# Things that moved to Nemo

# > 0.18.1
Expand Down
Loading