diff options
author | Siddharth Bhat <siddu.druid@gmail.com> | 2018-07-17 01:14:36 +0200 |
---|---|---|
committer | Siddharth Bhat <siddu.druid@gmail.com> | 2018-07-17 13:14:44 +0200 |
commit | 83afcfd21be0084b2eff33ffd9e2d8b785679d4a (patch) | |
tree | 7743af4c6fd7ebdabab8cdebf2f51b7285896ece /engine | |
parent | 78321b33b0e5af859f2f57ef96aeb95fad258138 (diff) |
change into QuestionMark default
Diffstat (limited to 'engine')
-rw-r--r-- | engine/evar_kinds.ml | 6 | ||||
-rw-r--r-- | engine/evar_kinds.mli | 51 |
2 files changed, 57 insertions, 0 deletions
diff --git a/engine/evar_kinds.ml b/engine/evar_kinds.ml index bedfd0cbb..ea1e57254 100644 --- a/engine/evar_kinds.ml +++ b/engine/evar_kinds.ml @@ -30,6 +30,12 @@ type question_mark = { qm_record_field: record_field option; } +let default_question_mark = { + qm_obligation=Define true; + qm_name=Anonymous; + qm_record_field=None; +} + type t = | ImplicitArg of GlobRef.t * (int * Id.t option) * bool (** Force inference *) diff --git a/engine/evar_kinds.mli b/engine/evar_kinds.mli new file mode 100644 index 000000000..4facdb200 --- /dev/null +++ b/engine/evar_kinds.mli @@ -0,0 +1,51 @@ +(************************************************************************) +(* * The Coq Proof Assistant / The Coq Development Team *) +(* v * INRIA, CNRS and contributors - Copyright 1999-2018 *) +(* <O___,, * (see CREDITS file for the list of authors) *) +(* \VV/ **************************************************************) +(* // * This file is distributed under the terms of the *) +(* * GNU Lesser General Public License Version 2.1 *) +(* * (see LICENSE file for the text of the license) *) +(************************************************************************) + +open Names + +(** The kinds of existential variable *) + +(** Should the obligation be defined (opaque or transparent (default)) or + defined transparent and expanded in the term? *) + +type obligation_definition_status = Define of bool | Expand + +type matching_var_kind = FirstOrderPatVar of Id.t | SecondOrderPatVar of Id.t + +type subevar_kind = Domain | Codomain | Body + +(* maybe this should be a Projection.t *) +(* Represents missing record field *) +type record_field = { fieldname : Constant.t; recordname : Names.inductive } + +type question_mark = { + qm_obligation: obligation_definition_status; + qm_name: Name.t; + (* Tracks if the evar represents a missing record field *) + qm_record_field: record_field option; +} + +(* Default value of question_mark which is used most often *) +val default_question_mark : question_mark + +type t = + | ImplicitArg of GlobRef.t * (int * Id.t option) + * bool (** Force inference *) + | BinderType of Name.t + | NamedHole of Id.t (* coming from some ?[id] syntax *) + | QuestionMark of question_mark + | CasesType of bool (* true = a subterm of the type *) + | InternalHole + | TomatchTypeParameter of inductive * int + | GoalEvar + | ImpossibleCase + | MatchingVar of matching_var_kind + | VarInstance of Id.t + | SubEvar of subevar_kind option * Evar.t |