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)Construct 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)Compute 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 verticesThis function is part of the experimental code in Oscar. Please read here for more details.