History log of /seL4-l4v-master/HOL4/src/pred_set/src/pred_setScript.sml
Revision Date Author Comments
# 2000288a 02-Nov-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Fix an occurrence of augment_srw_ss to be “logged”


# 5f1dcdea 31-Aug-2020 Arve Gengelbach <arve.gengelbach@it.uu.se>

flip arguments of UNION


# e63045cb 31-Aug-2020 Arve Gengelbach <arve.gengelbach@it.uu.se>

add UNION_DIFF_EQ to the simp set


# 0806025c 29-Aug-2020 Arve Gengelbach <arve.gengelbach@it.uu.se>

simplify `s ∪ (t DIFF s)`


# 43fd5a70 25-Aug-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Prove FINITE (POW s) <=> FINITE s as automatic rewrite

Only had R-to-L direction previously.


# bcc9fb17 25-Aug-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Add some easy automatic results about closures of SUBSET and PSUBSET

Things like

RTC $SUBSET = $SUBSET

Also facts like

transitive $SUBSET


# 71fdb8d8 06-Apr-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Attempt at better Abbrev protection

This in the face of simplification and the variable elimination done
by RW_TAC and friends. Core sequence, -t1 and some of -t2 builds (up
to category theory example).

Machinery for dynamically reverting to the old behaviours possible
through diminish_srw_ss and a trace variable.

This is work on github issue #800


# 31b3ff6d 26-Jun-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Define a disjoint-union function ('a set -> 'b set -> ('a + 'b) set)


# a0625e3a 26-Jun-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Prove a "deep intro" rule for pred_set$CHOICE (for DEEP_INTRO_TAC)

It's vaguely annoying that we even have CHOICE when we could just use
$@...


# c0ca1d19 28-May-2020 Chun Tian <binghe.lisp@gmail.com>

Product measure and Tonelli's theorem


# 486e9658 11-Apr-2020 Chun Tian (binghe) <binghe.lisp@gmail.com>

Updated HOL Description for mathematical theories (with other cumulative fixes)


# b8cf66f9 26-Apr-2020 Chun Tian (binghe) <binghe.lisp@gmail.com>

Enhanced fcpTheory (FCP_FST, FCP_SND, FCP_CONCAT_THM, ...); moved duplicated HAS_SIZE to upstream


# 87b2e48f 20-Mar-2020 Chun Tian (binghe) <binghe.lisp@gmail.com>

Strong Law of Large Numbers for uncorrelated r.v.'s (SLLN_uncorrelated)


# 35879111 18-Aug-2019 Chun Tian <binghe.lisp@gmail.com>

Tactic to automate some routine set theory by reduction to FOL (#722)

* Moved SET_TAC into pred_setLib; some additions in pred_set and real theories

* Added quantifiers to COUNT_11

* Added missing "from_def" and related theorems (moved from real_topology to util_prob)

* Renamed SET_RULE to SET_CONV

* Added util_probTheory (from_def) into dependencies of real_topologyTheory

* Cancel changes in seqTheory

* Cancelled SUBSET_DIFF_DISJOINT and SUBSET_BIGUNION

* Further canceled two "tail_*" theorems

* IMAGE_EMPTY_FUN -> IMAGE_CONST (more general)

* Canceled IMAGE_EMPTY_FUN/IMAGE_CONST (IMAGE_EQ_SING is more general)

* Moved SET_TAC, ASM_SET_TAC and SET_RULE to bossLib with documentation (help and release notes)

* Reverted (original) empty lines in pred_setLib files


# f4ed8aa5 09-Aug-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Implement new Type syntax to stand in for type_abbrev{,_pp}

Use it in pred_set and words theories


# db944bd8 07-Aug-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Make some PREIMAGE theorems automatic rewrites

Also remove |- SING s ==> FINITE s from the set of automatic rewrites.

The presence of this is bad because a "Once" simplification theorem
meant for s may fire when the simplifier attempts to discharge the
hypothesis, and so it won't get to fire when actually rewriting s in
the "main" goal. (And no-one uses SING.)

Knock-on effects simplify folCanonScript.sml, the experience of
writing which prompted these changes in the first place.


# 95e0fc6e 02-Jul-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Use new and improved Induct_on to simplify some proofs in pred_set


# c8243366 17-Jun-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix LaTeX for universal set: \ensuremath{\cal U} leaks \cal mode

Instead, need to write \ensuremath{{\cal U}}


# 6673421b 16-May-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Fixes for pred_set to build under MoscowML+tightequality


# 70c6fb7a 16-May-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Remove older of Theorem syntaxes (the one with the quotes)

It's confusing to allow two, and it seems pretty clear that the
Proof-QED proof is nicer.


# bac35d90 07-Mar-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix handling of "IN_" thms in pred_setScript given Theorem syntax

Issue is that Theorem foo: ... Proof .. QED turns into a call to
Q.store_thm, but the code in pred_setScript wants to intercept calls
to store_thm to add _applied versions of various theorems. Rebind Q
structure at head of file to achieve this.


# 996d84d6 07-Mar-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Get src/pred_set to build given tight equality


# 529ea108 20-Feb-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Use Theorem syntax more in pred_setScript.sml


# ee840626 20-Feb-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Add theorem about triangular numbers (SUM_SET (count n))

This is inspired by a theorem from CakeML, but generalised as the
CakeML theorem unnecessarily restricted itself to n > 0.


# dc23ceb6 14-Jan-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Move some theorems into HOL from CakeML

Touched theories include alist, list, option, pred_set.


# 4aad987d 02-Dec-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Remove Unicode in src that my last commit introduced


# 393360fd 01-Dec-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Move some theorems into pred_setTheory from CakeML

One, INFINITE_INJ_NOT_SURJ prompts a complete reworking of the very
old proof in this script that establishes something similar but only
for universal sets. The new result is stronger, and is used to
establish the old one.

The new proof is in a similar style, but uses technology (METIS_TAC
and the simplifier) that wasn't available in HOL88. It also uses a
newer result (the statement of the pigeonhole principle). It's rather
shorter therefore.


# 9f4b3059 10-Nov-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Change type_abbrev to not alter printing behaviour

If printing of abbreviations is desired, users must now use
type_abbrev_pp.

Closes #599


# 2b5e79a7 08-Nov-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Move p/printing of set comprehensions out of src/parse

The code for this can be put into pred_set/src/pred_setpp, making the
core pretty-printer slightly simpler (which has to be a good thing).

Also fix the minor pretty-printing indentation bug identified in
github issue #610.

Making this a "user pretty printer" means that it takes precedence
over overloads. Introduce a new feature whereby adding a
(dummy) user-printer with the empty name causes terms matching this
pattern to be printed without any user-printers getting a chance to
fire. This gives terms that are handled by overloads a chance to be
seen by the core printing machinery. (User printers are checked for
first and can otherwise mask everything else.)

Closes #610


# 4778f606 21-Oct-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Delete trailing whitespace in src/


# f5bd5abc 07-Sep-2018 Chun Tian (binghe) <binghe.lisp@gmail.com>

Merged hol-light's cardTheory (rich_cardinalTheory) with HOL4's cardinalTheory


# 8f627d12 27-Aug-2018 Chun Tian (binghe) <binghe.lisp@gmail.com>

Merged HOL4's original topologyTheory with HOL-light's version


# 7f94f460 22-Aug-2018 Chun Tian (binghe) <binghe.lisp@gmail.com>

Added rich_topologyTheory and dependents


# acda44ba 16-Aug-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Add is_measure_maximal constant to pred_set; include minor cleanups

Cleanups include making automatic rewrites happen in the flow of the
script file rather than being delayed until the end.

The is_measure_maximal constant has definition:

is_measure_maximal m s x <=> x IN s /\ !y. y IN s ==> m y <= m x

Prove some simple theorems about this.


# 57e62af1 22-Jul-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Revert "Add hypotheses count check to TAC_PROOF."

This reverts commit 01930d56ce7a31c10ff7f422a0cf535a8c502a59.

I don't believe that changing this primitive is a good idea. I'd like
TAC_PROOF to stay as the base primitive that applies a tactic to a
goal state without checking for validity or similar.

This change is also causing breakages in CakeML and
examples/machine-code/lisp. If there is a need for this sort of
validity-style check (apart from what is done by expand), it could be
added to prove quite reasonably, possibly there under the control of
another trace variable, or just permanently on (as it is easy enough
to change the behaviour of prove by adjusting the reference it
consults).


# 01930d56 16-Jul-2018 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Add hypotheses count check to TAC_PROOF.

This helps guard against the following:

val lem = Q.prove(
`F`,
ACCEPT_TAC (ASSUME ``F``)
)

Before this returned the theorem [F] |-> F without complaint, despite an "Invalid tactic" exception being raised when using proofManagerLib.e. This proof will now fail. The new check falls short of requiring alpha equivalence of assumption lists, which would be safer.

This change has identified a few areas of imprecision within automation, namely within "dep_rewrite" and "Satisfy". There it may be the case that a subset of the stated assumptions appear in the final theorem.


# 6a81a039 21-May-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Remove TABs from src

Will also make selftest to check that they aren't introduced


# d2d6d792 21-May-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Change irule to not include a rpt conj_tac effect

Closes #465


# 1e0d2028 11-Apr-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Re-implement Datatype package with TypeBase sexps (not adjoin)


# 4b0a9597 25-Mar-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix multi-line list forms (incl. records)


# 84a8966a 26-Nov-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Add some theorems from CakeML

pred_set: to do with bijections and surjections
list: MAP2 and LIST_REL results
pair: rewrites with (FST x = y) and (SND x = y) as LHSs

other changes are fixes for broken proofs.


# 95d60bd3 02-Oct-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Remove -- as an alias for Term parser.

As per comment in release notes this has long been replaced as
appropriate style.


# 0f42be95 01-Aug-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Provide new automatic rewrite for “UNIV x” (rewrites to T)


# 45f93fbd 01-Aug-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Correctly isolate univ user-pretty-printer

This preserves it across set_grammar_ancestry calls, and simplifies
the script file slightly.

Closes #445


# 6b4d41ff 31-Jul-2017 Chun Tian (binghe) <binghe.lisp@gmail.com>

Move FINITE_BIJ_COUNT_EQ to pred_setTheory to simplify FINITE_BIJ_COUNT, with miller and diningcryptos examples adjusted


# 44dee8ca 23-Jul-2017 Chun Tian (binghe) <binghe.lisp@gmail.com>

Clean up of extra_pred_setScript.sml


# 57853db3 20-Jul-2017 Chun Tian (binghe) <binghe.lisp@gmail.com>

More additions in pred_set and util_probTheory


# 50824875 10-Jul-2017 Chun Tian (binghe) <binghe.lisp@gmail.com>

Simplified cardleq_ANTISYM (using SCHROEDER_BERNSTEIN in pred_setTheory); moved INJ_BIJ_SUBSET to pred_setTheory


# 4199267b 10-Jul-2017 Chun Tian (binghe) <binghe.lisp@gmail.com>

Fixed remain issues in examples/miller


# 3304542b 06-Jul-2017 Chun Tian (binghe) <binghe.lisp@gmail.com>

Move BIJ_FINITE_SUBSET and IMAGE_II from util_prob to pred_setTheory


# c50b4868 06-Jul-2017 Chun Tian (binghe) <binghe.lisp@gmail.com>

Move basic PREIMAGE lemmas from util_prob to pred_setTheory


# 209b28a4 06-Jul-2017 Chun Tian (binghe) <binghe.lisp@gmail.com>

Moved FINITE_BIJ and BIJ_ALT to pred_setTheory


# 29629bcf 06-Jul-2017 Chun Tian (binghe) <binghe.lisp@gmail.com>

Renamed countable_alt to upper cases


# d724b724 06-Jul-2017 Chun Tian (binghe) <binghe.lisp@gmail.com>

Moved COUNTABLE_ALT (as COUNTABLE_ALT_BIJ) and dependencies to pred_setTheory


# 12a4e7ee 05-Jul-2017 Chun Tian (binghe) <binghe.lisp@gmail.com>

Removed some duplicated countable theorems from util_probTheory


# 52fa87d8 06-Jul-2017 Chun Tian (binghe) <binghe.lisp@gmail.com>

Merged more countable theorems into pred_setTheory


# 56a12929 06-Jul-2017 Chun Tian (binghe) <binghe.lisp@gmail.com>

Remove duplicated countable_def (in util_prob) and prove it as an alternative definition (countable_alt)


# a47b1cfb 05-Jul-2017 Chun Tian (binghe) <binghe.lisp@gmail.com>

Move Schroeder-Bernstein theorem (and related settings) to pred_setTheory (from util_prob):

SUBSET_THM
K_SUBSET
SUBSET_K
FUNSET
DFUNSET
IN_FUNSET
IN_DFUNSET
FUNSET_THM
UNIV_FUNSET_UNIV
FUNSET_DFUNSET
EMPTY_FUNSET
FUNSET_EMPTY
FUNSET_INTER
schroeder_close
SCHROEDER_CLOSE
SCHROEDER_CLOSED
SCHROEDER_CLOSE_SUBSET
SCHROEDER_CLOSE_SET
SCHROEDER_BERNSTEIN_AUTO
SCHROEDER_BERNSTEIN
BIJ_INJ_SURJ


# c89e09a5 05-Jul-2017 Chun Tian (binghe) <binghe.lisp@gmail.com>

Moved 23 small theorems from util_prob to pred_setTheory:

BIGINTER_SUBSET
BIGUNION_IMAGE_UNIV
BIJ_SYM
BIJ_SYM_IMP
BIJ_TRANS
DIFF_BIGINTER
DIFF_INTER
DIFF_INTER2
DISJOINT_ALT
DISJOINT_COUNT
DISJOINT_DIFF
DISJOINT_DIFFS
EQ_SUBSET_SUBSET
FINITE_REST_EQ
INFINITE_INJ
INJ_IMAGE_BIJ
IN_BIGINTER_IMAGE
IN_BIGUNION_IMAGE
IN_EQ_UNIV_IMP
SUBSET_ADD
SUBSET_INTER1
SUBSET_INTER2
SURJ_IMP_INJ


# 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


# 0525ca92 26-Dec-2016 Jeremy Dawson <jeremy@cecs.anu.edu.au>

quicker proof of SURJ_INJ_INV


# 9c3698fc 26-Dec-2016 Jeremy Dawson <jeremy@cecs.anu.edu.au>

pred_setTheory.INJ_LINV_OPT_IMAGE, lemmas


# 28b06892 26-Dec-2016 Jeremy Dawson <jeremy@cecs.anu.edu.au>

clearer proof of INJ_CARD, extra lemmas


# 9cfcabb6 24-Dec-2016 Jeremy Dawson <jeremy@cecs.anu.edu.au>

DELETE_SUBSET_INSERT and SUBSET_INSERT_DELETE almost the same

new thm SUBSET_OF_INSERT


# bb06ae24 28-Jul-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix pre-boss theories in light of pat_assum renaming


# 1f63d5fa 02-May-2016 Ramana Kumar <ramana@member.fsf.org>

Add various theorems from CakeML


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


# 9524847d 10-Mar-2016 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Remove some duplicates of the theorem TRUTH.

These are:
• INFINITE_DEF and IN_LIST_TO_SET (replaced with overloadings)
• IN_APP_applied and IN_ABS_applied (inadvertently generated)

Also, made changes to try to avoid new definitions in listTheory accidentally having a "_DEF" suffix instead of "_def". Old naming inconsistencies still remain in listTheory (e.g. EXISTS_DEF, FIND_def and FLAT).

These changes will break a few proofs but patches should be trivial (i.e. removing references to these TRUTH theorems and/ or renaming "_DEF" to "_def").


# 3f25356f 17-Feb-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Add 2 theorems about SUM_IMAGE to pred_setTheory

* g injective ⇒ Σ f (IMAGE g s) = Σ (f o g) s
* g bijective on s ⇒ Σ (f o g) s = Σ f s

From Joseph Chan


# 30f78bd2 14-Dec-2015 Michael Norrish <Michael.Norrish@nicta.com.au>

User pp fns can note terms as binders to system printer

This allows better behaviour in a test case shown to me by Mike, where
annotations in monad-syntax weren't appearing.


# cb3a93b2 09-Dec-2015 Jeremy Dawson <jeremy@cecs.anu.edu.au>

more faster proofs in set_relation


# 6f42ef25 09-Dec-2015 Jeremy Dawson <jeremy@cecs.anu.edu.au>

faster proof of extend_linear_order


# 33e8e85f 09-Dec-2015 Jeremy Dawson <jeremy@cecs.anu.edu.au>

tweaking of slow proofs - strict_linear_order


# 02e032aa 08-Dec-2015 Jeremy Dawson <jeremy@cecs.anu.edu.au>

lemmas re tc, rrestrict


# b72783a8 07-Dec-2015 Jeremy Dawson <jeremy@cecs.anu.edu.au>

prove FINITE_ISO_NUM using FINITE_BIJ_CARD_EQ


# 55e83975 06-Dec-2015 Jeremy Dawson <jeremy@cecs.anu.edu.au>

changing Unicode to ASCII


# bd51989d 06-Dec-2015 Jeremy Dawson <jeremy@cecs.anu.edu.au>

FINITE_BIJ_COUNT, and proved FINITE_WEAK_ENUMERATE from it


# b307e77e 06-Dec-2015 Jeremy Dawson <jeremy@cecs.anu.edu.au>

shorter proof of FINITE_WEAK_ENUMERATE

also IN_GSPEC(_IFF)


# aa853bfc 25-Nov-2015 Michael Norrish <Michael.Norrish@nicta.com.au>

Delete trailing whitespace in src/


# 9112173e 08-Nov-2015 Jeremy Dawson <jeremy@cecs.anu.edu.au>

lemmas about CARD (IMAGE ...)


# 4e806d11 08-Nov-2015 Jeremy Dawson <jeremy@cecs.anu.edu.au>

LINV and RINV can be defined in terms of LINV_OPT

which also makes LINV and RINV equal to each other


# f3fcad05 03-Nov-2015 Jeremy Dawson <jeremy@cecs.anu.edu.au>

LINV_OPT, Left inverse, to option type

result is NONE outside image of domain
also new result CARD_IMAGE


# 9a27d2c2 02-Nov-2015 Ramana Kumar <ramana@member.fsf.org>

start towards OpenTheory compatibility for relation and pred_set

This is potentially going to be complicated since OpenTheory defines a
type of sets and HOL4 does not.


# 60449c30 17-Mar-2015 Michael Norrish <michael.norrish@nicta.com.au>

Remove vacuous quantification in SUBSET_MAX_SET

There was a stray universally quantified variable that didn't appear in
the statement of the theorem.

Also slightly simplify proof.


# 5db1c01a 23-Oct-2014 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Attempt to tidy-up some proof scripts. Much of this has come from CakeML.

Removed Unicode and tried to eliminate lines longer than 80 characters.

Also added a few new constants to listTheory: INDEX_FIND, FIND and INDEX_OF.

Added "nub" to listSyntax.


# 3349d964 20-Sep-2014 Ramana Kumar <ramana@member.fsf.org>

various theorems about cardinality and sets

from CakeML, probably some are originally from HOL Light


# 8b94e591 13-Aug-2014 Scott Owens <S.A.Owens@kent.ac.uk>

Added lemma about going in MAX_SET


# 29735d0f 12-Aug-2014 Scott Owens <S.A.Owens@kent.ac.uk>

A few set lemmas from CakeML.


# 875ba111 06-Jun-2014 Michael Norrish <michael.norrish@nicta.com.au>

Make some pred_set rewrites automatic.

Also fix up the script file's redefinition of store_thm (used to make
alternative versions of IN_<x> theorems).


# 54086620 02-May-2014 Michael Norrish <Michael.Norrish@nicta.com.au>

New automatic rewrite for GSPEC f x, which shouldn't happen much.


# f3974962 20-Mar-2014 Ramana Kumar <ramana@member.fsf.org>

New automatic rewrite: !s. POW s <> {}


# 914e3447 17-Mar-2014 Michael Norrish <michael.norrish@nicta.com.au>

Export pred_setTheory's BIJ_EMPTY as an automatic rewrite.


# 807ace7a 17-Mar-2014 Michael Norrish <michael.norrish@nicta.com.au>

Prove ⊢ x ∉ s ⇒ s DELETE x = s and export as a rewrite

It turns out that the implication can be an iff (which is the existing
DELETE_NOT_ELEMENT theorem), but this is less useful for most
simplification.


# d1a6a38d 05-Mar-2014 Michael Norrish <michael.norrish@nicta.com.au>

Define MAX_SET on the empty set to equal 0.

This make the relevant equation

FINITE s ==> (MAX_SET (e INSERT s) = MAX e (MAX_SET s))


# 2b0ba9ea 31-May-2013 Michael Norrish <Michael.Norrish@nicta.com.au>

Some new theorems about injectivity, surjectivity and countability


# db871b5d 27-May-2013 Michael Norrish <michael.norrish@nicta.com.au>

Minor polish in pred_set + theorem about CARD(BIGUNION s)


# 52d9d5bd 23-May-2013 Michael Norrish <Michael.Norrish@nicta.com.au>

Polish pred_setTheory with new rewrites for CARD applied to DIFF and UNION.

Preserve old theorems for the sake of backwards compatibility, so give
new theorems names with _EQN as suffix.


# 6fcbc4eb 20-Apr-2013 Ramana Kumar <ramana.kumar@gmail.com>

add various more constants to OpenTheoryMap


# 91583066 31-Oct-2012 Michael Norrish <michael.norrish@nicta.com.au>

Put some syntax operations for bool$IN into boolSyntax.


# 1de5add5 31-Oct-2012 Michael Norrish <michael.norrish@nicta.com.au>

Automatically prove a bunch of “applied” results for set constants.

An “applied” theorem is of the form

(set construction) x <=> ...

where the ... will be from the theorem

x ∈ (set construction) <=> ...

So, for example, INSERT_applied is

|- (x INSERT s) y <=> (x = y) \/ y ∈ s

These theorems are all exported as rewrites, and provide a way of
getting users out of holes where they have “set world” constructions
but have lost the ∈ connection between the set and the possible
element. Note that these theorems will attempt to put the users back
into the “set world” because the RHSs will retain their uses of ∈.

These theorems will still work fine when rewriting with IN_DEF:
something like

SIMP_TAC (srw_ss()) [IN_DEF]

will eliminate the “IN”s, even as the “applied” theorems help to make
progress with the other bits of the goal.

There’s no handling of GSPEC yet, but perhaps that can wait for HOL
Light style set-comprehension (see issue #85). The alternative is
probably a special conversion to do the right thing, though perhaps
just rewriting with

GSPEC f v <=> ∃x. (v,T) = f x

would do the trick in most cases. (The problem in general is that to
get the above rewrite to work you have to throw in
pairTheory.EXISTS_PROD as well.)


# 1468b25b 25-Sep-2012 Michael Norrish <michael.norrish@nicta.com.au>

Move theorem |- univ(:'a -> bool) = POW univ(:'a) to pred_setTheory.


# a66904d8 24-Sep-2012 Michael Norrish <michael.norrish@nicta.com.au>

Theorems about countable, including countability of various universes.


# 76c52880 24-Sep-2012 Michael Norrish <michael.norrish@nicta.com.au>

A simplification-friendly version of the insert-absorption theorem.


# 2f2c9731 20-Sep-2012 Ramana Kumar <ramana.kumar@gmail.com>

move some theorems about DIFF into pred_setTheory


# fa6472be 31-Jul-2012 Ramana Kumar <ramana.kumar@gmail.com>

Revert "make patricia play nice..."

This reverts commit da47401d5163b28a320790e7acca897d8374880c.
Reason: qualified names in the list of add_persistent_funs exports are
supposed to work.
See comments on #73.
The reason why they probably weren't working before is that you need to
use a name like:
"pred_set.FINITE_EMPTY"
not
"pred_setTheory.FINITE_EMPTY"

Conflicts:
src/list/src/listScript.sml
src/patricia/patriciaScript.sml
src/patricia/patricia_castsScript.sml
src/pred_set/src/pred_setScript.sml

(Conflicts all due to change in add_persistent_funs interface.)


# 0fc75877 30-Jul-2012 Ramana Kumar <ramana.kumar@gmail.com>

change interface to add_persistent_funs (#73) and fix more calls

The new interface takes a list of strings naming theorems.
(The old interface took a list of (string * thm) pairs.)
The new way better ensures consistency of theory development and theory
load behaviour: you can no longer pass a name with a theorem that isn't
actually saved under it.

Theorems are looked up with DB.theorem, or failing that, DB.definition
or DB.axiom.

Alas, I found more examples using add_persistent_funs to add theorems in
ancestor theories. Rather than modify the ancestor theories, I have
opted to make the offending theories save the theorems they want to add
to computeLib themselves so they have a name in the current theory to
pass to add_persistent_funs.

If this behavior was appropriate for patricia too (da47401) change it.
Alternatively, if the ancestor theories should have exported those
things for computeLib anyway, search this commit for new instances of
"save_thm" to see what needs fixing.


# da47401d 30-Jul-2012 Ramana Kumar <ramana.kumar@gmail.com>

make patricia play nice with new add_persistent_funs (#73)

Some theories in src/patricia were calling add_persistent_funs for
definitions from other theories (list and pred_set) and using the
arbitrary code string to refer to those theorems with fully qualified
names.

The fix adopted here is to call add_persistent_funs for those constants
in the theories where they are defined.


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

Prep for pull.


# be2f8ea8 04-Jul-2012 Michael Norrish <michael.norrish@nicta.com.au>

Remove some trailing whitespace.


# 33bda56f 26-Jun-2012 Konrad Slind <konrad.slind@gmail.com>

Added size functions for finite sets, maps, and bags.

These are helpful for measures supporting recursive definitions and
induction schemes. The size functions have been added to the TypeBase,
with the intent that Induct, Induct_on, Cases, and Cases_on should be
applicable. (However, this has not been checked yet, so these might
not work.)

The size of a finite set is the number of elements in it, plus the
sizes of all the elements. (The size of a set with 0 as an element is
larger than that set with the zero deleted.)

The size of a finite map is the number of mapped elements, plus the
sizes of the mapped elements. Key size is ignored.

The size of a finite multiset is the number of elements in the
multiset plus the sizes of the elements. There are more extensive
orderings (e.g. the multiset order) but they aren't measures, which is
important for the way termination proofs are automated.


# 5b587535 26-Jun-2012 Konrad Slind <konrad.slind@gmail.com>

Allow "non-datatypes" in TypeBase to have optional induction thm.

Provide appropriate values for this field for finite sets, strings,
integers, finite maps and words.


# e38c0c55 07-Jun-2012 Michael Norrish <Michael.Norrish@nicta.com.au>

Simple new (automatic rewrite) theorem about SURJ and IMAGE.


# 694d6bb2 01-May-2012 Ramana Kumar <ramana.kumar@gmail.com>

Congruence theorem for IMAGE


# 949dc465 26-Apr-2012 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Ensure tDefine quantifies variables, making it consistent with Define.

Obviously this will break code that relies on the former behaviour.


# 9c8c1009 18-Apr-2012 Ramana Kumar <ramana.kumar@gmail.com>

theorem: MAP preserves injectivity

Maybe the statement/name should match my commit summary better?

Also, proved a simple lemma about replacing the set arguments to INJ
with super/subsets.


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

theorem characterising INJ f (x INSERT s) t


# ce1fd0cc 09-Apr-2012 Michael Norrish <Michael.Norrish@nicta.com.au>

Add a couple of results about pred_set$BIJ.


# e297c962 09-Apr-2012 Michael Norrish <Michael.Norrish@nicta.com.au>

Make FINITE_INDUCT available to the Induct_on tactic.


# cbf0d716 20-Feb-2012 Michael Norrish <Michael.Norrish@nicta.com.au>

Remove structure ... = struct ... end bracketing from pred_setScript.sml.


# 00cb5eaf 20-Feb-2012 Michael Norrish <Michael.Norrish@nicta.com.au>

Add a theorem telling us what univ(:bool) is.


# 026f0c20 31-Jan-2012 Michael Norrish <Michael.Norrish@nicta.com.au>

Slight simplifications of two results about partition.

Thanks to Joseph Chan for the observation that the equiv_on precondition was not
necessary in these cases.


# a016090a 15-Jan-2012 Michael Norrish <Michael.Norrish@nicta.com.au>

Add new theorem about cardinalities of sets under injective images.

Move some rewrite exporting to happen immediately after the rewrite is
proved so that later proofs within the same theory can benefit.
Effect on dependent theories is unchanged of course.


# c81e0b17 12-Jan-2012 Michael Norrish <Michael.Norrish@nicta.com.au>

Prove that IMAGE f is injective if f is.


# e5bdf831 12-Jan-2012 Michael Norrish <Michael.Norrish@nicta.com.au>

New theorem stating that pred_set's count operation is injective.


# eef0d450 10-Jan-2012 Michael Norrish <Michael.Norrish@nicta.com.au>

Document new PROD_IMAGE and PROD_SET constants in release notes.

Also perform overloading to Unicode Pi and PI.


# f8fd8324 02-Oct-2011 Ramana Kumar <ramana.kumar@gmail.com>

add various names to the OpenTheory map

This is in preparation for logging llistTheory.

Notes:
- Sent combin$C to Function.Combinator.c (same for combin$S).
Another name might be preferred on the OpenTheory side.
- Not sure what bool$BOUNDED is about; dumped it in the HOL4 namespace.
- Put lots of pred_set constants in the Set namespace, but in the
standard (OpenTheory) library it seems like Set is for constants
operating on an abstract type of sets (rather than predicates). I'm
not sure whether we should use a different namespace when working with
sets-as-predicates or just pretend predicates are the abstract type
and do a bit of magic on article reading/writing as necessary (don't
know what that would be exactly yet).
- Similar for constants in set_relation, which I'm currently putting in
the Relation namespace. Although it looks like currently OpenTheory
doesn't use an abstract type of relations (but probably it will
later).
- Sent marker$Cong and marker$Abbrev to Unwanted.id, but not sure if
Unwanted.id is supposed to be polymorphic (whereas those are identity
functions restricted to bool). Similar for numeral$iZ
- sent GSPEC to Set.specification; maybe not an obvious name...
- Using top-level "While" namespace for whileTheory
- dumped numeral$iiSUC in HOL4 namespace; not sure what to do with it
- BIT2 is going to Number.Numeral.bit2; this is in line with wanting the
base library to be liberal, i.e. a union of all useful basic constants
and theorems (so has bit0, bit1 and bit2)... but I think there may be
competing goals for base


# b2760b41 25-Sep-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Revert change to gspec2 syntax; we can use { .. | .. | .. } here.


# a2328149 23-Sep-2011 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Adopt ML-style syntax for case expressions and use freed up "||" for bitwise-or. See issue #24.


# b481c08f 09-Aug-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Add PROD_IMAGE and PROD_SET constants (analogous to SUM_IMAGE etc).

From Joseph Chan.


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


# cbd80bb5 14-Jun-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Add LaTeX notation for set cross-product operation.


# f1e3425f 01-Jun-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

New results and automatic rewrites about pred_set$SING.

Due to a meeting with Joseph Chan.


# da03eae1 23-May-2011 Ramana Kumar <ramana.kumar@gmail.com>

Characterization of BIJ as existence of an inverse


# 7b56baa3 21-May-2011 Ramana Kumar <ramana.kumar@gmail.com>

A couple of theorems about "SIGMA f s <= SIGMA g s".


# 2082e910 22-Mar-2011 Ramana Kumar <ramana.kumar@gmail.com>

A couple more theorems about ABS_DIFF

Also some lemmas about relationship between subtraction and less-than.
If only DECIDE_TAC were available here...


# a4acbc77 06-Jan-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Significant change to pretty-printing; affects user-printing API.

The change allows user-printers to alter the main printer's notion of
what is a "seen free variable", and what is bound. The latter causes
the colouring. The first notion is important when show_types is on,
as types are only given for the first occurrence of a free variable.

This allows the monadsyntax to do the right thing with the colouring
of variables.


# cb33ef75 05-Jan-2011 Ramana Kumar <ramana.kumar@gmail.com>

Add Unicode version for SIGMA


# 6020bbda 03-Jan-2011 Ramana Kumar <ramana.kumar@gmail.com>

Theorem about exactly when SIGMA f s equals 0


# 2d4ce53c 10-Dec-2010 Ramana Kumar <ramana.kumar@gmail.com>

Tactic for eliminating MAX_SET


# 921253c4 09-Dec-2010 Ramana Kumar <ramana.kumar@gmail.com>

Add congruence theorem for SUM_IMAGE

We might want one for ITSET too one day.


# c16186f4 23-Aug-2010 Ramana Kumar <ramana.kumar@gmail.com>

Added new constant 'pairwise' for asserting a predicate on all pairs of elements in a set.


# 25dd5af4 16-Aug-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

New REL_RESTRICT constant; variety of proofs.

Best is probably that strong partial orders on finite sets are
well-founded. REL_RESTRICT could live in relationTheory, most of the
subsequent proofs need to be in pred_setTheory because of the use of
the FINITE constant.


# 01ea2ca7 15-Aug-2010 Ramana Kumar <ramana.kumar@gmail.com>

Added rewrite FINITE_REST.


# e9856761 11-Aug-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Make TeX of UNIV look better (removing a stray space to the left).

Also make the nice TeX form work if Unicode-pretty-printing of UNIV
has been turned off.


# df7d89ab 09-Aug-2010 Ramana Kumar <ramana.kumar@gmail.com>

Added theorem BIGINTER_UNION, analogous to BIGUNION_UNION.


# 89fcac43 09-Aug-2010 Ramana Kumar <ramana.kumar@gmail.com>

A couple of theorems about SUBSET respecting PSUBSET's transitivity.


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


# 051d07b5 23-Jun-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

New statement of SUBSET_FINITE that can be directly MATCH_MP_TAC'ed.

I've been so annoyed by SUBSET_FINITE so many times, but those days have
finally come to an end.


# 0e2788b5 22-Jun-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

INFINITE is now an abbreviation for ``\s. ~FINITE s``.


# 38724691 14-Jun-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Prove some results about the finite-ness or otherwise of some universal sets.


# ea493c8e 10-May-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Allow empty list forms to be overloaded ([], {}, etc).

This gives us the ability to get nice TeX for them. Instantiate this ability
for emptyset.


# d728bf39 04-May-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Add TeX notation for 'proper subset'.


# 6d87ca0c 19-Apr-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix handling of special 'U' constant, retaining better backwards compatibility.

In particular, there is now a special form 'univ' that behaves as 'U' did.
Further, with Unicode on, the character U+1D54C is used in the same way.
This character may not be in many fonts, so add another trace to turn its
use off. If you can see it, it's a nice 'double-struck' U. I would have
gone for a script-style U, but it leant over too much, and so overlapped
the following left-paren character.


# ec527121 19-Apr-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Make U syntax for UNIV consistent in its parsing and printing.

Now you can write FINITE U(:'a), and it parses. This used to require
FINITE (U(:'a)), which is so many parentheses that one wonders about the
usefulness of the abbreviation.


# 38ed962b 19-Mar-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

TeX macros in TeX_notation calls need to be terminated with {}.


# 621bb980 17-Mar-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Move more TeX notations into appropriate theory files.

Word-related notation still to do.


# a0b20792 26-Feb-2010 Ramana Kumar <ramana.kumar@gmail.com>

Added a number of theorems, mainly to finite_mapTheory.

finite_map:
FLOOKUP_FUNION
FEVERY_FLOOKUP
FLOOKUP_o_f
FUPDATE_LIST_APPEND
FUPDATE_FUPDATE_LIST_COMMUTES
FUPDATE_FUPDATE_LIST_MEM
pred_set:
COMPL_UNION


# 06c3bf84 29-Jan-2010 Tjark Weber <Tjark.Weber@cl.cam.ac.uk>

Better support for sets as predicates in HolSmtLib, replacing {x | P x} by P.


# a772037e 19-Jan-2010 Ramana Kumar <ramana.kumar@gmail.com>

Unicode version for PSUBSET


# 472dd880 12-Jan-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Add some automatic rewrites for SUM_SET and count (of pred_setTheory).


# 79e987ee 25-Nov-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Slight tidy-up of countability theorems in pred_setTheory.

Define the num_to_pair and pair_to_num functions used there in terms
of the same functions given in numpairTheory.

Also add Unicode symbol (LaTeX's \times, U+D7) for CROSS.


# d13e8d54 25-Nov-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Add syntax for universal sets ``U(:ty)``, where ty is the type of element.

The parsing can be done with an overload, but the pretty-printing is
done with a custom user-level pretty-printer. It comes with its own
trace variable to turn it off. To turn it off permanently, use

Parse.remove_user_printer "UNIVprinter"


# ec5ad4b5 28-Jul-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Another lemma from Ramana Kumar, this one about showing what I expect
is a relatively common case for subset of a "big" union.


# 445f8728 16-Jul-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Make FINITE_DIFF an exported rewrite and prove a little "arithmetic"
rewrite UNION_DIFF (s <= t ==> (s + (t - s) = t)).


# aa702a0a 24-Mar-2009 Thomas Tuerk <Thomas.Tuerk@cl.cam.ac.uk>

Addition of some mixed theorems


# 24520cf9 21-Mar-2009 Scott Owens <Scott.Owens@cl.cam.ac.uk>

Forgot to store a theorem in the last commit.


# 60643e6b 20-Mar-2009 Scott Owens <Scott.Owens@cl.cam.ac.uk>

A definition of countable sets, some basic theorems about them, and an few
misc. supporting theorems.


# 3fee4ee4 22-Feb-2009 Konrad Slind <konrad.slind@gmail.com>

Implement ML code generation for large records.


# 8654de63 07-Feb-2009 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Attempt to tidy up (fix) EmitML and finish off the transition that Scott
started. EmitML has been moved to the end of the build sequence. "Hooks"
have been eliminated and all EmitML related stuff has been removed from the
various theory directories. All code for generating ML/Caml is now
self-contained within src/emit. I've not tested the generated Caml code but
the SML seems to build fine.

The directories:

src/theoryML
src/theoryOcaml
src/emitScript

have been replaced by

src/emit/theories/ML
src/emit/theories/Caml
src/emit/theories


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

Fairly dramatic change, supporting the use of "syntactic patterns".
It is now possible to overload a name to term (typically a
lambda-abstraction) in order to create syntax-only definitions. For
example, there is a definition of not-equals now in the system:
val _ = overload_on ("<>", ``\x y. ~(x = y)``)
val _ = set_fixity "<>" (Infix(NONASSOC, 450))
This definition is parsed and pretty-printed.

Two other annoying changes. The interface for adding unicode variants
has changed, and I have made precedence level 450 of the parser
non-associative. This latter change has caused most of the (minor)
adjustments to the files below. The regression test doesn't go
through yet. (Currently there is a failure in
quotient/examples/sigma that I don't understand.)


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


# c62af45b 31-Aug-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Disable the printing of EMPTY as the Unicode emptyset character
because this breaks the "list form" printing of literal sets ({5}
prints as ``5 INSERT UEMPTY`` (where UEMPTY is the Unicode emptyset
character)). I am not sure how to fix the logic in the pretty-printer
to handle this properly at the moment.


# 6971535d 27-Aug-2008 Konrad Slind <konrad.slind@gmail.com>

Getting rid of some pattern-matching complaints,
as Anthony suggested.


# 2fa0e0d3 22-Aug-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Modify Unicode to use an interface whereby theories can specify
Unicode alternatives for their constants. These can be turned on and
off by fiddling with the trace variable "Unicode". I.e., to see
pretty stuff, run hol and then
- set_trace "Unicode" 1;
> val it = () : unit

- FORALL_SIMP;
> val it = <...pretty stuff...>
I haven't gone through and done the words because it's time for me to
go home.

Remaining issues:
* type abbreviations
* the lambda binder (this is not a constant, so we can't use
overloading)
* restricted quantifiers
* whether automatically having Unicode stuff in the grammar (even if
disabled) might cause non-Unicode users pain


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


# 7d90547c 29-Mar-2008 Konrad Slind <konrad.slind@gmail.com>

This check-in mainly fixes a problem with
literals occurring in patterns of TFL-style
definitions. There are a host of other minor
changes as well.


# 532d6d9a 28-Dec-2007 Konrad Slind <konrad.slind@gmail.com>

hanges to upgrade EVAL on BIGUNION {}.



M src/parse/term_grammar.sig
M src/pred_set/src/pred_setScript.sml
M src/pred_set/src/pred_setLib.sml
M src/pred_set/src/PFset_conv.sml


# fdd5847d 30-Jan-2007 Konrad Slind <konrad.slind@gmail.com>

Use tDefine to define ITSET.


# e33b8b0a 21-Sep-2006 Michael Norrish <Michael.Norrish@nicta.com.au>

Type abbreviations now print by default. Where this is "problematic",
as with the set and bag abbreviations, this printing can be turned off
by calling disable_tyabbrev_printing, which takes the abbreviation name
as an argument. (There is also a trace variable controlling tyabbrev
printing globally.)
Bag and set abbreviations are "problematic" because if left on they
do things like
- type_of ``(/\)``;
> val it = ``:bool -> bool set`` : hol_type
and
- type_of ``(+)``;
> val it = ``:num -> num multiset`` : hol_type
This code isn't done yet because it doesn't pick between multiple possibilities
in an intelligent way. The heuristic I want to implement will take the most
specific abbreviation first, and then the most recently asserted if two
are equally specific.


# 03efaf19 25-Jul-2006 Konrad Slind <konrad.slind@gmail.com>

Smoothing out ML code generation in the case of pseudo-constructors
like pred_set$INSERT.


# 08c5f30d 24-Jul-2006 Michael Norrish <Michael.Norrish@nicta.com.au>

Add a new exported rewrite to pred_set, and use it to prove another
export-worthy rewrite in the theory of containers, namely that
SET_TO_LIST {x} = [x]


# a4450c0b 14-Jul-2006 Konrad Slind <konrad.slind@gmail.com>

Fixing up bugs spotted by Anthony.


# 4cb49006 12-Jul-2006 Konrad Slind <konrad.slind@gmail.com>

Changes having to do with generating ML. System should build again.


# c6f8da28 04-Jul-2006 Konrad Slind <konrad.slind@gmail.com>

Fixing up treatment of "ABSDATATYPE" thingies, where ordinary
constants are treated as datatype constructors in the generatd
ML.


# 5c8f5906 22-Jun-2006 Konrad Slind <konrad.slind@gmail.com>

Minor changes and bugfixes to ML code generation. Have renamed
EmitML.exportML to EmitML.emitML, since exportML is used in
SML/NJ to dump the image. Also renamed Globals.exportMLPath
to Globals.emitMLDir (since it's a directory and not a path).

Also fixed bug in code generated for constructors and tuples.


# b29d4565 22-Jun-2006 Konrad Slind <konrad.slind@gmail.com>

Upgrading EmitML to support records. Lots of associated changes
as well.


# 5d6a6595 09-Jun-2006 Konrad Slind <konrad.slind@gmail.com>

The new changes to records have been fixed so that the system
will rebuild without error. Whether the record stuff actually
does what it should, I am still checking. The big record
stuff will have to be checked in Australia, probably, since
I don't really understand it.


# d67d1999 14-May-2006 Michael Norrish <Michael.Norrish@nicta.com.au>

Extend the add_listform interface so that the user can specify a printing
"consistency" for the block of list elements. Previously, it was just
assumed that the user always wanted (INCONSISTENT,0). This is the value
now specified in the various places where add_listform is used.


# 41ffd6d1 01-May-2006 Michael Norrish <Michael.Norrish@nicta.com.au>

Export more rewrites, and prove a trivial result about complement.


# ad57a8a3 10-Mar-2006 Konrad Slind <konrad.slind@gmail.com>

Upgrading Define so that it proves more termination goals.
Generates lex. combinations and tries them out, so gets
some more ordinary recursions. Gets all iterated primitive
recursions. Also has been taught about some operations
on words (so recursion from w to w-1w will terminate,
for example).

Let me know of any bugs/slowdowns, etc.


# d8e57a78 16-Feb-2006 Michael Norrish <Michael.Norrish@nicta.com.au>

Add more aggressive normalisation of multiplicative expressions to ARITH_ss.
Also provide old_arith_ss values for scripts that don't want this new
behaviour. Update proofs to go through again. Some should be a bit more
robust in the face of future changes to arith_ss. Others just punt and refer
to old_arith_ss.


# 014f6140 15-Feb-2006 Konrad Slind <konrad.slind@gmail.com>

Changed the TypeBase to be indexed by types. Originally it was
indexed by a single string (representing the type operator), then
Michael changed it to a pair of strings (precise representation
of the type operator). The latest change allows non-datatypes to
be added to the TypeBase. This will allow case analysis and
termination proofs to be supported for non-datatypes.

I reckon there are still a few bugs left after the massive
revision, so you might want to wait a while before upgrading.


# 78b1389c 13-Feb-2006 Konrad Slind <konrad.slind@gmail.com>

Added Pigeon Hole Principle (PHP).


# 13f030c2 07-Feb-2006 Michael Norrish <Michael.Norrish@nicta.com.au>

Wide-ranging change to make the TypeBase export an interface forcing users
to be concerned about which theory their types are from. Interactive users
of the "induction_of", "axiom_of" and similar functions are thrown the only
bone: they can effectively omit the theory parameter by using "" instead
of a theory name.
Prompted by a bug found by Tom Ridge where it was impossible to define
a pattern matching function on a type with the same name as another type
because the pattern-matching code was using dest_type and TypeBase.read
on just the type-operator name.


# e93d7856 05-Dec-2005 Michael Norrish <Michael.Norrish@nicta.com.au>

Implement and document a new, unambiguous set comprehension syntax.
Only fixes required are to ieeeScript where old style =>-| if-then-else
syntax was nested to extraordinary degree without any parentheses.
Adding parentheses was the only thing required to fix the problem.


# 02c42174 22-Oct-2005 Konrad Slind <konrad.slind@gmail.com>

Added powerset operator and simple theorems (finiteness, cardinality).
EVAL has been taught about it, etc.


# adf911c8 25-Jul-2005 Konrad Slind <konrad.slind@gmail.com>

Revised exportML so that it takes a path parameter, which tells
where the ML corresponding to a theory is to be written.

This has been propagated to all the theories that already export
ML, and the mkword.exe tool has been upgraded to also take a
path where it should write the generated ML. This is useful,
because doing an exportML to the same directory as the theory
files will end up confusing Holmake.


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


# cc14cd5e 23-Feb-2005 Scott Owens <Scott.Owens@cl.cam.ac.uk>

Added theorems BIJ_LINV_BIJ and BIJ_LINV_INV


# 2da07975 10-Feb-2005 Konrad Slind <konrad.slind@gmail.com>

Added a few more theorems about MIN_SET and MAX_SET.


# 999a347b 25-Jan-2005 Konrad Slind <konrad.slind@gmail.com>

Getting rid of HTML output on xTheory.sig files.


# 3a70d6f5 04-Jan-2005 Konrad Slind <konrad.slind@gmail.com>

Trivial change to bound var. names in definitions of BIGUNION and
BIGINTER. Motivated by documenting pred_setTheory in the
Description.


# fb0b2ec1 27-Nov-2004 Konrad Slind <konrad.slind@gmail.com>

Hacking around to get HTML symbols put in generated `Theory.sig'
files. Allows usual logic symbols (and some set theory symbols)
in the generated html files, see help/HOLindex.html after a
complete build of the system (examine a theory file).

Only symbol not currently dealt with properly is lambda. Also,
I thought I had emptyset sussed, but it stopped working for
some reason ... not a problem since "{}" works just as well,
and may be nicer.


# 69b879e1 23-Sep-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

Remove a couple of exported rewrites because they will cause the simplifier
to loop unnecessarily trying to solve an existential problem.


# 138d26bb 04-Aug-2004 Konrad Slind <konrad.slind@gmail.com>

ML code generation for finite_map now added. Also, a whole host
of minor changes and robustifications have been applied.


# 3bbbcbbd 02-Aug-2004 Konrad Slind <konrad.slind@gmail.com>

Exposed EMPTY and INSERT in the signature of the generated ML. This
allows them to be used to build sets, but they still can't be used
to take sets apart by pattern matching.


# 9c628044 30-Jul-2004 Konrad Slind <konrad.slind@gmail.com>

Minor mods to add error messages in generated ML code. The current
body of generated ML code now builds without any pattern-match
warnings.


# 19bb8267 27-Jul-2004 Konrad Slind <konrad.slind@gmail.com>

Added some theorem-proving to FAIL-based exceptions for partial
set operations (just BINGINTER, I think, which doesn't make sense
in the EMPTY case for finite sets).


# de0f1205 21-Jul-2004 Konrad Slind <konrad.slind@gmail.com>

ML code now generated from pred_set. Most of the operators can be
handled, but the model is a concrete datatype with constructors
EMPTY and INSERT. Reasons for this choice are discussed in the
code. Also proved some extra theorems.


# 1eadaac4 07-Jul-2004 Konrad Slind <konrad.slind@gmail.com>

Upgrades to ML code generation. It now works for numerals, although
the results of a computation will be incomprehensible usually. Writing
a prettyprinter needs to be done.


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


# 5293b523 23-Jun-2004 Konrad Slind <konrad.slind@gmail.com>

Changing "prove" to store_thm so that the newly added theorems
from Scott actually appear in the theory.


# c1c39bc1 19-Jun-2004 Konrad Slind <konrad.slind@gmail.com>

Adding a few theorems. Proved by Scott Owens.


# 9249ac55 01-Jun-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

A couple of theorems about SUM_IMAGE, and a new (trivial) rewrite for
GSPEC.


# 49d5951b 01-Apr-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

More automatic rewrites.


# cbc8b2d3 18-Mar-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

Useful finite-ness results, including the converse of
"the finite union of finite sets is finite"
giving an equivalence for FINITE (BIGUNION P).


# 05d743ef 21-Jan-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

Another very useful rewrite exported.


# c485fb4b 21-Jan-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

Export a useful rewrite.


# a4dea4e9 11-Jan-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

A change to make this proof renaming-independent; I don't see that this
one would have ever worked with the standard kernel.


# 8e708da4 10-Dec-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Add a useful theorem about finiteness of images.


# 5b1fcd00 04-Nov-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

A start on proving some theorems about the action of partitioning a set
according to an equivalence relation. (Joe if you fancy hacking METIS_TAC,
you might look into why it seems to do so miserably on those places in
what I've checked in where PROVE_TAC is used. PROVE_TAC in these places
takes a while to normalise, but having done so proves the goals quite
quickly. METIS starts quickly but doesn't seem to get anywhere.)


# 1ec25bf7 21-Oct-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Some new theorems; one just an old one recast to be more suitable for
rewriting.


# fb863eae 03-Sep-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Modify the add_listform function in line with a suggestion of Lockwood
Morris's to provide slightly more flexibility in the way that list forms
are pretty-printed. Previously, the format was fixed as
<left-delimiter> el1 <sep> <a space> el2 <sep> <a space> ...
Now, the spacing is more directly under user-control.


# b6ab3df4 28-Jul-2003 Joe Hurd <joe@gilith.com>

These files needed changing because of the new STRIP_TAC.


# bb654e4b 26-Jun-2003 Konrad Slind <konrad.slind@gmail.com>

Many small changes, most associated with boolification or lifting.


# eb978153 16-May-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Add a very useful automatic rewrite.


# 012ac47a 10-Apr-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Added a couple of extra rewrite exports.


# bef52d80 01-Apr-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

A proof of Koenig's Lemma, where the notion of a tree being finite is
generalised to the notion of a reachable set being finite.


# 3688a3ce 22-Nov-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Prove some useful (trivial) theorems about GSPEC. Also shift definition
of SET_SPEC_ss (simpset for handling x IN {y | ...}) to pred_setTheory
itself (using adjoin_to_theory magic) so that loading pred_setTheory
can automatically install it in srw_ss as the theory loads.
(Preivously, you had to remember to also load pred_setLib.)


# cfbbb1a5 04-Oct-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Added another useful automatic rewrite.


# a373c426 01-Oct-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Realised that my particular application didn't want SUM_SET at all, but
rather something that calculates something that looks a bit like the
sum of the image of a function. E.g., you have a finite set of widgets
and you want to know the sum of their weights. It's not right to
write
SUM_SET (IMAGE weight s)
because this relies on the weight function being injective.

Instead, you now write
SUM_IMAGE weight s
and I can redefine SUM_SET to be equal to SUM_IMAGE I.

Someday I (or anyone else who fancies it) should prove that if f is injective,
then SUM_SET (IMAGE f s) = SUM_IMAGE f s.


# 0dbcf4a2 27-Sep-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Slight clean-up of SUM_SET work. In particular, there's a general
result possible justifying recursion equations that look like:
ITSET f (x INSERT s) b = f x (ITSET f s b)
This is the FOLDR version, as opposed to the FOLDL version, or the
recursing version rather than the accumulator version.
Also define functions to get the minimum and maximum elements of sets
of numbers. The former is just the LEAST quantifier. (Just realised that
perhaps shouldn't even have a new constant for MIN_SET; could do it with
overloading; but then the pretty-printing system would pick one or the
other to be "the way" to print that constant, which could be confusing
too. Dunno.


# 41bbe656 26-Sep-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Proved that the condition on the function being iterated doesn't need to
be quite AC; it can have a weaker condition instead.


# 6d444385 18-Sep-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

More useful (but obvious) theorems about SUM_SET.


# d5085a8c 17-Sep-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Proved that if you give ITSET an associative and commutative operator, then
it gives you nice recursion equations (that don't feature CHOICE and REST).
Used this to define a SUM_SET function that sums the elements of a finite
set of numbers.


# d25a77b8 05-Sep-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Export of more obvious rewrites.


# d6b08f6b 16-Aug-2002 Konrad Slind <konrad.slind@gmail.com>

Change to type of new_specification, and made it tell that parser about
the introduced constants. Lots of knock-on (trivial) mods.


# ce23af22 24-Jun-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Added a couple of obvious rewrites for the stateful rewriter.


# 80f6f528 21-May-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Made definition of BIGINTER more consistent with style of definition of
BIGUNION.


# 7de970db 21-May-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Prompted by Konrad's useful change to the AC stuff in the simplifier,
I have "fixed" a long-standing irritation in the associativity theorems
in pred_setTheory: they're the wrong way round. All other associativity
theorems in the system are oriented x _ (y _ z) = (x _ y) _ z, which is
the direction that AC_CONV expects. So, I've put them right. The changes
I had to make in pred_setScript are such that the proofs no longer depend
on any particular orientation, so this could always be changed back without
much grief.
Elsewhere, probability is the only place in the core distribution where
problems arose. There, and in the examples where similar things happened,
I replaced all occurrences of {UNION,INTER}_ASSOC with
GSYM {INTER,UNION}_ASSOC.
I also fixed the m scripts in the examples/miller so that they cause a
stop when they hit an error.
Finally, I changed developers/build-examples to clean up in the miller
directory before building. This is consistent with what is done for all
of the other examples.


# 93e14f20 06-May-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

* Added a small new theory about fixed points (least, and greatest) and
monotone functions.
* Added an export_rewrites clause to the end of pred_setScript. (No more
having to write SIMP_TAC std_ss [IN_UNION, IN_DELETE, IN_SING,....])
* Added SET_SPEC_CONV to the stateful rewriter and also to the PRED_SET_ss
simpset fragment.
* Added BIGINTER constant to pred_setTheory; companion to BIGUNION.


# d004806f 02-May-2002 Konrad Slind <konrad.slind@gmail.com>

Added a type abbreviation 'a set = 'a -> bool


# 17397522 02-May-2002 Konrad Slind <konrad.slind@gmail.com>

Fixed bug in set conversions: the constant IN is no longer defined in
pred_setTheory, but in boolTheory, for some reason.

Also added rudimentary syntax support for sets.


# 90587787 21-Apr-2002 Konrad Slind <konrad.slind@gmail.com>

Miscellaneous cosmetic changes.


# eb74b774 20-Nov-2001 Joe Hurd <joe@gilith.com>

Added the definition

count n = {m | m < n}

as a canonical n-element set, and proved the obvious theorems.


# d22c71a0 16-Oct-2001 Michael Norrish <Michael.Norrish@nicta.com.au>

Removed IN as a constant from pred_set theory now that it's in bool.
Somewhat to my surprise, things built anyway, but it was distracting
seeing the messages complaining about the ambigous grammars and the
overloading resolution. (I shouldn't be surprised of course, this is
the whole point of all the Kananaskis work!)


# b3452490 10-Oct-2001 Joe Hurd <joe@gilith.com>

Added the definition of set complementation (COMPL) and some related theorems.


# 805fdd4e 13-Sep-2001 Michael Norrish <Michael.Norrish@nicta.com.au>

Removed gratuitous incompatibility with Taupo-6 in type of set_fixity;
its type is now string -> fixity -> unit, rather than
(string * fixity) -> unit.


# 75e6bfb9 18-Jun-2001 Konrad Slind <konrad.slind@gmail.com>

Changing arithLib to numLib.


# 0f981b15 12-Feb-2001 Konrad Slind <konrad.slind@gmail.com>

Moved to bagLib/containerScript so that I could do some stuff
with bags there.:;


# 56fbf2ba 24-Nov-2000 Konrad Slind <konrad.slind@gmail.com>

Added ITSET (fold for sets) to pred_setScript. Added a tiny theory
relating sets and lists. Should probably also add bags to this.


# 857eaf01 22-Nov-2000 Konrad Slind <konrad.slind@gmail.com>

Now builds in Kan.0.


# 97555632 14-Nov-2000 Michael Norrish <Michael.Norrish@nicta.com.au>

Kananaskis compatibility.


# c8e94391 21-Jun-2000 Michael Norrish <Michael.Norrish@nicta.com.au>

Strengthening of UNWIND_FORALL_CONV requires minor alteration to one
proof.


# 6d875bfc 02-Jun-2000 Konrad Slind <konrad.slind@gmail.com>

Not sure what this is.


# c3ad41f0 09-May-2000 Michael Norrish <Michael.Norrish@nicta.com.au>

I realised on porting this theory to the companion theory of sets as
their own datatype, that my definition of BIGUNION wasn't abstract
enough. In particular, it assumed the pred_set nature. I fixed the
proof in setScript, and have moved the proof back to pred_set too.
Now all of the new material in both script files is identical.


# ca2b91cd 09-May-2000 Michael Norrish <Michael.Norrish@nicta.com.au>

A couple of new results: BIGUNION (x INSERT S) = x UNION (BIGUNION S)
and that the finite union of finite sets is finite.


# ccc18090 08-May-2000 Michael Norrish <Michael.Norrish@nicta.com.au>

A complete induction principle for finite sets. Finite-ness of cross
products completely characterised. Some other minor results.


# 3c51478d 05-May-2000 Michael Norrish <Michael.Norrish@nicta.com.au>

Added treatment of cross products and big union, and some new finite-ness
theorems (due to Konrad).


# d99459f6 06-Aug-1999 Michael Norrish <Michael.Norrish@nicta.com.au>

Updates due to new pretty-printing support.


# 9b6ca0fd 05-Jul-1999 Michael Norrish <Michael.Norrish@nicta.com.au>

Modified to let back old style conditional expressions (given alteration
to parsing code's construction of precedence matrix).


# 0058df84 28-Jun-1999 Michael Norrish <Michael.Norrish@nicta.com.au>

Fixed to bring it up to date with Taupo release 0.
(Changes have come across from parse_branch development.)


# 58841e67 29-Apr-1999 Michael Norrish <Michael.Norrish@nicta.com.au>

Initial revision