Skip to content
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
2 changes: 1 addition & 1 deletion docs/oscar_references.bib
Original file line number Diff line number Diff line change
Expand Up @@ -1842,7 +1842,7 @@ @Book{JT13
@Article{JZ00,
author = {Joswig, Michael and Ziegler, Günter M.},
title = {Neighborly Cubical Polytopes},
journal = {Discrete \& Computational Geometry },
journal = {Discrete \& Computational Geometry},
volume = {24},
pages = {325--344},
year = {2000},
Expand Down
38 changes: 29 additions & 9 deletions docs/src/PolyhedralGeometry/Polyhedra/auxiliary.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ DocTestSetup = Oscar.doctestsetup()

# Auxiliary functions

## Geometric data
## Basic geometric data

These are basic functions which depend on the vertex and facet coordinates.

```@docs
facets(as::Type{T}, P::Polyhedron{S}) where {S<:scalar_types,T<:Union{AffineHalfspace{S},AffineHyperplane{S},Pair{R,S} where R,Polyhedron{S}}}
Expand All @@ -30,18 +32,39 @@ relative_interior_point(P::Polyhedron{T}) where T<:scalar_types

## Combinatorial data

These are functions which only depend on the combinatorial type, i.e., the isomorphism type of the face poset.

```@docs
n_facets(P::Polyhedron)
n_vertices(P::Polyhedron)
is_simple(P::Polyhedron)
is_simplicial(P::Polyhedron)
is_neighborly(P::Polyhedron)
is_cubical(P::Polyhedron)
f_vector(P::Polyhedron)
facet_sizes(P::Polyhedron)
g_vector(P::Polyhedron)
h_vector(P::Polyhedron)
is_simple(P::Polyhedron)
facet_sizes(P::Polyhedron)
vertex_sizes(P::Polyhedron)
```

## Volume and triangulation related functions

While these functions are geometric, too, they play a special role. In particular, they can be costly.

```@docs
volume(P::Polyhedron{T}) where T<:scalar_types
normalized_volume(P::Polyhedron)
regular_triangulation
regular_triangulations
secondary_polytope
all_triangulations
```

## Groups

There are several groups naturally associated to a polytope or polyhedron.

```@docs
combinatorial_symmetries(P::Polyhedron)
linear_symmetries(P::Polyhedron)
Expand All @@ -52,6 +75,9 @@ automorphism_group_generators(IM::IncidenceMatrix)
```

## Lattice polytopes

Here a polytope is lattice if each vertex has integral coordinates.

```@docs
boundary_lattice_points(P::Polyhedron{QQFieldElem})
castelnuovo_excess(P::Polyhedron{QQFieldElem})
Expand All @@ -71,27 +97,21 @@ lattice_volume(P::Polyhedron{QQFieldElem})
## Other

```@docs
all_triangulations
Base.in(v::AbstractVector, P::Polyhedron)
Base.issubset(P::Polyhedron{T}, Q::Polyhedron{T}) where T<:scalar_types
demazure_character(lambda::AbstractVector, sigma::PermGroupElem)
is_archimedean_solid(P::Polyhedron)
is_johnson_solid(P::Polyhedron)
is_platonic_solid(P::Polyhedron)
normalized_volume(P::Polyhedron)
polarize(P::Polyhedron{T}) where T<:scalar_types
project_full(P::Polyhedron{T}) where T<:scalar_types
print_constraints(io::IO, A::AnyVecOrMat, b::AbstractVector; trivial::Bool = false, numbered::Bool = false, cmp = :lte)
print_constraints(io::IO, P::Polyhedron; trivial::Bool = false, numbered::Bool = false)
regular_triangulations
regular_triangulation
secondary_polytope
solve_ineq(as::Type{T}, A::ZZMatrix, b::ZZMatrix) where {T}
solve_mixed(as::Type{T}, A::ZZMatrix, b::ZZMatrix, C::ZZMatrix, d::ZZMatrix) where {T}
solve_mixed(as::Type{T}, A::ZZMatrix, b::ZZMatrix, C::ZZMatrix) where {T}
solve_non_negative(as::Type{T}, A::ZZMatrix, b::ZZMatrix) where {T}
support_function(P::Polyhedron{T}; convention::Symbol = :max) where T<:scalar_types
volume(P::Polyhedron{T}) where T<:scalar_types
```


40 changes: 38 additions & 2 deletions src/PolyhedralGeometry/Polyhedron/properties.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1330,7 +1330,7 @@ is_bounded(P::Polyhedron) = pm_object(P).BOUNDED::Bool
@doc raw"""
is_simple(P::Polyhedron)

Check whether `P` is simple.
Check whether `P` is simple, i.e., each vertex figure is a simplex.

# Examples
```jldoctest
Expand All @@ -1346,10 +1346,46 @@ is_simple(P::Polyhedron) = pm_object(P).SIMPLE::Bool
@doc raw"""
is_simplicial(P::Polyhedron)

Check whether `P` is simplicial.
Check whether `P` is simplicial, i.e., each proper face is a simplex.
"""
is_simplicial(P::Polyhedron) = pm_object(P).SIMPLICIAL::Bool

@doc raw"""
is_neighborly(P::Polyhedron)

Check whether `P` is neighborly, i.e., if the dimension is $d$, each $\lfloor d/2 \rfloor$-subset of the vertices forms a face.
Neighborly polytopes in even dimension are necessarily simplicial.

# Examples

A 4-polytope is neighborly if and only if the vertex-edge graph is complete.

```jldoctest
julia> is_neighborly(cyclic_polytope(4,8))
true
```
"""
is_neighborly(P::Polyhedron) = pm_object(P).NEIGHBORLY::Bool

@doc raw"""
is_cubical(P::Polyhedron)

Check whether `P` is cubical, i.e., each proper face is combinatorially equivalent to a cube.

# Examples

For details concerning the following construction see [JZ00](@cite).

```jldoctest
julia> Q = cube(2,-1,1); Q2 = cube(2,-2,2); P = convex_hull(product(Q,Q2), product(Q2,Q))
Polyhedron in ambient dimension 4

julia> is_cubical(P)
true
```
"""
is_cubical(P::Polyhedron) = pm_object(P).CUBICAL::Bool

@doc raw"""
is_fulldimensional(P::Polyhedron)

Expand Down
2 changes: 2 additions & 0 deletions src/exports.jl
Original file line number Diff line number Diff line change
Expand Up @@ -905,6 +905,7 @@ export is_conjugate_with_data
export is_connected
export is_coroot
export is_coroot_with_index
export is_cubical
export is_cyclic, has_is_cyclic, set_is_cyclic
export is_degenerate
export is_dense
Expand Down Expand Up @@ -983,6 +984,7 @@ export is_negative_coroot
export is_negative_coroot_with_index
export is_negative_root
export is_negative_root_with_index
export is_neighborly
export is_nilpotent, has_is_nilpotent, set_is_nilpotent
export is_noetherian
export is_non_zero_divisor
Expand Down
Loading