1
#|-*-Lisp-*-=================================================================|#
3
#| coi: Computational Object Inference |#
5
#|===========================================================================|#
1
; Computational Object Inference
2
; Copyright (C) 2005-2014 Kookamara LLC
7
; 11410 Windermere Meadows
8
; Austin, TX 78759, USA
9
; http://www.kookamara.com/
11
; License: (An MIT/X11-style license)
13
; Permission is hereby granted, free of charge, to any person obtaining a
14
; copy of this software and associated documentation files (the "Software"),
15
; to deal in the Software without restriction, including without limitation
16
; the rights to use, copy, modify, merge, publish, distribute, sublicense,
17
; and/or sell copies of the Software, and to permit persons to whom the
18
; Software is furnished to do so, subject to the following conditions:
20
; The above copyright notice and this permission notice shall be included in
21
; all copies or substantial portions of the Software.
23
; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24
; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25
; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
26
; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27
; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28
; FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29
; DEALINGS IN THE SOFTWARE.
8
33
(defthm not-hide-forward
59
84
(let ((term (car clause)))
60
85
(let ((term (equiv-term equivs term)))
62
(rewrite-equiv-hint once (cons `(not (hide (rewrite-equiv ,(optimize-equiv-term term))))
87
(rewrite-equiv-hint once (cons `(not (hide (rewrite-equiv ,(optimize-equiv-term term))))
63
88
cases) equivs (cdr clause))
64
89
(rewrite-equiv-hint once cases equivs (cdr clause)))))
96
121
(let ((term (car clause)))
97
122
(let ((term (equiv-term equivs term)))
99
(rewrite-equiv-hint once (cons `(not (hide (rewrite-equiv ,(optimize-equiv-term term))))
124
(rewrite-equiv-hint once (cons `(not (hide (rewrite-equiv ,(optimize-equiv-term term))))
100
125
cases) equivs (cdr clause))
101
126
(rewrite-equiv-hint once cases equivs (cdr clause)))))
102
127
(if (and stable cases)
147
172
(let ((term (car clause)))
148
173
(let ((term (equiv-var-term equivs term)))
150
(slow-rewrite-equiv-hint once (cons `(not (hide (rewrite-equiv ,(optimize-equiv-term term))))
175
(slow-rewrite-equiv-hint once (cons `(not (hide (rewrite-equiv ,(optimize-equiv-term term))))
151
176
cases) equivs (cdr clause))
152
177
(slow-rewrite-equiv-hint once cases equivs (cdr clause)))))
160
185
(defun slow-rewrite-equiv-hint (stbl once equivs clause)
161
186
(declare (type t clause))
163
188
(let ((term (find-equiv equivs clause)))
166
191
(let ((term `(not (hide (rewrite-equiv ,(optimize-equiv-term term))))))
167
`(:computed-hint-replacement
192
`(:computed-hint-replacement
168
193
((slow-rewrite-equiv-hint stable-under-simplificationp 't ',equivs clause))
169
194
:cases (,term))))
171
`(:computed-hint-replacement
196
`(:computed-hint-replacement
172
197
((slow-rewrite-equiv-hint stable-under-simplificationp 'nil ',equivs clause)) :cases (t))