aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-06-10- Fix substitution of universes which needlessly hashconsed existing universes.Matthieu Sozeau
- More cleanup. remove unneeded functions in universes
2014-06-10Oops, one refactoring was not compiled.Matthieu Sozeau
2014-06-10More cleanup/reorganizing of univ.ml to separate constraint/universe ↵Matthieu Sozeau
handling from the instance/contexts and substitution code.
2014-06-10Fix module order in printers.mllibMatthieu Sozeau
2014-06-10Cleanup in Univ, moving code for UniverseConstraints outside the kernel in ↵Matthieu Sozeau
Universes. Needed to exponse compare_head_gen(_leq) so that it could be reused in Universes. Remove unused functions from univ as well and refactor a little bit. Changed the syntax to Type@{} for explicit universe level specs, following the WG decision.
2014-06-10Remove unused function in univMatthieu Sozeau
2014-06-10Merge branch 'hott-test-suite-progress' of https://github.com/JasonGross/coq ↵Matthieu Sozeau
into trunk
2014-06-09Flattening Level module structure in Univ.Pierre-Marie Pédrot
2014-06-08Mark some progress in the HoTT/coq test-suiteJason Gross
I've marked new failing commands that I'm confused about with "???"; I'm not sure whether or not they should fail there, but we should keep the test-suite compiling, probably.
2014-06-08Adding a toplevel option allowing to deactivate the term sharing in kernelPierre-Marie Pédrot
reduction.
2014-06-08Moving hook code from Future to Lemmas. This seemed to disrupt compilation ofPierre-Marie Pédrot
the checker, and it was not used before that anyway.
2014-06-08Fix canonical structure resolution in unification (bug found in Ssreflect).Matthieu Sozeau
2014-06-08Timeout implementation for Windows based on threads.Pierre-Marie Pédrot
2014-06-08Enforce a correct exception handling in declaration_hooksEnrico Tassi
This should finally get rid of the following class of bugs: Qed fails, STM undoes to the beginning of the proof because the exception is not annotated with the correct state, PG gets out of sync because errors always refer to the last command in PGIP.
2014-06-08ind_tables: always declare side effects (Closes: HOTT#110)Enrico Tassi
declare takes care of ignoring side effects that are available in the global environment. This is yet another instance of what the "abominion" (aka abstract) can do: the code was checking for the existence in the environment of the elimination principle, and not regenerating it (nor declaring the corresponding side effect) if the elimination principle is used twice. Of course to functionalize the imperative actions on the environment when two proofs generated by abstract use the same elim principle, such elim principle has to be inlined twice, once in each abstracted proof. In other words, a side effect generated by a tactic inside an abstract is *global* but will be made local, si it must always be declared, no matter what. Now the system works like this: - side effects are always declared, even if a caching mechanism thinks the constant is already there (it can be there, no need to regenerate it but the intent to generate it *must* be declared anyhow) - at Qed time, we filter the list of side effects and decide which ones are really needed to be inlined. bottom line: STOP using abstract.
2014-06-08STM: handle "Time Abort" correctly (Closes: 3332)Enrico Tassi
2014-06-08Function in Univ uselessly exported.Pierre-Marie Pédrot
2014-06-07Removing 'open Univ' from checker.Pierre-Marie Pédrot
2014-06-07Moving a Thread.yield in check_interrupt.Pierre-Marie Pédrot
2014-06-07Adding a new Control file centralizing the control options of Coq.Pierre-Marie Pédrot
2014-06-06Preserve compatibility on examples such as "intros []." on goals suchHugo Herbelin
as "forall x:nat*nat, x=x", which resulted in "forall n n0 : nat, (n, n0) = (n, n0)" before commit 37f68259ab0a33c3b5b41de70b08422d9bcd3bec on "Fixing introduction patterns * and ** ".
2014-06-06Dead code.Hugo Herbelin
2014-06-06Fixes the lost evars when interpreting a change with pattern tactic.Arnaud Spiwack
2014-06-06Remove the syntax [Vernac1. Vernac2. … Vernacn. ].Arnaud Spiwack
It grouped a list of vernac commands as a single one. It was undocumented and unused (and apparently unusable, because the intermediate '.' seem to be parsed as end of phrases by the interfaces). The main application could be to group the commands for Time. There is room for such an application in the syntax, but I unplugged the syntax for the time being. The syntax would conflict with the use of a standalone dispatching tactical [ t1 | t2 | … | tn ]. I took the opportunity to separate the code dedicated to lists of commands in a separate type from vernac_expr.
2014-06-06Make kernel reduction code parametric over the handling of universes,Matthieu Sozeau
allowing fast conversion to be used during unification while respecting the semantics of unification w.r.t universes. - Inside kernel, checked_conv is used mainly, it just does checking, while infer_conv is used for module subtyping. - Outside, infer_conv is wrapped in Reductionops to register the right constraints in an evarmap. - In univ, add a flag to universes to cache the fact that they are >= Set, the most common constraints, resulting in an 4x speedup in some cases (e.g. HigmanS).
2014-06-06Moving the [split] tactic out of the AST.Pierre-Marie Pédrot
2014-06-05Dedicated map module for type universes. It uses hashmaps, which arePierre-Marie Pédrot
slightly more efficient than plain balanced maps.
2014-06-05Removing dead code from Univ.Pierre-Marie Pédrot
2014-06-04Make standard library independent of the names generated byHugo Herbelin
induction/elim over a dependent elimination principle for Prop arguments.
2014-06-04Make standard library independent of the names generated byHugo Herbelin
induction/elim over a dependent elimination principle for Prop arguments.
2014-06-04Collecting in Namegen those conventional default names that are used in ↵Hugo Herbelin
different places
2014-06-04Small lemma about Relations.Hugo Herbelin
2014-06-04Remove spurious Show in script.Matthieu Sozeau
2014-06-04- Better parsing and printing of named universes: Type{ident} and ↵Matthieu Sozeau
foo@{(ident|Prop|Set|Type|' ')*} (user given names are still write only). - Add test-suite file for named universes.
2014-06-04Fix canonical structure resolution (makes test-suite files go through again).Matthieu Sozeau
2014-06-04- Allow parsing of @const@{instance} for specifying universe instances of ↵Matthieu Sozeau
polymorphic constants.
2014-06-04- Force every universe level to be >= Prop, so one cannot "go under" it anymore.Matthieu Sozeau
- Finish the change to level-to-level substitutions, in the checker.
2014-06-04- Fix hashing of levels to get the "right" order in universe contexts etc...Matthieu Sozeau
- Add a tentative syntax for specifying universes: Type{"i"} and foo@{Type{"i"},Type{"j"}}. These are always rigid. - Use level-to-level substitutions where the more general level-to-universe substitutions were previously used.
2014-06-04Fix handling of anonymous Type in template universe polymorphic inductivesMatthieu Sozeau
to not interfere with already declared universes.
2014-06-04- Keep all <= constraints during refinement, otherwise we might miss ↵Matthieu Sozeau
collapsed universes. - Fix normalization with universe substitutions during refinement being inconsistent with the one in the kernel.
2014-06-04cbn understand ! Arguments directivePierre Boutillier
Of course, this is an under approximation of the expected behavior : unfolding a constant iff a leaf of its underlying split-tree is reached.
2014-06-03A bug has been closed (HoTT/coq #105)Jason Gross
2014-06-03The tactic interpreter now uses a new type of tactics, throughPierre-Marie Pédrot
the GTac module. A ['a Gtac.t] is a special case of tactic that may depend on the current goals, or not. Internally, it construct a list of results, one for each focussed goal, if the tactic is actually dependent. This allows for an interpretation of whole-goal tactic that does work, which was not the case for the previous implementation, which did to many Proofview.Goal.enter.
2014-06-02Fixing incorrect printf format.Pierre-Marie Pédrot
2014-06-02Removing symmetry from the atomic tactics.Pierre-Marie Pédrot
2014-06-01A little bit of documentation about V5.10 and V6.3 and V7.Hugo Herbelin
2014-06-01Use of "H"-based names for propositional hypotheses obtained byHugo Herbelin
destruction of schemes in Type such as sumbool. Added an option "Set Standard Proposition Elimination Names" for governing this strategy (activated by default). This provides names supposingly more uniform than before for those who like to have names automatically generated, at least in the first phase of the development process of proofs. Examples: *** Non dependent case *** Goal {True}+{False}-> True. intros [|]. Before: t : True ============================ True and f : False ============================ True After: H : True ============================ True H : False ============================ True *** Dependent case *** Goal forall x:{True}+{False}, x=x. intros [|]. Before: t : True ============================ left t = left t f : False ============================ right f = right f After: HTrue : True ============================ left HTrue = left HTrue HFalse : False ============================ right HFalse = right HFalse
2014-06-01Making those proofs which depend on names generated for the argumentsHugo Herbelin
in Prop of constructors of inductive types independent of these names. Incidentally upgraded/simplified a couple of proofs, mainly in Reals. This prepares to the next commit about using names based on H for such hypotheses in Prop.
2014-05-31More on injection over a projectable "existT". - Fixing syntax "injection ↵Hugo Herbelin
... as ..." which was not working. - Now applying the simplification on any "existT" generated by "injection" (possible source of incompatibilities).
2014-05-31Fixing introduction patterns * and ** when used in a branch so that they do ↵Hugo Herbelin
not introduce beyond what is under control of the branch. See test-suite intros.v for an example.