aboutsummaryrefslogtreecommitdiff
path: root/engine/evd.mli
diff options
context:
space:
mode:
authorMatthieu Sozeau2017-07-27 16:10:49 +0200
committerMatthieu Sozeau2019-02-08 10:52:39 +0100
commit46b671c7473385ec7747a796e85b3cf704d000c6 (patch)
tree7f340874881d5c2d266f1f39de145bd7d95af49c /engine/evd.mli
parentd1d32f552064b9907fc9815b7412b9a9cde4a0dd (diff)
Evd/evarsolve: add an abstraction field to evars for unification
Named evar_abstract_arguments, this field indicates if the evar arguments corresponding to certain hypothesis can be immitated during inversion or not. If the argument comes from an abstraction (the evar was of arrow type), then imitation is disallowed as it gives unnatural solutions, and lambda abstraction is preferred.
Diffstat (limited to 'engine/evd.mli')
-rw-r--r--engine/evd.mli12
1 files changed, 12 insertions, 0 deletions
diff --git a/engine/evd.mli b/engine/evd.mli
index de73144895..1c852971f5 100644
--- a/engine/evd.mli
+++ b/engine/evd.mli
@@ -77,6 +77,14 @@ sig
end
+module Abstraction : sig
+ type t = bool list
+
+ val identity : t
+
+ val abstract_last : t -> t
+end
+
(** {6 Evar infos} *)
type evar_body =
@@ -94,6 +102,10 @@ type evar_info = {
(** Boolean mask over {!evar_hyps}. Should have the same length.
When filtered out, the corresponding variable is not allowed to occur
in the solution *)
+ evar_abstract_arguments : Abstraction.t;
+ (** Boolean information over {!evar_hyps}, telling if an hypothesis instance
+ can be immitated or should stay abstract in HO unification problems
+ and inversion (see [second_order_matching_with_args] for its use). *)
evar_source : Evar_kinds.t located;
(** Information about the evar. *)
evar_candidates : econstr list option;