| Age | Commit message (Collapse) | Author |
|
avoiding the introduction of eta-redexes. Prioritize hints over intros
in typeclass resolution to profit from that.
Add a minor fix in coqdoc by F. Garillot.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12550 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
- backtrack on incompatibility introduced in intro while trying to
simplify the condition about when to restart the subscript of a name
(the legacy says: find a new name from x0 if the name xN exists in
the context but find a new name from xN+1 if the name xN does not
exists in the context but is a global to avoid).
- made the names chosen by "intro" compliant with the ones printed in
the goal and used for "intros until" (possible source of rare
incompatibilities) [replaced the use of visibly_occur_id for
printing the goal into a call to next_name_away_in_goal]
- also made the names internal to T in "T -> U" printed the same in
the goal as they are while printing T after it is introducted in the
hypotheses [non contravariant propagation of boolean isgoal in
detype_binder]
- simplified a bit visibly_occur_id (the Rel and Var cases were useless as
soon as the avoid list contained the current env); still this function is
costly with polynomial time in the depth of binders
- see file output/Naming.v for examples
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12549 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
the generalization tactic.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12548 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
Now that backtracking is working correctly, we need to avoid a
non-termination issue introduced by the [RelCompFun] definition in
RelationPairs, by adding a [Measure] typeclass. It could be used to have
a uniform notation for measures/interpretations in Numbers and be but in
the interfaces too, only the mimimal change was implemented.
Fix syntax change in test-suite scripts.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12547 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
Fixed some bugs in -beautify and robustness of {struct} clause.
Note: I tried to make the Automatic Introduction mode on by default
for version >= 8.3 but it is to complicated to adapt even in the
standard library.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12546 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
typeclass resolution. Fixes a bug reported by Eelis van der Weegen.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12545 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12544 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
naming heuristic). Added a corresponding test.
Note: maybe should the generated .v file for exporting the theory be made
of a valid ident if ever coqdoc eventually follows coq convention:
currently it has name foo.theory.v which is not coqc-compilable.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12543 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12542 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
Improve generalization by equalities tactic, now allowing to
generalize an arbitrary application, e.g. in preparation for applying an
elimination principle for a function. This adds a flag to generalize_dep
so that it doesn't abstract the variable if it is defined, just
introducing a let-in.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12541 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12540 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
Sentences are locked up to the period, and it's now possible to eval
when there is no final whitespace. CoqIde will refuse to evaluate
further if there is no whitespace, though.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12539 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
only when necessary. Hopefully should speed up [auto] a little.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12538 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
into coqtop.
Also, some cleaning in ide/gtk_parsing.ml.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12537 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12536 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
NZAddPropFunct in NZAdd.v
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12535 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
NZBase -- NZAdd -- NZMul
| |
NZOrder ---------- NZAddOrder -- NZMulOrder -- NZProperties
This is done by transforming NZBase into a
functorial module type, and making NZAdd NZMul NZOrder
accept an instance of NZBase as parameter. This is possible
thanks to a combination of various new features of modules:
- interactive proofs in module type (ie functors can be
turned into type functors)
- Include Type in Module (ie type functors can be turned
into functors)
- Include Self, <+ , etc, etc...
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12534 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
Elie suggested this change, it seems that there are no real reasons
to forbid interactive proofs in module types. A functor can now
be written with Module Type, and can hence be used later as
parameter of other functors (while it can also be translated to
regular functor by a Include Type in a Module). See next commit for
a example of diamond-shape developpement that become possible with
this feature.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12533 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
Any place where <: was legal can now contain many <: declarations.
Moreover we can say that the module type we are declaring is a subtype
of an earlier module type. See DecidableType2 for examples.
Also try to handle correctly the freeze/unfreeze summaries
when simulating start/include/end (syntax ... := ... <+ ...)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12532 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
"Module M (...) := M1 <+ M2 <+ M3 <+ ..." is now a shortcut for
"Module M (...). Include M1. Include M2. Include M3... End M."
Moreover M2,M3,etc can be functors as long as they find what they need in what
comes before them (see new command "Include Self").
The only real constraint is that M1,M2,M3,... should not have common elements
(for the moment (?)).
Same behavior for signature : Module Type M := M1 <+ M2 <+ M3.
Note that this <+ is _not_ a primitive construct of the module language,
for instance it cannot be used in signature (Module M <: M1 <+ M2 is
illegal for the moment).
Some example of use in Decidable2 and NZAxioms
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12530 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
We can now have a diamond-like approch to extentions of signatures,
instead of a linear-only chains as earlier...
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12529 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
If you have some Module Type F (X:Sig), and you are in a Module Type
containing everything required to satisfy Sig (typically thanks to
some earlier Include), then you can say Include Self Type F, and voila,
objects of F are now added in your context, instantiated by local objects.
Same behavior (hopefully) for modules and functors when using Include Self F.
This experimental new command allows to easily produce static signatures
out of functorial ones:
Module Type F_static. Include Sig. Include Self F. End F_static.
... is similar to ...
Module Type F_static. Declare Module X:Sig. Include F X. End F_static.
... but without the pollution of this artificial inner module X.
This allow to split things in many othogonal components, and then mix them.
It is a lightweight way to tackle the "diamond problem" of modular
developpements without things like "overlapping" Include's (planned, but
not yet there). See next commit for an example of use.
Thanks to Elie for the debugging of my first ugly prototype...
NB: According to Yann R.G., this is related with Scala's Traits.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12528 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
synonyms in Le.v, Lt.v, Gt.v.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12527 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12526 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
[Generalizable (All|No) Variables (ident+)?], also update
type classes documentation to reflect the latest changes
in instance decls. Fix a bug in [Util.list_split_when].
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12525 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
expected, not introducing the [forall ...] variables to avoid
unnecessary eta-expansions. Force to use { } in instance declarations
when the class is a record even if it's a singleton.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12524 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12523 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12522 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12521 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12520 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12519 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12518 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
Sentence extraction and proof folding is now done with tags. The lexer
has been modified to use a callback to "stamp" the lexical constructs
that must be distinguished.
new funcs in ide/coqide.ml :
apply_tag : GText.buffer -> GText.iter -> (int -> int) ->
int -> int -> CoqLex.token -> unit
remove_tags : GText.buffer -> GText.iter -> GText.iter -> unit
tag_slice : GText.buffer -> GText.iter -> GText.iter ->
(GText.buffer -> GText.iter -> GText.iter) -> unit
get_sentence_bounds : GText.iter -> GText.iter * GText.iter
end_tag_present : GText.iter -> bool
tag_on_insert : GText.buffer -> unit
force_retag : GText.buffer -> unit
toggle_proof_visibility : GText.buffer -> GText.iter -> unit
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12517 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12516 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
the applied module did not
fulfill the signature of the functor argument. Now Coq gives an understandable error message.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12515 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
changes in obligations.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12514 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12513 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
versions de OCaml antérieures à 3.11.0)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12512 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12511 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12510 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12508 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
- In fact, Bind Scope has no retrospective effect. Since we don't want
it inside functor, we use it late, and hence we are forced to use manual
"Arguments Scope" commands.
- Added syntax for power in BigN / BigZ / BigQ.
- Added syntax p#q in BigQ for representing fractions (constructor BigQ.Qq)
as in QArith. Display of a rational numeral is hence either an integer
(constructor BigQ.Qz) or something like 6756 # 8798.
- Fix of function BigQ.Qred that was not simplifing (67#1) into 67.
- More tests in test-suite/output/NumbersSyntax.v
A nice one not in the test-suite:
Time Eval vm_compute in BigQ.red ((2/3)^(-100000) * (2/3)^(100000)).
= 1
: bigQ
Finished transaction in 3. secs (3.284206u,0.004s)
:-)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12507 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
abbreviations of applied references.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12506 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12505 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
on the way:
- Added a testsuite output file
- Try to avoid nasty unfolding (fix nfun ...) in type of I31.
Idealy we would need a "Eval compute in" for the type of a inductive
constructor
- Stop opening Scopes for BigQ, BigN, BigZ by default
The user should do some Open Scope.
TODO: there's a bug that prevent BigQ.opp to have arg in bigQ_scope
(and so on for other operations), even with some Bind Scope around.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12504 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
As show by contrib TreeAutomata, the Peqb now placed in BinPos
was using 1st arg as "struct", instead of 2nd arg as earlier.
Fix that, and remove the "Import BinPos BinNat" hack in Ndec
(merci Hugo :-).
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12503 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12502 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
"eq"-rewriting (a few contributions are still referring explicitly to
eq_rect, eq_ind and co and the new mechanism, though working also for
dependent rewriting, is not powerful enough in general wrt fixpoint
guard to claim being uniformly better).
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12501 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12500 85f007b7-540e-0410-9357-904b9bb8a0f7
|
|
compatibility of a more robust check of unconvertibility when
providing "with" arguments to "apply").
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12499 85f007b7-540e-0410-9357-904b9bb8a0f7
|