aboutsummaryrefslogtreecommitdiffhomepage
path: root/engine
Commit message (Collapse)AuthorAge
...
| * | univ minimization: comment [enforce_uppers]Gravatar Gaëtan Gilbert2018-04-13
| | |
| * | univ minimization [enforce_upper]: replace Option.get with matchGravatar Gaëtan Gilbert2018-04-13
| | |
| * | univ minimization: Partially let-lift [enforce_uppers]Gravatar Gaëtan Gilbert2018-04-13
| | |
| * | univ minimization: rename acc' -> enforce_uppersGravatar Gaëtan Gilbert2018-04-13
| | |
| * | univ minimization: use shadowing moreGravatar Gaëtan Gilbert2018-04-13
| | | | | | | | | | | | | | | This avoids having multiple highly similar things in scope when we only want one of them.
| * | univ minimization: let-lift [not_lower]Gravatar Gaëtan Gilbert2018-04-13
| | |
| * | univ minimization: simplify try-with block around find_instsGravatar Gaëtan Gilbert2018-04-13
| | |
| * | univ minimization: s/[failwith ""]/[raise UpperBoundedAlg]/Gravatar Gaëtan Gilbert2018-04-13
| | |
| * | univ minimization: simplify try-with block around [find u left]Gravatar Gaëtan Gilbert2018-04-13
| | | | | | | | | | | | This makes it clear where the Not_found can come from.
| * | univ minimization: comment compare_constraint_typeGravatar Gaëtan Gilbert2018-04-13
| | |
| * | niv minimization: remove [remove_lower] abbreviationGravatar Gaëtan Gilbert2018-04-13
| | | | | | | | | | | | | | | It's not long, used only once and it's easier to understand what it does when it's inlined.
| * | minimize_univ_variables: bool*bool*univ*lowermap replaced by recordGravatar Gaëtan Gilbert2018-04-13
| | |
| * | minimize_univ_variables: remove [and right] abbreviation.Gravatar Gaëtan Gilbert2018-04-13
| | |
| * | universe normalisation: put equivalence class partition in UGraphGravatar Gaëtan Gilbert2018-04-13
| | | | | | | | | | | | ie don't go through having Eq constraints but directly to the unionfind.
| * | universe minimization: cleanup using standard combinators, open UnivGravatar Gaëtan Gilbert2018-04-13
| | | | | | | | | | | | eg Constraint.partition + filter instead of a complicated fold.
* | | Evar maps contain econstrs.Gravatar Gaëtan Gilbert2018-04-13
|/ / | | | | | | | | | | 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.
* | Merge PR #6454: [econstr] Flag to make `to_constr` fail if its output ↵Gravatar Pierre-Marie Pédrot2018-04-13
|\ \ | | | | | | | | | contains evars
* \ \ Merge PR #6972: [api] Deprecate a couple of aliases that we missed.Gravatar Maxime Dénès2018-04-12
|\ \ \
| | | * Replace uses of Termops.dependent by more specific functions.Gravatar Pierre-Marie Pédrot2018-04-10
| |_|/ |/| | | | | | | | | | | This is more efficient in general, because Termops.dependent doesn't take advantage of the knowledge of its pattern argument.
| | * [econstr] Forbid calling `to_constr` in open terms.Gravatar Emilio Jesus Gallego Arias2018-03-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | [api] Deprecate a couple of aliases that we missed.Gravatar Emilio Jesus Gallego Arias2018-03-28
| |/
* | Export Proofview.undefined as "unsafe" primitive.Gravatar Hugo Herbelin2018-03-27
| |
* | Adding informative variant of shelve_unifiable returning set of shelved evars.Gravatar Hugo Herbelin2018-03-27
|/
* Slightly refining some error messages about unresolvable evars.Gravatar Hugo Herbelin2018-03-24
| | | | For instance, error in "Goal forall a f, f a = 0" is now located.
* [located] Push inner locations in `reference` to a CAst.t node.Gravatar Emilio Jesus Gallego Arias2018-03-09
| | | | | | | | | | | | | | The `reference` type contains some ad-hoc locations in its constructors, but there is no reason not to handle them with the standard attribute container provided by `CAst.t`. An orthogonal topic to this commit is whether the `reference` type should contain a location or not at all. It seems that many places would become a bit clearer by splitting `reference` into non-located `reference` and `lreference`, however some other places become messier so we maintain the current status-quo for now.
* Adjust EConstr.cmp_constructors for relaxed constructor cumulativityGravatar Gaëtan Gilbert2018-03-09
|
* Delayed weak constraints for cumulative inductive types.Gravatar Gaëtan Gilbert2018-03-09
| | | | | | | When comparing 2 irrelevant universes [u] and [v] we add a "weak constraint" [UWeak(u,v)] to the UState. Then at minimization time a weak constraint between unrelated universes where one is flexible causes them to be unified.
* Statically enforce that ULub is only between levels.Gravatar Gaëtan Gilbert2018-03-09
|
* Option for messing with inference of irrelevant constraintsGravatar Gaëtan Gilbert2018-03-09
|
* Cumulativity: improve treatment of irrelevant universes.Gravatar Gaëtan Gilbert2018-03-09
| | | | | | In Reductionops.infer_conv we did not have enough information to properly try to unify irrelevant universes. This requires changing the Reduction.universe_compare type a bit.
* Allow using cumulativity without forcing strict constraints.Gravatar Gaëtan Gilbert2018-03-09
| | | | | | | | | | | | | | | | | | | | | | | | Previously [fun x : Ind@{i} => x : Ind@{j}] with Ind some cumulative inductive would try to generate a constraint [i = j] and use cumulativity only if this resulted in an inconsistency. This is confusingly different from the behaviour with [Type] and means cumulativity can only be used to lift between universes related by strict inequalities. (This isn't a kernel restriction so there might be some workaround to send the kernel the right constraints, but not in a nice way.) See modified test for more details of what is now possible. Technical notes: When universe constraints were inferred by comparing the shape of terms without reduction, cumulativity was not used and so too-strict equality constraints were generated. Then in order to use cumulativity we had to make this comparison fail to fall back to full conversion. When unifiying 2 instances of a cumulative inductive type, if there are any Irrelevant universes we try to unify them if they are flexible.
* A comment in Proofview.with_shelf.Gravatar Hugo Herbelin2018-03-08
|
* Proof engine: support for nesting tactic-in-term within other tactics.Gravatar Hugo Herbelin2018-03-08
| | | | | | | | | | | | | Tactic-in-term can be called from within a tactic itself. We have to preserve the preexisting future_goals (if called from pretyping) and we have to inform of the existence of pending goals, using future_goals which is the only way to tell it in the absence of being part of an encapsulating proofview. This fixes #6313. Conversely, future goals, created by pretyping, can call ltac:(giveup) or ltac:(shelve), and this has to be remembered. So, we do it.
* Adding tclPUTGIVENUP/tclPUTSHELF in Proofview.Unsafe.Gravatar Hugo Herbelin2018-03-08
| | | | | | | | | | | | | | | | | Adding also tclSETSHELF/tclGETSHELF by consistency with tclSETGOALS/tclGETGOALS. However, I feel that this is too low-level to be exported as a "tcl". Doesn't a "tcl" mean that it is supposed to be used by common tactics? But is it reasonable that a common tactic can change and modify comb and shelf without passing by a level which e.g. checks that no goal is lost in the process. So, I would rather be in favor of removing tclSETGOALS/tclGETGOALS which are anyway aliases for Comb.get/Comb.set. Conversely, what is the right expected level of abstraction for proofview.ml?
* Proof engine: using save_future_goal when relevant.Gravatar Hugo Herbelin2018-03-08
|
* Proof engine: adding a function to save future goals including principal one.Gravatar Hugo Herbelin2018-03-08
|
* Proof engine: consider the pair principal and future goals as an entity.Gravatar Hugo Herbelin2018-03-08
|
* Merge PR #6893: Cleanup UState API usageGravatar Maxime Dénès2018-03-08
|\
* \ Merge PR #6899: [compat] Remove "Standard Proposition Elimination"Gravatar Maxime Dénès2018-03-08
|\ \
* \ \ Merge PR #6582: Mangle auto-generated namesGravatar Maxime Dénès2018-03-08
|\ \ \
| | | * Rename some universe minimizing "normalize" functions to "minimize"Gravatar Gaëtan Gilbert2018-03-06
| | | | | | | | | | | | | | | | UState normalize -> minimize, Evd nf_constraints -> minimize_universes
| | | * Deprecate UState aliases in Evd.Gravatar Gaëtan Gilbert2018-03-06
| | | |
* | | | Add empty description for @raise statements to satisfy ocamldocGravatar mrmr19932018-03-05
| | | |
* | | | Replace invalid tag @raises in ocamldoc comments with @raiseGravatar mrmr19932018-03-05
| | | |
* | | | Tweak comments to fix ocamldoc errorsGravatar mrmr19932018-03-05
| |_|/ |/| |
* | | Merge PR #6855: Update headers following #6543.Gravatar Maxime Dénès2018-03-05
|\ \ \
* | | | Proofview: V82.tactic option to not normalize evarsGravatar Enrico Tassi2018-03-04
| | | |
* | | | proofview: debug API to print a goalGravatar Enrico Tassi2018-03-04
| | | |
* | | | Merge PR #6511: [econstr] Continue consolidation of EConstr API under `interp`.Gravatar Maxime Dénès2018-03-04
|\ \ \ \
* \ \ \ \ Merge PR #6676: [proofview] goals come with a stateGravatar Maxime Dénès2018-03-04
|\ \ \ \ \