| Commit message (Collapse) | Author | Age |
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
hash-consing, so as to avoid having too many kinds of equalities with
same name.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
constant/inductive/constructor kernel_name pairs rather than viewing
them from only the user or canonical part.
Hopefully more uniformity in Constr.hasheq (using systematically == on
subterms).
A semantic change: Cooking now indexing again on full pairs of kernel
names rather than only on the canonical names, so as to preserve user
name.
Also, in pair of kernel names, ensuring the compact representation is
used as soon as both names are the same.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
in 8.4 with the schemes of the subcomponent of an inductive added to
the environment or discharged as let-ins over the main scheme.
As of today, decidable-equality schemes are built when calling
vernacular command (Inductive with option Set Dedicable Equality
Schemes, or Scheme Equality), so there is no need to discharge the
sub-schemes as let-ins. But if ever the schemes are built from within
an opaque proof and one would not like the schemes and a fortiori the
subschemes to appear in the env, the new addition of a parameter
internal_flag to "find_scheme" allows this possibility (then to be set
to KernelSilent).
|
|
|
|
|
|
| |
Auto_ind_decl over the internal lemmas. The schemes are built in the
main process and the internal lemmas are actually already also in the
environment.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
capturing bound names unexpectingly).
We moved renaming to after finding bindings, i.e. in pretyping
"fun x y => x + y" in an ltac environment where y is ltac-bound to x,
we type the body in environment "x y |-" but build "fun y y => Rel 2 + Rel 1"
(which later on is displayed into "fun y y0 => y + y0").
We renounced to renaming in "match" patterns, which was anyway not
working well, as e.g. in
let x := ipattern:y in (forall z, match z with S x => x | x => x end = 0).
which was producing
forall z : nat, match z with 0 => z | S y => y end = 0
because the names in default branches are treated specifically.
It would be easy to support renaming in match again, by putting the
ltac env in the Cases.pattern_matching_problem state and to rename the
names in "typs" (from build_branch), just before returning them at the
end of the function (and similarly in abstract_predicate for the names
occurring in the return predicate).
However, we rename binders in fix which were not interpreted.
There are some difficulties with evar because we want them defined in
the interpreted env (see comment to ltac_interp_name_env).
fix ltac name
|
|
|
|
|
|
|
| |
considering trivial unifications "?x = t" in tactics working under
conjunctions (see #3545).
Also updating and fixing wrong comments in test apply.v.
|
|
|
|
| |
applying a component of the tuple.
|
|
|
|
|
| |
command line. Documenting only the former for simplicity and
uniformity with predating option -with-geoproof.
|
|
|
|
| |
In particular, fix the name of all the user contributions.
|
| |
|
|
|
|
|
| |
Also remove AsyncProofs.tex from the list of preprocessed files, as it is
doubtful it will ever contains Coq scripts.
|
| |
|
|
|
|
|
|
| |
The hash function exported by the interface ought to respect the equality.
Therefore, we only use the syntactic hash for the hashconsing module while
using the canonical hash in the API.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
breaking backtracking in the presence of functors).
In "interactive" rather than "bugs" because of the use of Back.
|
|
|
|
|
|
|
|
|
|
|
| |
compatible with a unique bound module name counter which is not
synchronous with the backtracking).
We changed hash-consing of kernel name pairs to a purely memory
management issue, not trying to exploit logical properties such as
"syntactically equal user names have syntactically same canonical
names" (which is true in a given logical session, but not in memory,
at least because of residual values after backtracking).
|
|
|
|
| |
too many of them).
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Characters do not need to be escaped in character ranges. It just had the
effect of matching backslashes four times.
|
| |
|
|
|
|
|
|
|
|
| |
"This function is deprecated: the runtime system is now able to print
uncaught exceptions as precisely as Printexc.catch does. Moreover, calling
Printexc.catch makes it harder to track the location of the exception
using the debugger or the stack backtrace facility. So, do not use
Printexc.catch in new code."
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before this commit, coq-tex was reading the .v file and was guessing how
many lines from the coqtop output it should display. Now, it reads the
coqtop output and it guesses how many lines from the .v file it should
display. That way, coq-tex no longer needs to embed a parser; it relies
on coqtop for parsing.
This is much more robust and makes it possible to properly handle script
such as the following one:
Goal { True }
+ { False }.
{ left. exact I. }
As before, if there is a way for a script to produce something that looks
like a prompt (that is, a line that starts with "foo < "), coq-tex will be
badly confused.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
The universe instance of the constant was simply dropped by the function
interpreting generalizing binders.
|
| |
|
|
|
|
|
| |
We postpone the rewriting of hypothesis until we actually commit to one
branch instead of doing it upfront.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is only a heuristic and it might cause the tool to become awfully
confused if a line ends with "}" yet this is not the end of a tactic
block. Fixing it would require a full-blown Coq parser inside coq-tex.
Example of crazy output:
Coq < Goal { True }
Coq < 1 subgoal
============================
{True} + {False}
Coq < + { False }.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Commit dc438047 was a bit overlooked as it introduced a wrong comparison function
on term patterns in dnets. Strangely enough, it seems not to have wreaked havoc
that much compared to the severity of the error.
|
|
|
|
|
|
|
|
| |
File system.ml seemed like a better choice than util.ml for sharing the
code, but it was bringing a bunch of useless dependencies to the IDE.
There are presumably several other tools that would benefit from using
open_utf8_file_in instead of open_in, e.g. coqdoc.
|
| |
|