Exterior Shifting
Uniform Hypergraphs
uniform_hypergraph
— Function uniform_hypergraph(faces::Vector{Vector{Int}}, n::Int, k::Int)
uniform_hypergraph(faces::Vector{Vector{Int}}, n::Int)
uniform_hypergraph(faces::Vector{Vector{Int}})
uniform_hypergraph(K::SimplicialComplex, k::Int)
Create a uniform hypergraph using faces
, the size of each face should be k
and all faces should be subsets of $[n]$. One can also create a UniformHypergraph
for the k
faces of a SimplicialComplex
K
.
#Examples
julia> U = uniform_hypergraph([[1, 2], [2, 3]], 4)
UniformHypergraph(4, 2, [[1, 2], [2, 3]])
julia> U = uniform_hypergraph([[1, 2], [2, 3]])
UniformHypergraph(3, 2, [[1, 2], [2, 3]])
julia> U = uniform_hypergraph(simplicial_complex([[1 ,2, 3], [1, 3, 4]]), 2)
UniformHypergraph(4, 2, [[1, 2], [1, 3], [1, 4], [2, 3], [3, 4]])
julia> face_size(U)
2
julia> faces(U)
5-element Vector{Vector{Int64}}:
[1, 2]
[1, 3]
[1, 4]
[2, 3]
[3, 4]
This function is part of the experimental code in Oscar. Please read here for more details.
Matrix Constructions
generic_unipotent_matrix
— Functiongeneric_unipotent_matrix(R::MPolyRing)
generic_unipotent_matrix(F::Field, n::Int)
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 multivariate polynomial ring over F
with n^2
variables.
Examples
julia> R, x = polynomial_ring(QQ, :x=> (1:2, 1:2))
(Multivariate polynomial ring in 4 variables over QQ, QQMPolyRingElem[x[1, 1] x[1, 2]; x[2, 1] x[2, 2]])
julia> generic_unipotent_matrix(R)
[1 x[1, 2]]
[0 1]
julia> generic_unipotent_matrix(GF(2), 2)
[1 x[1, 2]]
[0 1]
This function is part of the experimental code in Oscar. Please read here for more details.
rothe_matrix
— Functionrothe_matrix(F::Field, w::WeylGroupElem)
rothe_matrix(F::Field, p::PermGroupElem)
rothe_matrix(R::MPolyRing, w::WeylGroupElem)
rothe_matrix(R::MPolyRing, p::PermGroupElem)
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. 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
. There is also the possibility to pass the underlying polynomial ring R
instead. 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, see [Knu98].
Examples
julia> W = weyl_group(:A, 4)
Weyl group
of root system of rank 4
of type A4
julia> s = gens(W)
4-element Vector{WeylGroupElem}:
s1
s2
s3
s4
julia> w = s[2] * s[3] * s[4]
s2 * s3 * s4
julia> rothe_matrix(GF(2), w)
[1 0 0 0 0]
[0 x[2, 3] x[2, 4] x[2, 5] 1]
[0 1 0 0 0]
[0 0 1 0 0]
[0 0 0 1 0]
julia> rothe_matrix(QQ, perm([2, 3, 1]))
[x[1, 3] 1 0]
[x[2, 3] 0 1]
[ 1 0 0]
julia> Fx, x = polynomial_ring(GF(2), :x => (1:5, 1:5))
(Multivariate polynomial ring in 25 variables over GF(2), FqMPolyRingElem[x[1, 1] x[1, 2] … x[1, 4] x[1, 5]; x[2, 1] x[2, 2] … x[2, 4] x[2, 5]; … ; x[4, 1] x[4, 2] … x[4, 4] x[4, 5]; x[5, 1] x[5, 2] … x[5, 4] x[5, 5]])
julia> rothe_matrix(Fx, w)
[1 0 0 0 0]
[0 x[2, 3] x[2, 4] x[2, 5] 1]
[0 1 0 0 0]
[0 0 1 0 0]
[0 0 0 1 0]
julia> rothe_matrix(Fx, perm([1, 3, 2, 5, 4]))
[1 0 0 0 0]
[0 x[2, 3] 1 0 0]
[0 1 0 0 0]
[0 0 0 x[4, 5] 1]
[0 0 0 1 0]
This function is part of the experimental code in Oscar. Please read here for more details.
compound_matrix
— Functioncompound_matrix(m::MatElem, k::Int)
compound_matrix(p::PermGroupElem, k::Int)
compound_matrix(w::WeylGroupElem, k::Int)
compound_matrix(m::MatElem, K::UniformHypergraph)
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 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
.
Examples
julia> M = generic_unipotent_matrix(QQ, 3)
[1 x[1, 2] x[1, 3]]
[0 1 x[2, 3]]
[0 0 1]
julia> compound_matrix(M, 2)
[1 x[2, 3] x[1, 2]*x[2, 3] - x[1, 3]]
[0 1 x[1, 2]]
[0 0 1]
julia> compound_matrix(perm([1, 3, 2]), 2)
[0 1 0]
[1 0 0]
[0 0 -1]
julia> W = weyl_group(:A, 2)
Weyl group
of root system of rank 2
of type A2
julia> compound_matrix(longest_element(W), 2)
[ 0 0 -1]
[ 0 -1 0]
[-1 0 0]
julia> K = uniform_hypergraph([[1, 2], [2, 3]])
UniformHypergraph(3, 2, [[1, 2], [2, 3]])
julia> compound_matrix(M, K)
[1 x[2, 3] x[1, 2]*x[2, 3] - x[1, 3]]
[0 0 1]
This function is part of the experimental code in Oscar. Please read here for more details.
Exterior (Partial) Shifting
exterior_shift
— Functionexterior_shift(F::Field, K::SimplicialComplex, w::WeylGroupElem)
exterior_shift(F::Field, K::UniformHypergraph, w::WeylGroupElem)
exterior_shift(K::SimplicialComplex, w::WeylGroupElem)
exterior_shift(K::UniformHypergraph, w::WeylGroupElem)
exterior_shift(K::SimplicialComplex)
exterior_shift(K::UniformHypergraph)
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
Examples
julia> K = real_projective_plane()
Abstract simplicial complex of dimension 2 on 6 vertices
julia> is_shifted(K)
false
julia> L = exterior_shift(K)
Abstract simplicial complex of dimension 2 on 6 vertices
julia> facets(L)
10-element Vector{Set{Int64}}:
Set([2, 3, 1])
Set([4, 2, 1])
Set([5, 2, 1])
Set([6, 2, 1])
Set([4, 3, 1])
Set([5, 3, 1])
Set([6, 3, 1])
Set([5, 4, 1])
Set([4, 6, 1])
Set([5, 6, 1])
julia> is_shifted(L)
true
julia> betti_numbers(L) == betti_numbers(K)
true
julia> W = weyl_group(:A, n_vertices(K) - 1)
Weyl group
of root system of rank 5
of type A5
julia> s = gens(W)
5-element Vector{WeylGroupElem}:
s1
s2
s3
s4
s5
julia> w = s[2] * s[3] * s[4]
s2 * s3 * s4
julia> L = exterior_shift(GF(2), K, w)
Abstract simplicial complex of dimension 2 on 6 vertices
This function is part of the experimental code in Oscar. Please read here for more details.