aboutsummaryrefslogtreecommitdiff
path: root/plugins
AgeCommit message (Collapse)Author
2017-05-22ROmega : O_STATE turned into a O_SUMPierre Letouzey
We benefit from the fact that we normalize now *all* hypotheses even the one defining the "stated" variable: it is produced as ...def of v... = v and normalized as -v + ...def of v... = 0 which is precisely what we should add to the initial equation during a O_STATE.
2017-05-22ROmega: less contructors in the final omega tracePierre Letouzey
Now that O_SUM is properly optimized (cf. the [fusion] function), we could use it to encode CONTRADICTION and NEGATE_CONTRADICT(_INV). This way, the trace has almost the same size, but ReflOmegaCore.v is shorter and easier to maintain.
2017-05-22ROmega : merge O_CONSTANT* into a single O_BAD_CONSTANTPierre Letouzey
2017-05-22ReflOmegaCore: reverse some integer mult (coefs k1,k2 will often be simple)Pierre Letouzey
2017-05-22ReflOmegaCore: comment, reorganize, permut some constructors, etcPierre Letouzey
2017-05-22romega: add a tactic named unsafe_romega (for debugging, or bold users)Pierre Letouzey
In this variant, the proof term produced by romega isn't verified at the tactic run-time (no vm_compute). In theory, [unsafe_romega] should behave exactly as [romega], but faster. Now, if there's a bug in romega, we'll be notified only at the following Qed. This could be interesting for debugging purpose : you could inspect the produced buggish term via a Show Proof.
2017-05-22romega: no more normalization trace, replaced by some Coq-side computationPierre Letouzey
This is a major change : - Generated proofs are quite shorter, since only the resolution trace remains. - No time penalty mesured (it even tends to be slightly faster this way). - Less infrastructure in ReflOmegaCore and refl_omega. - Warning: the normalization functions in ML and in Coq should be kept in sync, as well as the variable order. - Btw: get rid of ML constructor Oufo
2017-05-22romega/const_omega : a few improvements (less try with, no gen equality)Pierre Letouzey
2017-05-22romega: use N instead of nat for TvarPierre Letouzey
In a coming commit, we'll normalize terms by a Coq function that will compare Tvar's instead of blindly applying a trace, so let's speed-up these comparisons.
2017-05-22romega: shorter trace (no more term lengths)Pierre Letouzey
2017-05-22refl_omega: refactoring of normalize_equationPierre Letouzey
2017-05-22ReflOmegaCore: lots of dead code + a few refactored proofsPierre Letouzey
2017-05-22romega: if it bugs again, at least do it with a short and quick errorPierre Letouzey
2017-05-22refl_omega: comment the lack of lifts when dealing with arrowsPierre Letouzey
2017-05-22romega: discard constructor D_mono (shorter trace + fix a bug)Pierre Letouzey
For the bug, see new test test_romega10 in test-suite/success/ROmega0.v.
2017-05-22refl_omega: more refactoring (e.g. IntSets instead of sorted lists)Pierre Letouzey
2017-05-22refl_omega: refactoring (e.g. useless args in destructurate_pos_hyp)Pierre Letouzey
2017-05-22ReflOmegaCore: discard useless cosntructor P_NOPPierre Letouzey
2017-05-22ReflOmegaCore: revised proofs (mostly bullets instead of ;[|||])Pierre Letouzey
2017-05-22Using type classes in the interpretation of "specialize" and "contradiction".Hugo Herbelin
We do that by using constr_with_bindings rather than open_constr_with_bindings (+ extra call to typeclasses in "specialize"). If my understanding is right, the only effect would be to succeed more in cases where it was failing (in inh_conv_coerce_to_gen). In particular, "specialize" and "contradiction" already have a WITHHOLES test for rejecting pending holes. Incidentally, this answers enhancement #5153.
2017-05-22Clarifying the interpretation path for the "constr_with_binding" argument.Hugo Herbelin
This fixes an inconsistency introduced in 554a6c806 (svn r12603) where both interp_constr_with_bindings and interp_open_constr_with_bindings were going through interp_open_constr (no type classes so as to not to commit too early on irreversible choices, accepting unresolved holes). We fix this by having interp_constr_with_bindings going to interp_constr (using type classes and failing on unresolved evars). The external impact is that any TACTIC EXTEND which refers to constr_with_binding has now to decide whether it intends it to use what the name suggest (using type classes and to fail if evars remain unresolved), thus keeping constr_with_binding, or the actual behavior which requires to use open_constr_with_bindings for strict compatibility.
2017-05-19Merge branch 'master' into ltac2-hooksPierre-Marie Pédrot
2017-05-18Add .dir-locals.el to pluginsJason Gross
As requested in https://github.com/coq/coq/pull/386#issuecomment-302358542
2017-05-17Merge PR#633: An extension of EXTEND and notations to make standard parsing ↵Maxime Dénès
tricks available to users
2017-05-17Merge PR#607: Make congruence reuse discriminate instead of rolling its own.Maxime Dénès
2017-05-16Fixing grammar for "evar" by exporting the test_lpar_id_colon trick to EXTEND.Hugo Herbelin
2017-05-16Adding support for using grammar entries returning no value in EXTEND.Hugo Herbelin
2017-05-13Typo in a comment of plugin Quote.Hugo Herbelin
2017-05-11Merge PR#201: Transparent abstractMaxime Dénès
2017-05-09Merge PR#612: Set Ltac Batch DebugMaxime Dénès
2017-05-09Prevent user-defined ring morphisms from ever being evaluated.Guillaume Melquiond
2017-05-04Adding an option "Set Ltac Batch Debug" to additionally run Ltac debug in ↵Hugo Herbelin
batch mode.
2017-05-03Generalizing the tactic-in-term embedding to any generic argument.Pierre-Marie Pédrot
2017-05-03Allowing to pass arbitrary data in internalization environments.Pierre-Marie Pédrot
2017-05-03Make congruence reuse discriminate instead of rolling its own.Gaetan Gilbert
This changes the produced terms a bit, eg Axiom T : Type. Lemma foo : true = false -> T. Proof. congruence. Qed. used to produce fun H : true = false => let Heq := H : true = false in @eq_rect Type True (fun X : Type => X) I T (@f_equal bool Type (fun t : bool => if t then True else T) true false Heq) now produces fun H : true = false => let Heq : true = false := H in let H0 : False := @eq_ind bool true (fun e : bool => if e then True else False) I false Heq in False_rect T H0 i.e. instead of proving [True = T] by [f_equal] then transporting [I] across this identity, it now proves [False] by [eq_ind] then uses exfalso.
2017-04-27Post-rebase warnings (unused opens and 2 unused values)Gaetan Gilbert
2017-04-27Fix 4.04 warningsGaetan Gilbert
2017-04-27Remove unused [open] statementsGaetan Gilbert
2017-04-27Micromega: do not use Filename.temp_dir_path, remove unused valuesGaetan Gilbert
2017-04-27Remove unused constructorsGaetan Gilbert
2017-04-27Add [_] prefix to unused values which maybe should be keptGaetan Gilbert
2017-04-27Remove some unused values and typesGaetan Gilbert
2017-04-27Rename Sos_lib.(||) -> parser_or to avoid (deprecated) Pervasives.orGaetan Gilbert
2017-04-27Disambiguate Polynomial.Hyp and Mfourier.Hyp -> AssumGaetan Gilbert
2017-04-27Fix omitted labels in function callsGaetan Gilbert
2017-04-27Remove unused [rec] keywordsGaetan Gilbert
2017-04-27Merge PR#568: Remove tactic compatibility layerMaxime Dénès
2017-04-25Add transparent_abstract tacticJason Gross
2017-04-25Merge PR#578: Fix nsatz not recognizing real literals.Maxime Dénès
2017-04-25[location] [ast] Port module AST to CAstEmilio Jesus Gallego Arias