aboutsummaryrefslogtreecommitdiffhomepage
path: root/kernel
Commit message (Collapse)AuthorAge
* Merge PR #7863: Remove Sorts.contentsGravatar Pierre-Marie Pédrot2018-06-27
|\
* \ Merge PR #7919: Fix equality check on global names from native compute.Gravatar Maxime Dénès2018-06-26
|\ \
| | * Remove Sorts.contentsGravatar Gaëtan Gilbert2018-06-26
| |/ |/|
* | Merge PR #7798: Remove hack skipping comparison of algebraic universes in ↵Gravatar Matthieu Sozeau2018-06-25
|\ \ | | | | | | | | | subtyping.
| | * Fix equality check on global names from native compute.Gravatar Pierre-Marie Pédrot2018-06-25
| |/ |/| | | | | | | | | Not sure it could have led to a soundness bug, but this is definitely serious enough to deserve a backport. Also made the code robust by listing all the constructors.
* | Merge PR #7772: [native_compute] Delay computations with toplevel matchGravatar Pierre-Marie Pédrot2018-06-24
|\ \
* \ \ Merge PR #7614: Simplify the code that handles trust of side-effects in ↵Gravatar Maxime Dénès2018-06-23
|\ \ \ | | | | | | | | | | | | kernel typing.
* | | | Adapt the kernel to generate proper data for mutual records.Gravatar Pierre-Marie Pédrot2018-06-23
| | | | | | | | | | | | | | | | Upper layers are still not able to handle mutual records though.
* | | | Using more general information for primitive records.Gravatar Pierre-Marie Pédrot2018-06-23
| | | | | | | | | | | | | | | | | | | | This brings more compatibility with handling of mutual primitive records in the kernel.
* | | | Change the proj_ind field from MutInd.t to inductive.Gravatar Pierre-Marie Pédrot2018-06-23
| | | | | | | | | | | | | | | | | | | | This is a first step towards the acceptance of mutual record types in the kernel.
* | | | Merge PR #7715: Simplify the cooking of primitive projections.Gravatar Maxime Dénès2018-06-23
|\ \ \ \
* \ \ \ \ Merge PR #7600: Faster and cleaner fconstr-to-constr conversion function.Gravatar Maxime Dénès2018-06-22
|\ \ \ \ \
| | | | | * Remove hack skipping comparison of algebraic universes in subtyping.Gravatar Gaëtan Gilbert2018-06-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When inferring [u <= v+k] I replaced the exception and instead add [u <= v]. This is trivially sound and it doesn't seem possible to have the one without the other (except specially for [Set <= v+k] which was already handled). I don't know an example where this used to fail and now succeeds (the point was to remove an anomaly, but the example ~~~ Module Type SG. Definition DG := Type. End SG. Module MG : SG. Definition DG := Type : Type. Fail End MG. ~~~ now fails with universe inconsistency. Fix #7695 (soundness bug!).
| | | | | * Define and use UGraph.enforce_leq_alg for subtyping inferenceGravatar Gaëtan Gilbert2018-06-22
| | | | | | | | | | | | | | | | | | | | | | | | Not sure if worth using in other places.
| | | | | * Fix Univ.enforce_leq dropped constraints when algebraic on the rightGravatar Gaëtan Gilbert2018-06-19
| |_|_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's probably a proof of false using subtyping if someone wants to look. NB: the checker doesn't handle algebraics on the right.
* | | | | Merge PR #7841: Remove CanaryGravatar Pierre-Marie Pédrot2018-06-19
|\ \ \ \ \
| * | | | | Remove Canary.Gravatar whitequark2018-06-18
| | | | | | | | | | | | | | | | | | | | | | | | This eliminates 3 uses of Obj from TCB.
* | | | | | Remove the proj_body field from the kernel.Gravatar Pierre-Marie Pédrot2018-06-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was completely wrong, such a term could not even be type-checked by the kernel as it was internally using a match construct over a negative record. They were luckily only used in upper layers, namley printing and extraction. Recomputing the projection body might be costly in detyping, but this only happens when the compatibility flag is turned on, which is not the default. Such flag is probably bound to disappear anyways. Extraction should be fixed though so as to define directly primitive projections, similarly to what has been done in native compute.
* | | | | | Remove the proj_eta field of the kernel.Gravatar Pierre-Marie Pédrot2018-06-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This field was not used inside the kernel and not used in performance-critical code where caching is essential, so we extrude the code that computes it out of the kernel.
* | | | | | Remove special declaration of primitive projections in the kernel.Gravatar Pierre-Marie Pédrot2018-06-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reduces kernel bloat and removes code from the TCB, as compatibility projections are now retypechecked as normal definitions would have been. This should have no effect on efficiency as this only happens once at definition time.
* | | | | | Getting rid of the const_proj field in the kernel.Gravatar Pierre-Marie Pédrot2018-06-17
|/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | This field used to signal that a constant was the compatibility eta-expansion of a primitive projections, but since a previous cleanup in the kernel it had become useless.
| * / / / Faster and cleaner fconstr-to-constr conversion function.Gravatar Pierre-Marie Pédrot2018-06-17
|/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | We untangle the implementation in several ways. - No higher-order self argument function as there is only one caller. - Compute composition of lifts + substitution on terms using a dedicated function instead of mk_clos followed by to_constr. - Take more advantage of identity substitutions.
* | | | Merge PR #7635: Define rec_declaration in terms of prec_declaration.Gravatar Maxime Dénès2018-06-17
|\ \ \ \
* \ \ \ \ Merge PR #7616: Fix #7615: Functor inlining drops universe substitution.Gravatar Maxime Dénès2018-06-17
|\ \ \ \ \
* \ \ \ \ \ Merge PR #7677: [api] Remove MisctypesGravatar Pierre-Marie Pédrot2018-06-13
|\ \ \ \ \ \
| * | | | | | [api] Misctypes removal: miscellaneous aliases.Gravatar Emilio Jesus Gallego Arias2018-06-12
| | | | | | |
* | | | | | | [VM] Rename reloc -> cenvGravatar Maxime Dénès2018-06-12
|/ / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The renaming is internal only. I believe the name reloc is legacy and a bit confusing now that the structure contains a full compilation environment.
| | | * / / Simplify the cooking of primitive projections.Gravatar Pierre-Marie Pédrot2018-06-11
| |_|/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | There is no need to expand a primitive projection with the section parameters and universes, for one good reason: they are never applied neither to parameters nor universe instances.
| | | | * [native_compute] Delay computations with toplevel matchGravatar Maxime Dénès2018-06-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is an easy improvement on examples like: Fixpoint zero (n : nat) := match n with | O => O | S p => zero p + zero p end. Definition foo := if true then zero 100 else 0. Eval native_compute in if true then 0 else foo. I didn't add a test case, because our current testing infrastructure is too fragile for that.
* | | | | [VM] Remove projection names from structured constants.Gravatar Maxime Dénès2018-06-10
| |_|_|/ |/| | | | | | | | | | | | | | | | | | | | | | | It was actually a hack since those names are never used to represent values, only to be passed as arguments to bytecode instructions. So instead of reusing the structured_constant type, we follow the same pattern as switch annotations.
| * | | Fix #7615: Functor inlining drops universe substitution.Gravatar Pierre-Marie Pédrot2018-06-07
|/ / / | | | | | | | | | | | | | | | | | | We store the universe context in the inlined terms and apply it to the instance provided to the substitution function. Technically the context is not needed, but we use it to assert that the length of the instance corresponds, just in case.
| * | Define rec_declaration in terms of prec_declaration.Gravatar SimonBoulier2018-06-05
| | | | | | | | | | | | And similarly for fixpoint and cofixpoint.
* | | More straightforward native compilation of primitive projections.Gravatar Pierre-Marie Pédrot2018-06-05
| | | | | | | | | | | | | | | | | | Instead of having a constant-based compilation of projections, we generate them at the compilation time of the inductive block to which they pertain.
* | | Use projection indices in native compilation rather than constant names.Gravatar Pierre-Marie Pédrot2018-06-05
|/ /
* | Merge PR #7643: Fix #7631: native_compute fails to compile an example in Coq 8.8Gravatar Pierre-Marie Pédrot2018-06-05
|\ \
* \ \ Merge PR #7646: Fix #4714: Stack overflow with native computeGravatar Pierre-Marie Pédrot2018-06-05
|\ \ \
* \ \ \ Merge PR #7495: Fix restrict_universe_contextGravatar Matthieu Sozeau2018-06-05
|\ \ \ \
| | | * | Fix #7631: native_compute fails to compile an example in Coq 8.8Gravatar Maxime Dénès2018-06-04
| |_|/ / |/| | | | | | | | | | | | | | | Dependency analysis for separate compilation was not iterated properly on rel_context and named_context.
* | | | Merge PR #7418: Actually take advantage of the normalization status of ↵Gravatar Maxime Dénès2018-06-04
|\ \ \ \ | | | | | | | | | | | | | | | kernel closures.
* \ \ \ \ Merge PR #7496: Fix #4403: insufficient handling of type-in-type in kernel.Gravatar Maxime Dénès2018-06-04
|\ \ \ \ \
* \ \ \ \ \ Merge PR #7234: Reduce circular dependency constants <-> projectionsGravatar Maxime Dénès2018-06-01
|\ \ \ \ \ \
| | | | | * | Fix #4714: Stack overflow with native computeGravatar Maxime Dénès2018-05-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Values containing (retroknowledge-based) matchine integers were not recognized as literals.
| * | | | | | Reduce circular dependency constants <-> projectionsGravatar Gaëtan Gilbert2018-05-31
| | |_|_|/ / | |/| | | | | | | | | | | | | | | | | | | | | | Instead of having the projection data in the constant data we have it independently in the environment.
* | | | | | [api] Remove deprecated object from `Term`Gravatar Emilio Jesus Gallego Arias2018-05-30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We remove most of what was deprecated in `Term`. Now, `intf` and `kernel` are almost deprecation-free, tho I am not very convinced about the whole `Term -> Constr` renaming but I'm afraid there is no way back. Inconsistencies with the constructor policy (see #6440) remain along the code-base and I'm afraid I don't see a plan to reconcile them. The `Sorts` deprecation is hard to finalize, opening `Sorts` is not a good idea as someone added a `List` module inside it.
* | | | | | [api] Remove deprecated aliases from `Names`.Gravatar Emilio Jesus Gallego Arias2018-05-30
| | | | | |
* | | | | | [api] Reintroduce `Names.global_reference` aliasGravatar Emilio Jesus Gallego Arias2018-05-30
|/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Due to a bad interaction between PRs, the `Names.global_reference` alias was removed in 8.9, where it should disappear in 8.10. The original PR #6156 deprecated the alias in `Libnames`.
| | | * / Fix restrict_universe_contextGravatar Gaëtan Gilbert2018-05-30
| |_|/ / |/| | |
* | | | Fix #7333: vm_compute segfaults / Anomaly with cofixGravatar Maxime Dénès2018-05-28
| | | | | | | | | | | | | | | | | | | | We eta-expand cofixpoints when needed, so that their call-by-need evaluation is correctly implemented by VM and native_compute.
* | | | Unify pre_env and envGravatar Maxime Dénès2018-05-28
| | | | | | | | | | | | | | | | | | | | We now have only two notions of environments in the kernel: env and safe_env.
* | | | Remove vm_conv hook and reorganize kernel filesGravatar Maxime Dénès2018-05-28
| | | |