Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/adv/algebraic-shifting' into adv…
Browse files Browse the repository at this point in the history
…/algebraic-shifting
  • Loading branch information
antonydellavecchia committed Oct 31, 2024
2 parents 405a195 + c63d5ea commit 1f9a2c5
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 20 deletions.
9 changes: 4 additions & 5 deletions experimental/AlgebraicShifting/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,11 @@

## Aims

This is an example for a file structure to set up a new package
in the experimental section. All files you find here are part of the
minimum requirements. See also the official Oscar documentation.
This package grew out of a project of Antony della Vecchia, Michael Joswig and Fabian Lenzen on "Partial Algebraic Shifting".
Part of this project is the development of new methods for algebraic shifting; these are implemented here.

## Status

We plan to also provide a function to automatically copy this template
for you to start your own package.
Full and partial shifting in the exterior algebra fully functional.


Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ DocTestSetup = Oscar.doctestsetup()
uniform_hypergraph
```

## Helpful Matrix constructions
## Matrix Constructions

```@docs
generic_unipotent_matrix
Expand Down
7 changes: 6 additions & 1 deletion experimental/AlgebraicShifting/docs/src/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ DocTestSetup = Oscar.doctestsetup()

# Introduction

This project aims to provide functionality for Algebraic Shifting, for some background on the subject we refer to [KAL02](@cite).
Algebraic shifting is a widely applicable method for converting a uniform hypergraph $S$ into another hypergraph, $\Delta(S)$, which is somehow simpler but still retains key properties of $S$.
Often this is applied to simplicial complexes, where each layer of $(k-1)$-faces forms a $k$-uniform hypergraph.

Here we focus on full and partial algebraic shifting in the exterior algebra.
For some background on the subject we refer to [KAL02](@cite).


## Status
Expand All @@ -17,6 +21,7 @@ This part of OSCAR is in an experimental state; please see [Adding new projects

Please direct questions about this part of OSCAR to the following people:
* [Antony Della Vecchia](https://antonydellavecchia.github.io)
* [Michael Joswig](https://page.math.tu-berlin.de/~joswig/)


You can ask questions in the [OSCAR Slack](https://www.oscar-system.org/community/#slack).
Expand Down
25 changes: 12 additions & 13 deletions experimental/AlgebraicShifting/src/PartialShift.jl
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ end
Constructs a unipotent matrix with entries in a polynomial ring `R`.
One can also provide a field `F` and an integer `n`,
then the entries of the unipotent matrix will lie in a multi variate
then the entries of the unipotent matrix will lie in a multivariate
polynomial ring over `F` with `n^2` variables.
# Examples
Expand All @@ -58,17 +58,17 @@ end
@doc raw"""
rothe_matrix(F::Field, w::WeylGroupElem; K::Union{SimplicialComplex, Nothing} = nothing)
For a base field `F` and a weyl group element `w` return the matrix with entries in the
For a base field `F` and a Weyl group element `w` return the matrix with entries in the
multivariate polynomial ring `R` with `n^2` many indeterminants where `n - 1` is the rank of the
root system of the weyl group.
We know that since `general_linear_group(n^2, R)` has a Bruhat decomposition, any element lies in some double coset $BwB$.
root system of the Weyl group.
As `general_linear_group(n^2, R)` has a Bruhat decomposition, any element lies in a unique double coset $BwB$, where $B$ is the Borel group of upper triangular matrices.
The Rothe matrix is a normal form for the matrix on the left of a representative for the double coset corresponding to `w`.
(this might need to be explained further and reference the preprint)
We use the name Rothe matrix because of its resemblance with a Rothe diagram. (add ref?)
This will be explained further once the corresponding preprint is on the arXiv.
We use the name Rothe matrix because of its resemblance with a Rothe diagram. (add ref? Knuth?)
# Examples
```jldoctest
julia> W = weyl_group(:A, 4)
julia> W = weyl_group(:A, 4)
Weyl group for root system defined by Cartan matrix [2 -1 0 0; -1 2 -1 0; 0 -1 2 -1; 0 0 -1 2]
julia> s = gens(W)
Expand Down Expand Up @@ -105,12 +105,11 @@ end
compound_matrix(w::WeylGroupElem, k::Int)
compound_matrix(m::MatElem, K::Vector{Vector{Int}})
Given a matrix `m` return the matrix where each entry is a `k` minor of `m`.
Given a matrix `m`, return the matrix where each entry is a `k`$\times$`k`-minor of `m`.
The entries of the compound matrix are ordered with respect to the lexicographic order on sets.
When passed a `PermGroupElem` or `WeylGroupElem`, return the copound matrix for their
permutation matrix representation.
When passed a `PermGroupElem` or `WeylGroupElem`, return the compound matrix for their permutation matrix representation.
Alternatively, passing a `UniformHypergraph` `K` will return the compound matrix with entries the `face_size(K)` minors, and restrict the rows to the rows corresponding to `K`
Alternatively, passing a `UniformHypergraph` `K` will return the compound matrix with entries the `face_size(K)` minors, and restrict the rows to the rows corresponding to `K`.
# Examples
```jldoctest
Expand Down Expand Up @@ -219,7 +218,7 @@ end
Computes the (partial) exterior shift of a simplical complex or uniform hypergraph `K` with respect to the Weyl group element `w` and the field `F`.
If the field is not given then `QQ` is used during the computation.
If `w` is not given then `longest_element(weyl_group(:A, n_vertices(K) - 1))` is used
If `w` is not given then `longest_element(Weyl_group(:A, n_vertices(K) - 1))` is used
# Examples
```jldoctest
Expand Down Expand Up @@ -248,7 +247,7 @@ true
julia> betti_numbers(L) == betti_numbers(K)
true
julia> W = weyl_group(:A, n_vertices(K) - 1)
julia> W = Weyl_group(:A, n_vertices(K) - 1)
Weyl group for root system defined by Cartan matrix [2 -1 0 0 0; -1 2 -1 0 0; 0 -1 2 -1 0; 0 0 -1 2 -1; 0 0 0 -1 2]
julia> s = gens(W)
Expand Down

0 comments on commit 1f9a2c5

Please sign in to comment.