#
e25cb472 |
|
03-Sep-2020 |
Michael Norrish <michael.norrish@data61.csiro.au> |
Implement and document new irule_at tactic
|
#
74964143 |
|
09-Aug-2020 |
Michael Norrish <michael.norrish@data61.csiro.au> |
Move some of the machinery behind BasicProvers.VAR_EQ_TAC to Tactic
|
#
e74b9be8 |
|
10-Jul-2020 |
Michael Norrish <michael.norrish@data61.csiro.au> |
Extend drule family with rev_ and _at options rev_ causes search for assumptions to start at opposite end of list (i.e., uses last{_x,}_assum), and _at allows specification of which hypothesis in the implicational theorem to match against.
|
#
1f5a1e14 |
|
29-Jun-2020 |
Michael Norrish <michael.norrish@data61.csiro.au> |
Promote mp_then and resolve_then to be exported by Tactic Keep their implementations in separate files for the sake of self-containedness.
|
#
f44b2f43 |
|
18-Feb-2018 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Implement & document controlled resolution tactics (drule & friends)
|
#
870a67c3 |
|
22-Jan-2018 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Implement impl_{keep_,}tac with new provehyp_then primitive The underlying primitive allows obvious generalisations of the impl tactics, such as pulling from assumptions and passing the resulting theorems to different continuation thm-tactics.
|
#
baf6c825 |
|
19-Oct-2017 |
Mario [Castelán Castro] <marioxcc@example.org> |
Add lowercase alias of “DISCH_TAC”.
|
#
f969d86b |
|
05-Oct-2017 |
Andreas Lööw <AndreasLoow@users.noreply.github.com> |
Various doc fixes
|
#
ad0c4d49 |
|
25-Jun-2017 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Move Q.ID_EX_TAC to Tactic. ID_EX_TAC doesn't take any arguments, let alone a quotation, so doesn't belong in Q. Closes #359
|
#
115e3ce5 |
|
21-Mar-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Define part_match_exists_tac This tactic allows users to specify bindings for existential variables in goals by providing a term to match against some part of the body under the existentials.
|
#
c7e38180 |
|
20-Mar-2016 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Define tactics to apply implication-L rule backwards Rule is sequent calculus's: Γ ⊢ P Γ, Q ⊢ R ---------------------- Γ, P ==> Q ⊢ R Implementation assumes that goal is of the form (P ==> Q) ==> R (rather than with P ==> Q in the assumptions). The impl_keep_tac version also adds P as an assumption to the second sub-goal. (From CakeML.)
|
#
5b282aae |
|
06-Dec-2015 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
More moving lcsymtacs implementations elsewhere Eventually lcsymtacs will just be a bunch of 'open' declarations, and then people won't bother to include it at all.
|
#
48bce6f2 |
|
04-Dec-2015 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Move some tactics from lcsymtacs to Tactic{,al} As per Github issue #274
|
#
345e1213 |
|
25-Nov-2015 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Expose and document IRULE_CANON. This function is similar to MP_CANON (which is undocumented), and normalises theorems to make them usable as introduction rules (as is done by the irule tactic). Also tweak irule's documentation to better reflect this implementation. Finally, give irule an alias in Tactic as IRULE_TAC.
|
#
d38bfe3c |
|
31-Mar-2015 |
Jeremy Dawson <jeremy@cecs.anu.edu.au> |
new tactic RULE_L_ASSUM_TAC like RULE_ASSUM_TAC but f produces list of theorems
|
#
36edf2ba |
|
25-Mar-2015 |
Jeremy Dawson <jeremy@cecs.anu.edu.au> |
renamed prim_irule_tac to prim_irule
|
#
c9dd804e |
|
25-Mar-2015 |
Jeremy Dawson <jeremy@cecs.anu.edu.au> |
Tactic.irule, also prim_irule_tac and Drule.SPEC_UNDISCH_EXL
|
#
32bf1e49 |
|
02-Feb-2015 |
Piotr Trojanek <piotr.trojanek@gmail.com> |
extra semicolons removed from (some) .sig files
|
#
e5e35f62 |
|
18-Feb-2013 |
Vincent Aravantinos <vincent@encs.concordia.ca> |
Added HINT_EXISTS_TAC.
|
#
8a179c38 |
|
01-Jun-2011 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Implement & use a generic tactic to apply "deep" introduction rules. A "deep" intro rule is one that looks like sideconds ==> P (someterm) The P is a variable and so the P (someterm) pattern can be seen as a way to match any term that has someterm within it as a sub-term. Example rules of this form are boolTheory.SELECT_ELIM_THM, whileTheory.LEAST_ELIM and optionTheory.some_intro. (It's a shame the names for the older theorems feature "ELIM" as substrings; these are clearly introduction rules.) We can't use normal first-order matching, nor higher-order patterns to match such patterns. Instead, the code performs a search through the term, looking for first-order matches of someterm. In both LEAST_ELIM_TAC and SELECT_ELIM_TAC, the search was done by find_terms; the new implementations of these functions work through the term in a different, but now well-specified order: top-down, left-to-right. If there are multiple matches in a term, and it makes a difference what one you get, you should use DEEP_INTROk_TAC, which takes a tactic 'continuation'. If this tactic fails with a HOL_ERR when applied to the resulting goal-state, then DEEP_INTROk_TAC tries again on a different sub-term, if there is one. I will write proper documentation for this all shortly.
|
#
1bc9f344 |
|
13-Jan-2011 |
Michael Norrish <Michael.Norrish@nicta.com.au> |
Change src/bool to src/1 as a prelude to experimentation!
|