History log of /seL4-l4v-master/HOL4/src/n-bit/Holmakefile
Revision Date Author Comments
# 8f795560 29-Jan-2017 Michael Norrish <Michael.Norrish@nicta.com.au>

Make more build-related cleanups

Consistently use dehyphenated version of name to stand as
kernelid (i.e., "expk", "stdknl", "otknl", rather than anything with
leading hyphens). This requires change to Holmakefiles that wanted to
build OpenTheory articles when being executed under otknl.

Also make

build cleanAll

clean in all directories, not just those belonging to stdknl.


# 02f2b44d 28-Apr-2016 Ramana Kumar <ramana@member.fsf.org>

Add hol-words: OpenTheory package of src/n-bit


# 6e6ca266 02-Nov-2014 Michael Norrish <michael.norrish@nicta.com.au>

Empty command-line Holmake only builds first target in Holmakefile.

If there is no Holmakefile, or if there is a Holmakefile with no
targets, then the old behaviour of attempting to build everything
possible happens.

Documented in release notes and DESCRIPTION.

Many of the distribution's Holmakefiles were harmed in the creation of
this commit, but, for the reasons given in the release notes, I don't
think this should happen that often for typical user developments.

Closes #175


# 51a718c3 03-Nov-2013 Michael Norrish <michael.norrish@nicta.com.au>

Make src/n-bit also clean its selftest.exe file


# 7a3f0cb6 17-Sep-2010 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Add theorem WORD_MODIFY_BIT + other minor changes.


# 2c2cf630 27-May-2010 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Add some dependencies.


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

Added a bit-blasting conversion: BBLAST_CONV. This goes beyond the
capabilities of WORD_BIT_EQ_CONV by expanding out additions / subtractions.
This allows the new conversion to automatically handle small but tricky bit
vector goals. For example:

``(x && 3w = 0w:word32) ==> ((x + 4w * y) && 3w = 0w)``

and

``!a:word8. a <+ 4w /\ b <+ a /\ c <=+ 5w ==> (b + c) <=+ 7w``

(These aren't provable with wordsLib.WORD_DECIDE.)

Obviously bit-blasting is a brute force approach, so the new conversion should
be used with care. It will only work well for smallish word sizes and when
there is only and handful of additions around. It is also "eager" -- additions
are expanded out even when not strictly necessary. For example, in

``(a + b) <+ c /\ c <+ d ==> (a + b) <+ d:word32``

the sum ``a + b`` is expanded. Users may be able to achieve speed-ups by first
introducing abbreviations and then proving general forms, e.g.

``x <+ c /\ c <+ d ==> x <+ d:word32``

The conversion handles most operators, however, the following are not covered /
interpreted:

-- Type variables for word lengths, i.e. terms of type ``:'a word``.

-- General multiplication, i.e. ``w1 * w2``. Multiplication by a literal is
okay, although this may introduce many additions.

-- Bit field selections with non-literal bounds, e.g. ``(exp1 -- exp2) w``.

-- Shifting by non-literal amounts, e.g. ``w << exp``.

-- ``n2w exp`` and ``w2n w``. Also w2s, s2w, w2l and l2w.

-- word_div, word_sdiv, word_mod and word_log2.