diff options
Diffstat (limited to 'library/impargs.mli')
-rw-r--r-- | library/impargs.mli | 57 |
1 files changed, 31 insertions, 26 deletions
diff --git a/library/impargs.mli b/library/impargs.mli index c1f119e6..0b0ae544 100644 --- a/library/impargs.mli +++ b/library/impargs.mli @@ -1,12 +1,12 @@ (************************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) -(* <O___,, * CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud *) +(* <O___,, * INRIA - CNRS - LIX - LRI - PPS - Copyright 1999-2010 *) (* \VV/ **************************************************************) (* // * This file is distributed under the terms of the *) (* * GNU Lesser General Public License Version 2.1 *) (************************************************************************) -(*i $Id: impargs.mli 12187 2009-06-13 19:36:59Z msozeau $ i*) +(*i $Id: impargs.mli 13499 2010-10-05 10:08:44Z herbelin $ i*) (*i*) open Names @@ -16,7 +16,7 @@ open Environ open Nametab (*i*) -(*s Implicit arguments. Here we store the implicit arguments. Notice that we +(*s Implicit arguments. Here we store the implicit arguments. Notice that we are outside the kernel, which knows nothing about implicit arguments. *) val make_implicit_args : bool -> unit @@ -50,26 +50,31 @@ type implicit_explanation = | DepFlexAndRigid of (*flex*) argument_position * (*rig*) argument_position | Manual -type implicit_status = (identifier * implicit_explanation * bool) option -type implicits_list = implicit_status list +type implicit_status = (identifier * implicit_explanation * (bool * bool)) option + +type implicit_side_condition + +type implicits_list = implicit_side_condition * implicit_status list val is_status_implicit : implicit_status -> bool val is_inferable_implicit : bool -> int -> implicit_status -> bool val name_of_implicit : implicit_status -> identifier val maximal_insertion_of : implicit_status -> bool +val force_inference_of : implicit_status -> bool val positions_of_implicits : implicits_list -> int list (* Computation of the positions of arguments automatically inferable for an object of the given type in the given env *) -val compute_implicits : env -> types -> implicits_list +val compute_implicits : env -> types -> implicits_list list (* A [manual_explicitation] is a tuple of a positional or named explicitation with - maximal insertion and forcing flags. *) -type manual_explicitation = Topconstr.explicitation * (bool * bool) + maximal insertion, force inference and force usage flags. Forcing usage makes + the argument implicit even if the automatic inference considers it not inferable. *) +type manual_explicitation = Topconstr.explicitation * (bool * bool * bool) -val compute_implicits_with_manual : env -> types -> bool -> - manual_explicitation list -> implicits_list +val compute_implicits_with_manual : env -> types -> bool -> + manual_explicitation list -> implicit_status list (*s Computation of implicits (done using the global environment). *) @@ -86,38 +91,38 @@ val declare_implicits : bool -> global_reference -> unit Unsets implicits if [l] is empty. *) val declare_manual_implicits : bool -> global_reference -> ?enriching:bool -> - manual_explicitation list -> unit + manual_explicitation list list -> unit (* If the list is empty, do nothing, otherwise declare the implicits. *) val maybe_declare_manual_implicits : bool -> global_reference -> ?enriching:bool -> manual_explicitation list -> unit -val implicits_of_global : global_reference -> implicits_list +val implicits_of_global : global_reference -> implicits_list list + +val extract_impargs_data : + implicits_list list -> ((int * int) option * implicit_status list) list val lift_implicits : int -> manual_explicitation list -> manual_explicitation list val merge_impls : implicits_list -> implicits_list -> implicits_list +val make_implicits_list : implicit_status list -> implicits_list list + +val drop_first_implicits : int -> implicits_list -> implicits_list + +val select_impargs_size : int -> implicits_list list -> implicit_status list + +val select_stronger_impargs : implicits_list list -> implicit_status list + type implicit_interactive_request = | ImplAuto - | ImplManual of implicit_status list + | ImplManual of int type implicit_discharge_request = | ImplLocal | ImplConstant of constant * implicits_flags - | ImplMutualInductive of kernel_name * implicits_flags - | ImplInteractive of global_reference * implicits_flags * + | ImplMutualInductive of mutual_inductive * implicits_flags + | ImplInteractive of global_reference * implicits_flags * implicit_interactive_request -val discharge_implicits : 'a * - (implicit_discharge_request * - (Libnames.global_reference * - (Names.identifier * implicit_explanation * bool) option list) - list) -> - (implicit_discharge_request * - (Libnames.global_reference * - (Names.identifier * implicit_explanation * bool) option list) - list) - option - |