aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-01-24Move cleanup from the test-suite to Z.div_mod_to_quot_rem_cleanupJason Gross
Also fold it into `Z.div_mod_to_quot_rem` Note that the test-suite file is a bit slow. On my machine, it is ``` real 2m32.983s user 2m32.544s sys 0m0.492s ```
2019-01-24Remove remainder of `Abort`s in test-suite Nia.vJason Gross
Note that we define a `cleanup` tactic which is essential for speed of reasoning. Perhaps this tactic should make it into the code for `Z.div_mod_to_quot_rem` somewhere? ```coq Ltac cleanup := repeat match goal with | [ H : ?T -> _, H' : ?T |- _ ] => specialize (H H') | [ H : ?T -> _, H' : ~?T |- _ ] => clear H | [ H : ~?T -> _, H' : ?T |- _ ] => clear H | [ H : 0 < ?x -> _, H' : ?x < 0 |- _ ] => clear H | [ H : ?x < 0 -> _, H' : 0 < ?x |- _ ] => clear H | _ => progress subst end. ```
2019-01-24Don't bundle Z.div_mod_quot_rem into zifyJason Gross
Alas, I have not had time to work on imrpoving the performance of nia, and there has been a request to include this tactic (which is useful on its own) without bundling it into `zify`. So that is what we do here. I leave the definition of it in `PreOmega` in case we want to eventually include it in `zify`/`nia`.
2019-01-24Don't pose any disjunctions in div_mod_to_quot_remJason Gross
Disjunctions seem to have a negative performance impact, so let's try implications instead.
2019-01-24Add Z.div_mod_to_quot_rem tactic, put it in zifyJason Gross
The various (micr)omega tactics now support `Z.div` and `Z.modulo`. I briefly looked into supporting `Nat.div` and `Nat.modulo`, but the conversions between `Z.div` and `Nat.div` are defined in `ZArith.Zdiv`, which depends on `Omega`, which depends on `PreOmega`, which is where `zify` is defined.
2019-01-24Update update-compat.py and release-process.mdJason Gross
In response to review comments by Zimmi48
2019-01-24Update -compat to support -compat 8.10Jason Gross
This commit was created via `./dev/tools/update-compat.py --master`
2019-01-24Update update-compat.py scriptJason Gross
We now support --master and --release. On the master branch, we support four compatibility versions, while on releases and release branches, we support only three compatibility versions. We also support --git-add to automatically run `git add` with new and updated files, and to run `git rm` with deleted files.
2019-01-25Move \def\plus and \def\tri to refman-preamble.sty.Tanaka Akira
The definition of \plus and \tri in cic.rst is not effective for HTML output. So, move them into refman-preamble.sty. Also, \tri is renamed to \trii to express the suffix of "\triangleright_\iota".
2019-01-24Merge PR #9384: Improve the note in the beginning of the Ltac chapter.Clément Pit-Claudel
Reviewed-by: cpitclaudel
2019-01-24Add OverlaysMaxime Dénès
2019-01-24[STM] explicit handling of parsing statesEnrico Tassi
DAG nodes hold now a system state and a parsing state. The latter is always passed to the parser. This paves the way to decoupling the effect of commands on the parsing state and the system state, and hence never force to interpret, say, Notation. Handling proof modes is now done explicitly in the STM, not by interpreting VernacStartLemma. Similarly Notation execution could be split in two phases in order to obtain a parsing state without fully executing it (that requires executing all commands before it). Co-authored-by: Maxime Dénès <maxime.denes@inria.fr> Co-authored-by: Emilio Jesus Gallego Arias <e+git@x80.org>
2019-01-24[STM] API to print a Stateid.tEnrico Tassi
2019-01-24Make `Instance` without a body always open a proof.Maxime Dénès
2019-01-24Merge PR #9269: Move and rewrite intro pattern sectionThéo Zimmermann
Ack-by: Zimmi48 Ack-by: anton-trunov Ack-by: jfehrle
2019-01-24Merge PR #9392: Fix small errors in cic.rst.Théo Zimmermann
Reviewed-by: Zimmi48
2019-01-24Merge PR #9394: [nix-ci] MaintenanceThéo Zimmermann
Reviewed-by: SkySkimmer Ack-by: Zimmi48 Reviewed-by: ejgallego Reviewed-by: maximedenes
2019-01-24[nix-CI] Split the build inputsVincent Laporte
Coq and the Coq libraries can now be excluded (by setting the NOCOQ environment variable).
2019-01-24[Nix-ci] Add QuickChickVincent Laporte
2019-01-24[Nix-ci] Fix UnicoqVincent Laporte
2019-01-24[Nix-ci] Add formal-topologyVincent Laporte
2019-01-24Simplify code for Recordops.cs_pattern_of_constrGaëtan Gilbert
This has different behaviour if called on an applied Rel, not sure if that ever happens.
2019-01-24Merge PR #9377: [CS] recognize applied primitive projections as keys (fix #9375)Matthieu Sozeau
Ack-by: SkySkimmer Ack-by: gares Reviewed-by: mattam82 Ack-by: ppedrot
2019-01-24[doc] warn that (automatic) clears can result in errorsEnrico Tassi
2019-01-24[doc] more precise description of when automatic clears are triggeredEnrico Tassi
2019-01-24[doc] explain how to avoid automatic clearsEnrico Tassi
2019-01-24Merge PR #9372: [thread] protect threads against sigalrmEmilio Jesus Gallego Arias
Reviewed-by: ejgallego
2019-01-24Kernel: don't automatically downgrade ill-shaped primitive recordsGaëtan Gilbert
This simplifies reasoning about the kernel code. We still auto downgrade squashed Prop records as the code path to avoid an error is more involved. Alternatively we could produce an error forcing people to Unset Primitive Projections if they want a squashed record.
2019-01-24Skip indirection through Evd for obligation ustate manipulationGaëtan Gilbert
2019-01-24Global [open Univ] in UStateGaëtan Gilbert
2019-01-24add commentEnrico Tassi
2019-01-24use \nO, \nS, etc. fix \kw{n}.Tanaka Akira
\nO, \nS, \evenO, \evenS, \oddS, \length, \Nil and \cons are used. don't use \kw in \kw{n} in Fixpoint typing rule section.
2019-01-24Fix small errors in cic.rst.Tanaka Akira
Fix small errors in cic.rst: * 3.4.1 Free variables: use :math: for "∀ x:T,~U". :g: doesn't show "∀" in PDF. "λx:T.~U" is also changed to :math: to use consistent font. * 3.4.3 Zeta: ":U" added in "let x:=u:U in t" to be valid let-in expression. * 3.4.3 convertibility: add :math: for u_2' to apply math formatting. * 3.4.4.6: fix index. "n" should be "k" because they corresponds k-th constructor. * 3.4.5 Type constructor: I changed the section title "Type constructor" to "Type of constructor". "Type constructor" means a feature to construct new type. But this section describes about a type of constructor. * 3.4.5 Example nattree: The reason of "``nattree`` occurs only strictly positively in ``A``" should be bullet 1 instead of bullet 3. The bullet 3 of strict positivity definition is about product, "∀x ∶ U , V", but "A" is not a product. * 3.4.5 Destructors: use :math: for "∀". :g: doesn't show "∀" in PDF. Also, :math: is used for expressions which has no "∀" character for font consistency. Note that I use \kw{has}\_\kw{length} instead of \kw{has\_length} because the latter is formatted as has\_length in HTML. (the backslash is retained.) * 3.4.5 list example: curly braces added. * 3.4.5 Fixpoint definition: add :math: for Γ_i to apply math formatting. * 3.4.6 2nd rule of First abstracting property: use \subst. This adds a curly brace. Also, spacing and fonts are adjusted as follows. * 3.4.1 let-in term: use :math: for variable x, consistent with other term descriptions. * 3.4.1 let-in term: use \letin command for concrete let-in term. * 3.4.2 Note: insert spaces as ((λ x:T.~u)~t). Since T is more closely reated to x than u, T should be positioned close to x than u. Since it seems most application has a space, I inserted a space here for consistency. * 3.4.3 beta-reduction: insert spaces as 3.4.2. * 3.4.3 eta-expansion: insert spaces as 3.4.2. * 3.4.5 Example: use sans-serif fonts for constructor "O" and "S". * 3.4.5 Fixpoint definition: insert spaces around "with". * 3.4.5 Fixpoint typing rule: fix fonts for "O" and "S" as 3.4.5 and insert spaces as 3.4.2. * 3.4.5 Fixpoint reduction rule: insert a space between {F} and a_1 for consistency. * 3.4.6 First abstracting property: insert spaces as 3.4.2.
2019-01-23Clarify meaning of Primitive ProjectionsDavid A. Dalrymple
The previous language makes it seem as if record parameters are automatically set as implicit for the projection functions, but (per discussion with @jasongross) the omission of parameters from primitive projection only takes effect in Coq's internal AST.
2019-01-23Move and rewrite documentation for intro patterns that was underJim Fehrle
the intros tactic to its own subsection. Add grammar and examples.
2019-01-23Merge PR #9357: Fix recursive loadpath of ML filesEmilio Jesus Gallego Arias
Reviewed-by: ejgallego
2019-01-23merge-pr.sh: fix #9387: quick_conf doesn't work in emacs shell bufferGaëtan Gilbert
2019-01-23Merge PR #9043: [windows] Cleanup cruft from `dev/build/windows`Michael Soegtrop
Reviewed-by: MSoegtropIMC
2019-01-23Merge PR #9270: Turn `Refine instance Mode` off by defaultPierre-Marie Pédrot
Ack-by: SkySkimmer Ack-by: maximedenes Reviewed-by: ppedrot
2019-01-23Pass some files to strict focusing mode.Gaëtan Gilbert
ie default goal selector ! How to do this: - change the default value of default goal selector in goal_select.ml - eval the emacs code in this commit message - compile Coq and in each erroring file repeatedly run [C-c f] (my/maybe-fix-buller-error) then [C-c C-b] (proof-process-buffer) until there are no errors (NB the first [C-c f] has no effect). You need to watch for 2 cases: - overly deep proofs where the bullets need to go beyond the list in my/bullet-stack (6 layers is enough the vast majority of the time though). The system will give you an error and you need to finish the lemma manually. - weird indentation when a bullet starts in the middle of a line and doesn't end in that line. Just reindent as you like then go to the next error and continue. ~~~emacs-lisp (defconst my/bullet-stack (list "-" "+" "*" "--" "++" "**") "Which bullets should be used, in order.") (defvar-local my/bullet-count nil "The value in the car indicates how many goals remain in the bullet at (length-1), and so on recursively. nil means we haven't started bulleting the current proof.") (defvar-local my/last-seen-qed nil) (defun my/get-maybe-bullet-error () "Extract the number of focused goals from the ! selector error message." (when-let* ((rbuf (get-buffer "*response*")) (str (with-current-buffer "*response*" (buffer-string))) (_ (string-match (rx "Error: Expected a single focused goal but " (group (+ digit))) str)) (ngoals (string-to-number (match-string 1 str)))) ngoals)) (defun my/bullet-fix-indent () "Auto indent until the next Qed/Defined, and update my/last-seen-qed." ;; (insert (format "(* %s -> %s *)\n" my/prev-count my/bullet-count)) (when-let ((qed (save-excursion (search-forward-regexp (rx (or "Defined." "Qed.")) nil t)))) (set-marker my/last-seen-qed qed) (indent-region (- (point) 1) qed))) (defun my/nth-bullet (n) "Get nth bullet, erroring if n >= length my/bullet-stack" (or (nth n my/bullet-stack) (error "Too many bullets."))) (defun my/maybe-fix-bullet-error (&optional arg) "Main function for porting a file to strict focusing. Repeatedly process your file in proof general until you get a focusing error, then run this function. Once there are no more errors you're done. Indentation commonly looks bad in the middle of fixing a proof, but will be fixed unless you start a bullet in the middle of a line and don't finish it in that line. ie in 'tac1. - tac2.\n tac3.' tac3 will get indented to align with tac2, but if tac2 finished the bullet the next action will reindent. This is a stateful process. The state is automatically reset when you get to the next proof, but if you get an error or take manual action which breaks the algorithm's expectation you can call with prefix argument to reset." (interactive "P") (unless my/last-seen-qed (setq my/last-seen-qed (set-marker (make-marker) 0))) (when (or arg (> (point) my/last-seen-qed)) (setq my/bullet-count nil) (set-marker my/last-seen-qed 0)) (when-let ((ngoals (my/get-maybe-bullet-error))) (setq my/prev-count (format "%s %s" ngoals my/bullet-count)) (if (= ngoals 0) (progn (while (and my/bullet-count (= (car my/bullet-count) 0)) (pop my/bullet-count)) (insert (concat (my/nth-bullet (- (length my/bullet-count) 1)) " ")) (setq my/bullet-count (cons (- (car my/bullet-count) 1) (cdr my/bullet-count))) (my/bullet-fix-indent)) (setq my/bullet-count (cons (- ngoals 1) my/bullet-count)) (insert (concat (my/nth-bullet (- (length my/bullet-count) 1)) " ")) (my/bullet-fix-indent)))) (bind-key "C-c f" #'my/maybe-fix-bullet-error coq-mode-map) ~~~
2019-01-23Merge PR #9374: Documentation: ring and field simplify can take no argumentsThéo Zimmermann
Reviewed-by: Zimmi48
2019-01-23Fix the information of the level of ; vs ; [ ]Théo Zimmermann
2019-01-23Merge PR #9347: At Qed, if shelved goals remain, emit a warning instead of ↵Pierre-Marie Pédrot
an error Ack-by: maximedenes Reviewed-by: ppedrot
2019-01-23Merge PR #9337: Fixing #9329: registering empty levels in the order they are ↵Emilio Jesus Gallego Arias
computed Reviewed-by: ejgallego
2019-01-23Merge PR #9339: Move plugin tutorial to team ownershipEmilio Jesus Gallego Arias
Reviewed-by: ejgallego Reviewed-by: gares
2019-01-23Improve the note in the beginning of the Ltac chapter.Théo Zimmermann
In particular, add an example to illustrate the associativity of ;
2019-01-23Merge PR #9361: Make prvect tail recursive (fix #9355)Emilio Jesus Gallego Arias
Ack-by: SkySkimmer Reviewed-by: ejgallego
2019-01-23Merge PR #9382: Transfer maintenance of appveyor infrastructure to the CI teamThéo Zimmermann
Reviewed-by: SkySkimmer Reviewed-by: Zimmi48
2019-01-23Merge PR #9239: [ci] [appveyor] Pass -j2 to Appveyor's build and build test ↵Maxime Dénès
suite again
2019-01-22Remove unneeded | in productionlistsJim Fehrle