The purpose of this paper is the formal verification of a counterexample of Santos et al. to the so-called Hirsch Conjecture on the diameter of polytopes (bounded convex polyhedra). In contrast with the pen-and-paper proof, our approach is entirely computational: we implement in Coq and prove correct an algorithm that explicitly computes, within the proof assistant, vertex-edge graphs of polytopes as well as their diameter. The originality of this certificate-based algorithm is to achieve a tradeoff between simplicity and efficiency. Simplicity is crucial in obtaining the proof of correctness of the algorithm. This proof splits into the correctness of an abstract algorithm stated over proof-oriented data types and the correspondence with a low-level implementation over computation-oriented data types. A special effort has been made to reduce the algorithm to a small sequence of elementary operations (e.g., matrix multiplications, basic routines on sets and graphs), in order to make the derivation of the correctness of the low-level implementation more transparent. Efficiency allows us to scale up to polytopes with a challenging combinatorics. For instance, we formally check the two counterexamples of Matschke, Santos and Weibel to the Hirsch conjecture, respectively 20- and 23-dimensional polytopes with 36 425 and 73 224 vertices involving rational coefficients with up to 40 digits in their numerator and denominator. We also illustrate the performance of the method by computing the list of vertices or the diameter of well-known classes of polytopes, such as (polars of) cyclic polytopes involved in McMullen's Upper Bound Theorem.
翻译:本文的目的是正式验证桑托斯等人的对应示例, 以所谓 Hirsch Musch 的直径直径( 嵌入的 convex 聚Hedra ) 的直径为 Hirsch 的猜想。 与笔纸证据相反, 我们的方法完全是计算性的: 我们在 Coq 中执行一个算法, 并证明它是正确的, 在校对助理内部明确计算, 顶端多端图及其直径的算法。 这个基于证书的算法的原始性能是为了实现简单与效率的权衡。 简化对于获得算法正确性的证据至关重要。 这个证据分为一个抽象算法的正确性能, 该算法在以证据为导向的数据类型和以计算的数据类型上显示数据类型。 我们特别努力将算法简化成一个小的初级操作序列( 例如, 矩阵倍增殖、 设置和图表的基本程序), 使低层次执行的直径直径直到更透明。 效率使我们能够把一个抽象的抽象算法升级到多端的直径, 。