History log of /seL4-l4v-master/HOL4/src/1/Tactic.sml
Revision Date Author Comments
# 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.


# d2d6d792 21-May-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Change irule to not include a rpt conj_tac effect

Closes #465


# 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”.


# 4888f523 15-Oct-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Remove eqtype declaration for term type


# e42271db 23-Aug-2017 Heiko Becker <hbecker@mpi-sws.org>

Change behavior of MATCH_MP_TAC to fail only when being applied to an actual goal-state, instead of failing when given the first parameter


# 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


# 4a68817b 15-Jul-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix build errors prompted by goal_assum


# 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.)


# 332af513 13-Mar-2016 Brian Campbell <bacam@z273.org.uk>

Make COND_CASES_TAC handle repeated use of guard properly


# 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.


# 63eb9911 11-Nov-2015 Michael Norrish <Michael.Norrish@nicta.com.au>

Remove some code now unused (as of 934bff32ef1)


# 06752ed9 11-Nov-2015 Michael Norrish <Michael.Norrish@nicta.com.au>

Tweak order of subgoal-conjuncts produced by irule

Gets uses in sortingTheory to work again


# 934bff32 11-Nov-2015 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix bug in irule found by Jeremy.

Wasn't collapsing groups of assumptions together in terms of their
shared free variables correctly.


# ccf910c6 05-Nov-2015 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix irule to handle input thms with hyps better

As per selftests. Other possible differences will be in ordering of new
subgoal, and distribution of existentials over those subgoals.


# b54e6e27 02-May-2015 Jeremy Dawson <jeremy@cecs.anu.edu.au>

new irule, order of new subgoals is consistent,

regardless of how the substitution may change the internal
order of hypothesis in the argument theorem

also new tactical ADD_SGS_TAC - like VALIDATE
but new terms to be proved need to be specified


# bc9e1177 05-Apr-2015 Jeremy Dawson <jeremy@cecs.anu.edu.au>

trivial simplification - uses match_term, not match_terml


# 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


# f63ebdcc 29-Mar-2015 Jeremy Dawson <jeremy@cecs.anu.edu.au>

change irule to do GEN_ALL to argument theorem first

links from help pages for MATCH_{ACCEPT,MP}_tac to [prim_]irule


# c3e3e54e 25-Mar-2015 Michael Norrish <Michael.Norrish@nicta.com.au>

Delete trailing whitespace in src/


# 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


# eccd9ac2 11-Jan-2015 Jeremy Dawson <jeremy@cecs.anu.edu.au>

infix THEN_LT - hopefully in the right place now

see comments on https://github.com/HOL-Theorem-Prover/HOL/pull/221


# 86638303 31-Dec-2014 Jeremy Dawson <jeremy@cecs.anu.edu.au>

infix declaration for THEN_LT in Tactic.sml

not sure why this is needed - builds here without it, but not on GitHub;
and clearly not needed for THEN in Tactic.sml


# d0041320 31-Dec-2014 Jeremy Dawson <jeremy@cecs.anu.edu.au>

re-implement CONJ_ASM1_TAC, CONJ_ASM2_TAC using USE_SG_THEN

now one-line implementation of these tactics


# 0e21ee01 14-Oct-2014 Piotr Trojanek <piotr.trojanek@gmail.com>

HO_MATCH_MP_TAC: new documentation and fix of failure report


# e5e35f62 18-Feb-2013 Vincent Aravantinos <vincent@encs.concordia.ca>

Added HINT_EXISTS_TAC.


# c036c199 20-Jul-2012 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Tidy-up formatting of some src/1 code.


# a0f6912c 13-Jul-2012 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Tidy up some code under src/1. See commit ad9b041.


# efea4a13 01-Jun-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Move bvk_find_term (used in DEEP_INTROk_TAC) to HolKernel.

Document it and the other find_term functions from HolKernel.


# 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!