History log of /seL4-l4v-master/HOL4/examples/lambda/basics/termScript.sml
Revision Date Author Comments
# 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)).


# 5417af9d 31-Mar-2020 Arve Gengelbach <arve.gengelbach@it.uu.se>

remove lcsymtacs (github issue #666)

The lcsymtacs structure is regarded superseded as it plainly is
a shorthand for opening the following modules:
Abbrev HolKernel boolLib Tactic Tactical BasicProvers simpLib
Rewrite bossLib Thm_cont


# 4f67f38e 13-Oct-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Use new syntax for some theorems in examples/lambda/basics/term


# 0466cdbc 25-Mar-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix some adjoin calls in examples/lambda


# 732b9f9e 04-May-2012 Michael Norrish <Michael.Norrish@nicta.com.au>

Extra parameter for new_type command in nomdatatype allowing for multi-types.

Doesn't work unless each 'type' allows a 'VAR' constructor, which is not the case
in first order formulas and terms, for example.


# bc294d17 02-Sep-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Extract a usable half-way point from nominal_datatype branch.

This replaces the is_perm predicate with a type embodying that predicate.
It doesn't include the subsequent work on allowing multiple 'atom' types.


# 25da727d 24-Jul-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Terms and labelled terms now derived from generic terms.

This is a big change that points to the implementation of a complete
nominal datatype package. The use of generic terms means that we only
need to do one hairy quotient, and one hairy derivation of a recursion
principle.

The recursion principle in question features a new "FCB" (one of the
side-conditions that need to be proved in order to get a recursive
function admitted). Though I think it's better, it can be a little
fiddlier to prove. It's also stronger, so in theory, there may be
reasonable functions that the new FCB rejects. It should certainly be
possible to automate the bulk of the new fiddly proofs.


# 0bbd2a7e 21-Jun-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Rename TruePrefix to Prefix; use fixity options with NONE for what was Prefix.

90+% of this work was done by Ramana Kumar. The following list are
the commits for a series of individual commits that have been squished
into one big change:
* remove mention of TruePrefix from the add_rule docfile
* first batch of changes removing TruePrefix from src/parse
* replace TruePrefix by Prefix in boolScript.sml
* remove TruePrefix from Rsyntax
is a fixity ever required for new_specification?
* some more Prefix -> NONE and TruePrefix -> Prefix in theories
* TruePrefix changes for datatype
* TruePrefix changes for res_quan
* TruePrefix->Prefix in a TeX selftest
* TruePrefix changes for quotient
* TruePrefix changes for integer and real
* fix quotient examples for TruePrefix removal
* more fixes for quotient examples
* fixes for lambda example for TruePrefix removal
* Reword description manual in light of removal of TruePrefix.
* Fix msgTheory quotient example; Poly 5.3 had problems with monotypes.
* Fixes for files in examples/lambda given removal of TruePrefix.
* Fix in examples/unification given removal of TruePrefix.
* Fix in examples/HolCheck given removal of TruePrefix.
* Fixes in examples/acl2 given removal of TruePrefix.


# cc406e4b 12-Jun-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix build errors caused by me moving 'some' theorems.


# cf32d14d 11-Jun-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Move a couple of useful theorems about 'some' into optionTheory.


# 15f66f6f 06-Jun-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Get lambda/typing directory to build again.

Had to deal with termScript stealing the \rightarrow syntax (I made
that theft local to termScript); and with tight equality.


# 6055e89d 05-Jun-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Prove a varying parameter version of the term recursion principle.

Get termScript to compile with the new principle.
More work will be required to adjust remaining lambda-calculus scripts.


# c4e35ee0 18-May-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Another minor strengthening of the lambda-term recursion principle.

It still doesn't quite say enough for the 'parameter' version.


# 5d2a4eee 18-May-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Further strengthening of the lambda-term recursion principle.

The assumption that the results of recursive calls are always finitely
supported by the free variables of the argument (plus any vars in the
support of the helper functions) can be used in the FCB as well as in the
assumptions about the support of the helper functions.


# 773bd3a7 17-May-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Weaken side-conditions needed for recursions on lambda-terms.


# e141cd4b 15-May-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Rework lambda-term recursion principle proof once more.

It's simpler and more polished, mostly following the IJCAR'06 paper by
Urban and Berghofer, though slightly simpler even than that. I
believe I have one more useful change in me for this development, and
then I'll attempt to do the whole thing again, generically in
genericTerms.

The change to term_posnScript comes about because it relied slightly
too much on the exact form of the principle. (Previously tm_recursion
was just recursion and not iteration; putting iteration in from the
outset seems harmless.)


# ffdaeae1 09-May-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Slight simplify the proof of the lambda-terms' recursion theorem.

In particular, change "condition 16" from

?a. "a fresh" /\ !x. something else

into

!a x. "a fresh" ==> something else

This "some-all" transformation (the two are equivalent thanks to
properties of freshness) removes a quantifier alternation.


# 4d17d7c9 07-May-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Simplify the proof of the term recursion principle for lambda-terms.


# 4164a076 15-Oct-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Revise the base theory of nominal sets to make much greater use of
overloading, thereby reduce the number of Define-d constants. This
reduces the number of theorems as well. With some theorems
disappearing, there were a few knock-on effects in descendent
theories.


# 3daf612a 27-Apr-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Proof that the application constructor isn't cyclic. (We could
probably prove results like these for all inductive data types...)


# 8c026624 18-Mar-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix for a broken proof (caused by change to FV rewrites), that I
didn't spot the first time through (somewhat disturbingly).


# cb0a0371 17-Mar-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Add some rewrites about freshness (not being in the free variables of
a term) that work better with the simplifier. This breaks a couple of
proofs later on in chap2 and chap3 theories, that are easily fixed.


# fa39b570 02-Mar-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Implement a FRESH_TAC that freshens bound variables throughout a term.


# e3d9c2ec 02-Mar-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Recast binderLib's internal databases about "binder"-information for
types. In the process, give up on the attempt to make this technology
work for the "old" style of recursion theorem as in my TPHOLs paper.
Now the only style supported is the quotient + nominal proof (which is
what is in barendregt).


# 86a1f4a5 23-Feb-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

A start on computability done in the lambda-calculus.
(Change to termScript makes the defining theorem about substitution
an automatic rewrite.)


# 9aa0ae36 26-Nov-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Missed fixing these in the previous sweep. Again, the problems were
proofs that relied on string variables being given names beginning
with the character #"s".


# b541f3ea 26-Oct-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Proofs and tools broke when I changed the behaviour of
parse_in_context. Thanks for Peter for alerting me to the problem
(should be running build -selftest more often myself).

(Also make barendregt directory QUIT_ON_FAILURE, and removed a
duplicate proof in finite_developments.)


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


# 51368382 30-Aug-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Define permutation over finite maps, and then use finite maps to
define simultaneous substitution over terms. Use fm ' t syntax to
mean application of finite map fm (mapping strings to terms) to term
t. Prove some simple properties of simultaneous substitution.


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


# 7cf5c42f 09-Jul-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Completely reorganise these files into some sensible directories.
Also, add a file demonstrating that the McKinna-Pollack two-sorted raw
syntax does indeed behave properly (links appropriately to beta over
quotiented terms).