History log of /seL4-l4v-10.1.1/HOL4/examples/acl2/ml/sexp.sml
Revision Date Author Comments
# 4761143b 10-Aug-2009 Tjark Weber <Tjark.Weber@cl.cam.ac.uk>

Removed trailing whitespace from all .sml and .sig files.

This affects over 900 files and was done using emacs's delete-trailing-whitespace
function in batch mode. Building the system with Poly/ML and Moscow ML seems to
work, so I'm hoping these changes don't break anything. Please complain if
they do!


# 8b1fe4f8 27-Nov-2008 Mike Gordon <mjcg@cl.cam.ac.uk>

Various updates, tweaks and fixes in preparation for Matt's visit


# 938852ac 10-Sep-2008 James Reynolds <jr291@cam.ac.uk>

Final raft of compatlibility changes.


# 17f81fc0 09-Sep-2008 James Reynolds <jr291@cam.ac.uk>

Modifications to allow the translation to run under PolyML.


# 4fea1eda 12-Mar-2007 Konrad Slind <konrad.slind@gmail.com>

Attempt to get my local version in sync with repository copy. If
it causes trouble for others, I can fix in the next few days.


# 96e20c7e 16-Oct-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

bugfix


# 4e640121 10-Oct-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Fixes to get things to work after recent changed to HOL4
(theorem deletions; tags->strings)


# 2b19fe85 10-Oct-2006 Michael Norrish <Michael.Norrish@nicta.com.au>

Update the type of mk_oracle_thm so that it takes a string rather than a
tag as first argument. This is to prevent the following scenario:

- show_tags := true;
> val it = () : unit

- val ax = new_axiom ("foo", ``T``);
> val ax = [oracles: ] [axioms: foo] [] |- T : thm

- val th = mk_oracle_thm (Thm.tag ax) ([], ``F``);
> val th = [oracles: ] [axioms: foo] [] |- F : thm


# 7ee9fd8c 10-Oct-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Adjusting the handling of encapsulate + stuff for a small test example.


# 97c3b779 09-Oct-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Making sure SF state is up to date with lates encapsulate stuff.


# 8ff26918 03-Oct-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Interim checkin. Some code reorganised and preliminary support for ACL2
ENCAPSULATE and MUTUAL-RECURSION events added.


# fb1a0282 26-Sep-2006 James Reynolds <jr291@cam.ac.uk>

encodeLib: Now handles lambda abstractions and let syntax natively
Improved support for difficult recursion schemes (eg. DIV)
translateScript: Added translations for strings and characters
Definitions are now checked one by one to avoid the
'couldn't protect' error
sexp: Added support for 'let a = b and c = d in...' syntax


# 705a1177 26-Sep-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Tweaks: temporarily disabled ACL2 invocation (not working on my machine).
Updated README + comment typo fixes in sexp.sml.


# 877767b5 13-Sep-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Fixed some minor issues that came up when Matt checked that the ACL2
axioms verified in HOL were indeed the ACL2 axioms. The axioms are now
confirmed as verified.


# 9e614556 11-Sep-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Minor tweaks.


# 7aa8a4cc 24-Jul-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Various updates.


# ac913349 08-Jul-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Making sure everything checked in.


# da0a765c 06-Jul-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

(*****************************************************************************)
(* acl2_tgoal "acl2_name" `(foo ... = ...) /\ ... ` creates a termination *)
(* goal for the recursive definition with acl2_name replacing foo. Example: *)
(* *)
(* acl2_tgoal "ACL2::TRUE-LISTP" *)
(* `true_listp x = ite (consp x) (true_listp (cdr x)) (eq x nil)` *)
(* *)
(* *)
(*****************************************************************************)

(*****************************************************************************)
(* acl2_defn "acl2_name" (`(foo ... = ...) /\ ... `, tac) uses tac to *)
(* solve the termination goal for the recursive definition with acl2_name *)
(* replacing foo. Makes the definition of acl2_name and then overloads foo *)
(* on acl2_name. Example: *)
(* *)
(* val (true_listp_def,true_listp_ind) = *)
(* acl2_defn "ACL2::TRUE-LISTP" *)
(* (`true_listp x = ite (consp x) (true_listp (cdr x)) (eq x nil)`, *)
(* WF_REL_TAC `measure sexp_size` *)
(* THEN RW_TAC arith_ss [sexp_size_cdr]); *)
(*****************************************************************************)


# 80675ed3 04-Jul-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Tweaked acl2_name_to_hol_name to eliminate occurrences of "__".


# 36e03da7 28-Jun-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Minor tweaks and updates.


# d7ee8dde 27-Jun-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Tidying up. Note that acl2_defsTheory replaces basic_defaxiomsTheory.


# 1d620dc1 22-Jun-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Incremental changes (including ``cond`` --> ``ite``).


# 6bd31b23 20-Jun-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Fixing typos in the documentation (included as a comment in sexp.sml).


The method of converting a full ACL2 name pkg::sym to a HOL-friendly
name is as follows (see definition of create_hol_name below).

1. First see if the ACL2 name already has a HOL name, and if so
return it.

2. Convert sym to a HOL name, say hol_sym, using the ML function
acl2_name_to_hol_name (this function is described below).

3. Check to see if sym_name is already used. If not it is the result.

4. If hol_sym is in use, then use acl2_name_to_hol_name to convert pkg to
hol_pkg and then see if (hol_pkg ^ "_" ^ hol_sym) is used, and if
not return it. If it is used an error report is printed and an
exception raised.

5. Record any names generated by step 1-4 above in acl2_names.

The function acl2_name_to_hol_name converts a string s to a
HOL-friendly name as follows.

1. Convert s to a list of characters and convert all letters
to lower-case.

2. Replace "-" by "_".

3. Replace special characters by strings of letter characters
using acl2_to_hol_char_map (defined below). Add an underscore
"_" to separate special characters from all other characters.

We think these simple rules should be sufficient in practice, and if
they are not it's better to reconsider carefully what to do rather
than to have ugly looking names generated by more complicated rules
(this might change if the sufficiency assumption is badly wrong).


# ef674b63 20-Jun-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Getting things to work with the new improved naming scheme.
(e.g. COMMON-LISP::= is now called common_lisp_equal rather than acl2_equal,
and definitions proviously named *_acl2_defun are now stored as *_def).


# 2b9a5682 19-Jun-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Interim checkin of current state (various things unfinished).


# bae8e41b 05-Jun-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

More support for abbreviating string literals in terms


# 99247c0e 01-Jun-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Have folded package_alistScript.sml into sexpScript.sml and added
some gross hackery to get over what looks to me like a Holmake
compiler bug (see definition of ACL2_PACKAGE_ALIST in sexpScript.sml).


# 01fd6520 18-May-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Various updates, including stuff for importing ACL2 theorems.


# 442b6ec9 24-Feb-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Added support for papallel lets in HOL to correspond to lets in ACL2.


# dc1d2968 16-Jan-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Tidying up.


# 6d7752ba 16-Jan-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Various updates + filter-forms.csh from Matt (see:
http://www.cl.cam.ac.uk/~mjcg/hol2acl2/backpack/GordonHuntKaufmannPaper.html)


# 2c2db0a9 07-Jan-2006 Mike Gordon <mjcg@cl.cam.ac.uk>

Missing "COMMON-LISP::" package name when printing "COMPLEX"
(spotted by Matt Kaufmann).

----------------------------------------------------------------------
----------------------------------------------------------------------


# 9beaa68f 28-Dec-2005 Mike Gordon <mjcg@cl.cam.ac.uk>

Minor additions and tidying of existing files. Added an example
showing the importing a few easy ACL2 axioms (suggested by Matt) into
HOL and then proving them as theorems (the clunky treatment is
preliminary and needs to be improved with additional tools).


# 31df839c 16-Dec-2005 Mike Gordon <mjcg@cl.cam.ac.uk>

ML files to support HOL-ACL2 link