History log of /seL4-l4v-master/HOL4/src/1/Tactic.sig
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.


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