History log of /seL4-l4v-master/HOL4/src/num/numLib.sml
Revision Date Author Comments
# 4888f523 15-Oct-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Remove eqtype declaration for term type


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

Added once, modified, committed, pushed.
Now re-add, recommit, repush. Sheesh.


# 2cc82a7b 29-Aug-2011 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Add SUC_RULE.


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

Implement & use a generic tactic to apply "deep" introduction rules.

A "deep" intro rule is one that looks like

sideconds ==> P (someterm)

The P is a variable and so the P (someterm) pattern can be seen as a
way to match any term that has someterm within it as a sub-term.
Example rules of this form are boolTheory.SELECT_ELIM_THM,
whileTheory.LEAST_ELIM and optionTheory.some_intro. (It's a shame the
names for the older theorems feature "ELIM" as substrings; these are
clearly introduction rules.) We can't use normal first-order
matching, nor higher-order patterns to match such patterns. Instead,
the code performs a search through the term, looking for first-order
matches of someterm.

In both LEAST_ELIM_TAC and SELECT_ELIM_TAC, the search was done by
find_terms; the new implementations of these functions work through
the term in a different, but now well-specified order: top-down,
left-to-right. If there are multiple matches in a term, and it makes
a difference what one you get, you should use DEEP_INTROk_TAC, which
takes a tactic 'continuation'. If this tactic fails with a HOL_ERR
when applied to the resulting goal-state, then DEEP_INTROk_TAC tries
again on a different sub-term, if there is one.

I will write proper documentation for this all shortly.


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


# 4a07589c 31-May-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Move ARITH_NORM_ss to numSimps.


# 3d22bf31 17-May-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Add a new arithmetic normalisation simpset fragment to numLib.

Eventual intention is to have this as part of the stateful rewriting simpset
where it will break lots of proofs until I either fix them, or just 'diminish'
the simpset at the head of the broken scripts.


# a1d7def4 05-May-2009 Konrad Slind <konrad.slind@gmail.com>

Additions to multiset and primeFactor
theories. Fixed definition of PRIMES
sequence in dividesTheory. Also added misc.
theorems to arithmetic. Some amount of
meaningless shuffling about.


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


# e2dcedb6 02-Nov-2005 Michael Norrish <Michael.Norrish@nicta.com.au>

New LEAST_ELIM_TAC for dealing with goals that include LEAST-terms.


# 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


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

Big re-org. Have moved the "num" theories gcd and divides to
be with the rest of number theory. SingleStep and TotalDefn
are used in them, so I moved these also into the realm of
numLib. This should make life easier, in general, since
Cases_on, Induct_on, and Define then become usable in
(part of) numLib development.


# 1d82e8b7 01-Jul-2003 Konrad Slind <konrad.slind@gmail.com>

Added new higher order rewrite rule for bounded quantifications. This
addition is for existentials; bounded universals were checked in a while
ago. Conversions have been added to numLib, since the simplifier didn't
seem to do the "right thing" with these theorems.


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

Many small changes, most associated with boolification or lifting.


# 814c0b03 29-Nov-2002 Konrad Slind <konrad.slind@gmail.com>

Added an AC simpset for addition and multiplication. Occasionally useful.


# 83f159bc 22-Aug-2002 Michael Norrish <Michael.Norrish@nicta.com.au>

Implement some useful code to transfrom SUC-based definitions into ones
that can be used with numerals easily (no conditional rewrites necessary).


# 18c87632 14-Dec-2001 Michael Norrish <Michael.Norrish@nicta.com.au>

Added new facilities for dropping or preferring certain numeric types
all at once. Documented one of the new functions, and fixed the
documentation for add_numeral_form, which now automatically adds the
appropriate overloading for "&" (I realised that we didn't need to
force the user to do this themselves).


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

Changing arithLib to numLib.


# a7f72098 10-Feb-2001 Konrad Slind <konrad.slind@gmail.com>

Minor changes


# aea5ab0e 27-Dec-2000 Konrad Slind <konrad.slind@gmail.com>

NonRecSize - fixed problem that "bool_case 0 0" is ambiguous depending
on what "0" is resolved to.


# 0f93948d 16-Nov-2000 Konrad Slind <konrad.slind@gmail.com>

paired syntax.


# d43c2c97 12-Nov-2000 Michael Norrish <Michael.Norrish@nicta.com.au>

Kananaskis compatibility.


# 947bbb16 12-Feb-2000 Konrad Slind <konrad.slind@gmail.com>

Addition of SUC_ELIM_CONV, from arithmeticTheory, where it was
being adjoined.


# 88242741 02-Dec-1999 Konrad Slind <konrad.slind@gmail.com>

Change to structure of numLib so that reduce and arith are incorporated.


# c9b5b538 22-Sep-1999 Konrad Slind <konrad.slind@gmail.com>

Minor changes. EXISTS_GREATEST_THM is moved to arithmeticScript
from numLib.


# 29864686 21-Sep-1999 Michael Norrish <Michael.Norrish@nicta.com.au>

Updated to reflect the fact that libraries need no longer rely on the
contents of the global variables that lurk behind the Term and Type
functions. Instead, they can now use the parse_from_grammars function
and grammar values from theories to make sure that when they parse,
they do so in a known environment.


# 7d28550d 18-Aug-1999 Konrad Slind <konrad.slind@gmail.com>

Added num_CONV and INDUCT_TAC to numLib for convenience.


# 2f760798 18-Aug-1999 Konrad Slind <konrad.slind@gmail.com>

numLib.sml : performance bug fixed in ADD_CONV

prim_recScript : Basic wellfoundedness theorems about numbers added.

numeralScript.sml : minor tweaks to accomodate change to prim_recScript

NonRecSize : this is a structure that installs `size` functions in
TypeBase.theTypeBase for non-recursive types. This
structure basically keeps sums, products, and options
from depending on nums (and vice versa) in the theory
hierarchy.


# e2f535f2 22-Jul-1999 Konrad Slind <konrad.slind@gmail.com>

Changes to accomodate new look portableML. Change to proof of
DIV_UNIQUE. Addition of some new facts about DIV and MOD (moved
from word/theories/Base.sml).


# c4c62c9e 29-Jun-1999 Michael Norrish <Michael.Norrish@nicta.com.au>

Old local definition of is_numeral was causing ADD_CONV (and perhaps others)
to fail on reasonable inputs.


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

Initial revision