open-axiom repository from github
;; Copyright (c) 1991-2002, The Numerical ALgorithms Group Ltd.1;; All rights reserved.2;; Copyright (C) 2007-2010, Gabriel Dos Reis.3;; All rights reserved.4;;5;; Redistribution and use in source and binary forms, with or without6;; modification, are permitted provided that the following conditions are7;; met:8;;9;; - Redistributions of source code must retain the above copyright10;; notice, this list of conditions and the following disclaimer.11;;12;; - Redistributions in binary form must reproduce the above copyright13;; notice, this list of conditions and the following disclaimer in14;; the documentation and/or other materials provided with the15;; distribution.16;;17;; - Neither the name of The Numerical ALgorithms Group Ltd. nor the18;; names of its contributors may be used to endorse or promote products19;; derived from this software without specific prior written permission.20;;21;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS22;; IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED23;; TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A24;; PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER25;; OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,26;; EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,27;; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR28;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF29;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING30;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS31;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.323334(IMPORT-MODULE "vmlisp")35(in-package "BOOT")3637(DEFUN LEXGREATERP (COMPERAND-1 COMPERAND-2)38;; "Order of types: pair NIL vec ivec/rvec cvec ident num fbpi mbpi other"39(COND40((EQ COMPERAND-1 COMPERAND-2) NIL)41((consp COMPERAND-1)42(COND43( (consp COMPERAND-2)44(COND45( (EQUAL (qcar COMPERAND-1) (qcar COMPERAND-2))46(LEXGREATERP (qcdr COMPERAND-1) (qcdr COMPERAND-2)) )47( (LEXGREATERP (qcar COMPERAND-1) (qcar COMPERAND-2)) ) ) )48('else t)))49((consp COMPERAND-2) NIL)50((NULL COMPERAND-1) 'T )51((NULL COMPERAND-2) NIL)52((simple-vector-p COMPERAND-1)53(COND54((simple-vector-p COMPERAND-2) (LEXVGREATERP COMPERAND-1 COMPERAND-2) )55('else t)))56((simple-vector-p COMPERAND-2) NIL)57((OR (IVECP COMPERAND-1) (RVECP COMPERAND-1))58(COND59( (OR (IVECP COMPERAND-2) (RVECP COMPERAND-2))60(LEXVGREATERP COMPERAND-1 COMPERAND-2) )61('else t)))62((OR (IVECP COMPERAND-2) (RVECP COMPERAND-2)) NIL )63((stringp COMPERAND-1)64(COND65((stringp COMPERAND-2)66(STRING-GREATERP COMPERAND-1 COMPERAND-2) )67('else t)))68((stringp COMPERAND-2) NIL)69((symbolp COMPERAND-1)70(COND71((symbolp COMPERAND-2)72(STRING-GREATERP (symbol-name COMPERAND-1) (symbol-name COMPERAND-2)) )73('else t)))74((symbolp COMPERAND-2) NIL )75((numberp COMPERAND-1)76(COND77( (numberp COMPERAND-2)78(> COMPERAND-1 COMPERAND-2) )79('else t)))80((numberp COMPERAND-2) NIL)81((CHARACTERP COMPERAND-1)82(COND83((CHARACTERP COMPERAND-2)84(CHAR-GREATERP COMPERAND-1 COMPERAND-2) )85('else t)))86((CHARACTERP COMPERAND-2) NIL )87((FBPIP COMPERAND-1)88(COND89((FBPIP COMPERAND-2)90(LEXGREATERP (BPINAME COMPERAND-1) (BPINAME COMPERAND-2)) )91('else t)))92((FBPIP COMPERAND-2) NIL)93((MBPIP COMPERAND-1)94(COND95((MBPIP COMPERAND-2)96(LEXGREATERP (BPINAME COMPERAND-1) (BPINAME COMPERAND-2)) )97('else t)))98((MBPIP COMPERAND-2)99NIL )100((> (SXHASH COMPERAND-1) (SXHASH COMPERAND-2)))))101102(DEFUN LEXVGREATERP (VECTOR-COMPERAND-1 VECTOR-COMPERAND-2)103(declare (simple-vector vector-comperand-1 vector-comperand-2))104(let ((I -1)105(L1 (length VECTOR-COMPERAND-1))106(L2 (length VECTOR-COMPERAND-2)))107(declare (fixnum I L1 L2) )108(PROG (T1 T2)109LP110(setq I (1+ I))111(COND ((EQL L1 I)112(RETURN NIL))113((EQL L2 I)114(RETURN 'T)))115(COND ((EQUAL (SETQ T1 (svref VECTOR-COMPERAND-1 I))116(SETQ T2 (svref VECTOR-COMPERAND-2 I)))117(GO LP)))118(RETURN (LEXGREATERP T1 T2)) ) ))119120121(DEFUN GGREATERP (COMPERAND-1 COMPERAND-2)122;; "Order of types: pair NIL vec ivec/rvec cvec ident num fbpi mbpi other"123(COND124((EQ COMPERAND-1 COMPERAND-2) NIL)125((symbolp COMPERAND-1)126(COND127((symbolp COMPERAND-2)128(CGREATERP (symbol-name COMPERAND-1) (symbol-name COMPERAND-2)) )129('else t)))130((symbolp COMPERAND-2) NIL )131((consp COMPERAND-1)132(COND133( (consp COMPERAND-2)134(COND135( (EQUAL (qcar COMPERAND-1) (qcar COMPERAND-2))136(GGREATERP (qcdr COMPERAND-1) (qcdr COMPERAND-2)) )137( (GGREATERP (qcar COMPERAND-1) (qcar COMPERAND-2)) ) ) )138('else t)))139((consp COMPERAND-2) NIL)140((NULL COMPERAND-1) 'T )141((NULL COMPERAND-2) NIL)142((simple-vector-p COMPERAND-1)143(COND144((simple-vector-p COMPERAND-2) (VGREATERP COMPERAND-1 COMPERAND-2) )145('else t)))146((simple-vector-p COMPERAND-2) NIL)147((OR (IVECP COMPERAND-1) (RVECP COMPERAND-1))148(COND149( (OR (IVECP COMPERAND-2) (RVECP COMPERAND-2))150(VGREATERP COMPERAND-1 COMPERAND-2) )151('else t)))152((OR (IVECP COMPERAND-2) (RVECP COMPERAND-2)) NIL )153((stringp COMPERAND-1)154(COND155((stringp COMPERAND-2)156(CGREATERP COMPERAND-1 COMPERAND-2) )157('else t)))158((stringp COMPERAND-2) NIL)159((numberp COMPERAND-1)160(COND161( (numberp COMPERAND-2)162(> COMPERAND-1 COMPERAND-2) )163('else t)))164((numberp COMPERAND-2) NIL)165((CHARACTERP COMPERAND-1)166(COND167((CHARACTERP COMPERAND-2)168(CHAR> COMPERAND-1 COMPERAND-2) )169('else t)))170((CHARACTERP COMPERAND-2) NIL )171((FBPIP COMPERAND-1)172(COND173((FBPIP COMPERAND-2)174(GGREATERP (BPINAME COMPERAND-1) (BPINAME COMPERAND-2)) )175('else t)))176((FBPIP COMPERAND-2) NIL)177((MBPIP COMPERAND-1)178(COND179((MBPIP COMPERAND-2)180(GGREATERP (BPINAME COMPERAND-1) (BPINAME COMPERAND-2)) )181('else t)))182((MBPIP COMPERAND-2)183NIL )184((> (SXHASH COMPERAND-1) (SXHASH COMPERAND-2)))))185186(DEFUN VGREATERP (VECTOR-COMPERAND-1 VECTOR-COMPERAND-2)187(declare (simple-vector vector-comperand-1 vector-comperand-2))188(let ((I -1)189(L1 (length VECTOR-COMPERAND-1))190(L2 (length VECTOR-COMPERAND-2)))191(declare (fixnum I L1 L2))192(PROG (T1 T2)193LP194(setq I (1+ I))195(COND ((EQL L1 I)196(RETURN NIL))197((EQL L2 I)198(RETURN 'T)))199(COND ((EQUAL (SETQ T1 (svref VECTOR-COMPERAND-1 I))200(SETQ T2 (svref VECTOR-COMPERAND-2 I)))201(GO LP)))202(RETURN (GGREATERP T1 T2)) ) ))203204(defvar SORTGREATERP #'GGREATERP "default sorting predicate")205206(defun GLESSEQP (X Y) (NOT (GGREATERP X Y)))207208(defun LEXLESSEQP (X Y) (NOT (LEXGREATERP X Y)))209210211212