History log of /seL4-l4v-master/HOL4/src/relation/relationScript.sml
Revision Date Author Comments
# b2a85956 29-Aug-2020 Arve Gengelbach <arve.gengelbach@it.uu.se>

add equality, unfolding TC to the right

This adds RIGHT1 versions of EXTEND_RTC_TC{,_EQN}.


# 25dec53e 01-Sep-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Avoid combining star for RTC operator; use Slavonic Asterisk instead

The meaning of "combining" in the combining star character (U+20F0) is
that it should combine with previous characters in the same way as
separate accent characters (such as acutes: é) can combine with
predecessors. Using it as a pseudo-superscript just because it looks
OK in my particular Emacs handling of fonts and characters is a bad
idea. In other contexts, I have seen it actually combine, and it
looks terrible.

So, instead of trying to solve the problem of general superscripting,
I'm changing to U+A673, which is a whole character in itself (not a
combining accent), is an asterisk, and seems to be generally typeset
relatively high on the line. It's "open" which is a bit strange, but
otherwise seems to look OK. Here's an example:

RTC_SUBSET: ⊢ R x y ⇒ R꙳ x y


# 8e5ab83d 14-Jun-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Provide default inductions for TC, RTC, and EQC

I hesitated to do this previously because there are a bunch of
reasonable alternatives for these, and I was unsure about "forcing"
people into one choice. But the new 'using' tactical makes this less
of an issue.


# 595459a2 03-Jun-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Make a bunch of rewrites about relation$inv automatic


# 92366aca 03-Jun-2020 Michael Norrish <michael.norrish@data61.csiro.au>

Make a bunch of rewrites about relation$inv automatic


# cbb5917d 19-Sep-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Tidy up some src directories for line-lengths


# c8feb439 26-Aug-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Add special Overload syntax to map to overload_on

Use in a few random places in src and examples, and document in
release notes and DESCRIPTION.


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

Provide Triviality syntax as alias for Theorem[local]

This works with both

Triviality foo:
statement
Proof
tactic
QED

and

Triviality foo = ML-expression-of-type-thm

Illustrate in relationScript.sml.


# 2737e790 08-Aug-2019 Chun Tian (binghe) <binghe.lisp@gmail.com>

Moved BISIM(_REL) theorems to bisimulationTheory with coinduction principles added


# 547d12c0 02-Aug-2019 Chun Tian (binghe) <binghe.lisp@gmail.com>

Some supporting theorems of relation$BISIM


# 2bc2f0b9 11-Jul-2019 James Shaker <james.shaker@gmail.com>

Got rid of last pesky unicode


# 79a87998 11-Jul-2019 James Shaker <james.shaker@gmail.com>

Changed bisimulation work in relationTheory to use ASCII not Unicode


# 2f6895b7 11-Jul-2019 James Shaker <james.shaker@gmail.com>

Added bisimulation and bisimulation relations to relationTheory (alongside proof the latter is an equivalence)


# 19aff209 21-Jul-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Use new Inductive syntax to define relation$RTC

Adjust some proofs that used the old RTC_DEF theorem, which has
disappeared.


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

Find a superscript * (sort of) in Unicode to use for RTC syntax


# eee03790 05-Mar-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Make equality of "tight" precedence by default

Start to work through knock-on effects of this.


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

Import a theorem about RINTER from CakeML


# 4672b130 17-Jan-2019 Michael Norrish <Michael.Norrish@nicta.com.au>

Provide alternative Theorem-syntax for store_thm


# 18934f7c 03-Dec-2018 Johannes Åman Pohjola <johannes.amanpohjola@data61.csiro.au>

Reconcile store_thms with diverging names in db and val binding


# 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


# ba8a2281 01-Dec-2017 Chun Tian (binghe) <binghe.lisp@gmail.com>

Added TeX notation for relation inversion (relinv)


# 7843d690 24-Oct-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix pretty-printing of real and relation inverses

Now both get to keep their pretty superscript forms (-1 for the reals,
and T for the relations) even when both theories are loaded. The cost
is that neither will be printed as "inv" when unapplied to arguments,
instead appearing as "realinv" and "relinv" respectively.

Closes #481


# 6ac7f1da 02-Aug-2017 Chun Tian (binghe) <binghe.lisp@gmail.com>

Added TeX notation for O (relation composition)


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

TeX notations for RUNION, RINTER and RSUBSET in relationTheory


# ad0c4d49 25-Jun-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Move Q.ID_EX_TAC to Tactic.

ID_EX_TAC doesn't take any arguments, let alone a quotation, so
doesn't belong in Q.

Closes #359


# 09ce1c02 10-Dec-2016 Jeremy Dawson <jeremy@cecs.anu.edu.au>

more flexible INDUCT thms for TC


# c2c07e0d 09-Dec-2016 Jeremy Dawson <jeremy@cecs.anu.edu.au>

more flexible INDUCT thms for RTC


# 8c317ac1 24-Aug-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Provide Unicode syntax for some relation operators

Using the subscript r character on various set notations.

Document these forms in Description manual.

Also extend definition of inv (aka "transpose") to be

:(α -> β -> bool) -> (β -> α -> bool)

rather than

:(α -> α -> bool) -> (α -> α -> bool)

which is needlessly specific.


# 94b064b9 15-Aug-2016 Michael Norrish <Michael.Norrish@nicta.com.au>

Remove unnecessary structure bracketting

As per 89fc99bc3, but on as many examples as a grep -R can find.


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

Fix pre-boss theories in light of pat_assum renaming


# 947bf166 01-Nov-2015 Ramana Kumar <ramana@member.fsf.org>

a couple of missed relationTheory OpenTheory names


# 36b55705 01-Nov-2015 Ramana Kumar <ramana@member.fsf.org>

add some OpenTheory names to relationTheory

EMPTY_REL does not quite match Relation.empty, since it is not
as polymorphic. The other definitions not covered by this commit appear
not to be in the OpenTheory standard library at present.


# 92317114 08-Jan-2015 Michael Norrish <michael.norrish@nicta.com.au>

Change API of Q's MATCH...RENAME_TACs.

Now rather than a string list hanging off the end specifying which
variable bindings aren't supposed to induce a renaming, just put
underscores into the pattern in those positions.

Documentation and release notes updated.


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

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

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


# a574fc44 10-Apr-2014 Michael Norrish <michael.norrish@nicta.com.au>

Rename implicational theorems in relation to make room for equivalences

This affects TC_CASES1 and TC_CASES2 that were hardly ever being used.
See the release notes change for more discussion.


# ceff34b8 10-Apr-2014 Michael Norrish <michael.norrish@nicta.com.au>

Make a couple of important termination theorems automatic rewrites.

In particular:

|- WF $<
|- inv_image R f x y <=> R (f x) (f y)


# 10b12c71 16-Mar-2014 Michael Norrish <michael.norrish@nicta.com.au>

Some relational properties of inv_image.

There doesn't seem to be anything to be said about anti-symmetry.


# 9cd8f04e 03-Feb-2014 Michael Norrish <michael.norrish@nicta.com.au>

Add domain restriction and deletion to relations (reusing \\ syntax).


# e9ca14ef 15-Dec-2013 Michael Norrish <michael.norrish@nicta.com.au>

Move some results from enumfset earlier into relationTheory.


# 47f146b5 23-Nov-2012 Ramana Kumar <ramana.kumar@gmail.com>

add some more OpenTheory names to the map


# 5204b7f7 29-Sep-2011 Michael Norrish <Michael.Norrish@nicta.com.au>

Simplify definition of relation$StrongOrder.

Thanks to an observation of Paul Loewenstein's.


# 94662ed3 14-Dec-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Change RTC and TC syntax so that bare TC prints as TC, not $^+.

Analogously for RTC and ^*. EQC was already set up to do the right thing.
When these constants have arguments, they continue to print with the special
syntax.


# 4612bbe1 30-Sep-2010 Tjark Weber <Tjark.Weber@cl.cam.ac.uk>

Avoid some more "Matches are not exhaustive" compiler warnings.


# a8a9c86d 17-Aug-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Prove that subsets of irreflexive relations are irreflexive.


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

Two simple properties about RINTER.


# 206952f9 16-Aug-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Prove easy consequences of being a well-founded rlation.


# 5650aab7 16-Aug-2010 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Remove Unicode that has crept in to some source scripts.


# 6856426d 15-Aug-2010 Ramana Kumar <ramana.kumar@gmail.com>

Added theorem reflexive_TC, analogous to symmetric_TC.


# ed0fbae0 12-Aug-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Add a bunch of export_rewrites to relationTheory.


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

Added some theorems to relation theory:
reflexive, transitive, and symmetric for EQC;
EQC moves in over (and replaces) RC, TC, and SC; and
a (TC R) step from x to z implies an R step from x to some y (y and z not equal to x).


# b4860a6f 03-Aug-2010 Ramana Kumar <ramana.kumar@gmail.com>

3 more RTC 'lifts' theorems, analogous to TC's (and others').


# 42a94a03 03-Aug-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

New theorem about RTC by analogy with (e.g.) TC_lifts_monotonicities.


# 1ea88f67 19-Jul-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Move IndDef earlier in the build sequence (just before BasicProof).

This will let me reinstate my new Induct_on functionality.


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


# f8048295 29-Sep-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Add a theorem suggested by Ramana Kumar: WF_TC_EQN |- WF (R^+) <=> WF R


# dfd80730 04-Aug-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Add another explicit dependency on satTheory to work around Holmake's
problems.


# c512d1f8 09-Jul-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Add yet another cases theorem for RTC, this time relating it to TC and
an equality.


# e79525db 23-Mar-2009 Thomas Tuerk <Thomas.Tuerk@cl.cam.ac.uk>

an equality version of EXTEND_RTC_TC was added


# 6cfbd2db 14-Mar-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Add a new theorem (stating that RTC R x y ==> EQC R x y), and also add
a new notation ^= for EQC, making the above theorem print as
R^* x y ==> R^= x y


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


# 20a25cb8 08-Sep-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Use superscript plus to make transitive closure look nice in "Unicode mode".


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

Make ^* and ^+ available as suffix forms of RTC and TC respectively.
These will take precedence by default. Use, for example,
overload_on ("RTC", ``RTC``) to revert.


# dcfe4801 14-Aug-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Add another automatic rewrite about RTC, that:
!R x y. R x y ==> RTC R x y


# 334edc46 11-Aug-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Add a very obvious rewrite (|- RTC R x x) to the srw_ss().


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


# c39d358b 08-Jul-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix relation composition to treat the arguments by analogy with
function composition. This is the way I decided to do it in r3606,
inviting "counter-arguments". Konrad silently changed it in r3626.
(I didn't notice because I had typically been doing things like
alpha O beta O alpha
until today.)


# f33e0630 05-Mar-2007 Joe Hurd <joe@gilith.com>

Did some community service expunging all occurrences of the old syntax for
if-then-else from the HOL distribution.

Apologies if I've broken your example or development: you can either upgrade
it to use the new syntax or else issue the magic parser incantation that
I chopped out of boolScript.sml on this check in.


# a1124e44 22-Nov-2006 Michael Norrish <Michael.Norrish@nicta.com.au>

Add inductive definition support for constants from relationTheory (TC, RTC,
EQC and SC).


# 007e43f2 31-May-2005 Konrad Slind <konrad.slind@gmail.com>

Follow-on fixes to changing Term to Parse.Term and Type to Parse.Type
in the quotation pre-processor. A mass of trivial changes, but the
new way of dealing with files containing code that does parsing
(not script files) is to

* grab the ambient grammar(s)
* set the current grammar(s) to the right values
for parsing quotations in the file
* the body of the file
* reset the current grammar to the ambient grammar

For an example, see src/taut/tautLib.sml


# 315d8714 03-Apr-2005 Michael Norrish <Michael.Norrish@nicta.com.au>

Add an export directive for an obvious rewrite.


# 9637e934 16-Mar-2005 Michael Norrish <Michael.Norrish@nicta.com.au>

I thought this generalisation worth stating too, though I think the three
specific results will be most commonly used.


# e69b5631 16-Mar-2005 Michael Norrish <Michael.Norrish@nicta.com.au>

Some simple results about how the closure operations preserve certain
properties of the underlying relation.


# cfd0f707 10-Jan-2005 Konrad Slind <konrad.slind@gmail.com>

Mostly minor changes. Mainly, have changed FUPDATE_LIST in
finite_mapTheory to be a prefix, and have replaced it with
the infix notation |++.

Michael said it was OK.


# 812f1859 06-Jan-2005 Konrad Slind <konrad.slind@gmail.com>

Moved contents of TermRewritingScript.sml to relationScript.sml


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

Added definition of "total" to relationScript and the other changes
are odd-and-sods.


# a7baf8c9 21-May-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

Restore some theorems that Konrad's latest check-ins brutally removed.
Moral of the story: if you see a check-in in hol-checkins you really
should do a cvs update to bring those changes into your working
directory ASAP. Otherwise you're storing up potential trouble for
yourself.


# bfe3e92b 21-May-2004 Konrad Slind <konrad.slind@gmail.com>

Can't forget this!


# 990a9e61 21-May-2004 Konrad Slind <konrad.slind@gmail.com>

Added Krstic/Matthews theorems supporting nested recursion.


# dadb7344 31-Mar-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

I think this is wrong: relation composition should look like function
composition, so that the first relation to be "applied" is the second
argument to the composition operator. Am happy to hear counter-arguments.


# 1aa08966 31-Mar-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

Some new and useful facts about the equivalence closure operation.


# 0356a38b 17-Mar-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

Fix for bug 916157 (from Lockwood Morris). Q.UNDISCH_THEN now behaves
like UNDISCH_TAC rather than PAT_UNDISCH_TAC.


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

Fix a naming mix-up; spotted by Lockwood Morris.


# 76e52d52 04-Aug-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Factoids 'R' Us.


# 20c8cbc3 17-Jun-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

A whole lot of new stuff, mainly based on a script file that Lockwood
Morris sent me.


# 427ebca7 28-Apr-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

More induction principles for TC and RTC. These provide inductions that
allow you to work on a problem a step at a time from the right hand
end of the steps between source and destination. Without doing proofs
by induction on the number of steps taken, I can't see a nice way of
deriving these principles from each other. The fiddly approach for
TC_INDUCT_RIGHT1 doesn't need to be repeated for RTC because RTC's
principle can be proved given TC's.


# 2eaf3bfa 16-Feb-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Prove a cute little theorem about the K combinator. This is a necessary
prelude to one last change I'm contemplating to make record type
definition roughly twice as fast as it is at the moment. The change to
relationScript makes it explictly depend on combinTheory, something the
automatic dependency analysis can't figure out on its own.


# db1ac8fb 21-Jan-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Some easy extra theorems about symmetric closures, about taking the
reflexive, transtive and symmetric closure (here called EQC), about
inverting relations, and a simple separate theory with basic
rewriting theory (diamond properties, Church-Rosser, strong normalisation).


# 129541dd 13-Jan-2003 Konrad Slind <konrad.slind@gmail.com>

Added definition of the wellfounded part of a relation. Useful in the
slick proof of the multiset relation, which has not yet been implemented,

Also added an "equality" version of WF_INDUCTION_THM.


# 94e3036f 23-May-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Fixes for bugs caused by using direct equality on terms. Exploits for these
require creation of terms that have explicit substitutions in just the
right places, but shouldn't be too hard to imagine. Also added
term_eq to the Term signature to be a safe curried equality.


# 614eca48 20-May-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

A couple more useful theorems about TC and RTC.


# 00edf3f3 15-May-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

More useful induction principles for TC (transitive closure).


# e82be6a1 26-Oct-2001 Konrad Slind <konrad.slind@gmail.com>

Big terms can be constructed in finite time now. On my laptop,

list_mk_abs(1Mvars,list_mk_conj 1Mvars)

gets built in about 20 seconds. list_mk_forall and list_mk_exists are
twice as slow. If you are going to build terms with lots of
binding, please use these things in favour of

itlist (curry mk_forall) vlist tm

which 1) is slow because of the iterated mk_forall and 2) blows the stack
because of the itlist, at least in MoscowML, which allocates the call stack
on the stack.

Still to do: 1) upgrading this treatment to strip_abs, strip_forall, and
strip_exists; 2) upgrading it to paired abstractions; 3) efficienct versions
of SPECL and GENL (if possible); and 4) a rewriter that uses these facilities
to traverse deeply nested binders efficiently (this will (1) be a first
order rewriter and ... uh lost my train of thought).

There are some tests in src/0/big.term.tests. These should also be fleshed
out to have more strenuous tests, say ones with multiple parallel deeply
nested scopes.

... uh, the above 20 second claim is true if the list_mk_conj had
been done previously (I was mainly testing list_mk_abs).

The implementation uses Polyhash to represent the list of variables to
be bound, and utilizes continuation passing style to get tail recursion.
Otherwise, I couldn't get to 500K variables without blowing the stack.


# f9bf1b6d 26-Jun-2001 Michael Norrish <Michael.Norrish@nicta.com.au>

Updated higher-order matching algorithm to be direct translation of
latest version of algorithm in HOL Light. A couple of script files in the
distribution needed altering.


# eeec2eb0 11-Jun-2001 Michael Norrish <Michael.Norrish@nicta.com.au>

Slew of theorems about RC and RTC (new constants).


# b7b34e37 23-Mar-2001 Konrad Slind <konrad.slind@gmail.com>

Changed Empty to EMPTY_REL and renamed various theorems accordingly.


# 56ae9585 16-Nov-2000 Konrad Slind <konrad.slind@gmail.com>

paired syntax.


# bed8d6ef 28-Oct-1999 Konrad Slind <konrad.slind@gmail.com>

Changes to handle new type for Q.prove.


# 6f7bcee6 18-Aug-1999 Konrad Slind <konrad.slind@gmail.com>

relationScript.sml is intended to grow into a general theory about
relations taken as functions of type 'a -> 'a -> bool. Currently,
only transitive closure and wellfoundedness are dealt with.