Skip to content

Commit

Permalink
Adv/algebraic shifting (#4260)
Browse files Browse the repository at this point in the history
* init algebraic shifting

* copied from template

* copied from template

* concrete function

* fix for creating simplicial cmplex from from graph incidence matrix

* use sparse matrices

* computes correct result for octohedron

* fixed function use

* started on delta_sym

* some progress on delta sym

* ext and sym shifting work, return algebras still neds work

* updtes to delta_sym

* added field for sym shift

* fixed apply on facets

* delta_sym bug fixed

* added fix for delta_sym with finite fields

* Revert "added fix for delta_sym with finite fields"

This reverts commit 398d1f9.

* name changes

* optional change_of_basis

* fix regression

* added some comments

* cond fix

* adds comments

* starting tests

* oscar updates

* fixes change of basis matrix

* fix for exterior shift

* update for n_vertices

* needed for serialization of results

* fixes loading polymake simplicial complex and other types

* adds test case

* removing unnecessary else

* fix test

* allow change of basis to be generic + comment about sort

* adds some functions for simplicial complexes from polymake

* get rid of monomial sort

* cleans up symmetric shift a bit

* adds gb details to stanley reisner ideal

* symmetric shift working over finite characteristic

* set description on john solid files

* Revert "set description on john solid files"

This reverts commit df8279e.

* updates for symmetric shift

* adds functionality for automorphisms of simplicial complexes

* adds docs + missing docs for the other recently added functions

* adjustments to the docs

* adds n_facets + uses combinatorial symmetries from polymake

* acts on_simplicial_complex

* fixes for docstrings

* warning

* fixes require check

* add missing vertices

* simplicial product

* added link_subcomplex

* reduce over quotients

* barycentric sub div

* json -> JSON3.write

* Update src/Serialization/main.jl

* fixes upgrade scripts

* Update src/Serialization/main.jl

but, s.obj should always be from JSON3, at least until we change something

Co-authored-by: Benjamin Lorenz <[email protected]>

* use io instead of string

* typo

* fix arguments to deserializer_open

* remove white space

* no need for key when serializing weyl group

* root system uses ref

* unifiying the exterior shift function

* things are starting to work

* partial shift graph

* tests passing

* still need partial graph vertices to work properly

* tests passing and correct for partial shift graph

* comparing speed with old code

* still trying to not count things twice

* started docs

* more docs

* working as it should now

* progress on docs

* adds is_shifted

* docs almost done

* added progress meter + finished docs

* algebraic shifting: doc additions/fixes

* Update docs/oscar_references.bib

Co-authored-by: Max Horn <[email protected]>

* bibtool formatting

* removed tabs

* added some docs to simplicial complex functions

* Update experimental/LieAlgebras/src/serialization.jl

Co-authored-by: Lars Göttgens <[email protected]>

* Apply suggestions from code review

Co-authored-by: Lars Göttgens <[email protected]>

* create isomorphisms between weyl group and perm group

* missing line from docs

* fixes to bib refs

* removes the use of perm for weyl group elements

* fixed to docs

* speed up from using transpose

* using transpose isn't quite right

* creates isomorphism only once when finding vertices + constructing graph

* fixes some regressions

* fix for empty grpah

* suppres progress bar in doc strings

* fixes for merge

* remove permutation matrix function

* suppress progress bar in docs

* fix _set_to_zero

* fixes white space

* fixes for parallel and oscar tests

* docs for kwargs

* typo

* shifting docs: ref to arXiv:2410.24044 added

* bibtool on references

* Apply suggestions from code review

Co-authored-by: Lars Göttgens <[email protected]>

* fixes for doctests

* fix doctest

* untabify`

* moved symmetric shift

* avoid caching polynomial rings

* option to pass polynomial ring

* fix compound matrix signature

* cleanup white space

* adds reference for rother diagram

* minor adjustments

* fixes regression in symmetric shifting and adds test

* adds catch for partial shift graph

* added ref to preprint in function docs

* Update experimental/AlgebraicShifting/src/PartialShiftGraph.jl

Co-authored-by: Lars Göttgens <[email protected]>

* fixes doctest + only uses @showprogress

* fix regression in test

* adds uniform hypergraphs as input to partial_shift_graph_vertices

* fix test

* Update experimental/AlgebraicShifting/src/PartialShift.jl

Co-authored-by: Max Horn <[email protected]>

---------

Co-authored-by: Benjamin Lorenz <[email protected]>
Co-authored-by: Michael Joswig <[email protected]>
Co-authored-by: Max Horn <[email protected]>
Co-authored-by: Lars Göttgens <[email protected]>
  • Loading branch information
5 people authored Dec 3, 2024
1 parent 7526b4f commit 18af71a
Show file tree
Hide file tree
Showing 17 changed files with 1,093 additions and 2 deletions.
2 changes: 2 additions & 0 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ Markdown = "d6f4376e-aef5-505a-96c1-9c027394607a"
Nemo = "2edaba10-b0f1-5616-af89-8c11ac63239a"
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
Polymake = "d720cf60-89b5-51f5-aff5-213f193123e7"
ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca"
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
RandomExtensions = "fb686558-2515-59ef-acaa-46db3789a887"
Serialization = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
Expand All @@ -37,6 +38,7 @@ Markdown = "1.6"
Nemo = "0.47.1"
Pkg = "1.6"
Polymake = "0.11.20"
ProgressMeter = "1.10.2"
Random = "1.6"
RandomExtensions = "0.4.3"
Serialization = "1.6"
Expand Down
38 changes: 38 additions & 0 deletions docs/oscar_references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -683,6 +683,14 @@ @Book{Cut04
doi = {10.1090/gsm/063}
}

@Article{D-VJL24,
author = {Della Vecchia, Antony and Joswig, Michael and Lenzen, Fabian},
title = {Partial Algebraic Shifting},
year = {2024},
eprint = {2410.24044},
archiveprefix = {arXiv}
}

@InCollection{DE02,
author = {Decker, Wolfram and Eisenbud, David},
title = {Sheaf algorithms using the exterior algebra},
Expand Down Expand Up @@ -1736,6 +1744,24 @@ @Article{Kah10
doi = {10.1007/s10463-010-0290-9}
}

@InProceedings{Kal02,
author = {Kalai, Gil},
title = {Algebraic shifting},
editor = {Hibi, Takayuki},
booktitle = {Computational commutative algebra and combinatorics},
series = {Advanced Studies in Pure Mathematics},
number = {33},
publisher = {Mathematical Society of Japan},
pages = {121--163},
year = {2002},
doi = {10.2969/aspm/03310121},
venue = {Osaka},
eventdate = {1999},
shortseries = {Adv. Stud. Pure Math.},
shortpublisher= {Math. Soc. Japan},
location = {Tokyo}
}

@Article{Kem02,
author = {Kemper, Gregor},
title = {The calculation of radical ideals in positive characteristic},
Expand Down Expand Up @@ -1789,6 +1815,18 @@ @Book{Knu11
year = {2011}
}

@Book{Knu98,
author = {Knuth, Donald Ervin},
title = {Sorting and searching},
volume = {3},
publisher = {Addison-Wesley},
edition = {2},
year = {1998},
maintitle = {The Art of Computer Programming},
location = {Boston},
langid = {english}
}

@Book{Kol13,
author = {Kollár, János},
title = {Singularities of the minimal model program},
Expand Down
10 changes: 10 additions & 0 deletions experimental/AlgebraicShifting/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Algebraic Shifting

## Aims

This package grew out of an ongoing project of Antony Della Vecchia, Michael Joswig and Fabian Lenzen on [Partial Algebraic Shifting](https://arxiv.org/abs/2410.24044).
Part of this project is the development of new methods for algebraic shifting; these are implemented here.

## Status

Full and partial shifting in the exterior algebra fully functional.
7 changes: 7 additions & 0 deletions experimental/AlgebraicShifting/docs/doc.main
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
[
"Algebraic Shifting" => [
"introduction.md",
"exterior_shifting.md",
"partial_shift_graph.md"
]
]
24 changes: 24 additions & 0 deletions experimental/AlgebraicShifting/docs/src/exterior_shifting.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
```@meta
CurrentModule = Oscar
DocTestSetup = Oscar.doctestsetup()
```

# Exterior Shifting

## Uniform Hypergraphs
```@docs
uniform_hypergraph
```

## Matrix Constructions

```@docs
generic_unipotent_matrix
rothe_matrix
compound_matrix
```

## Exterior (Partial) Shifting
```@docs
exterior_shift
```
29 changes: 29 additions & 0 deletions experimental/AlgebraicShifting/docs/src/introduction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
```@meta
CurrentModule = Oscar
DocTestSetup = Oscar.doctestsetup()
```


# Introduction

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 general background on the subject we refer to [Kal02](@cite); for details concerning the implementation see [D-VJL24](@cite).


## Status

This part of OSCAR is in an experimental state; please see [Adding new projects to experimental](@ref) for what this means.

## Contact

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).

Alternatively, you can [raise an issue on github](https://www.oscar-system.org/community/#how-to-report-issues).
12 changes: 12 additions & 0 deletions experimental/AlgebraicShifting/docs/src/partial_shift_graph.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
```@meta
CurrentModule = Oscar
DocTestSetup = Oscar.doctestsetup()
```

# Partial Shift Graph

```@docs
partial_shift_graph_vertices
partial_shift_graph
contracted_partial_shift_graph
```
29 changes: 29 additions & 0 deletions experimental/AlgebraicShifting/src/AlgebraicShifting.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
include("UniformHypergraph.jl")
include("PartialShift.jl")
include("PartialShiftGraph.jl")

export UniformHypergraph

export compound_matrix
export contracted_partial_shift_graph
export exterior_shift
export face_size
export generic_unipotent_matrix
export partial_shift_graph
export partial_shift_graph_vertices
export rothe_matrix
export uniform_hypergraph

function independent_columns(A::MatElem)
col_indices = Int[]
row_index = 1
row_bound = nrows(A)
for col_index in 1:ncols(A)
if !is_zero(A[row_index, col_index])
push!(col_indices, col_index)
row_index += 1
end
row_index > row_bound && break
end
return col_indices
end
Loading

0 comments on commit 18af71a

Please sign in to comment.