History log of /seL4-l4v-10.1.1/HOL4/src/postkernel/Theory.sml
Revision Date Author Comments
# b72e391c 20-Mar-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Move smpp to Portable - get everything up to arithmeticScript working


# 3f252166 13-Mar-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Work towards use of PolyML.pretty type for most pretty-printing

Compiles up to src/parse under Poly/ML


# 0775443a 21-Aug-2017 Thibault Gauthier <thibault.gauthier@uibk.ac.at>

Use _Theory.dat for loading theory data into _Theory.sml


# a86cc43e 07-Mar-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Provide fn for users to specify ML dependencies for theories

This will be useful when a theory wants to export a specific
pretty-printing or parsing function. For example, the special
printing of if-then-else is not properly exportable at the moment
because there is no way to capture it as a string in a theory file.

The ultimate intention is to give it a name in a special
dictionary, and to make the theory depend on ML code that implements
the function and inserts it into that dictionary under the user's
choice of name.


# fa09c98c 27-Sep-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Unhide auxiliary TFL defns for nested recursions

These, with names including "_aux_" typically need to be visible so that
termination reasoning about the "pre-constant" can go ahead. Failing to
get this right caused the unification examples to fail.


# d680453c 27-Sep-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Stop temp consts from being added to grammar

This means that they can't be named directly, and can only be accessed
with the $ notation.

Also make the "_tupled" constants used internally by tfl be temporary
constants of this form so they don't get added either.


# d2740676 19-Sep-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Handle a dictionary lookup failure with a HOL_ERR

I.e., provide better runtime documentation of possible invariant
failures.


# 6b524358 18-Sep-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Feed ThyData terms fn into thy file generation

This is necessary so that terms inside theory-data can fed into the
construction of SharingTables. This probably should have been part of
99597a19.

Untested because no existing ThyData types embed terms.


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


# 418b8a8b 29-Jun-2016 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Improve feedback for Holmake.

Theorems proved with `fast_proof` are now regarded as cheated. The use of other oracle theorems is identified, though not marked as cheating.


# e8457c3a 23-Mar-2016 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Add Theory.quote_adjoin_to_theory. Use this in llistTheory.

This should close #304.

This has been implemented using a new function Portable.quote_to_string_list. Other uses of adjoin_to_theory under src/ have been updated.


# 836afa89 04-Mar-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Add NewBinding as new form of TheoryDelta event

This happens whenever a theory segment is extended with a new fact.


# b21e22f2 03-Mar-2016 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Identify saved theorems that are tainted by the cheat tactic.


# c554f74b 15-Feb-2016 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Ensure HOL4 works with fixed-width integers under Poly/ML.

Integers under Poly/ML 5.6.1 are likely to be fixed-width by default (up until now they've always been arbitrary precision). Some changes were needed to cope with this:

- The Arbint and Artbnum structures effectively assumed Int.int = IntInf.int.
- The Standard ML structure Time is based on LargeInt.int and not Int.int. Code for printing times has been re-implemented using the Date structure.
- The smart-configure.sml file used the Overflow exception to distinguish between Moscow ML and Poly/ML. This test is now based on a difference in the printing of General.Fail exceptions.


# 8dfb0310 08-Aug-2015 Ramana Kumar <ramana@member.fsf.org>

Make new_definition_hook replace a constant on the LHS by a variable

new_definition calls gen_prim_specification which requires an equation
whose left-hand side is a variable, but sometimes (maybe only in obscure
old example script files) users pass an equation with a constant on the
left. The same hook that abstracts arguments now turns a constant on the
left into a variable.


# 99ba6223 03-Aug-2015 Thibault Gauthier <thibault.gauthier@uibk.ac.at>

holyhammer 1.0


# 7d7c7fed 15-Jul-2015 Michael Norrish <Michael.Norrish@nicta.com.au>

Prevent bad constant names at Definition level

Enforces a constraint I'd long assumed to be true.

Closes #268


# ef72cbeb 19-Jan-2015 Michael Norrish <Michael.Norrish@nicta.com.au>

WIP fixing problems with 57d38bd4


# 57d38bd4 18-Jan-2015 Michael Norrish <Michael.Norrish@nicta.com.au>

Make save_thm etc reject names that will cause uncompilable theory files

This causes exceptions/errors earlier rather than later.


# 20934744 25-Feb-2014 Ramana Kumar <ramana@member.fsf.org>

Add gen_new_specification and remove prim_constant_definition

Implement new_definition in terms of gen_prim_specification.
Leave the existing new_specification in place.
This plan of attack suggested by RDA.

Have only touched the standard kernel, and none of the theories.
Next steps would include updating the other kernels, implementing
new_specification in terms of gen_new_specification (at some point after
pairTheory), and removing uses of new_specification before pairTheory
one by one if possible/desired...


# abce3c6f 25-Feb-2014 Ramana Kumar <ramana@member.fsf.org>

Revert "start experimental implementation of revised new_specification"

This reverts commits 7f58ad8, eae01bc, and c07a105.


# c07a105b 21-Feb-2014 Ramana Kumar <ramana@member.fsf.org>

replace calls to new_specification in boolScript.sml


# eae01bc3 21-Feb-2014 Ramana Kumar <ramana@member.fsf.org>

remove Theory.new_specification and reimplement new_definition

in terms of the revised Thm.prim_specification. obviously this breaks
anything that depended on Theory.new_specification, so the next job is
to rework those things (and write a backwards-compatible version, but
later in the build sequence because it needs pairs.)


# 7f58ad80 19-Feb-2014 Ramana Kumar <ramana@member.fsf.org>

start experimental implementation of revised new_specification

Based on Rob Arthan's "HOL Constant Definition Done Right". The tricky
part is deciding how and where to implement the existing definitional
rules that are theoretically subsumed by the new one.


# a64ae984 11-Aug-2013 Michael Norrish <michael.norrish@nicta.com.au>

Document new_type_definition's errors better; improve its error-reporting

Closes #128


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

Make binding-deletion a TheoryDelta so clients can "see" them.

Recall that a binding is a link between a theorem name and a theorem
value.


# 23e7ee59 05-Aug-2012 Michael Norrish <michael.norrish@nicta.com.au>

Revert "export hook" behaviour to the way it was before bb9eb667e2.

In particular, the client code runs before any kernel code is run. My
change thoughtlessly had the client code run after the theory was
"scrubbed" to remove it of out-of-date theorems. But Magnus's use of
the export hook in ml_translatorLib called delete_const resulting in a
bad theory export.

The boss/theory_tests change mimicks that problem in miniature.

This is fallout from issue #73.


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

Minor code cleanup in Theory.sml's handling of theory data.


# 89682e3a 02-Aug-2012 Michael Norrish <Michael.Norrish@nicta.com.au>

Allow thy-data to be set to a value as well as merged with what's there.


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

Give better error when client tries to reuse a theory data key


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

More theory signature events now reported to hooks.

In particular, {new,remove}{typeOp,constant} events are reported.

Use this to do away with some of the cruftiness in boolLib whereby the
entry-points there had to mask the primitive principles in order to
update the grammar. Now the parser installs hooks to watch for things
being deleted or added and adjusts the grammar as it goes.

The disadvantage is that it's impossible to bypass these changes to
the grammar.


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


# e4464e0e 12-Apr-2012 Ramana Kumar <ramana.kumar@gmail.com>

remove unnecessary call to CTname in Theory.sml


# a21bb98f 12-Apr-2012 Ramana Kumar <ramana.kumar@gmail.com>

Add onexport hooks to Theory

You can register a function to be called whenever export_theory is
called subsequently, for example for a library to do some cleanup before
a theory using that library is exported.


# 808200bf 17-Oct-2011 Konrad Slind <konrad.slind@gmail.com>

trivial edit


# 9729734b 22-Jun-2011 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Attempt to tidy-up HOL's output in non-interactive mode - mostly through lining
up definition and theorem names.


# bc1f68bc 10-Feb-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Magnus wanted times in hours for his sloooow theories.


# aa93e64e 16-Dec-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Move kernelid variable to Thm so that it isn't shared across kernels.

Thanks to Anthony for spotting the problem.


# 5f99e73a 15-Dec-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

BIG refactor: mainly to allow stdknl to use SharingTables technology.

SharingTables implements hash-consing for types as they are written
out to disk. This can make a big difference to the theory file size,
and thus to theory-loading times.

The big visible change is that Theory, TheoryPP and Definition are no
longer really part of the kernel, and are found in src/postkernel
instead. They don't need to know about secret implementation details
in terms, types or theorems. They do need to have access to

Term.{write,read}_raw

and primitive definition principles (which are in Thm).

Another API change is that Tags no longer use user-visible string refs
to record use of axioms. Instead, the refs are hidden behind a new
Nonce type. This in turn means that the Tag.axioms_of function can
move to be visible to all users after the kernel. (If we kept the
axioms as string refs, users could alter the strings being pointed
to.)