aboutsummaryrefslogtreecommitdiff
path: root/pretyping/evarsolve.mli
diff options
context:
space:
mode:
authorcoqbot-app[bot]2020-12-20 15:35:59 +0000
committerGitHub2020-12-20 15:35:59 +0000
commit9d596d13b088a78e772ae58adfbd3cc1fd91f021 (patch)
tree524e8a23debbafb916c6042629a2fd481827df05 /pretyping/evarsolve.mli
parent687fff698db75d54ef0a8b156b85a4dc027edc62 (diff)
parentc213d571f7628078c087b845d0142e2e88aac9d6 (diff)
Merge PR #13138: Towards a documentation / cleanup of evarconv
Reviewed-by: gares
Diffstat (limited to 'pretyping/evarsolve.mli')
-rw-r--r--pretyping/evarsolve.mli18
1 files changed, 18 insertions, 0 deletions
diff --git a/pretyping/evarsolve.mli b/pretyping/evarsolve.mli
index 094dae4828..d347f46637 100644
--- a/pretyping/evarsolve.mli
+++ b/pretyping/evarsolve.mli
@@ -136,6 +136,24 @@ val solve_evar_evar : ?force:bool ->
(** The two evars are expected to be in inferably convertible types;
if not, an exception IllTypedInstance is raised *)
+(* [solve_simple_eqn unifier flags env evd (direction,?ev[inst],t)]
+ makes progresses on problems of the form [?ev[inst] := t] (or
+ [?ev[inst] :<= t], or [?ev[inst] :>= t]). It uses imitation and a
+ limited form of projection. At the time of writing this comment,
+ only rels/vars (possibly indirectly via a chain of evars) and
+ constructors are used for projection. For instance
+ [?e[x,S 0] := x + S 0] will be solved by imitating [+] and
+ projecting [x] and [S 0] (so that [?e[a,b]:=a+b]) but in
+ [?e[0+0] := 0+0], the possible imitation will not be seen.
+
+ [choose] tells to make an irreversible choice when two valid
+ projections are competing. It is to be used when no more reversible
+ progress can be done. It is [false] by default.
+
+ [imitate_defs] tells to expand local definitions if they cannot be
+ projected. It is [true] by default.
+*)
+
val solve_simple_eqn : unifier -> unify_flags -> ?choose:bool -> ?imitate_defs:bool -> env -> evar_map ->
bool option * existential * constr -> unification_result