History log of /seL4-l4v-master/HOL4/src/basicProof/BasicProvers.sig
Revision Date Author Comments
# 983cd8f5 02-Nov-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Provide more ancestry-based entrypoints for stateful simpsets

In particular, allow for recreation of the simpset as it existed on
theory entry. E.g., a call to

recreate_sset_at_parentage (parents "list")

will make the simpset take on its value as it existed when execution
of the listScript began.


# d6167e99 01-Nov-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Make global simpset state easier to recreate with "logged_update"

This entry-point records that a change to the global simpset has
happened within a piece of code (rather than a script). The change is
made (as before), but the change is also recorded so that it can be
recreated/applied to different base simpsets.


# d529ea79 28-Oct-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Extend BasicProvers interface with temp_setsimpset


# 73d153bb 27-Oct-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Reimplement global simpset to be "ancestry-aware"

Allows API to be enriched with {temp_,}set_simpset_ancestry and
thy_simpset functions.

Both of these don't fold in appropriate additions from the TypeBase
after these calculations yet.


# ca1d20c4 18-Oct-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Tweak ThmSetData API: take callbacks with more honest types

In particular, the callbacks are always only ever called on singleton
lists, so it seems silly to ask the user for functions with types that
have lists.


# c3a3474f 21-Jul-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Fix diminish_srw_ss invalidating earlier call to temp_delsimps

With test cases. Also change type of simpLib.remove_ssfrags to have
the acted on type and return type be adjacent. I.e., prefer

foo : B -> A -> A

over

foo : A -> B -> A

as the former curries to create a nice update function.


# 3cbdfd88 20-Apr-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Alter VAR_EQ_TAC to call TIDY_ABBREVS after invocation

TIDY_ABBREVS "purges" abbreviations that have become malformed, where

- "malformed" means no longer of form Abbrev (var = exp), with exp not
itself a variable
- "purge" means Abbrev(e1 = e2) becomes e2 = e1, and Abbrev(other_exp)
becomes other_exp.

The action of TIDY_ABBREVS is included in the ABBREV_ss simpset
fragment, which is in turn included in the stateful simpset.

The calling of TIDY_ABBREVS is the only change in the behaviour of
VAR_EQ_TAC, and this can be turned off with the
BasicProvers.var_eq_old trace.


# a92fc149 08-Apr-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Provide new term-based version of Cases_on

This version takes an extra string list parameter for specifying names
to be used in the split.


# 726dbd96 17-Jan-2020 Konrad Slind <konrad.slind@gmail.com>

revised namedCases{_on} to support auto-name generation for underscored names


# c365759a 15-Jan-2020 Konrad Slind <konrad.slind@gmail.com>

adding ability to specify names introduced by Cases and Cases_on


# 6ab2c5e4 10-Apr-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Provide entry-point to temporarily remove rewrites from srw_ss

So, delsimps ["foo", "bar", "baz"] removes those rewrites and exports
the change to future theories; temp_delsimps ["foo", "bar", "baz"]
removes the rewrites temporarily (i.e., only in the current theory).


# 040b4578 21-Mar-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Rework persistent ThmSetData API to allow for "removal" of elements

The removals are strings encoding removal "instructions", which are up
to the underlying consumer to interpret. Still to test any of this
new machinery, but the old behaviours have been preserved.


# b5024ad4 04-Jul-2018 Mario Xerxes _Castelán Castro_ <marioxcc@example.org>

Move without loss of generality tacticals to new library.


# 1fda0759 13-Jun-2018 Mario Xerxes _Castelán Castro_ <marioxcc@example.org>

Add “SPLICE_CONJ_CONV”; add tacticals “wlog_tac” and “wlog_then”.


# 55622e44 24-Apr-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Get core HOL to build with new definition of "by"

Progress with github issue #407


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


# 32bf1e49 02-Feb-2015 Piotr Trojanek <piotr.trojanek@gmail.com>

extra semicolons removed from (some) .sig files


# 97ce3c47 25-Apr-2013 Michael Norrish <michael.norrish@nicta.com.au>

Implement new suffices_by tactic in BasicProvers and bossLib.

Closes #116.


# 0b21f155 05-Jul-2012 Konrad Slind <konrad.slind@gmail.com>

Improvements to Induct and Induct_on for non-datatypes.


# 91fc09b3 22-Jul-2010 Konrad Slind <konrad.slind@gmail.com>

Bug in TypeBase.is_case. It would return true
on

option_case NONE


# 5b44501d 21-Jul-2010 Konrad Slind <konrad.slind@gmail.com>

Fixes to CASE_TAC to make proofs in Boolify go through.


# 2f6ce6f9 20-Jul-2010 Konrad Slind <konrad.slind@gmail.com>

Fix to CASE_TAC, which could loop on nested cases over the option type
(and thus, presumably other types as well). Also, added a few more
entrypoints for case-splitting, e.g. FULL_CASE_TAC (do a case split
anywhere in goal, including assumptions) and EVERY_CASE_TAC (do all
possible case splits).

Also beefed up NORM_TAC so that it splits case expressions. Possibly
this could be migrated to RW_TAC and kin, but that might break a lot
of proofs.


# 7b73c8d7 16-Jul-2010 Konrad Slind <konrad.slind@gmail.com>

src/num/theories/SingleStep.{sig,sml} is gone. The
defininitions of Cases, Cases_on, Induct, Induct_on,
CASE_TAC (and co.) are now in basicProof/BasicProvers.
completeInduct_on and measureInduct_on are now in
numLib. recInduct is now in src/tfl/Induction.sml.
All these are collected in bossLib, so the changes
should be invisible to ordinary users.

SingleStep.*.doc has been changed accordingly.

BasicProvers.NORM_TAC should now automatically perform
all case splits (from if-then-else expressions as
well as case expression) arising anywhere in the goal.


# 2a29c74d 26-Mar-2010 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Added a few more operations for working with simpsets and simpset fragments.
In particular, added the facility to remove named fragments from a simpset.
This is done fairly crudely -- the new simpset is simply rebuilt using all of
the remaining fragments.

This enables you do do things like:

- SIMP_CONV (simpLib.remove_ssfrags (srw_ss()) ["word arith"]) [] ``...``

and

- val ss = diminish_srw_ss ["word arith","word logic"];
- e (SRW_TAC [] []);
- val _ = augment_srw_ss ss;

Doing this will re-order the fragments, which I believe can affect behaviour?
diminish_srw_ss isn't persistent -- not sure if that is good or not.

The new operations are:

> val name_ss : string -> ssfrag -> ssfrag

(* Give a name to a fragment. *)

> val named_merge_ss : string -> ssfrag list -> ssfrag

(* A version of merge_ss that allows users to name the merged fragment. *)

> val std_conv_ss : stdconvdata -> ssfrag

where

type stdconvdata = { name: string, pats: term list, conv: conv }

(* A simplified interface to conv_ss. For conversions with: no
side-conditions, trace level 2 and for a list of "variable only" keys. *)

> partition_ssfrags : string list -> ssfrag list ->
(ssfrag list * ssfrag list)

(* Partition a simpset fragment list: lhs for fragments in a list of
names and rhs for those not in the list. *)

> remove_ssfrags : simpset -> string list -> simpset

(* Remove named fragments from a simpset. *)

> diminish_srw_ss : string list -> simpLib.ssfrag list

(* Remove named fragments from srw_ss. Returns removed fragments. *)


# 857df342 31-Jan-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Complete implementation of generic theory data feature, and use it to
implement the exportable rewrites used in srw_ss(). The code still
needs some more polishing. Hopefully that will come as I convert
other "stored data features" to use the same underlying code.


# effc431b 01-Oct-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Change export_rewrites back to its old API (without requiring an extra
string). When exported, the resulting simpset fragment always picked
up the name of the theory to be the base of its name, so there didn't
seem much point in giving users a false impression of naming power.


# aed05f4e 20-Jul-2008 Konrad Slind <konrad.slind@gmail.com>

A whole mess of small changes intended
at making simpsets prettyprint informatively
in the interactive loop. Very possibly
I haven't updated all the files in the examples
directories.


# 4cddaa12 12-Jul-2005 Michael Norrish <Michael.Norrish@nicta.com.au>

Changed a couple of misleading/annoying names. The type ssdata is now
called ssfrag (to bring it into line with documentation that talks about
simpset fragments), and the constructor SIMPSET is now called SSFRAG.
It never created a simpset, so the latter was a stupid name.


# c5913ca0 15-Jul-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

Make LET_ELIM_TAC part of STP_TAC, and thus SRW_TAC and RW_TAC.
The LEAVE_LET theorem can be used to tell this not to happen if included
in the list of theorems passed to the rewrite tactics.


# fadeb16c 09-Jul-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

New entry point in BasicProvers called LET_ELIM_TAC to do lovely things
with lets, whether uncurried or not. They're lifted out of the goal
and turned into abbreviations into the assumptions. Plan is to tack
LET_ELIM_TAC into the basic action of RW_TAC and SRW_TAC as well.


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


# 8918766a 01-Jul-2003 Konrad Slind <konrad.slind@gmail.com>

Minor fixes to support rewriting annotations.


# d5ea6975 28-Feb-2002 Konrad Slind <konrad.slind@gmail.com>

Added VAR_EQ_TAC to BasicProvers. It eliminates assumptions of the
form v = M or M = v (provided v doesn't occur as a proper subterm of M).

The other changes are just messing about.


# e0bdeafa 29-Dec-2001 Konrad Slind <konrad.slind@gmail.com>

Simplified some proofs in MachineTransitionScript.

Reverted to Taupo-6 RW_TAC. This should make RW_TAC faster, and a little
less eager to case-split conditionals. Some proofs may break as a result.
In that case, use the drop-in replacement BasicProvers.NORM_TAC.

Term destructors now operate using same_const to check the operator
of the term being destructed. This may increase efficiency somewhat.
There were consequent changes to the xSyntax modules of the system.


# 081811d5 18-Oct-2001 Michael Norrish <Michael.Norrish@nicta.com.au>

More machinery to make the "stateful" rewriter even snappier.
Script files for theories can now do a
val _ = export_rewrites ["th1", "th2"]
where the argument is a list of strings corresponding to theorem names.
If the theorem names are from the current theory, they can be quoted
as is. If theorems are to be included from elsewhere, dotted IDs
have to be used.

When the corresponding theory loads, it automatically extends the
stateful rewriter's underlying simpset with the given simpset. The
theory's interface is also extended with a value thyname_rwts of
type simpLib.ssdata corresponding to the rewrites specified.


# affa774c 14-Jun-2001 Michael Norrish <Michael.Norrish@nicta.com.au>

New SRW_TAC tactic (stateful RW_TAC) implemented.


# d43c2c97 12-Nov-2000 Michael Norrish <Michael.Norrish@nicta.com.au>

Kananaskis compatibility.


# 015a4d57 28-Nov-1999 Konrad Slind <konrad.slind@gmail.com>

Split-off from bossLib, so that these things are available earlier
in the development of the system.