Giter Site home page Giter Site logo

acl2 / acl2 Goto Github PK

View Code? Open in Web Editor NEW
338.0 35.0 96.0 1.24 GB

ACL2 System and Books as Maintained by the Community

Home Page: http://www.cs.utexas.edu/users/moore/acl2

License: Other

Makefile 0.04% Common Lisp 97.82% NewLisp 0.94% Shell 0.03% HTML 0.21% Perl 0.04% Ruby 0.03% C++ 0.08% Verilog 0.25% CSS 0.01% XSLT 0.01% TeX 0.05% Haskell 0.01% SystemVerilog 0.21% JavaScript 0.10% C 0.03% Emacs Lisp 0.06% CartoCSS 0.01% Java 0.07% GAP 0.01%
acl2 theorem-prover theorem-proving common-lisp rewriting formal-verification formal-methods first-order-logic logic

acl2's People

Contributors

acl2buildserver avatar acoglio avatar airbornemihir avatar ankitku avatar arbrock avatar bendyarm avatar ericsmithkestrel avatar ericwhitmansmith avatar gjurgensen avatar harshrc avatar jagadishb09 avatar jaredcdavis avatar kini avatar mattkaufmann avatar maxvonhippel avatar mister-walter avatar myall86 avatar nadezhin avatar pennyan avatar pmanolios avatar ragerdl avatar robsumners avatar rubengamboa avatar russinoff avatar shigoel avatar solswords avatar temelmertcan avatar thebeanerd avatar warrenhu avatar westfold avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

acl2's Issues

[ACL2(p)] waterfall-parallelism for centaur directory, single-threaded clause-processors

From [email protected] on February 19, 2013 09:53:17

I currently see two obstacles to making the centaur directory compatible with waterfall-parallelism:

(1) Shared hash-tables
(2) Single-threaded clause-processors

This feature request focuses on (2).

I think that when a user tries to use ACL2(hp) with waterfall-parallelism enabled to certify the centaur directory, that they can receive errors about single-threaded clause-processors. For each error, fixing this involves one of two things:

-- Going through the files and adding .acl2 files that disable waterfall parallelism for the symptomatic files, or

-- Modifying the clause-processor so that it doesn't return state.

I think that the GL books actually need state, so we'll probably need to take the first approach for those.

Upon further investigation, it may turn out that I've already done this, but I don't think I have, so I'm filing this feature request (probably against myself).

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=37

[cutil::defprimitive] Create it

From [email protected] on March 06, 2013 14:47:36

Something like the following but more general. The idea is to tie this into defaggregate default values.

(in-package "ACL2")
(include-book "xdoc/top" :dir :system)

(defmacro defprimitive (name args body &key default)
(b* ((xdoc::mksym-package-symbol name))
`(progn
(defun ,name ,args
,body)
(defun ,(xdoc::mksym 'make- name) ()
,default)))))

(defprimitive foo (x)
(and (integerp x)
(> x 4))
:default 7)

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=45

Document :require field of defaggregate (std)

From [email protected] on February 07, 2013 12:12:13

The new defaggregate syntax is great, thanks Jared!!!

However, based on my current understanding of defaggregate (which could be wrong!), it feels a bit clunky to implement dependent types. E.g., is there a way to get rid of the two integerp tests in the definition of two-integers-correctly-related? We could just use the "<" inline with the declaration of my-int-r, but there's no notion of using the declared type information to satisfy the guards on "<".

(defun two-integers-correctly-related (q r)
(and (integerp q)
(integerp r)
(< q r)))

(cutil::defaggregate dependent-foo
((my-int-q integerp)
(my-int-r (and (integerp my-int-q)
(two-integers-correctly-related my-int-q my-int-r))))
:tag :dependent-foo)

A work around that makes a little bit of sense is to use the :require option from a readability perspective, like follows:

(cutil::defaggregate dependent-foo
((my-int-q integerp)
(my-int-r integerp))

:require
((dependent-type-lemma-1
(and (integerp my-int-q)
(integerp my-int-r)
(< my-int-q my-int-r))))
:tag :dependent-foo)

But what if we had the following:

(cutil::defaggregate dependent-foo
((my-int-q integerp)
(my-int-r integerp))
:dependent-requirements
((< my-int-q my-int-r))

:tag :dependent-foo)

And defaggregate could be modified to use the type information from the declarations of the variables as forced hyps for the dependent-requirements lemmas.

Obviously, in some sense, this is just "more work." But, the idea seems like it could be nice, so I thought I'd throw it out there.

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=34

Move books/system/io.lisp to books/io/base.lisp

From [email protected] on January 10, 2013 13:48:01

This is a books organization change. I started to make the change myself, and I was going to place a wrapper for io/base.lisp inside the system directory as part of the transition strategy. However, this wrapper introduces a circular Make dependency (the file that needs to move depends on system/f-put-global.lisp), so it's infeasible to leave this wrapper behind.

I could make the change anyway, because there's nothing in the regression suite that depends on system/io.lisp. However, I suspect it will break Centaur's books, and then force them to update their includes. Rather than break their build, I leave this relatively simple task for them to do.

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=27

Automatic default values for defaggregate

From [email protected] on March 06, 2013 14:24:19

Suppose we have an aggregate pair:

(cutil::defaggregate pair
((first integerp :default 0)
(second integerp :default 0)))

Now suppose we have a bar that includes a pair:

(cutil::defaggregate bar
((x pair-p)
(y pair-p)))

It would be useful to have the default for x and y to automatically be calls of (make-pair), instead of just nil. This could be possible, because I think we can detect that bar-p is an aggregate.

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=44

Convert #+acl2-par occurrences in .acl2 files to a make-event

From [email protected] on February 19, 2013 12:07:43

In order to better support multiple Lisps, we could consider changing each #+acl2-par (e.g., in books/models/jvm/m5/apprentice.acl2) to a make-event that inspects the ACL2 state and only calls the set-waterfall-parallelism* primitive if par/hons/some-combo-thereof is/are enabled.

Supposedly this is only an issue to those who use multiple lisps. Thus, so long as Kaufmann is happy, we don't actually plan on fixing this. However, we file the idea for later in case we need it.

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=39

Provisional certification

From [email protected] on December 08, 2007 10:18:34

I think this is an idea Jared's been using in his project as a sort of
unofficial certification mechanism in order to enable him to hog 64 cores
with a single parallel build. I think it would also almost eliminate the
need for project-specific makefiles, since anyone who wanted to certify a
library could do all the books in any order.

When a book is being certified, currently any other book that it includes
must have an up to date certificate (with correct checksum) or the
certification will fail. What if we allowed books to be certified even
when their dependencies were uncertified? Include-book always checks
recursively that all dependencies are correctly certified and (by default
outside of certify-book) issues a warning if not. This wouldn't change --
one could certify a book and subsequently receive a warning when including
it, if its dependencies weren't certified. Obviously including a
provisionally-certified book would be unsound in general; only when no such
warnings were issued would we expect soundness.

This idea would need to be more fully fleshed out in order to be
universally applicable. There are, I think, four or so main areas in which
unforeseen (by me) problems could prevent this from working well:

  • portcullis events: are include-book's current portcullis checks enough?
    should certify-book somehow warn about missing portcullis events from
    included uncertified books?
  • make-event: is the full expansion of all events included in the
    checksum? other problems?
  • local: seems okay to me, but who knows
  • ttags: ditto; certainly there shouldn't be a way (modulo forging a
    certificate) to sneak a ttag into a dependency of a book certified without
    ttags.

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=11

Add appropriate package inclusion so books/security/des.lisp can use GL

From [email protected] on December 12, 2012 17:34:50

For this checkin: https://code.google.com/p/acl2-books/source/detail?r=1374 In books/security/des/des.lisp, Soumava and I would like to use GL to prove a theorem. However, we couldn't figure out a decent way to define the GL package so that the call of def-gl-thm would work when calling certify-book.

So, we commented out the calls to the GL package and submitted the books as is. Someone who knows how packages work in ACL2 (and even more so if they know how to include the GL defpkg) should be able to fix this up pretty easily.

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=25

Extend define to support documented test cases

From [email protected] on March 25, 2013 11:38:18

Add tests to define's definition and automatically incorporate those tests into the generated xdoc.

Just an idea -- it might be good, because it would automatically increase the documentation, but it might be bad, because, presumably, we don't want cutil::define to be too much like the kitchen sink. Plus, including tests automatically might keep us from feeling like we need to invest the time in making nice and descriptive English sentences.

We can note that the tests have not been added as documentation, but that it would be useful to have the tests as part of the documentation in revision 1621 of regex-ui.lisp

(define do-regex-match
((str stringp "String to test")
(pat stringp "String representing the pattern to find")
(opts parse-opts-p "Options for test.

                   BOZO: state and explain the possible options.  Possible
                   options might include
                   <tt>:b</tt>/<tt>:e</tt>/<tt>:f</tt> for
                   basic/extended/fixed, <tt>:i</tt> for case-insensitive,
                   <tt>:full</tt> for something, etc."))

:short "Test whether a given string matches a given regular expression"
:long "Intended for use in the dynamically compiled case"
:parents (regex)
:returns (mv (error-msg (or (stringp error-msg)
(not error-msg))
"Error message"
:rule-classes :type-prescription)
(whole (or (stringp whole)
(not whole))
"The portion of str that matches the pattern
provided by pat. Nil if there is not
a match."
:rule-classes :type-prescription)
(substrs true-listp
"List of substrings that match parenthesized
subexpressions of the pattern (when applicable).
Nil if there is not a match."
:rule-classes :type-prescription))
(b* ((str (mbe :logic (if (stringp str) str "") :exec str))
(pat (mbe :logic (if (stringp pat) pat "") :exec pat))
(pat (if (parse-options-case-insensitive opts)
(str::downcase-string pat)
pat))
(regex (regex-do-parse pat opts))
((when (stringp regex))
(mv regex nil nil))
((mv whole substrs)
(do-regex-match-precomp str regex opts)))
(mv nil whole substrs)))

; examples
(local (assert! (mv-let (error-msg whole substrs)
(do-regex-match "cdeAbfdEfDeghIj"
"ab([def]*)\1([gh])"
(parse-options 'ere ; type
nil ; not strict-paren
nil ; not strict-brace
nil ; not strict-repeat
t ; case-insensitive
))
(and (not error-msg)
(equal whole "AbfdEfDeg")
(equal substrs '("fdE" "g"))))))

(local (assert! (mv-let (error-msg whole substrs)
(do-regex-match "cdeAbfdEfDeghIj"
"ab([def]*)\1([gh])"
(parse-options 'fixed ; type
nil ; not strict-paren
nil ; not strict-brace
nil ; not strict-repeat
t ; case-insensitive
))
(and (not error-msg)
(not whole)
(not substrs)))))

(local (assert! (mv-let (error-msg whole substrs)
(do-regex-match "cdeAbfdEfDeghIj"
"cdeabfdefdeghij"
(parse-options 'fixed ; type
nil ; not strict-paren
nil ; not strict-brace
nil ; not strict-repeat
t ; case-insensitive
))
(and (not error-msg)
(equal whole "cdeAbfdEfDeghIj")
(not substrs)))))

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=50

[critpath.pl] Add option to see deeper directory structure

From [email protected] on February 12, 2013 13:55:21

The danger in telling others about one's work is that they'll use it! Critpath.pl is definitely great, thanks for contributing such a nice tool to the community!

I could use an improvement to critpath.pl to disambiguate the y86/x86 books. There are three branches for books that are basically the same in https://code.google.com/p/acl2-books/source/browse/#svn&#37;2Ftrunk&#37;2Fmodels&#37;2Fy86 The branches are fine imho, but it'd be nice to know which branch I'm in when looking at the individual file timing that critpath reports.

I'm not saying that anyone should spend their time on this -- maybe I'll do it if I want it badly enough.

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=35

Document regex library

From [email protected] on March 19, 2013 16:47:22

It seems that making the regex binder available requires including books/regex/regex-ui, but it would be nice if its existence was somehow discoverable via a search engine. E.g., I'd like searching on Google for "site:fv.centtech.com/acl2/ regex" to return something meaningful.

It's questionable where the right place to put this documentation is. The easiest thing is to manually update topic "B*-binders".

Another option would be to create a new top-level regex topic, and to link to it (or one of its children) from b*-binders.

Another much more time-consuming option would be to automatically include all uses of def-b_-binder that occur within the repository inside the "B_-binders" xdoc topic, in a second section that is automatically generated. Haha - no one has the time and motivation to do this one, but it's still a neat idea.

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=47

data-structures/alist-defthms and coi/alists/ are incompatible

From [email protected] on May 10, 2011 18:49:40

In data-structures/alist-defthms:
(defthm assoc->assoc-equal
(equal (assoc x a)
(assoc-equal x a)))

In coi/alists/equiv.lisp:
(defthm assoc-equal-reduction
(equal (assoc-equal x y)
(assoc x y)))

Plus, all the useful theorems in data-structures/ are defined only for assoc-equal, and all the useful theorems in coi/alists/ are defined only for assoc.

It would be nice to pick one convention or the other. (I like the coi/alists convention, just because "assoc" is shorter than "assoc-equal".)

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=14

Add calls of with-waterfall-parallelism to some of the slower books that benefit from waterfall parallelism

From [email protected] on January 11, 2013 06:45:34

What is the idea? Speedup the time it takes to make some of the more time consuming books when using ACL2(p) Which book(s) and/or directories would be affected by this request? All that are reported to be time consuming in Rager's dissertation. How many people will be affected by this feature? Anyone who build workshop books.

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=30

Defstructure accepts malformed structures without complaining

From [email protected] on November 08, 2009 14:42:48

Defstructure will accept malformed (according to its BNF specification for
input as given by http://www.cs.utexas.edu/users/moore/publications/others/defstructure-brock.ps )
structures without any form of complaint:

Example:

(include-book "data-structures/structures" :dir :system)

(defstructure good
(afield (:assert (natp afield) :rewrite))
(bfield (:assert (consp bfield) :rewrite)))

(defstructure bad
(afield (:assert (natp afield)) :rewrite)
(bfield (:assert (consp bfield) :rewrite)))

No error is produced when "bad" is accepted, however defs-bad-assertions
will not have an assertion corresponding to the first field as good does:

ACL2 !>:pe defs-good-assertions
d 2 (DEFSTRUCTURE GOOD (AFIELD #) ...)
\

        (DEFTHM
            DEFS-GOOD-ASSERTIONS
            (IMPLIES (GOOD-P GOOD)
                     (AND (WEAK-GOOD-P GOOD)
                          (NATP (GOOD-AFIELD GOOD))
                          (CONSP (GOOD-BFIELD GOOD))
                          T))
            :RULE-CLASSES
            ((:REWRITE :COROLLARY (IMPLIES (GOOD-P GOOD)
                                           (NATP (GOOD-AFIELD GOOD))))
             (:REWRITE :COROLLARY (IMPLIES (GOOD-P GOOD)
                                           (CONSP (GOOD-BFIELD GOOD))))))

ACL2 !>:pe defs-bad-assertions
d 3:x(DEFSTRUCTURE BAD (AFIELD # :REWRITE)
...)
\

        (DEFTHM
              DEFS-BAD-ASSERTIONS
              (IMPLIES (BAD-P BAD)
                       (AND (WEAK-BAD-P BAD)
                            (NATP (BAD-AFIELD BAD))
                            (CONSP (BAD-BFIELD BAD))
                            T))
              :RULE-CLASSES
              ((:REWRITE :COROLLARY (IMPLIES (BAD-P BAD)
                                             (CONSP (BAD-BFIELD BAD))))))

Including >= 2 fields makes this error particularly annoying -
defs-bad-assertions will still exist, it just will be missing an assertion.
With more fields an error of this form becomes difficult to detect.

I thought I would report this so it is known, but I may try to fix this
myself. At minimum it would probably be good to note somewhere that
although defstructure does have a rigorously defined BNF spec for its input
it does not fully check for adherence to this spec.

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=12

B* integration with defaggregate

From [email protected] on March 04, 2013 16:33:56

This might end up being a will-not-fix feature request, but I wanted to document it. Regardless, it's pretty low priority.

It strikes me as odd, in the following example, that I can make reference to better-but-not-good-enough-bar.first but not to better-but-not-good-enough-bar. I'm guessing there's an implementation reason for this, but from a user perspective (really, my perspective), it's a bit odd. Look for the call of change-bar (sorry about the long example).

(cutil::defaggregate foo
((left integerp)
(right integerp)))

(cutil::defaggregate bar
((first foo-p)
(second foo-p)))

(cutil::define raise-the-bar
((the-bar bar-p))
(b* (((bar better-but-not-good-enough-bar) the-bar))
(change-bar the-bar ; works
:first
(change-foo better-but-not-good-enough-bar.first
:left 4))))

(cutil::define raise-the-bar
((the-bar bar-p))
(b* (((bar better-but-not-good-enough-bar) the-bar))
(change-bar better-but-not-good-enough-bar ; doesn't work
:first
(change-foo better-but-not-good-enough-bar.first
:left 4))))

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=41

Better recognizer debugging for aggregates

From [email protected] on October 15, 2012 21:58:54

Suppose we define a new data structure, called a foo, by calling defaggregate. Now suppose that we use the foo-p predicate in the guards of functions. Now suppose that we have concrete executions of these functions with non-verified guards (so we could also be calling these functions from the top-level). Finally, suppose we call one of these functions with an argument that is supposed to be a foo-p but actually isn't. We will receive an error that indicates we have a guard failure.

One option is to use ACL2 function/macro print-gv to debug our failure. That works okay, but what I'd like instead is to have the predicate comment-window print the offending member of the foo with a nice error message. Of course, we won't always want this printing on, so the printing should probably be enabled/disabled with a table event (for example) or with the call of defaggregate that defines foo-p.

The demand for this is probably fairly low, but Rager might just do it at some point. The problem of "what's causing this guard failure?" has plagued users for a long time, and while print-gv (introduce in ver ~4.0) is a nice improvement, we can obtain more debugging information by modifying and using defaggregate.

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=17

Convention for relocating books

From [email protected] on January 14, 2013 11:13:25

One way to keep book relocations from breaking things (especially outside the repository) is to replace the original book with a stub file that just includes the book in its new location. I think this is advisable in general, so as not to suddenly break things.

An additional convention I'd propose we adopt is the inclusion of a line marking the replacement book as a stub, i.e.:

(in-package "ACL2")
;; The following line marks this book as a relocation stub:
;; cert_param: (reloc_stub)
(include-book "new/location/of/this/book" :dir :system)

This extra line will allow the cert.pl build system to mark this book as a stub and perhaps (not yet implemented) print a warning whenever a book includes the stub, so that eventually these books may be updated with the new file locations and the stub can be removed.

This extra line also can allow these books to be excluded from the Makefile-generic build system, which might be desirable in order to avoid directory-level dependency loops (?). E.g., the directory's Makefile might contain:

include ../Makefile-generic

The following line excludes books that contain the stub marker

BOOKS := $(patsubst %.lisp, %, $(shell fgrep -L 'cert_param: (reloc_stub)' *.lisp))
-include Makefile-deps

Any objections to adopting this convention?

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=32

[cutil::define] Add table event to define so user can query for signature of a function

From [email protected] on December 12, 2012 17:59:09

We could save the guard and return value obligations in a table event so that a user could query for the signature of the defined function without having to go find the definition in their source code.

For example:

(define foo ((a integerp)
(b string-listp))
:returns (ans consp :hyp :fguard)
(cons a b))

(signature 'foo)
==>
Foo takes as arguments
A, of type integerp
B, of type string-listp

Foo returns
Ans, of type consp

OR

(signature 'foo)
==>
((a integerp) (b string-listp)) => (ans consp)

Whether signature writes a narrative or just returns the original formals declarations is subjective. I probably prefer the latter.

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=26

Books documentation and topics with the same names

From [email protected] on December 10, 2012 13:04:17

I note that close-output-channel has two documentation topics: the one defined in the ACL2 source code and the one defined in books/system/io.lisp.

Both topics seem to show up in the index for the latest version of the xdoc manual that includes the centaur books. However, both links result in showing the built-in ACL2 :doc topic. Shouldn't one of them (specifically, the first of the two links) point to the xdoc created by the :defsection inside books/system/io.lisp?

This is on Google Chrome/Chromium.

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=24

[regex] Add xdoc to regular expression library

From [email protected] on March 19, 2013 16:49:56

Seems like the regex library could have some users. It'd be nice to document it so these users and future users could figure out how to get started using it.

As a start, some of the functions in regex-ui look like they'd be a natural fit for using cutil::define, which would auto-build some of the documentation for us. That being said, we still should have a nice top-level topic that introduces the best-practices for using the library.

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=48

Add Readme.lsp to the new std directory

From [email protected] on January 11, 2013 06:52:27

The new std directory (soon to be committed) needs to be documented. I'm going to save writing that documentation until after getting some feedback from the community (basically depending upon how much complaint there is about things breaking).

Also, I plan on continuing to move some things into std, so refraining from writing Readme.lsp early on will mean less short-term editing for me.

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=31

Create a way to efficiently search books to answer the question "what books contain useful theorems about function ___"

From [email protected] on December 08, 2012 22:20:20

Create a way to efficiently search books to answer the question "what books contain useful theorems about function ___"

For example, right now I need a lemma about append that says

(implies (and (string-listp x)
(string-listp y))
(string-listp (append x y)))

A book that contained this lemma could contain other useful lemmas. Actually there is one hit in a VL book. But, can that really be all?

Example of searching code base for "(string-listp (append" https://code.google.com/p/acl2-books/source/search?q=&#37;22&#37;28string-listp+&#37;28append&#37;22&origq=&#37;22&#37;28string-listp+&#37;28append&#37;22&btnG=Search+Trunk

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=23

[ACL2(p)] waterfall-parallelism for centaur directory, shared hash-tables

From [email protected] on February 19, 2013 09:53:02

I currently see two obstacles to making the centaur directory compatible with waterfall-parallelism:

(1) Shared hash-tables
(2) Single-threaded clause-processors

This feature request focuses on (1).

Currently when a user tries to use ACL2(hp) with waterfall-parallelism enabled to certify the centaur directory, they receive a lot of errors that look like:


.************ ABORTING from raw Lisp ***********
Error: .Not owner of hash table .#<.HASH-TABLE .:TEST .EQL size 1/62 #x30200C652DAD>


This could be fixed in one of two ways:

-- Going through the directory and adding .acl2 files that disable waterfall parallelism for the symptomatic files, or

-- Modifying ACL2(h[p]) so that the hash table reporting a violation is :shared (perhaps only :shared in #+acl2-par... but we would probably need to test to see whether that causes an issue... I don't know what it means for performance to load a :shared hash-table into an image from which you've explicitly exluded parallelism (ACL2(h)).

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=36

[books-cleanup] Create advise/trace mechanism for asserting that return values of functions satisfy predicates provided by defaggregate

From [email protected] on March 05, 2013 15:27:57

Create advise/trace mechanism for asserting that return values of functions satisfy predicates provided by cutil::define.

Might require adding to the data that is stored in tables during a cutil::define. And then writing a book in cutil that takes advantage of that stored data.

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=43

Define could automatically bind defaggregates

From [email protected] on March 05, 2013 11:45:35

Use the declared types of arguments to cutil::define to automatically bind field names.

Suppose one has a pair aggregate:

(cutil::defaggregate pair
((first integerp)
(second integerp)))

Then one defines function my-f to use that pair:

(cutil::define my-f ((x pair-p))
(+ x.first x.second))

This would expands to the following (among other things):

(defun my-f (x)
(declare (xargs :guard (pair-p x)))
(let* ((x.first (pair->first x)))
(x.second (pair->second x))))
(+ x.first x.second)))

Implementation desire and hazard:

It would also be good for this to work for nested aggregates. By this, I mean suppose a Pair-p contained two Foo-p's. And Foo-p's have fields Left and Right. Should cutil::define automatically bind pair.first.left, pair.first.right, pair.second.left, and pair.second.right?

Either (1) define has to scan the body to find out what's used, or (2) we can declare everything and make them ignorable. If we choose (1), what if the user rebinds pair.first.right in their function's body and the original value is never used? Do we even care? Probably not. The syntax is already strange enough and would be documented in define's xdoc, that if a user "happens upon it", I wouldn't feel too badly. I'm actually currently in favor of (2), because it has the simplest story to tell.

Original issue: http://code.google.com/p/acl2-books/issues/detail?id=42

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.