module type S = sig .. end
module Env: Env.S
module C: module type of Env.C
type decl
val pp_decl : decl CCFormat.printer
type declare_result =
val declare_ty : proof:ProofStep.of_ ->
ty_id:Libzipperposition.ID.t ->
ty_vars:Libzipperposition.Type.t Libzipperposition.HVar.t list ->
var:Libzipperposition.Type.t Libzipperposition.HVar.t ->
EnumTypes.term list -> declare_result
Declare that the domain of the type ty_id is restricted to
given list of cases, in the form forall var. Or_{c in cases} var = c.
The type of var must be ty_id ty_vars.
Will be ignored if the type already has a enum declaration, and the old
declaration will be returned instead.
Raises Error if some of the preconditions is not filled
Returns either the new declaration, or the already existing one for
this type if any
val instantiate_vars : Env.multi_simpl_rule
Instantiate variables whose type is a known enumerated type,
with all cases of this type.
Registration
val setup : unit -> unit
Register rules in the environment