-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscratchobj.lisp
71 lines (62 loc) · 3.11 KB
/
scratchobj.lisp
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
; FGL - A Symbolic Simulation Framework for ACL2
; Copyright (C) 2008-2013 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/
;
; License: (An MIT/X11-style license)
;
; Permission is hereby granted, free of charge, to any person obtaining a
; copy of this software and associated documentation files (the "Software"),
; to deal in the Software without restriction, including without limitation
; the rights to use, copy, modify, merge, publish, distribute, sublicense,
; and/or sell copies of the Software, and to permit persons to whom the
; Software is furnished to do so, subject to the following conditions:
;
; The above copyright notice and this permission notice shall be included in
; all copies or substantial portions of the Software.
;
; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
; FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
; DEALINGS IN THE SOFTWARE.
;
; Original author: Sol Swords <[email protected]>
(in-package "FGL")
(include-book "tools/templates" :dir :system)
(progn
(defconst *scratchobj-types*
'((:fgl-obj fgl-object-p fgl-object-fix fgl-object 0)
(:fgl-objlist fgl-objectlist-p fgl-objectlist-fix fgl-objectlist 1)
(:bfr t nil bfr 2)
(:bfrlist true-listp llist-fix bfrlist 3 :rule-classes :type-prescription)
(:cinst constraint-instance-p constraint-instance-fix constraint-instance 4)
(:cinstlist constraint-instancelist-p constraint-instancelist-fix constraint-instancelist 5)))
(defun scratchobj-tmplsubst (tuple lastp)
(declare (xargs :mode :program))
(b* (((list* kind pred fix prefix code ruleclasses) tuple))
(acl2::make-tmplsubst :atoms `((:<kind> . ,kind)
(:<kindcase> . ,(if lastp t kind))
(<codecase> . ,(if lastp t code))
(<pred> . ,pred)
(<prefix> . ,prefix)
(<fix> . ,fix)
(<code> . ,code)
(<ruleclass> . ,ruleclasses))
:strs `(("<KIND>" . ,(symbol-name kind))
("<PREFIX>" . ,(symbol-name prefix)))
:pkg-sym 'fgl::foo
:features (and (eq pred t) '(:no-pred)))))
(defun scratchobj-tmplsubsts (tuples)
(declare (xargs :mode :program))
(if (atom tuples)
nil
(cons (scratchobj-tmplsubst (car tuples) (atom (cdr tuples)))
(scratchobj-tmplsubsts (cdr tuples)))))
(defconst *scratchobj-tmplsubsts*
(scratchobj-tmplsubsts *scratchobj-types*)))