History log of /seL4-l4v-master/HOL4/src/1/ThmSetData.sml
Revision Date Author Comments
# 7306534b 04-Nov-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Again allow ancestral data to consume deltas all at once on theory-load

This allows named simpset-fragments to be added to srw_ss. This then
allows those fragments to be easily removed with calls to
diminish_srw_ss. In the 'fix-ancestry' rework this ability was
removed but this did break proofs when diminish_srw_ss calls had no
effect.

Selftest in coretypes demonstrates this with removal of the "one"
fragment.


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

Fixes to make sure that uptodate checks work properly

Existing regression tests now pass


# 9168664f 26-Oct-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Present IndDefLib's rule-induction-map as a theorem-set with ancestry

Only required change to the underlying API is to acknowledge that a
call to merge may result in no value if none of the desired parents
have a value either.


# 1b093056 26-Oct-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Add export_with_ancestry to ThmSetData signature

It compiles but is completely untested


# 2b23ef34 20-Oct-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Improve efficiency of encoding of lists of thm names in ThmSetData


# d3dc93f8 20-Oct-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Make grammar-deltas s-expressions when stored in theory .dat files

This makes them more legible, and is also a prelude to being more
uniform in the treatment of theory data that merges deltas across
ancestors.


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


# 0801c6f2 12-Oct-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Simplify grammar handling by using abstract ancestral data framework

This is not fully worked out yet, and the abstract framework has only
been instantiated on the one test-case. It's definitely worth it
there though as there can be less awful code smashed into
fooTheory.sml files as a result. Aim is to instantiate theorem-sets
in the same way though so that it will be possible to access srw_ss()
as it was at different points in the theory hierarchy.

Not yet clear if AncestryData should be responsible for holding onto
the underlying references that hold the global "values" (grammars,
simpsets, etc).

Changes in examples fix various adjoin calls that either shouldn't be
there at all (TypeBase now has export; or need to be made "after
completion" so that parses work correctly (these should be using
exportable data themselves)).


# bb0dcafa 05-Feb-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Change "thm-names" (used in various places) to be Thy-Name record

This saves on pulling things apart and looking for dots and the like.
It changes the simpLib API (most significantly for the SSFRAG function
which builds simpset fragments).


# 7ac36a38 04-Feb-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Allow users' theory data to share/hash embedded strings


# 327a1fff 14-Aug-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Allow theorems to be stored "locally", with local attributes

Such theorems are not stored in the exported theory, but do
temporarily affect the global contexts that their attributes point at.

The test-case illustrates this, with a local simp not visible in the
later theory.


# d9d262ad 20-Apr-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Change ThmSetData to store just theorem names in .dat files

The recent changes to this file caused theorem values to also be
stored; this is unnecessary (the references must be to existing
theorems), and wastes space in the .dat file, and presumably in what's
loaded.

I'm unsure as to why the stored name changed in the simpset
machinery (requiring a change to delsimps1Script.sml), but I'm going
to change the way simpset modification happens anyway.


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

Be more careful over handling of ThmSetData and rebinding of thm names

In particular, it was previously possible to do

val thm = store_thm("thm[some_attribute]", tm1, tac2);
val thm = store_thm("thm", tm2, tac2);

and have the second thm be exported but to pick up the attribute from
the first call. This is clearly outrageous, so now the attribute is
lost when the second theorem is slotted into the theory.

Working through all this found three places where this
double-definition pattern was happening (there may yet be more). In
src/finite_map and src/list the second theorem was clearly just
redundant and could be deleted.

The example in fun-op-sem is slightly more interesting: there it
defines a function (which definition gives that function a "compute"
attribute), and then restates the definition, saving it under the same
name ("foo_def"). Though arguably bad style, it's important that the
second theorem replace the first, and that it should have the
"compute" attribute. Here the change is to explicitly add that
attribute to the second theorem.

Finally, all this work revealed that Theory.sml's handling of the
NewBinding theory-delta hook was wrong and caused changes to be
dropped after the hook function was called. Debugging *that* led me to
add a pp field to the LoadableThyData registration process so that
theory-data values could be inspected more easily. There is also a
trace variable to turn on some debugging output in Theory.


# 1c4f83dd 07-Apr-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Rework ThmSetData implementation to use Theory s-expressions

This makes the encoding more robust, particularly if set "removal
instructions" might include space characters.


# c29ee710 05-Apr-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Refactor handling of thm attributes ("simp", etc) into new module

A slight backwards incompatibility is that this removes the ability
for script files to declare new attributes (hence removal of
attr[12]Script.sml from src/1/theory_tests). This facility is used
vacuously in CakeML once.


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


# b72e391c 20-Mar-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Move smpp to Portable - get everything up to arithmeticScript working


# 09c5dc00 14-Mar-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Up to and boolTheory and slightly beyond


# 36dc75d1 18-Sep-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Give Theory Data writers access to term-writing

Just as readers get an additional parameter of type string -> term,
writers will get a parameter of type term -> string.


# ef9ff047 17-Sep-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Make theory data types provide terms function

This function takes a value of the theory-data type and returns a list
of terms that are contained inside this value. The machinery will use
that to prime the theory's sharing tables to allow for efficient
recording of terms in data.


# 9fa81883 17-Sep-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Give ThyData access to a term-reader function

No useful way to exploit this just yet, but the code compiles and I
think the refactoring is right.


# 2c29276d 04-Nov-2015 Michael Norrish <Michael.Norrish@nicta.com.au>

ThmSetData passes thms *and* names to consumers

The names were always available, but the API now changes so that
consumers get names as well as theorem values. They can ignore the
names of course. (In this context, consumers are things like the
stateful rewriter, the monotonicity rule database, the TFL congruence
rule database etc.)

This will be helpful in allowing the stateful simpset to know what its
theorems are called, which is progress with Github issue #313 (to allow
easy removal of rewrites from a call to the simplifier).


# 8f621d74 28-Apr-2014 Michael Norrish <michael.norrish@nicta.com.au>

Bug fix (w/test case) for ThmSetData's new way to add theorems

Problem was that the callback function attached to the set didn't get
called, even though the theorem was successfully exported. This meant
that a set like "simp" (which feeds into srw_ss()) didn't prompt any
change to the stateful simpset. Being successfully exported did at
least mean that the theorem would get into the simpset in descendent
theories.


# fc7e14b1 25-Apr-2014 Michael Norrish <Michael.Norrish@nicta.com.au>

Test for ThmSetData bug fixed in 8ffc5dc0b; prettify adjoined SML output


# 8ffc5dc0 25-Apr-2014 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix bug in SML emitted/adjoined by new_storage_attribute.


# d212bd38 23-Apr-2014 Michael Norrish <michael.norrish@nicta.com.au>

Implement new scheme to allow simple addition of theorems to theorem "sets".

When saving or storing theorems, simply add [name1,name2] strings to the
end of the binding, and the theorem being saved will be added to the
theorem set with that name.


# 6204c3bf 17-Oct-2013 Michael Norrish <michael.norrish@nicta.com.au>

Make ThmSetData handle empty/null data as input.

Closes #130


# 00207182 17-Oct-2013 Michael Norrish <michael.norrish@nicta.com.au>

Get better diagnostic messages out of ThmSetData warnings.


# 63671324 06-Aug-2012 Michael Norrish <michael.norrish@nicta.com.au>

Use hook for binding-deletion to make ThmSetData more robust.

Test-case also uses WARNINGs_as_ERRs to check that nothing untoward
gets warned about in the second theory (the one that imports the
theory which has had lots of delete_{const,binding} events).


# 1bb5dd5f 02-Aug-2012 Michael Norrish <michael.norrish@nicta.com.au>

Adjust (and reduce) interface to ThmSetData.

The change is to add an extra string parameter to the callback
function that the client provides. This is the name of the theory
which has stored the theorems. This change prompted the changes to
computeLib, IndDefLib and DefnBase.

The reduction was to remove the ThmSetData's new function, forcing
BasicProvers to use new_exporter. This was possible because of the
extra information provided to its call-back.

I also wrote some test-cases mimicking the original problem that
Magnus and Ramana had, and prettied the warning output.

This closes #73.


# 85526c7c 02-Aug-2012 Michael Norrish <Michael.Norrish@nicta.com.au>

Get stored ThmSets to notice deletion of relevant consts.

This is progress with #73.


# f6cae76a 01-Aug-2012 Michael Norrish <michael.norrish@nicta.com.au>

Provide lookup functionality across all stored theorem sets.


# bb9eb667 31-Jul-2012 Michael Norrish <michael.norrish@nicta.com.au>

Rework various Theory hooks into one general framework.

The basis for the framework is the TheoryDelta type. Client code can
ask to be notified of theory changes, and will have their provided
call-back function called at appropriate times.

This commit hasn't adjusted the theory functions for
{add,del}{const/typeOp} yet; it has just unified the existing
functionality (register_onload, after_new_theory and
register_onexport).


# ccba08b7 30-Jul-2012 Michael Norrish <michael.norrish@nicta.com.au>

Make theorem-set loading more robust in face of bad thm-names.

Most attempts to mess with the data will be caught at specification
time, but use of delete_const and friends can cause theorems to not
get exported even if they were present when the call to export_X was
made.


# a9cba522 30-Jul-2012 Michael Norrish <michael.norrish@nicta.com.au>

Delete some unused code in ThmSetData.sml


# 1bc9f344 13-Jan-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Change src/bool to src/1 as a prelude to experimentation!