aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2014-02-26vi2vo: new flag -schedule-vi2voEnrico Tassi
2014-02-26Lazyconstr -> OpaqueproofEnrico Tassi
Make this module deal only with opaque proofs. Make discharging/substitution invariant more explicit via a third constructor.
2014-02-26STM: backup/restore remote countersEnrico Tassi
2014-02-26remoteCounter: backup/restoreEnrico Tassi
When you resume the compilation of a .vi file, you want to avoid collisions on fresh names.
2014-02-26univ: removing dead codeEnrico Tassi
2014-02-26checker and votour ported to new vo format (after -vi2vo)Enrico Tassi
2014-02-26New compilation mode -vi2voEnrico Tassi
To obtain a.vo one can now: 1) coqtop -quick -compile a 2) coqtop -vi2vo a.vi To make that possible the .vo structure has been complicated. It is now made of 5 segments. | vo | vi | vi2vo | contents --------------+------+-----+-------+------------------------------------ lib | Yes | Yes | Yes | libstack (modules, notations,...) opauqe_univs | No | Yes | Yes | constraints coming from opaque proofs discharge | No | Yes | No | data needed to close sections tasks | No | Yes | No | STM tasks to produce proof terms opaque_proofs | Yes | Yes | Yes | proof terms --------------+------+-----+-------+------------------------------------ This means one can load only the strictly necessay parts. Usually one does not load the tasks segment of a .vi nor the opaque_proof segment of a .vo, unless one is turning a .vi into a .vo, in which case he load all the segments. Optional segments are marshalled as None. But for lib, all segments are Array.t of: | type --------------+--------------------------------------------------------- lib | a list of Libobject.obj (n'importe quoi) opauqe_univs | Univ.consraints Future.computation discharge | what Cooking.cook_constr needs tasks | Stm.tasks (a task is system_state * vernacexpr list) opaque_proofs | Term.constr Future.computation --------------+------+-----+-------+------------------------------------ Invariant: all Future.computation in a vo file (obtained by a vi2vo compilation or not) have been terminated with Future.join (or Future.sink). This means they are values (inside a box). This invariant does not hold for vi files. E.g. opauqe_proofs can be dangling Future.computation (i.e. NotHere exception). The vi2vo compilation step will replace them by true values. Rationale for opaque_univs: in the vi2vo transformation we want to reuse the lib segment. Hence the missing pieces have to be put on the side, not inside. Opaque proof terms are already in a separte segment. Universe constraints are not, hence the new opauqe_univs segment. Such segment, if present in a .vo file, is always loaded, and Declare.open_constant will add to the environment the constraints stored there. For regular constants this is not necessay since the constraints are already in their enclosing module (and also in the constant_body). With vi2vo the constraints coming from the proof are not in the constant_body (hence not in the enclosing module) but there and are added to the environment explicitly by Declare.open_constant. Rationale for discharge: vi2vo produces a proof term in its original context (in the middle of a section). Then it has to discharge the object. This segment contains the data that is needed in order to do so. It is morally the input that Lib.close_section passes to Cooking (via the insane rewinding of libstack, GlobalRecipe, etc chain). Checksums: the checksum of .vi and a .vo obtain from it is the same. This means that if if b.vo has been compiled using a.vi, and then a.vi is compiled into a.vo, Require Import b works (and recursively loads a.vo).
2014-02-26votour: better error messagesEnrico Tassi
2014-02-26checker: less useless error messagesEnrico Tassi
2014-02-26fix checker w.r.t. mutual_inductive_body and constant_bodyEnrico Tassi
discrepancy introduced in commit d3eac3d5fc8e5af499eb8750ca08ead8562dac6f
2014-02-26fix checker w.r.t. Dyn.t validationEnrico Tassi
discrepancy introduced in commit 400327165edcba667ebb70ebb89052455656b719
2014-02-26Future: make ~greedy:true the default + new sink commodity APIEnrico Tassi
2014-02-26Future: each computation has a uuidEnrico Tassi
2014-02-25Tacinterp: remove the is_value check in Ltac's let-in.Arnaud Spiwack
It fixes micromega. It is frankly a mystery to me why psatz ever work. The semantics of Ltac's match is still fishy.
2014-02-25Tacinterp: fewer enterl still.Arnaud Spiwack
2014-02-25Tacinterp: fewer Proofview.Goal.enterl.Arnaud Spiwack
I'm trying to avoid unecessary construction of intermediate lists. Interpretation function don't modify the goals, they just need a goal in their context. Some care has to be given to the evar maps, though, as we can extract an outdated evar map from a goal (this is probably an undesirable feature, but significantly simplified the compatibility API). Also, Proofview.Goal.enter{,l} catch exceptions (and transfer the non-critical ones into errors of the tactics monad). So I had to do just that for every "enter" removed (I probably have been overprotective but it's better that way). Not as trivial a modification as it should, but it will hopefully go over well. It was much needed anyway.
2014-02-25Tacinterp: clean up.Arnaud Spiwack
2014-02-25Tacinterp: remove unnecessary return/bind pairs.Arnaud Spiwack
2014-02-25Fixing printing of only_parsing notations.Pierre-Marie Pédrot
2014-02-24TacticMatching: avoid some closure allocation in (<*>).Arnaud Spiwack
2014-02-24Removed some trailing whitespaces.Arnaud Spiwack
2014-02-24IStream: more efficient implementation of concat_map.Arnaud Spiwack
2014-02-24IStream: a concat_map primitive.Arnaud Spiwack
2014-02-24IStream: change type of thunk, spare allocations.Arnaud Spiwack
Two changes: - 'a Lazy.t becomes unit -> 'a - 'a t becomes 'a u (the view type) This spares two Lazy.force, and leverages Lazy.lazy_from_fun. Considering Lazy.force is fairly slow, in particular because of the write-barrier, this should be beneficial.
2014-02-24IStream: remove a useless Obj.magic.Arnaud Spiwack
Lazy.lazy_from_val does almost the same thing as this Obj.magic. It makes some extra dynamic check, but it's frankly unlikely that it could be observed.
2014-02-24A view type for IStream.Arnaud Spiwack
View types are better practice than option types for pattern-matching. (Plus, they save a minute amount of allocations)
2014-02-24Ensuring that the module Stack is opaque inside Reductionops.Pierre-Marie Pédrot
2014-02-24make coqide-binaries does not build coqtop anymorePierre Boutillier
2014-02-24fixup complement FinPierre Boutillier
2014-02-24cbn understands ArgumentsPierre Boutillier
(excepts list of args that must be constructors
2014-02-24Simpl_behaviour becomes Reductionops.ReductionBehaviourPierre Boutillier
syntax mentionning simpl remains
2014-02-24Dead Code eliminationPierre Boutillier
2014-02-24Create Debug Unification optionPierre Boutillier
to dump states that Evarconv.eq_appr_x tries to unify.
2014-02-24Fix coqide build under MacOSPierre Boutillier
2014-02-24No more translation array <-> list in Reductionops.StackPierre Boutillier
2014-02-24Reductionops.Stack.strip* are ready to deal with ShiftPierre Boutillier
2014-02-24Reductionops.Stack.app_node is secretPierre Boutillier
2014-02-24app_node, stack, state printersPierre Boutillier
2014-02-24Stack operations of Reductionops in Reductionops.StackPierre Boutillier
2014-02-24Fix grammatical mistake in error message (bug #3238)xclerc
2014-02-21More sharing in Logic, together with some code cleaning.Pierre-Marie Pédrot
2014-02-20Optimization in kernel/vars.ml: directly allocate a fixed-size block in thePierre-Marie Pédrot
subst1 case.
2014-02-17CoqIDE: when coqtop misbehaves kill it properly (no zombie)Enrico Tassi
2014-02-17[nanoPG]: emacs like copy/pasteEnrico Tassi
2014-02-16Removing non-marshallable data from the Agram constructor. Instead ofPierre-Marie Pédrot
containing opaque grammar objects, it now contains a string representing the entry. In order to recover the entry from the string, the former must have been created with [Pcoq.create_generic_entry] or similar. This is guaranteed for entries generated by ARGUMENT EXTEND, and must be done by hand otherwise. Some plugins were fixed accordingly.
2014-02-14fast correction of bug #3234Julien Forest
2014-02-12TC: honor the use_typeclasses flag in pretypingEnrico Tassi
The coercion code was not seeing such flag and always trying to resolve type classes. In particular open_contr is pretyped without type classes.
2014-02-11Made Pre_env.lazy_val opaque.Pierre-Marie Pédrot
2014-02-10Timeout and Set Default Timeout fixed (closes: #3229)Enrico Tassi
2014-02-10STM: fix valid_id coming from Qed errorsEnrico Tassi