sig
  type version = int
  type relop = [ `Eq | `Geq | `Gt | `Leq | `Lt | `Neq ]
  type constr = (Cudf_types.relop * Cudf_types.version) option
  type pkgname = string
  type vpkg = Cudf_types.pkgname * Cudf_types.constr
  type vpkglist = Cudf_types.vpkg list
  type enum_keep =
      [ `Keep_feature | `Keep_none | `Keep_package | `Keep_version ]
  type vpkgformula = Cudf_types.vpkg list list
  type veqpkg = Cudf_types.pkgname * ([ `Eq ] * Cudf_types.version) option
  type veqpkglist = Cudf_types.veqpkg list
  type typ =
      [ `Bool
      | `Enum of string list
      | `Ident
      | `Int
      | `Nat
      | `Pkgname
      | `Posint
      | `String
      | `Typedecl
      | `Veqpkg
      | `Veqpkglist
      | `Vpkg
      | `Vpkgformula
      | `Vpkglist ]
  val keep_type : Cudf_types.typ
  val keep_enums : string list
  type typedecl1 =
      [ `Bool of bool option
      | `Enum of string list * string option
      | `Ident of string option
      | `Int of int option
      | `Nat of int option
      | `Pkgname of string option
      | `Posint of int option
      | `String of string option
      | `Typedecl of Cudf_types.typedecl option
      | `Veqpkg of Cudf_types.veqpkg option
      | `Veqpkglist of Cudf_types.veqpkglist option
      | `Vpkg of Cudf_types.vpkg option
      | `Vpkgformula of Cudf_types.vpkgformula option
      | `Vpkglist of Cudf_types.vpkglist option ]
  and typedecl = (string * Cudf_types.typedecl1) list
  type typed_value =
      [ `Bool of bool
      | `Enum of string list * string
      | `Ident of string
      | `Int of int
      | `Nat of int
      | `Pkgname of string
      | `Posint of int
      | `String of string
      | `Typedecl of Cudf_types.typedecl
      | `Veqpkg of Cudf_types.veqpkg
      | `Veqpkglist of Cudf_types.veqpkglist
      | `Vpkg of Cudf_types.vpkg
      | `Vpkgformula of Cudf_types.vpkgformula
      | `Vpkglist of Cudf_types.vpkglist ]
  val type_of_typedecl : Cudf_types.typedecl1 -> Cudf_types.typ
  val typedecl_of_value : Cudf_types.typed_value -> Cudf_types.typedecl1
  val value_of_typedecl :
    Cudf_types.typedecl1 -> Cudf_types.typed_value option
  val typedecl_of_type : Cudf_types.typ -> Cudf_types.typedecl1
  val type_of_value : Cudf_types.typed_value -> Cudf_types.typ
  val cast :
    Cudf_types.typ -> Cudf_types.typed_value -> Cudf_types.typed_value
  type 'ty stanza = (string * 'ty) list
  type loc = Lexing.position * Lexing.position
  val dummy_loc : Cudf_types.loc
  val extend_loc : Cudf_types.loc -> Cudf_types.loc -> Cudf_types.loc
  val loc_of_lexbuf : Lexing.lexbuf -> Cudf_types.loc
  exception Parse_error_822 of string * Cudf_types.loc
  exception Syntax_error of string * Cudf_types.loc
  exception Type_error of Cudf_types.typ * Cudf_types.typed_value *
              Cudf_types.loc
  val is_eq_formula : Cudf_types.vpkgformula -> bool
end