12345678910111213141516171819202122232425262728293031323334353637383940(************************************************************************)(* * The Rocq Prover / The Rocq Development Team *)(* v * Copyright INRIA, CNRS and contributors *)(* <O___,, * (see version control and CREDITS file for authors & dates) *)(* \VV/ **************************************************************)(* // * This file is distributed under the terms of the *)(* * GNU Lesser General Public License Version 2.1 *)(* * (see LICENSE file for the text of the license) *)(************************************************************************)typet={univ_poly:bool;collapse_sort_variables:bool;cumulative:bool;}letmake~univ_poly~collapse_sort_variables~cumulative=ifcumulative&¬univ_polythenCErrors.user_errPp.(str"Cannot have cumulative but not universe polymorphic constructions");ifnotcollapse_sort_variables&¬univ_polythenCErrors.user_errPp.(str"Sort metavariables must be collapsed to Type in universe monomorphic constructions");{collapse_sort_variables;univ_poly;cumulative}letdefault={collapse_sort_variables=true;univ_poly=false;cumulative=false}letof_univ_polyb={defaultwithuniv_poly=b}letcollapse_sort_variablesx=x.collapse_sort_variablesletuniv_polyx=x.univ_polyletcumulativex=x.cumulativeletprf=letopenPpinstr"{ univ_poly = "++boolf.univ_poly++spc()++str"; cumulative = "++boolf.cumulative++spc()++str"; collapse_sort_variables = "++boolf.collapse_sort_variables++spc()++str"}"(* Used to have distinguished default behaviors when treating assumptions/axioms, definitions or inductives *)typeconstruction_kind=Assumption|Definition|Inductive