aboutsummaryrefslogtreecommitdiff
path: root/engine
AgeCommit message (Collapse)Author
2018-05-23Collecting Map.smart_* functions into a module Map.Smart.Hugo Herbelin
2018-05-23Exporting Fun1 within Array so that Array.Fun1 and not only CArray.Fun1 works.Hugo Herbelin
2018-05-23Collecting Array.smart_* functions into a module Array.Smart.Hugo Herbelin
2018-05-17Split off Universes functions for minimization.Gaëtan Gilbert
This finishes the splitting of Universes.
2018-05-17Make Universes.refresh_constraints internal to UStateGaëtan Gilbert
2018-05-17Split off Universes functions about substitutions and constraintsGaëtan Gilbert
2018-05-17Move solve_constraint_system near its only use site (comInductive)Gaëtan Gilbert
2018-05-17Split off Universes functions dealing with generating new universes.Gaëtan Gilbert
2018-05-17Split off Universes functions dealing with names.Gaëtan Gilbert
This API is a bit strange, I expect it will change at some point.
2018-05-17Make set minimization option internal to UniversesGaëtan Gilbert
2018-05-17Merge PR #7359: Reduce usage of evar_map referencesPierre-Marie Pédrot
2018-05-14Use evd_combX in Cases.Gaëtan Gilbert
2018-05-11Convert clear_hyps_in_evi to state passing style.Gaëtan Gilbert
2018-05-11Deprecate most evarutil evdref functionsGaëtan Gilbert
clear_hyps remain with no alternative
2018-05-08Don't use ref universe_opt_substGaëtan Gilbert
2018-05-04[api] Rename `global_reference` to `GlobRef.t` to follow kernel style.Emilio Jesus Gallego Arias
In #6092, `global_reference` was moved to `kernel`. It makes sense to go further and use the current kernel style for names. This has a good effect on the dependency graph, as some core modules don't depend on library anymore. A question about providing equality for the GloRef module remains, as there are two different notions of equality for constants. In that sense, `KerPair` seems suspicious and at some point it should be looked at.
2018-05-03Merge PR #7375: Implement to_constr with nf_evars_and_universes_opt_substPierre-Marie Pédrot
2018-04-30Merge PR #6935: Separate universe minimization and evar normalization functionsPierre-Marie Pédrot
2018-04-29Implement to_constr with nf_evars_and_universes_opt_substGaëtan Gilbert
2018-04-28Fix nf_evars_universes_opt_subst: recurse on univs, nf undef evarsGaëtan Gilbert
2018-04-28Merge PR #6892: Cleanup implementation of normalize_context_set a bitPierre-Marie Pédrot
2018-04-25Merge PR #6866: Slight improvement of messages related to direct and ↵Pierre-Marie Pédrot
indirect uses of tactic `clear`.
2018-04-24Merge PR #307: Adding a flag to support different naming modes for evar ↵Pierre-Marie Pédrot
hypotheses.
2018-04-24Improving error message for clear tactic (and indirect uses of it).Hugo Herbelin
- Be more precise when trying to clear an hypothesis which occurs implicitly in a global constant. - Warns if destruct/induction cannot clear an hypothesis occurring implicitly in a global. In the first case, the change in situation Section A. Variable a:nat. Definition b:=a=a. Goal b=b. clear a. is: - before: "a is used in conclusion" - after: "a is used implicitly in b in conclusion" In the second case: Section A. Variable a:nat. Definition b:=a=a. Goal b=b. destruct a. produces a warning: "Cannot remove a, it is used implicitly in b".
2018-04-24Adding a flag to support different naming modes for evar hypotheses.Hugo Herbelin
Four modes currently supported to deal with clashes: 1. Failing in case of clash 2. Renaming the most recent one 3. Renaming the previous hypothesis of same name if not a section variable 4. Renaming the previous hypothesis of same name even if a section variable The current mode is 3. Keeping it active by default
2018-04-23[api] Relocate `intf` modules according to dependency-order.Emilio Jesus Gallego Arias
In a component-based source code organization of Coq `intf` doesn't fit very well, as it sits in bit of "limbo" between different components, and indeed, encourages developers to place types in sometimes random places wrt the hierarchy. For example, lower parts of the system reference `Vernacexpr`, which morally lives in a pretty higher part of the system. We move all the files in `intf` to the lowest place their dependencies can accommodate: - `Misctypes`: is used by Declaremod, thus it has to go in `library` or below. Ideally, this file would disappear. - `Evar_kinds`: it is used by files in `engine`, so that seems its proper placement. - `Decl_kinds`: used in `library`, seems like the right place. [could also be merged. - `Glob_term`: belongs to pretyping, where it is placed. - `Locus`: ditto. - `Pattern`: ditto. - `Genredexpr`: depended by a few modules in `pretyping`, seems like the righ place. - `Constrexpr`: used in `pretyping`, the use is a bit unfortunate and could be fixed, as this module should be declared in `interp` which is the one eliminating it. - `Vernacexpr`: same problem than `Constrexpr`; this one can be fixed as it contains stuff it shouldn't. The right place should be `parsing`. - `Extend`: Is placed in `pretyping` due to being used by `Vernacexpr`. - `Notation_term`: First place used is `interp`, seems like the right place. Additionally, for some files it could be worth to merge files of the form `Foo` with `Foo_ops` in the medium term, as to create proper ADT modules as done in the kernel with `Name`, etc...
2018-04-17Deprecate mixing univ minimization and evm normalization functions.Gaëtan Gilbert
Normalization sounds like it should be semantically noop.
2018-04-13univ minimization: comment [enforce_uppers]Gaëtan Gilbert
2018-04-13univ minimization [enforce_upper]: replace Option.get with matchGaëtan Gilbert
2018-04-13univ minimization: Partially let-lift [enforce_uppers]Gaëtan Gilbert
2018-04-13univ minimization: rename acc' -> enforce_uppersGaëtan Gilbert
2018-04-13univ minimization: use shadowing moreGaëtan Gilbert
This avoids having multiple highly similar things in scope when we only want one of them.
2018-04-13univ minimization: let-lift [not_lower]Gaëtan Gilbert
2018-04-13univ minimization: simplify try-with block around find_instsGaëtan Gilbert
2018-04-13univ minimization: s/[failwith ""]/[raise UpperBoundedAlg]/Gaëtan Gilbert
2018-04-13univ minimization: simplify try-with block around [find u left]Gaëtan Gilbert
This makes it clear where the Not_found can come from.
2018-04-13univ minimization: comment compare_constraint_typeGaëtan Gilbert
2018-04-13niv minimization: remove [remove_lower] abbreviationGaëtan Gilbert
It's not long, used only once and it's easier to understand what it does when it's inlined.
2018-04-13minimize_univ_variables: bool*bool*univ*lowermap replaced by recordGaëtan Gilbert
2018-04-13minimize_univ_variables: remove [and right] abbreviation.Gaëtan Gilbert
2018-04-13universe normalisation: put equivalence class partition in UGraphGaëtan Gilbert
ie don't go through having Eq constraints but directly to the unionfind.
2018-04-13universe minimization: cleanup using standard combinators, open UnivGaëtan Gilbert
eg Constraint.partition + filter instead of a complicated fold.
2018-04-13Evar maps contain econstrs.Gaëtan Gilbert
We bootstrap the circular evar_map <-> econstr dependency by moving the internal EConstr.API module to Evd.MiniEConstr. Then we make the Evd functions use econstr.
2018-04-13Merge PR #6454: [econstr] Flag to make `to_constr` fail if its output ↵Pierre-Marie Pédrot
contains evars
2018-04-12Merge PR #6972: [api] Deprecate a couple of aliases that we missed.Maxime Dénès
2018-03-31[econstr] Forbid calling `to_constr` in open terms.Emilio Jesus Gallego Arias
We forbid calling `EConstr.to_constr` on terms that are not evar-free, as to progress towards enforcing the invariant that `Constr.t` is evar-free. [c.f. #6308] Due to compatibility constraints we provide an optional parameter to `to_constr`, `abort` which can be used to overcome this restriction until we fix all parts of the code. Now, grepping for `~abort:false` should return the questionable parts of the system. Not a lot of places had to be fixed, some comments: - problems with the interface due to `Evd/Constr` [`Evd.define` being the prime example] do seem real! - inductives also look bad with regards to `Constr/EConstr`. - code in plugins needs work. A notable user of this "feature" is `Obligations/Program` that seem to like to generate kernel-level entries with free evars, then to scan them and workaround this problem by generating constants.
2018-03-28[api] Deprecate a couple of aliases that we missed.Emilio Jesus Gallego Arias
2018-03-27Export Proofview.undefined as "unsafe" primitive.Hugo Herbelin
2018-03-27Adding informative variant of shelve_unifiable returning set of shelved evars.Hugo Herbelin
2018-03-24Slightly refining some error messages about unresolvable evars.Hugo Herbelin
For instance, error in "Goal forall a f, f a = 0" is now located.