We present a formalization of convex polyhedra in the proof assistant Coq. The cornerstone of our work is a complete implementation of the simplex method, together with the proof of its correctness and termination. This allows us to define the basic predicates over polyhedra in an effective way (i.e. as programs), and relate them with the corresponding usual logical counterparts. To this end, we make an extensive use of the Boolean reflection methodology. The benefit of this approach is that we can easily derive the proof of several fundamental results on polyhedra, such as Farkas' Lemma, the duality theorem of linear programming, and Minkowski's Theorem.of the effective nature of our approach is demonstrated by the fact that we easily arrive at the proof of fundamental results on polyhedra, such as several versions of Farkas' Lemma, the duality theorem of linear programming, separation from convex hulls, Minkowski's Theorem, etc.Our effective approach is made possible by implementing the simplex method inside Coq, and proving its correctness and termination. Recall that the simplex method is the first algorithm introduced to solve linear programming [10]. Two difficulties need to be overcome to formalize it. On the one hand, we need to deal with its termination. More precisely, the simplex method iterates over the so-called bases. Its termination depends on the specification of a pivoting rule, whose aim is to determine, at each iteration, the next basis. In this work, we have focused on proving that the lexicographic rule [11] ensures termination. On the other hand, the simplex method is actually composed of two parts. The part previously described, called Phase II, requires an initial basis to start with. Finding such a basis is the purpose of Phase I. It consists in building an extended problem (having a trivial initial basis), and applying to it the Phase II algorithm. Both phases need to be formalized to obtain a fully functional algorithm.We point out that our goal here is not to obtain a practically efficient implementation of the simplex method (e.g., via the code extraction facility of Coq). Rather, we use the simplex method as a tool in our proofs and, in fact, it turns out to be the cornerstone of our approach, given the intuitionistic nature of the logic in Coq. Thus, we adopt the opposite approach of most textbooks on linear programming where, firstly, theoretical results (like the ones mentioned above) are proven, and then the correctness of the simplex method is derived from them.The formalization presented in this paper can be found in a library developed by the authors called Coq-Polyhedra. This library is available through a git repository at https://github.com/nhojem/Coq-Polyhedra. The branch JAR provides the frozen version of the library corresponding to the results presented in this paper. 1 As mentioned above, our formalization is based on the Mathematical Components library [14] (MathComp for short), which is available at https://github.com/math-comp/math-comp. On top of providing a conven...