History log of /seL4-l4v-10.1.1/HOL4/src/integer/CooperMath.sml
Revision Date Author Comments
# f3d9c515 24-Jul-2009 Tjark Weber <Tjark.Weber@cl.cam.ac.uk>

Turned some calls to Profile.profile into comments.


# e71025ec 11-Sep-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Everywhere remove use of temp_set_grammars idiom for setting up the
local grammars, preferring instead to statically bind the appropriate
names. You need to grab Parse.Term and Parse.Type as well as Term and
Type, requiring the definition of a Parse structure.


# ff453f9e 11-Sep-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Add an embodiment of the Omega d.p. for use inside the simplifier. It
can perform quite badly on goals with too many disjunctive assumptions
(and ~(x = y) counts as a disjunction).


# 42df0344 09-Jul-2007 Michael Norrish <Michael.Norrish@nicta.com.au>

I think this is a bug-fix. Now the SEND MORE MONEY test case takes
four hours to raise an exception instead of just a minute. I've taken
it out of the test cases list. I can't easily come up with a test
case that proves this is a bug, but it seems plausible that it is.
(Now I'm going to have to implement that "combine with DPLL d.p.")


# 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


# 6a6e7dda 19-Oct-2003 Joe Hurd <joe@gilith.com>

Made a bunch of changes to the HOL source to make it more "Standard ML",
to make it easier to port to MLton.

For example:
+ Added lots of structure wrappers around miscellaneous .sml files.
+ The type of "before" is 'a * () -> 'a, not 'a * 'b -> 'a, as Moscow ML
currently thinks.
+ Added "val _ = " before random declarations.

A plea: if I'm ever going to succeed in porting HOL to MLton, could
people please stop using Polyhash. It's very useful, but there's
nothing like it in MLton (or indeed Standard ML). In theory I'm going
to have to change the (sometimes complicated) code to use Binarymap or
something like it, but in practice I'll only do that when there's
absolutely no other way.


# 67274ad0 07-Oct-2003 Joe Hurd <joe@gilith.com>

Added a few newlines at end of files to suppress warnings from my
Mosml -> MLton preprocessor.


# e234dcdc 23-Mar-2003 Michael Norrish <Michael.Norrish@nicta.com.au>

Got rid of QConv, and made all conversions do the "raise exception to
indicate reflexivity" thing. (Also fixed bug in new implementation
of ABS_CONV that attempted renaming on failure of conv, and not just
failure of ABS.)

Next step will be to rework the simplifier's implementation so that
it also uses Conv.UNCHANGED, rather than in its own internal version
of the same. This will let the simplifier play efficiently with
others.

May also assess making ABS_CONV not do renaming, and give the rewriter
its own special traverser. This might make some things more efficient.


# 2f0e21bf 28-Jun-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Typo correction.


# 1ef1f6af 28-Jun-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Improved implementation of gcd in CooperMath, thanks to a suggestion of
Ken's. Extended MANIFEST to more accurately reflect the directory.
Removed OmegaTest, which never had any code in it.


# 8e2902b1 24-Apr-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Libraries MUST use local parsers, NOT the global one.


# 2a8df347 27-Feb-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

A new routine for doing further normalisation of divisibility terms.


# 9576baac 20-Nov-2001 Michael Norrish <Michael.Norrish@nicta.com.au>

Fixed so that gcd correctly handles zero as an argument.


# 2c2345d1 25-Oct-2001 Michael Norrish <Michael.Norrish@nicta.com.au>

Fixed a bug that was causing this code to fail to simplify things like
2 int_divides 4 * x + 6 * y


# 48fa2c3b 12-Oct-2001 Michael Norrish <Michael.Norrish@nicta.com.au>

Fixed a couple of bugs and added a problem that exhibited one of them
to the regression test suite.


# 2d8edb6e 01-Oct-2001 Michael Norrish <Michael.Norrish@nicta.com.au>

More tweaks and fiddles. The Pugh example now goes through in a reasonable
length of time (same as SUNRISE problem, perhaps a 20-fold speed-up). Also
added a couple of new theorems to integerTheory which will be the basis
for extending COOPER_CONV to cope with division and modulus (as long as
the divisor is a constant).


# 0eeabeec 21-Sep-2001 Michael Norrish <Michael.Norrish@nicta.com.au>

Further, relatively minor changes in order to get it to go that bit
faster. Pugh's example is still not all it should be, but it seems
that one of the things I'm going to need to do to fix this is get
a fast conversion for pushing ?x. P x \/ Q x \/ R x \/ .. \/ Z x
into a disjunction of existentially quantified clauses. The following
fun push_one_exists_over_many_disjs tm =
((EXISTS_OR_CONV THENC RAND_CONV push_one_exists_over_many_disjs) ORELSEC
ALL_CONV) tm
is *really* slow (= 60 seconds with 120 disjuncts).


# 5a4eaf97 17-Sep-2001 Michael Norrish <Michael.Norrish@nicta.com.au>

Squeezed a little more performance out by using QConv functions in a few
more places.


# 99abe76d 13-Sep-2001 Michael Norrish <Michael.Norrish@nicta.com.au>

Total reorganisation of Cooper code. Two ..Core modules can be swapped
in and out of CooperShell to provide "shadow syntax" or my original
implementation of the core phases of the algorithm. Code currently littered
with profiler guff.


# fd507e05 31-Aug-2001 Michael Norrish <Michael.Norrish@nicta.com.au>

Many modifications, based around the last delta-expansion optimisation
from Cooper's paper. In a purely existential goal, there is no
disjunctive expansion until all quantifiers have been eliminated.


# 463ce292 22-Feb-2001 Michael Norrish <Michael.Norrish@nicta.com.au>

Not going to change this anymore. Instead I'm going to write about how
well it performs. Many improvements since last time, and a little
more code factorisation as well. Code should be easy to adjust to
use full gcd optimisations in future for pure goals.