This file is indexed.

/usr/share/acl2-4.3/books/cutil/defprojection-tests.lisp is in acl2-books-source 4.3-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
; CUTIL - Centaur Basic Utilities
; Copyright (C) 2008-2011 Centaur Technology
;
; Contact:
;   Centaur Technology Formal Verification Group
;   7600-C N. Capital of Texas Highway, Suite 300, Austin, TX 78731, USA.
;   http://www.centtech.com/
;
; This program is free software; you can redistribute it and/or modify it under
; the terms of the GNU General Public License as published by the Free Software
; Foundation; either version 2 of the License, or (at your option) any later
; version.  This program is distributed in the hope that it will be useful but
; WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
; more details.  You should have received a copy of the GNU General Public
; License along with this program; if not, write to the Free Software
; Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA.
;
; Original author: Jared Davis <jared@centtech.com>

(in-package "CUTIL")
(include-book "defprojection")
(local (include-book "make-event/assert" :dir :system))

(local
 (encapsulate
  ()

  (defund square (x)
    (declare (xargs :guard (integerp x)))
    (* x x))

  (defprojection slow-square-list (x)
    (square x)
    :guard (integer-listp x)
    :optimize nil)

  (defprojection square-list (x)
    (square x)
    :guard (integer-listp x))

  (defprojection program-square-list (x)
    (square x)
    :guard (integer-listp x)
    :mode :program)

  (assert! (let ((x '(1 2 3 4 5 6 7 8 9 10)))
             (and (equal (square-list x)
                         (slow-square-list x))
                  (equal (square-list x)
                         (program-square-list x)))))

  (defthm integerp-of-square
    (implies (integerp x)
             (integerp (square x)))
    :hints(("Goal" :in-theory (enable square))))

  (defprojection slow-square-list-with-result-type (x)
    (square x)
    :guard (integer-listp x)
    :result-type integer-listp
    :optimize nil)

  ))




#||

;; Test for includeed book.  (Unlocalize the encapsulate above, first.)  It
;; seems to work just fine.

(in-package "VL")
(include-book ;; fool dependency scanner
 "util-defprojection")
:q

(defparameter *test* (loop for i from 1 to 1000 collect i))

(equal (vl::square-list *test*)
       (vl::slow-square-list *test*))

;; .76 seconds, 320 MB
(progn
    (gc$)
    (time (loop for i from 1 to 10000
                do
                (consp (vl::slow-square-list *test*)))))

;; .43 seconds, 160 MB
(progn
    (gc$)
    (time (loop for i from 1 to 10000
                do
                (consp (vl::square-list *test*)))))

;; .43 seconds, 160 MB
(progn
    (gc$)
    (time (loop for i from 1 to 10000
                do
                (consp (vl::program-square-list *test*)))))



  ))

||#