History log of /seL4-l4v-10.1.1/HOL4/src/prekernel/Lib.sig
Revision Date Author Comments
# 19da86c7 03-Jun-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Provide a delete_trailing_wspace : string -> string function in Lib


# ddc8d59b 06-May-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Add binding for option_compare in Lib


# 03b1a5d4 14-Mar-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Progress through Parse.sml


# 3f252166 13-Mar-2018 Michael Norrish <Michael.Norrish@nicta.com.au>

Work towards use of PolyML.pretty type for most pretty-printing

Compiles up to src/parse under Poly/ML


# 1e48d44b 04-Oct-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Add syntax/ops to make set manipulations easier


# bd27d877 27-Sep-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Remove some early code assuming term is an equality type


# 76099c66 26-Sep-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Add an op_assoc to Lib (by analogy with other op_ functions)


# c554f74b 15-Feb-2016 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Ensure HOL4 works with fixed-width integers under Poly/ML.

Integers under Poly/ML 5.6.1 are likely to be fixed-width by default (up until now they've always been arbitrary precision). Some changes were needed to cope with this:

- The Arbint and Artbnum structures effectively assumed Int.int = IntInf.int.
- The Standard ML structure Time is based on LargeInt.int and not Int.int. Code for printing times has been re-implemented using the Date structure.
- The smart-configure.sml file used the Overflow exception to distinguish between Moscow ML and Poly/ML. This test is now based on a difference in the printing of General.Fail exceptions.


# 904bab9d 07-Jan-2015 Michael Norrish <michael.norrish@nicta.com.au>

Move useful apnth function to Lib

Also make it raise a HOL_ERR rather than a Bind error if the index is
negative or greater than the length of the list.


# 7cf2a687 21-Aug-2012 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Add extra term/syntax functions to HolKernel. Also tweak definition of HolKernel.find_terms.

The new definition of find_terms may or may not be quicker.

The new functions are:

list_mk_icomb (a type instantiating version of list_mk_comb)
mk_monop (this is essentially a curried version of boolSyntax.mk_icomb)
mk_binop
mk_triop
mk_quadop
syntax_fns (This is taken from bitSyntax and provides a quick way to define syntax functions. Designed to work with the "mk" functions above.)


# af84d146 12-Aug-2012 Michael Norrish <michael.norrish@nicta.com.au>

Revise more of Parse's pretty-printing APIs.

In particular, remove a bunch of entry-points with names matching
*backend_string* and print_backend*.

The objective with these was to accompany things like
term_to_string (which printed to a raw_terminal backend) with a
printer that printed to the current backend. This is now easy enough
to do with

ppstring pp_term

and

print o ppstring pp_term

The flip of the current_backend reference so that it points at
"raw_terminal" can now also be done with the rawterm_pp function.

The other convenience entry-points that have gone, for the moment, are
those that did all of the above while also removing certain specified
overloads. Because pp_term_without_overloads_on is still present, you
have to make do with

print (ppstring (pp_term_without_overloads_on ["/\\"]) ``p /\ q``);

or

rawterm_pp (ppstring (pp_term_without_overloads_on ["/\\"]))
``p /\ q``;

Closes #13. I will open a fresh issue to do with making the last two
use-cases slightly easier to deal with.


# 06487daa 12-Jul-2012 Anthony Fox <anthony.fox@cl.cam.ac.uk>

To successfully link to HTML documentation, a space is required before colons in sig files.

I'd call this feature a bug.


# ad9b0411 12-Jul-2012 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Try to standardise the formatting of Lib code.

The changes should hopefully improve code legibility. Have attempted to follow the style guide at
http://mlton.org/SyntacticConventions.


# fa41c55f 03-Sep-2011 Ramana Kumar <ramana.kumar@gmail.com>

Add a lex_cmp to Lib

and stop using an ad-hoc definition in OpenTheoryMap


# a5a9cf4c 13-Feb-2011 Ramana Kumar <ramana.kumar@gmail.com>

Add a n(log n) and linear time topsorts to Lib

Requires input as a dictionary/vector of adjacency lists, whereas the
existing quadratic topsort just takes a list and a partial order on its
elements.


# 3153f9a3 01-Oct-2010 Tjark Weber <Tjark.Weber@cl.cam.ac.uk>

Added functions triple and quadruple for creating tuples.


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

Added functions to turn lists into tuples (with length checking). Lib.single documented.


# af911436 17-Sep-2010 Tjark Weber <Tjark.Weber@cl.cam.ac.uk>

Removed itotal from Lib. Please DO NOT use handle _ in your code! Exception
Interrupt should (almost) never be handled without being re-raised. Note that
Lib.total already does the right thing.


# c33aeb1f 16-Sep-2010 Tjark Weber <Tjark.Weber@cl.cam.ac.uk>

Added functions rpair : 'a -> 'b -> 'b * 'a and swap : 'a * 'b -> 'b * 'a to
Lib. These are occasionally useful when working with pairs in SML.


# fd1efab9 31-Jul-2010 Tjark Weber <Tjark.Weber@cl.cam.ac.uk>

Removed Lib.gather. Use {Lib,List}.filter instead.


# 2a04a09d 17-Jun-2010 Michael Norrish <Michael.Norrish@nicta.com.au>

Move 4 copies of mapshape in src/bool to Lib.

Also tidy up more of those non-exhaustive match warnings.


# 15bc0ac5 26-May-2010 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Add support for keeping track of real time. This gives more realistic timings
when external tools are being invoked, e.g. the SAT tools in HolSatLib.


# 1c6c611a 25-Oct-2009 Tjark Weber <Tjark.Weber@cl.cam.ac.uk>

Functions apfst and apsnd added. These apply a function to the first (second,
respectively) component of a pair.


# 48003cc9 27-Jul-2009 Thomas Tuerk <Thomas.Tuerk@cl.cam.ac.uk>

An extended version of get_first was added. get_first gets a function f:'a -> 'b option and a list l:'a list. It then returns valOf (f e) for the first element e of l for which f is not NULL.

The new function first_opt is very similar, however, f now gets the position of the element in the original list as well.


# 8aff21d0 09-Apr-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Add extremely useful |> combinator (stolen from the standard Isabelle
library). Instead of writing
(f o g o h o j) x
or
f (g (h (j x)))
both of which are painful, write
x |> j |> h |> g
where there is a more natural flow from left-to-right: "starting with
x, we first apply j, then h, then g".


# e8de5b3a 13-Feb-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Add a version of List.all for strings to the standard library.


# 6d8ad9d0 08-Feb-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Add a variant of Konrad's trypluck, and document it. Also adjust some
Lib code to use the Basis library's List.revAppend.


# 18abbe1d 06-Feb-2009 Konrad Slind <konrad.slind@gmail.com>

Fix to bug spotted by Anthony, whereby the induction
theorem for functions defined by pattern-matching
on literals was failing to be proved. Misc.
simplifications to TFL code plus adding "trypluck" to Lib.


# 775a6995 05-Feb-2009 Michael Norrish <Michael.Norrish@nicta.com.au>

Add some useful functions
get_first : ('a -> 'b option) -> 'a list -> 'b option
bool_compare : bool * bool -> order
flip_cmp : ('a * 'a -> order) -> ('a * 'a -> order)

The get_first function is useful if you want to find the guy that
can be transformed successfully by some function, and you want the
result of the transformation, not the input to it. (Otherwise, you'd
use List.find (isSome o f).)

The get_first name is taken from Isabelle's standard library (I've
used it multiple times under different names throughout HOL).

bool_compare should be in the Basis Library but isn't.


# 6b16cc6b 04-Feb-2009 Tjark Weber <Tjark.Weber@cl.cam.ac.uk>

Combinators A and B removed (dead code, not used anywhere).


# 2e046e8c 03-Feb-2009 Tjark Weber <Tjark.Weber@cl.cam.ac.uk>

Added fold_map and separate.


# 549d87b7 02-Nov-2008 Michael Norrish <Michael.Norrish@nicta.com.au>

Add a new utility function, unprefix, which removes a putative prefix
from a string, or raises an error if it's not a prefix. (There is a
function of the same name and behaviour in the Isabelle library.ML.)


# 8389ab25 29-Apr-2008 Scott Owens <Scott.Owens@cl.cam.ac.uk>

Rename Lib.concat to Lib.strcat so that when Lib is opened (via HolKernel) in
an interactive session, the SML pervasive concat isn't shadowed.


# c76376ed 29-Apr-2008 Konrad Slind <konrad.slind@gmail.com>

Additional functionality for abbreviations.

1. The labels library has been merged into
markerLib and the src/labels directory eliminated.
2. Have added markerSyntax structure.
3. Operations on abbrevs used to all be in
structure Q, even those that didn't deal
with quotations (like UNABBREV_ALL_TAC). Now
markerLib provides all abbrev. operations and
these take terms. Operations that benefit from
quotes, e.g., ABBREV_TAC, MATCH_ABBREV_TAC, etc.
are still to be found in Q.
4. Abbrevs are kept reduced by the simplifiers and
there is a REABBREV_TAC which can be separately called.
This sorts abbrevs topologically, so that they get
restored in a sensible order.
5. For situations where one wants to get rid of all
abbrevs, apply a tactic, and then restore the abbrevs,
there is WITHOUT_ABBREVS: tactic->tactic.
6. Have added a simple topological sort to Lib.
7. Updated proofs in the src directories, and also
in examples/lambda.


# 73cc7af4 06-Dec-2007 Michael Norrish <Michael.Norrish@nicta.com.au>

Add a mapi function to accompany the similar appi.


# 04f699d7 19-Dec-2006 Konrad Slind <konrad.slind@gmail.com>

Random other bits deemed useful.


# 20133481 23-Oct-2006 Konrad Slind <konrad.slind@gmail.com>

Define now handles simple definitions defined by
pattern-matching against (numeric) constants, e.g.

Define `(f 0 = 1) /\ (f 1 = 1) /\ (f n = f (n-1) + f (n-2)`;

But more testing/robustification needs to be done.


# 7082f576 25-Sep-2006 Konrad Slind <konrad.slind@gmail.com>

In Feedback, changed some errors into warnings. This lets some files
get reloaded via cut-and-paste after being "load"ed. Helps for
debugging.

In Lib: added itotal, which is like total, except it also catches
Interrupt and turns it into NONE. Also added a type of "verdicts",
used for the "failure monad". We should gather all the monads
used in the system somewhere (probably in prekernel).


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

Another useful function (the sort of thing that should be in the Basis
library but isn't) for working with comparison functions.


# c47a0848 22-Jun-2006 Michael Norrish <Michael.Norrish@nicta.com.au>

Add a version of app that passes in the index of the list-element being
operated on.


# 38875485 02-May-2005 Scott Owens <Scott.Owens@cl.cam.ac.uk>

For portability, the frag datatype and constructors should come from the
Portable structure and be exported to the top level by opening the Lib
structure.


# aabaa835 23-Aug-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

Some more useful manipulations on compare functions (these really should
be in the Basis library).


# 80d72112 16-Aug-2004 Michael Norrish <Michael.Norrish@nicta.com.au>

Pretty significant "refactoring" of the early source code. All the stuff
that was in common between 0 and experimental-kernel moves into a new
prekernel directory. This can be thought of as the kernel utilities
directory, full of code that is not quite portableML because it's fairly
HOL specific, but that isn't really part of the core implementation of
types, terms and theorems.
(Also add a new pair_compare function to Lib.)