diff options
author | 2012-03-14 09:52:25 +0000 | |
---|---|---|
committer | 2012-03-14 09:52:25 +0000 | |
commit | 1b3efc6dc25be1bfde5fb7d2d39cc5c35e44a4d8 (patch) | |
tree | 3f22240472bd260847f4b5b26581cfdfbc3e071a /pretyping/coercion.mli | |
parent | 1674ab8bc0b76a1162928d0d9097c6a97486205d (diff) |
Second step of integration of Program:
- Remove useless functorization of Pretyping
- Move Program coercion/cases code inside pretyping/, enabled according
to a flag.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@15033 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'pretyping/coercion.mli')
-rw-r--r-- | pretyping/coercion.mli | 92 |
1 files changed, 44 insertions, 48 deletions
diff --git a/pretyping/coercion.mli b/pretyping/coercion.mli index 91cb693ab..45566e9fb 100644 --- a/pretyping/coercion.mli +++ b/pretyping/coercion.mli @@ -16,51 +16,47 @@ open Environ open Evarutil open Glob_term -module type S = sig - (** {6 Coercions. } *) - - (** [inh_app_fun env isevars j] coerces [j] to a function; i.e. it - inserts a coercion into [j], if needed, in such a way it gets as - type a product; it returns [j] if no coercion is applicable *) - val inh_app_fun : - env -> evar_map -> unsafe_judgment -> evar_map * unsafe_judgment - - (** [inh_coerce_to_sort env isevars j] coerces [j] to a type; i.e. it - inserts a coercion into [j], if needed, in such a way it gets as - type a sort; it fails if no coercion is applicable *) - val inh_coerce_to_sort : loc -> - env -> evar_map -> unsafe_judgment -> evar_map * unsafe_type_judgment - - (** [inh_coerce_to_base env isevars j] coerces [j] to its base type; i.e. it - inserts a coercion into [j], if needed, in such a way it gets as - type its base type (the notion depends on the coercion system) *) - val inh_coerce_to_base : loc -> - env -> evar_map -> unsafe_judgment -> evar_map * unsafe_judgment - - (** [inh_coerce_to_prod env isevars t] coerces [t] to a product type *) - val inh_coerce_to_prod : loc -> - env -> evar_map -> types -> evar_map * types - - (** [inh_conv_coerce_to loc env isevars j t] coerces [j] to an object of type - [t]; i.e. it inserts a coercion into [j], if needed, in such a way [t] and - [j.uj_type] are convertible; it fails if no coercion is applicable *) - val inh_conv_coerce_to : loc -> - env -> evar_map -> unsafe_judgment -> types -> evar_map * unsafe_judgment - - val inh_conv_coerce_rigid_to : loc -> - env -> evar_map -> unsafe_judgment -> types -> evar_map * unsafe_judgment - - (** [inh_conv_coerces_to loc env isevars t t'] checks if an object of type [t] - is coercible to an object of type [t'] adding evar constraints if needed; - it fails if no coercion exists *) - val inh_conv_coerces_to : loc -> - env -> evar_map -> types -> types -> evar_map - - (** [inh_pattern_coerce_to loc env isevars pat ind1 ind2] coerces the Cases - pattern [pat] typed in [ind1] into a pattern typed in [ind2]; - raises [Not_found] if no coercion found *) - val inh_pattern_coerce_to : - loc -> cases_pattern -> inductive -> inductive -> cases_pattern -end - -module Default : S +(** {6 Coercions. } *) + +(** [inh_app_fun env isevars j] coerces [j] to a function; i.e. it + inserts a coercion into [j], if needed, in such a way it gets as + type a product; it returns [j] if no coercion is applicable *) +val inh_app_fun : + env -> evar_map -> unsafe_judgment -> evar_map * unsafe_judgment + +(** [inh_coerce_to_sort env isevars j] coerces [j] to a type; i.e. it + inserts a coercion into [j], if needed, in such a way it gets as + type a sort; it fails if no coercion is applicable *) +val inh_coerce_to_sort : loc -> + env -> evar_map -> unsafe_judgment -> evar_map * unsafe_type_judgment + +(** [inh_coerce_to_base env isevars j] coerces [j] to its base type; i.e. it + inserts a coercion into [j], if needed, in such a way it gets as + type its base type (the notion depends on the coercion system) *) +val inh_coerce_to_base : loc -> + env -> evar_map -> unsafe_judgment -> evar_map * unsafe_judgment + +(** [inh_coerce_to_prod env isevars t] coerces [t] to a product type *) +val inh_coerce_to_prod : loc -> + env -> evar_map -> types -> evar_map * types + +(** [inh_conv_coerce_to loc env isevars j t] coerces [j] to an object of type + [t]; i.e. it inserts a coercion into [j], if needed, in such a way [t] and + [j.uj_type] are convertible; it fails if no coercion is applicable *) +val inh_conv_coerce_to : loc -> + env -> evar_map -> unsafe_judgment -> types -> evar_map * unsafe_judgment + +val inh_conv_coerce_rigid_to : loc -> + env -> evar_map -> unsafe_judgment -> types -> evar_map * unsafe_judgment + +(** [inh_conv_coerces_to loc env isevars t t'] checks if an object of type [t] + is coercible to an object of type [t'] adding evar constraints if needed; + it fails if no coercion exists *) +val inh_conv_coerces_to : loc -> + env -> evar_map -> types -> types -> evar_map + +(** [inh_pattern_coerce_to loc env isevars pat ind1 ind2] coerces the Cases + pattern [pat] typed in [ind1] into a pattern typed in [ind2]; + raises [Not_found] if no coercion found *) +val inh_pattern_coerce_to : + loc -> cases_pattern -> inductive -> inductive -> cases_pattern |