History log of /seL4-l4v-10.1.1/HOL4/src/q/Q.sig
Revision Date Author Comments
# 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


# fa81d70b 28-Jul-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Rename pat_assum to pat_x_assum; provide pat_assum

To be consistent with naming conventions elsewhere, change the name of
qpat_assum (and PAT_ASSUM, and Q.PAT_ASSUM) to include an extra _x_ (or
_X_), indicating that the matching assumption is pulled out of the
assumption list.

Use the old names to provide a version that doesn't pull the assumption
out of the list.

Again, seeking consistency with other similar tactics, make variable
names that appear in the pattern and the goal be forced to have the type
that they have in the goal.


# 37b9b33b 19-Jun-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Implement Q.RENAME_TAC / bossLib.rename

This tactic is more powerful than rename1 as it allows multiple patterns
to be matched at once, and without regard to the initial goal's free
variables (which might otherwise cause unpredictable clashes).


# 6ffd8b6b 16-Jun-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Rename: qcase_tac/rename1; Q.FIND_CASE_TAC/Q.RENAME1_TAC

This use of the "case" substring was just confusing given things like
Cases_on. The "1" is there because I want to now implement a more
general version that
- deals with the issue (identified in the .doc file), where existing
names in the goal can still get in the way; and
- allows multiple subterms to be matched and renamed as a unit

Though seemingly independent, the second feature is really needed if the
first is to be done: implementing the first will require all the free
variables in a goal to be renamed away (to genvars, I expect), and then
it's impossible to ground particular matches against known free
variables.


# e28c677a 20-Mar-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Define special backtracking cases of pat_assum

In particular, the "pattern" is a single term or quotation that has to
either be the head constant of the assumption or the head of the lhs of
the assumption. Unlike pat_assum as it stands currently, the behaviour
backtracks (à la first_assum) if the theorem-tactic doesn't succeed with
the first assumption found.

Versions come in "copy assumption" and "cut assumption" versions, just
like first_assum and first_x_assum.


# da715553 17-Jan-2016 Ramana Kumar <ramana@member.fsf.org>

implement abbrevation tactics for subterms.


# 92317114 08-Jan-2015 Michael Norrish <michael.norrish@nicta.com.au>

Change API of Q's MATCH...RENAME_TACs.

Now rather than a string list hanging off the end specifying which
variable bindings aren't supposed to induce a renaming, just put
underscores into the pattern in those positions.

Documentation and release notes updated.


# 95b436c9 07-Jan-2015 Michael Norrish <michael.norrish@nicta.com.au>

Document new FIND_CASE_TAC.


# 21853aa6 07-Jan-2015 Michael Norrish <michael.norrish@nicta.com.au>

Implement Q.MATCH_ASMSUB_RENAME_TAC.

Progress with #81.


# 4e6cbfb2 03-Jan-2015 Michael Norrish <Michael.Norrish@nicta.com.au>

A renaming/matching tactic that matches against subterms in the goal.

Progress with Github issue #81 (which also calls for the same against
assumptions and an abbreviation version too).


# 485c9835 12-Nov-2012 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Add Q.GENL.


# da827655 27-Feb-2010 Ramana Kumar <ramana.kumar@gmail.com>

Added MATCH_ASSUM_ABBREV_TAC to Q and markerLib.

This completes the set of pattern-matching tactics spanning the two dimensions of abbreviate/rename and conclusion/assumptions.


# 159cc039 28-Jan-2010 Ramana Kumar <ramana.kumar@gmail.com>

Two new tactics in Q for renaming parts of a goal by pattern matching.

MATCH_RENAME_TAC works on the goal statement; MATCH_ASSUM_RENAME_TAC on the
assumption list. Both tactics attempt to match a pattern against the goal (or
an assumption). Matching parts of the goal are then replaced by the
corresponding pattern variables.

Useful for renaming ugly generated variable names with minimal effort. The
pattern does double duty in the assumption case: it both picks out the matching
assumption and also specifies what the new variable names should be.


# 7e308ba7 11-Nov-2009 Thomas Tuerk <Thomas.Tuerk@cl.cam.ac.uk>

Recently I was writing structures like

Q.EXISTS_TAC `e1` THEN
Q.EXISTS_TAC `e2` THEN
...
Q.EXISTS_TAC `en` THEN

in my proof scripts a lot. This is lengthy and tidious. So I added

Q.LIST_EXISTS_TAC [`e1`, `e2`, ..., `en`]

as a shortcut.


# c76376ed 29-Apr-2008 Konrad Slind <konrad.slind@gmail.com>

Additional functionality for abbreviations.

1. The labels library has been merged into
markerLib and the src/labels directory eliminated.
2. Have added markerSyntax structure.
3. Operations on abbrevs used to all be in
structure Q, even those that didn't deal
with quotations (like UNABBREV_ALL_TAC). Now
markerLib provides all abbrev. operations and
these take terms. Operations that benefit from
quotes, e.g., ABBREV_TAC, MATCH_ABBREV_TAC, etc.
are still to be found in Q.
4. Abbrevs are kept reduced by the simplifiers and
there is a REABBREV_TAC which can be separately called.
This sorts abbrevs topologically, so that they get
restored in a sensible order.
5. For situations where one wants to get rid of all
abbrevs, apply a tactic, and then restore the abbrevs,
there is WITHOUT_ABBREVS: tactic->tactic.
6. Have added a simple topological sort to Lib.
7. Updated proofs in the src directories, and also
in examples/lambda.


# 3890ad80 21-Apr-2008 Konrad Slind <konrad.slind@gmail.com>

Changed behaviour of simplifier to
propagate the abbreviation coming from
a let binding in the goal being moved to
the assumptions. This helps keep the goal
in "fully abbreviated form". Also added

Q.REABBREV_TAC

which re-abbreviates the goal and

Q.WITHOUT_ABBREVS tac

which temporarily removes all abbreviations,
runs tac, then reabbreviates.

Probably, Q is not the right place for these
functions, but the rest of the abbreviation
stuff is there.

Also added some internal documentation on what
Q.ABBRS_THEN does, and the like.


# 1d04a0ca 07-Jul-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

New treatment of abbreviations. Documentation still to be updated.
Backwards compatibility illustrated in examples/lambda/standardisationScript
and examples/arm6. New techniques and entry-points illustrated in
core distribution and some of the lambda example scripts.


# a1e09ac0 28-Jun-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

Have to add the new functions to the signature. Take the opportunity to
define type abbreviations and align all those pesky colons.


# a3735066 28-Apr-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Implemented Anthony's PAT_ABBREV_TAC. He should write some documentation
for it :-)


# b4e5ec9b 11-Jan-2001 Michael Norrish <Michael.Norrish@nicta.com.au>

SPEC_THEN etc managed to disappear from the signature file.


# 9aa39615 02-Nov-2000 Konrad Slind <konrad.slind@gmail.com>

New versions of old stuff.


# a25e9819 10-Aug-2000 Michael Norrish <Michael.Norrish@nicta.com.au>

Theorem argument to the new SPEC_THEN functions must be last for
better composition with other tacticals. Want to be able to write
things like
FIRST_X_ASSUM (Q.SPEC_THEN `x` (Q.X_CHOOSE_THEN `y` SUBST_ALL_TAC))


# 2f4f604f 10-Aug-2000 Michael Norrish <Michael.Norrish@nicta.com.au>

Added SPEC_THEN (and obvious friends) to make it easier to specialise
theorems in the middle of proofs and use the current parsing context.


# 3bfbcaaf 15-Jun-2000 Michael Norrish <Michael.Norrish@nicta.com.au>

Added REFINE_EXISTS_TAC, which allows you to turn an existential goal
into a new existential goal, where the variable has been replaced by
a more concrete term.
E.g.,
?n. 0 < n
================ REFINE_EXISTS_TAC `SUC m`
?m. 0 < SUC m


# f67d9d93 26-Oct-1999 Michael Norrish <Michael.Norrish@nicta.com.au>

Modified Q.prove to be in line with prove, i.e., taking a tuple of
arguments.


# 0058df84 28-Jun-1999 Michael Norrish <Michael.Norrish@nicta.com.au>

Fixed to bring it up to date with Taupo release 0.
(Changes have come across from parse_branch development.)


# 58841e67 29-Apr-1999 Michael Norrish <Michael.Norrish@nicta.com.au>

Initial revision