Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

open-axiom repository from github

24005 views
1
;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.
2
;; All rights reserved.
3
;; Copyright (C) 2007-2010, Gabriel Dos Reis.
4
;; All rights reserved.
5
;;
6
;; Redistribution and use in source and binary forms, with or without
7
;; modification, are permitted provided that the following conditions are
8
;; met:
9
;;
10
;; - Redistributions of source code must retain the above copyright
11
;; notice, this list of conditions and the following disclaimer.
12
;;
13
;; - Redistributions in binary form must reproduce the above copyright
14
;; notice, this list of conditions and the following disclaimer in
15
;; the documentation and/or other materials provided with the
16
;; distribution.
17
;;
18
;; - Neither the name of The Numerical ALgorithms Group Ltd. nor the
19
;; names of its contributors may be used to endorse or promote products
20
;; derived from this software without specific prior written permission.
21
;;
22
;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
23
;; IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
24
;; TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
25
;; PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
26
;; OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
27
;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
28
;; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
29
;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
30
;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
31
;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
32
;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33
34
35
(IMPORT-MODULE "vmlisp")
36
(in-package "BOOT")
37
38
(DEFUN LEXGREATERP (COMPERAND-1 COMPERAND-2)
39
;; "Order of types: pair NIL vec ivec/rvec cvec ident num fbpi mbpi other"
40
(COND
41
((EQ COMPERAND-1 COMPERAND-2) NIL)
42
((consp COMPERAND-1)
43
(COND
44
( (consp COMPERAND-2)
45
(COND
46
( (EQUAL (qcar COMPERAND-1) (qcar COMPERAND-2))
47
(LEXGREATERP (qcdr COMPERAND-1) (qcdr COMPERAND-2)) )
48
( (LEXGREATERP (qcar COMPERAND-1) (qcar COMPERAND-2)) ) ) )
49
('else t)))
50
((consp COMPERAND-2) NIL)
51
((NULL COMPERAND-1) 'T )
52
((NULL COMPERAND-2) NIL)
53
((simple-vector-p COMPERAND-1)
54
(COND
55
((simple-vector-p COMPERAND-2) (LEXVGREATERP COMPERAND-1 COMPERAND-2) )
56
('else t)))
57
((simple-vector-p COMPERAND-2) NIL)
58
((OR (IVECP COMPERAND-1) (RVECP COMPERAND-1))
59
(COND
60
( (OR (IVECP COMPERAND-2) (RVECP COMPERAND-2))
61
(LEXVGREATERP COMPERAND-1 COMPERAND-2) )
62
('else t)))
63
((OR (IVECP COMPERAND-2) (RVECP COMPERAND-2)) NIL )
64
((stringp COMPERAND-1)
65
(COND
66
((stringp COMPERAND-2)
67
(STRING-GREATERP COMPERAND-1 COMPERAND-2) )
68
('else t)))
69
((stringp COMPERAND-2) NIL)
70
((symbolp COMPERAND-1)
71
(COND
72
((symbolp COMPERAND-2)
73
(STRING-GREATERP (symbol-name COMPERAND-1) (symbol-name COMPERAND-2)) )
74
('else t)))
75
((symbolp COMPERAND-2) NIL )
76
((numberp COMPERAND-1)
77
(COND
78
( (numberp COMPERAND-2)
79
(> COMPERAND-1 COMPERAND-2) )
80
('else t)))
81
((numberp COMPERAND-2) NIL)
82
((CHARACTERP COMPERAND-1)
83
(COND
84
((CHARACTERP COMPERAND-2)
85
(CHAR-GREATERP COMPERAND-1 COMPERAND-2) )
86
('else t)))
87
((CHARACTERP COMPERAND-2) NIL )
88
((FBPIP COMPERAND-1)
89
(COND
90
((FBPIP COMPERAND-2)
91
(LEXGREATERP (BPINAME COMPERAND-1) (BPINAME COMPERAND-2)) )
92
('else t)))
93
((FBPIP COMPERAND-2) NIL)
94
((MBPIP COMPERAND-1)
95
(COND
96
((MBPIP COMPERAND-2)
97
(LEXGREATERP (BPINAME COMPERAND-1) (BPINAME COMPERAND-2)) )
98
('else t)))
99
((MBPIP COMPERAND-2)
100
NIL )
101
((> (SXHASH COMPERAND-1) (SXHASH COMPERAND-2)))))
102
103
(DEFUN LEXVGREATERP (VECTOR-COMPERAND-1 VECTOR-COMPERAND-2)
104
(declare (simple-vector vector-comperand-1 vector-comperand-2))
105
(let ((I -1)
106
(L1 (length VECTOR-COMPERAND-1))
107
(L2 (length VECTOR-COMPERAND-2)))
108
(declare (fixnum I L1 L2) )
109
(PROG (T1 T2)
110
LP
111
(setq I (1+ I))
112
(COND ((EQL L1 I)
113
(RETURN NIL))
114
((EQL L2 I)
115
(RETURN 'T)))
116
(COND ((EQUAL (SETQ T1 (svref VECTOR-COMPERAND-1 I))
117
(SETQ T2 (svref VECTOR-COMPERAND-2 I)))
118
(GO LP)))
119
(RETURN (LEXGREATERP T1 T2)) ) ))
120
121
122
(DEFUN GGREATERP (COMPERAND-1 COMPERAND-2)
123
;; "Order of types: pair NIL vec ivec/rvec cvec ident num fbpi mbpi other"
124
(COND
125
((EQ COMPERAND-1 COMPERAND-2) NIL)
126
((symbolp COMPERAND-1)
127
(COND
128
((symbolp COMPERAND-2)
129
(CGREATERP (symbol-name COMPERAND-1) (symbol-name COMPERAND-2)) )
130
('else t)))
131
((symbolp COMPERAND-2) NIL )
132
((consp COMPERAND-1)
133
(COND
134
( (consp COMPERAND-2)
135
(COND
136
( (EQUAL (qcar COMPERAND-1) (qcar COMPERAND-2))
137
(GGREATERP (qcdr COMPERAND-1) (qcdr COMPERAND-2)) )
138
( (GGREATERP (qcar COMPERAND-1) (qcar COMPERAND-2)) ) ) )
139
('else t)))
140
((consp COMPERAND-2) NIL)
141
((NULL COMPERAND-1) 'T )
142
((NULL COMPERAND-2) NIL)
143
((simple-vector-p COMPERAND-1)
144
(COND
145
((simple-vector-p COMPERAND-2) (VGREATERP COMPERAND-1 COMPERAND-2) )
146
('else t)))
147
((simple-vector-p COMPERAND-2) NIL)
148
((OR (IVECP COMPERAND-1) (RVECP COMPERAND-1))
149
(COND
150
( (OR (IVECP COMPERAND-2) (RVECP COMPERAND-2))
151
(VGREATERP COMPERAND-1 COMPERAND-2) )
152
('else t)))
153
((OR (IVECP COMPERAND-2) (RVECP COMPERAND-2)) NIL )
154
((stringp COMPERAND-1)
155
(COND
156
((stringp COMPERAND-2)
157
(CGREATERP COMPERAND-1 COMPERAND-2) )
158
('else t)))
159
((stringp COMPERAND-2) NIL)
160
((numberp COMPERAND-1)
161
(COND
162
( (numberp COMPERAND-2)
163
(> COMPERAND-1 COMPERAND-2) )
164
('else t)))
165
((numberp COMPERAND-2) NIL)
166
((CHARACTERP COMPERAND-1)
167
(COND
168
((CHARACTERP COMPERAND-2)
169
(CHAR> COMPERAND-1 COMPERAND-2) )
170
('else t)))
171
((CHARACTERP COMPERAND-2) NIL )
172
((FBPIP COMPERAND-1)
173
(COND
174
((FBPIP COMPERAND-2)
175
(GGREATERP (BPINAME COMPERAND-1) (BPINAME COMPERAND-2)) )
176
('else t)))
177
((FBPIP COMPERAND-2) NIL)
178
((MBPIP COMPERAND-1)
179
(COND
180
((MBPIP COMPERAND-2)
181
(GGREATERP (BPINAME COMPERAND-1) (BPINAME COMPERAND-2)) )
182
('else t)))
183
((MBPIP COMPERAND-2)
184
NIL )
185
((> (SXHASH COMPERAND-1) (SXHASH COMPERAND-2)))))
186
187
(DEFUN VGREATERP (VECTOR-COMPERAND-1 VECTOR-COMPERAND-2)
188
(declare (simple-vector vector-comperand-1 vector-comperand-2))
189
(let ((I -1)
190
(L1 (length VECTOR-COMPERAND-1))
191
(L2 (length VECTOR-COMPERAND-2)))
192
(declare (fixnum I L1 L2))
193
(PROG (T1 T2)
194
LP
195
(setq I (1+ I))
196
(COND ((EQL L1 I)
197
(RETURN NIL))
198
((EQL L2 I)
199
(RETURN 'T)))
200
(COND ((EQUAL (SETQ T1 (svref VECTOR-COMPERAND-1 I))
201
(SETQ T2 (svref VECTOR-COMPERAND-2 I)))
202
(GO LP)))
203
(RETURN (GGREATERP T1 T2)) ) ))
204
205
(defvar SORTGREATERP #'GGREATERP "default sorting predicate")
206
207
(defun GLESSEQP (X Y) (NOT (GGREATERP X Y)))
208
209
(defun LEXLESSEQP (X Y) (NOT (LEXGREATERP X Y)))
210
211
212