History log of /seL4-l4v-10.1.1/HOL4/src/postkernel/Theory.sig
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


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


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


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


# 5d03167e 04-Feb-2015 Piotr Trojanek <piotr.trojanek@gmail.com>

code style: space after parenthesis in "(x*y)list"


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

extra semicolons removed from (some) .sig files


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

WIP fixing problems with 57d38bd4


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


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


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


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


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


# 2a4c14a6 06-Jun-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Moved prekernel/FinalTheory-sig.sml to be postkernel/Theory.sig.

This simplifies the core a little.


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