Extracted tests from macros.lisp.

This commit is contained in:
Gerd Heber 2015-07-29 01:42:15 -05:00
parent c2dedbc6c4
commit a4c9914cd4
4 changed files with 232 additions and 129 deletions

View File

@ -35,6 +35,7 @@
(:file "loop-spaces-test") (:file "loop-spaces-test")
(:file "lp-space-efhm-test") (:file "lp-space-efhm-test")
(:file "ls-twisted-products-test") (:file "ls-twisted-products-test")
(:file "macros-test")
(:file "searching-homology-test") (:file "searching-homology-test")
(:file "serre-test") (:file "serre-test")
(:file "simplicial-groups-test") (:file "simplicial-groups-test")

View File

@ -117,6 +117,8 @@
;; classes.lisp ;; classes.lisp
ABSM ABSM
ABSM1
ABSM2
AB-SIMPLICIAL-GROUP AB-SIMPLICIAL-GROUP
ALLP-LIST ALLP-LIST
APOWR APOWR
@ -131,6 +133,8 @@
CMBN-LIST CMBN-LIST
DEGR DEGR
DGOP DGOP
DGOP1
DGOP2
DFFR1 DFFR1
EFHM EFHM
F F
@ -138,6 +142,7 @@
G G
GBAR GBAR
GMSM GMSM
GMSM2
H H
HOMOTOPY-EQUIVALENCE HOMOTOPY-EQUIVALENCE
IABSM IABSM
@ -158,7 +163,6 @@
SINTR SINTR
SORC SORC
TCC TCC
TNPR
;; classifying-space.lisp ;; classifying-space.lisp
@ -376,6 +380,8 @@
;; macros.lisp ;; macros.lisp
-1-EXPT-N -1-EXPT-N
-1-EXPT-N+1
-1-EXPT-N-1
? ?
2-EXP 2-EXP
ABAR-LIST ABAR-LIST
@ -407,8 +413,11 @@
GNRT-NAME GNRT-NAME
GRIN GRIN
GRML GRML
I-ADD
I-CMPS
I-SBTR I-SBTR
KFLL KFLL
LEXICO
LF LF
LG LG
LINE-MINUS-5 LINE-MINUS-5
@ -422,7 +431,13 @@
TERM TERM
TERM-CMBN TERM-CMBN
TCC TCC
TNPR
WITH--TERM
WITH-ABSM WITH-ABSM
WITH-CMBN
WITh-CRPR
WITH-TERM
WITh-TNPR
;; searching-homology.lisp ;; searching-homology.lisp
@ -532,6 +547,8 @@
;; various.lisp ;; various.lisp
*PRINT-LENGTH*
*PRINT-LEVEL*
+EMPTY-LIST+ +EMPTY-LIST+
<A-B< <A-B<
<A-B> <A-B>

View File

@ -13,28 +13,23 @@
(DEFMACRO -1-EXPT-N (n) (DEFMACRO -1-EXPT-N (n)
`(the fixnum (if (evenp (the fixnum ,n)) 1 -1))) `(the fixnum (if (evenp (the fixnum ,n)) 1 -1)))
(DEFMACRO -1-EXPT-N+1 (n) (DEFMACRO -1-EXPT-N+1 (n)
`(the fixnum (if (evenp (the fixnum ,n)) -1 1))) `(the fixnum (if (evenp (the fixnum ,n)) -1 1)))
(DEFMACRO -1-EXPT-N-1 (n) (DEFMACRO -1-EXPT-N-1 (n)
`(-1-expt-n+1 ,n)) `(-1-expt-n+1 ,n))
#|
()
(-1-expt-n 5)
(-1-expt-n 6)
(-1-expt-n+1 5)
(-1-expt-n+1 6)
(-1-expt-n-1 5)
(-1-expt-n-1 6)
|#
(DEFMACRO 2-EXP (n) (DEFMACRO 2-EXP (n)
`(aref +2-exp+ ,n)) `(aref +2-exp+ ,n))
(DEFMACRO MASK (n) (DEFMACRO MASK (n)
`(aref +mask+ ,n)) `(aref +mask+ ,n))
(DEFMACRO BINOMIAL-P-Q (p q) (DEFMACRO BINOMIAL-P-Q (p q)
`(binomial-n-p (+ ,p ,q) ,p)) `(binomial-n-p (+ ,p ,q) ,p))
@ -52,38 +47,31 @@
(lexico ,@(rest rest)) (lexico ,@(rest rest))
,vrslt)))) ,vrslt))))
#|
()
(let ((*print-level* nil))
(declare (special
#+aclpc allegro:*top-print-level*
#-aclpc *print-level*))
(pprint (macroexpand-1
'(lexico
comparison1
comparison2
comparison3
comparison4))))
|#
(DEFMACRO TERM (cffc gnrt) (DEFMACRO TERM (cffc gnrt)
`(cons ,cffc ,gnrt)) `(cons ,cffc ,gnrt))
(DEFMACRO -TERM (mark) (DEFMACRO -TERM (mark)
`(car ,mark)) `(car ,mark))
(DEFMACRO CFFC (term) (DEFMACRO CFFC (term)
`(car ,term)) `(car ,term))
(DEFMACRO -CFFC (mark) (DEFMACRO -CFFC (mark)
`(caar ,mark)) `(caar ,mark))
(DEFMACRO GNRT (term) (DEFMACRO GNRT (term)
`(cdr ,term)) `(cdr ,term))
(DEFMACRO -GNRT (mark) (DEFMACRO -GNRT (mark)
`(cdar ,mark)) `(cdar ,mark))
(DEFMACRO WITH-TERM ((cffc gnrt) term . body) (DEFMACRO WITH-TERM ((cffc gnrt) term . body)
`(let (,@(if cffc `((,cffc (cffc ,term))) nil) `(let (,@(if cffc `((,cffc (cffc ,term))) nil)
,@(if gnrt `((,gnrt (gnrt ,term))) nil)) ,@(if gnrt `((,gnrt (gnrt ,term))) nil))
@ -92,14 +80,6 @@
(type gnrt ,@(if gnrt `(,gnrt) nil))) (type gnrt ,@(if gnrt `(,gnrt) nil)))
,@body)) ,@body))
#|
(macroexpand-1 '(with-term (cffc gnrt) term
(statement-1)
(statement-2)))
(macroexpand-1 '(with-term (nil gnrt) term
(statement-1)
(statement-2)))
|#
(DEFMACRO WITH--TERM ((cffc gnrt) mark . body) (DEFMACRO WITH--TERM ((cffc gnrt) mark . body)
`(let ((,cffc (-cffc ,mark)) `(let ((,cffc (-cffc ,mark))
@ -109,12 +89,6 @@
(type gnrt ,gnrt)) (type gnrt ,gnrt))
,@body)) ,@body))
#|
(macroexpand-1 '(with--term (cffc gnrt) mark
(statement-1)
(statement-2)))
|#
(DEFMACRO WITH-CMBN ((degr list) cmbn . body) (DEFMACRO WITH-CMBN ((degr list) cmbn . body)
`(let ((,degr (cmbn-degr ,cmbn)) `(let ((,degr (cmbn-degr ,cmbn))
@ -124,12 +98,6 @@
(list ,list)) (list ,list))
,@body)) ,@body))
#|
(macroexpand-1 '(with-cmbn (degr list) cmbn
(statement-1)
(statement-2)))
|#
(DEFMACRO TERM-CMBN (degr cffc gnrt) (DEFMACRO TERM-CMBN (degr cffc gnrt)
`(make-cmbn :degr ,degr `(make-cmbn :degr ,degr
@ -139,19 +107,23 @@
(DEFMACRO CMBN-NON-ZERO-P (cmbn) (DEFMACRO CMBN-NON-ZERO-P (cmbn)
`(cmbn-list ,cmbn)) `(cmbn-list ,cmbn))
(DEFMACRO CMBN-ZERO-P (cmbn) (DEFMACRO CMBN-ZERO-P (cmbn)
`(null (cmbn-list ,cmbn))) `(null (cmbn-list ,cmbn)))
(DEFMACRO CONTROL (cmpr cmbn) (DEFMACRO CONTROL (cmpr cmbn)
(if *cmbn-control* (if *cmbn-control*
`(do-control ,cmpr ,cmbn) `(do-control ,cmpr ,cmbn)
cmbn)) cmbn))
(DEFMACRO CONTROLN (cmpr cmbn) (DEFMACRO CONTROLN (cmpr cmbn)
(if *cmbn-control* (if *cmbn-control*
`(do-control ,cmpr ,cmbn) `(do-control ,cmpr ,cmbn)
nil)) nil))
(DEFVAR *WRONG-CMBN*) (DEFVAR *WRONG-CMBN*)
@ -164,13 +136,10 @@
(1 `(cmpr1 ,@rest)) (1 `(cmpr1 ,@rest))
(3 `(cmpr3 ,@rest)))) (3 `(cmpr3 ,@rest))))
(DEFMACRO CMPR3 (object item1 item2) (DEFMACRO CMPR3 (object item1 item2)
`(funcall (cmpr1 ,object) ,item1 ,item2)) `(funcall (cmpr1 ,object) ,item1 ,item2))
#|
(macroexpand '(cmpr chcm))
(macroexpand '(cmpr chcm item1 item2))
|#
(DEFMACRO BASIS (&rest rest) (DEFMACRO BASIS (&rest rest)
(ecase (length rest) (ecase (length rest)
@ -178,20 +147,17 @@
(2 `(basis2 ,@rest)) (2 `(basis2 ,@rest))
(3 `(basis3 ,@rest)))) (3 `(basis3 ,@rest))))
(DEFMACRO BASIS3 (smst dmns keyword) (DEFMACRO BASIS3 (smst dmns keyword)
(declare (ignore keyword)) (declare (ignore keyword))
`(a-basis2 (basis ,smst) ,dmns)) `(a-basis2 (basis ,smst) ,dmns))
(DEFMACRO DFFR (&rest rest) (DEFMACRO DFFR (&rest rest)
(ecase (length rest) (ecase (length rest)
(1 `(dffr1 ,@rest)) (1 `(dffr1 ,@rest))
((2 3) `(? (dffr1 ,(first rest)) ,@(rest rest))))) ((2 3) `(? (dffr1 ,(first rest)) ,@(rest rest)))))
#|
(macroexpand '(dffr chcm))
(macroexpand '(dffr chcm cmbn))
(macroexpand '(dffr chcm degr gnrt))
|#
(DEFMACRO ? (&rest rest) (DEFMACRO ? (&rest rest)
(ecase (length rest) (ecase (length rest)
@ -207,30 +173,16 @@
`(cmps ,mrph1 (i-cmps ,@rest)) `(cmps ,mrph1 (i-cmps ,@rest))
mrph1)) mrph1))
#|
(macroexpand '(i-cmps m1))
(macroexpand '(i-cmps m1 m2))
(macroexpand '(i-cmps m1 m2 m3))
|#
(DEFMACRO I-ADD (mrph1 &rest rest) (DEFMACRO I-ADD (mrph1 &rest rest)
(if rest (if rest
`(add ,mrph1 (i-add ,@rest)) `(add ,mrph1 (i-add ,@rest))
mrph1)) mrph1))
#|
(macroexpand '(i-add m1))
(macroexpand '(i-add m1 m2))
(macroexpand '(i-add m1 m2 m3))
|#
(DEFMACRO I-SBTR (mrph1 mrph2 &rest rest) (DEFMACRO I-SBTR (mrph1 mrph2 &rest rest)
`(sbtr ,mrph1 (i-add ,mrph2 ,@rest))) `(sbtr ,mrph1 (i-add ,mrph2 ,@rest)))
#|
(macroexpand '(i-sbtr m1 m2))
(macroexpand '(i-sbtr m1 m2 m3))
|#
;;; ;;;
;;; EFFECTIVE HOMOLOGY ;;; EFFECTIVE HOMOLOGY
@ -242,23 +194,20 @@
(otherwise (otherwise
`(? (bcc1 ,(first rest)) ,@(rest rest))))) `(? (bcc1 ,(first rest)) ,@(rest rest)))))
(DEFMACRO TCC (&rest rest) (DEFMACRO TCC (&rest rest)
(case (length rest) (case (length rest)
(1 `(tcc1 ,@rest)) (1 `(tcc1 ,@rest))
(otherwise (otherwise
`(? (tcc1 ,(first rest)) ,@(rest rest))))) `(? (tcc1 ,(first rest)) ,@(rest rest)))))
(DEFMACRO F (&rest rest) (DEFMACRO F (&rest rest)
(case (length rest) (case (length rest)
(1 `(f1 ,@rest)) (1 `(f1 ,@rest))
(otherwise (otherwise
`(? (f1 ,(first rest)) ,@(rest rest))))) `(? (f1 ,(first rest)) ,@(rest rest)))))
#|
(macroexpand '(f rdct))
(macroexpand '(f rdct cmbn))
(macroexpand '(f rdct degr gnrt))
|#
(DEFMACRO G (&rest rest) (DEFMACRO G (&rest rest)
(case (length rest) (case (length rest)
@ -266,61 +215,69 @@
(otherwise (otherwise
`(? (g1 ,(first rest)) ,@(rest rest))))) `(? (g1 ,(first rest)) ,@(rest rest)))))
(DEFMACRO H (&rest rest) (DEFMACRO H (&rest rest)
(case (length rest) (case (length rest)
(1 `(h1 ,@rest)) (1 `(h1 ,@rest))
(otherwise (otherwise
`(? (h1 ,(first rest)) ,@(rest rest))))) `(? (h1 ,(first rest)) ,@(rest rest)))))
(DEFMACRO LBCC (&rest rest) (DEFMACRO LBCC (&rest rest)
(case (length rest) (case (length rest)
(1 `(lbcc1 ,@rest)) (1 `(lbcc1 ,@rest))
(otherwise (otherwise
`(? (lbcc1 ,(first rest)) ,@(rest rest))))) `(? (lbcc1 ,(first rest)) ,@(rest rest)))))
(DEFMACRO RBCC (&rest rest) (DEFMACRO RBCC (&rest rest)
(case (length rest) (case (length rest)
(1 `(rbcc1 ,@rest)) (1 `(rbcc1 ,@rest))
(otherwise (otherwise
`(? (rbcc1 ,(first rest)) ,@(rest rest))))) `(? (rbcc1 ,(first rest)) ,@(rest rest)))))
(DEFMACRO LF (&rest rest) (DEFMACRO LF (&rest rest)
(case (length rest) (case (length rest)
(1 `(lf1 ,@rest)) (1 `(lf1 ,@rest))
(otherwise (otherwise
`(? (lf1 ,(first rest)) ,@(rest rest))))) `(? (lf1 ,(first rest)) ,@(rest rest)))))
(DEFMACRO LG (&rest rest) (DEFMACRO LG (&rest rest)
(case (length rest) (case (length rest)
(1 `(lg1 ,@rest)) (1 `(lg1 ,@rest))
(otherwise (otherwise
`(? (lg1 ,(first rest)) ,@(rest rest))))) `(? (lg1 ,(first rest)) ,@(rest rest)))))
(DEFMACRO LH (&rest rest) (DEFMACRO LH (&rest rest)
(case (length rest) (case (length rest)
(1 `(lh1 ,@rest)) (1 `(lh1 ,@rest))
(otherwise (otherwise
`(? (lh1 ,(first rest)) ,@(rest rest))))) `(? (lh1 ,(first rest)) ,@(rest rest)))))
(DEFMACRO RF (&rest rest) (DEFMACRO RF (&rest rest)
(case (length rest) (case (length rest)
(1 `(rf1 ,@rest)) (1 `(rf1 ,@rest))
(otherwise (otherwise
`(? (rf1 ,(first rest)) ,@(rest rest))))) `(? (rf1 ,(first rest)) ,@(rest rest)))))
(DEFMACRO RG (&rest rest) (DEFMACRO RG (&rest rest)
(case (length rest) (case (length rest)
(1 `(rg1 ,@rest)) (1 `(rg1 ,@rest))
(otherwise (otherwise
`(? (rg1 ,(first rest)) ,@(rest rest))))) `(? (rg1 ,(first rest)) ,@(rest rest)))))
(DEFMACRO RH (&rest rest) (DEFMACRO RH (&rest rest)
(case (length rest) (case (length rest)
(1 `(rh1 ,@rest)) (1 `(rh1 ,@rest))
(otherwise (otherwise
`(? (rh1 ,(first rest)) ,@(rest rest))))) `(? (rh1 ,(first rest)) ,@(rest rest)))))
;;; ;;;
;;; HOMOLOGY-GROUPS ;;; HOMOLOGY-GROUPS
;;; ;;;
@ -328,6 +285,7 @@
(DEFMACRO BASELIG (mat n) (DEFMACRO BASELIG (mat n)
`(aref (leftcol ,mat) ,n)) `(aref (leftcol ,mat) ,n))
(DEFMACRO BASECOL (mat n) (DEFMACRO BASECOL (mat n)
`(aref (uplig ,mat) ,n)) `(aref (uplig ,mat) ,n))
@ -338,9 +296,11 @@
(DEFMACRO CON0 (gnrt) (DEFMACRO CON0 (gnrt)
`(make-cone :conx 0 :icon ,gnrt)) `(make-cone :conx 0 :icon ,gnrt))
(DEFMACRO CON1 (gnrt) (DEFMACRO CON1 (gnrt)
`(make-cone :conx 1 :icon ,gnrt)) `(make-cone :conx 1 :icon ,gnrt))
(DEFMACRO WITH-CONE ((conx icon) cone . body) (DEFMACRO WITH-CONE ((conx icon) cone . body)
(let ((scone (gensym))) (let ((scone (gensym)))
(declare (symbol scone)) (declare (symbol scone))
@ -351,21 +311,25 @@
(declare (type (member 0 1) ,conx) (type gnrt ,icon)) (declare (type (member 0 1) ,conx) (type gnrt ,icon))
,@body)))) ,@body))))
(DEFMACRO BCNB (gnrt) (DEFMACRO BCNB (gnrt)
"(BCNB GNRT) returns the representation of the generator GNRT belonging to the "(BCNB GNRT) returns the representation of the generator GNRT belonging to
chain complex B." the chain complex B."
`(make-bicn :bcnx :bcnb :ibicn ,gnrt)) `(make-bicn :bcnx :bcnb :ibicn ,gnrt))
(DEFMACRO BCNC (gnrt) (DEFMACRO BCNC (gnrt)
"(BCNC GNRT) returns the representation of the generator GNRT belonging to the "(BCNC GNRT) returns the representation of the generator GNRT belonging to
chain complex C." the chain complex C."
`(make-bicn :bcnx :bcnc :ibicn ,gnrt)) `(make-bicn :bcnx :bcnc :ibicn ,gnrt))
(DEFMACRO BCND (gnrt) (DEFMACRO BCND (gnrt)
"(BCND GNRT) returns the representation of the generator GNRT belonging to the "(BCND GNRT) returns the representation of the generator GNRT belonging to
chain complex D." the chain complex D."
`(make-bicn :bcnx :bcnd :ibicn ,gnrt)) `(make-bicn :bcnx :bcnd :ibicn ,gnrt))
(DEFMACRO WITH-BICN ((bcnx ibicn) bicn . body) (DEFMACRO WITH-BICN ((bcnx ibicn) bicn . body)
`(let ((,bcnx (bcnx ,bicn)) `(let ((,bcnx (bcnx ,bicn))
(,ibicn (ibicn ,bicn))) (,ibicn (ibicn ,bicn)))
@ -374,7 +338,6 @@ chain complex D."
(type gnrt ,ibicn)) (type gnrt ,ibicn))
,@body)) ,@body))
;;; ;;;
;;; TENSOR PRODUCTS ;;; TENSOR PRODUCTS
;;; ;;;
@ -410,17 +373,6 @@ chain complex D."
(type gnrt ,@(if gnrt1 `(,gnrt1) nil) ,@(if gnrt2 `(,gnrt2) nil))) (type gnrt ,@(if gnrt1 `(,gnrt1) nil) ,@(if gnrt2 `(,gnrt2) nil)))
,@body)) ,@body))
#|
(macroexpand '(tnpr 1 a 2 b))
1 (tnpr 2 'a 4 (tnpr 2 'b 2 'c))
(macroexpand-1 '(with-tnpr (degr1 gnrt1 degr2 gnrt2) tnpr
(statement-1)
(statement-2)))
(macroexpand-1 '(with-tnpr (nil gnrt1 degr2 gnrt2) tnpr
(statement-1)
(statement-2)))
|#
;;; ;;;
;;; COALGEBRAS ;;; COALGEBRAS
;;; ;;;
@ -437,18 +389,23 @@ chain complex D."
(DEFMACRO CBGN (degr gnrt) (DEFMACRO CBGN (degr gnrt)
`(cons ,degr ,gnrt)) `(cons ,degr ,gnrt))
(DEFMACRO CDEGR (cbgn) (DEFMACRO CDEGR (cbgn)
`(car ,cbgn)) `(car ,cbgn))
(DEFMACRO CGNRT (cbgn) (DEFMACRO CGNRT (cbgn)
`(cdr ,cbgn)) `(cdr ,cbgn))
(DEFMACRO -CDEGR (cbgn) (DEFMACRO -CDEGR (cbgn)
`(caar ,cbgn)) `(caar ,cbgn))
(DEFMACRO -CGNRT (cbgn) (DEFMACRO -CGNRT (cbgn)
`(cdar ,cbgn)) `(cdar ,cbgn))
(DEFMACRO WITH-CBGN ((cdegr cgnrt) cbgn . body) (DEFMACRO WITH-CBGN ((cdegr cgnrt) cbgn . body)
`(let ((,cdegr (cdegr ,cbgn)) `(let ((,cdegr (cdegr ,cbgn))
(,cgnrt (cgnrt ,cbgn))) (,cgnrt (cgnrt ,cbgn)))
@ -457,6 +414,7 @@ chain complex D."
(type gnrt ,cgnrt)) (type gnrt ,cgnrt))
,@body)) ,@body))
(DEFMACRO WITH--CBGN ((cdegr cgnrt) cbgn . body) (DEFMACRO WITH--CBGN ((cdegr cgnrt) cbgn . body)
`(let ((,cdegr (-cdegr ,cbgn)) `(let ((,cdegr (-cdegr ,cbgn))
(,cgnrt (-cgnrt ,cbgn))) (,cgnrt (-cgnrt ,cbgn)))
@ -465,11 +423,13 @@ chain complex D."
(type gnrt ,cgnrt)) (type gnrt ,cgnrt))
,@body)) ,@body))
(DEFMACRO WITH-ALLP ((list) allp . body) (DEFMACRO WITH-ALLP ((list) allp . body)
`(let ((,list (allp-list ,allp))) `(let ((,list (allp-list ,allp)))
(declare (list ,list)) (declare (list ,list))
,@body)) ,@body))
(DEFMACRO GNRT-ALLP-TNPR (degr gnrt allp) (DEFMACRO GNRT-ALLP-TNPR (degr gnrt allp)
`(make-allp :list (cons (cbgn (1- ,degr) ,gnrt) ,allp))) `(make-allp :list (cons (cbgn (1- ,degr) ,gnrt) ,allp)))
@ -490,18 +450,23 @@ chain complex D."
(DEFMACRO BRGN (degr gnrt) (DEFMACRO BRGN (degr gnrt)
`(cons ,degr ,gnrt)) `(cons ,degr ,gnrt))
(DEFMACRO BDEGR (brgn) (DEFMACRO BDEGR (brgn)
`(car ,brgn)) `(car ,brgn))
(DEFMACRO BGNRT (brgn) (DEFMACRO BGNRT (brgn)
`(cdr ,brgn)) `(cdr ,brgn))
(DEFMACRO -BDEGR (brgn) (DEFMACRO -BDEGR (brgn)
`(caar ,brgn)) `(caar ,brgn))
(DEFMACRO -BGNRT (brgn) (DEFMACRO -BGNRT (brgn)
`(cdar ,brgn)) `(cdar ,brgn))
(DEFMACRO WITH-BRGN ((bdegr bgnrt) brgn . body) (DEFMACRO WITH-BRGN ((bdegr bgnrt) brgn . body)
`(let ((,bdegr (bdegr ,brgn)) `(let ((,bdegr (bdegr ,brgn))
(,bgnrt (bgnrt ,brgn))) (,bgnrt (bgnrt ,brgn)))
@ -510,6 +475,7 @@ chain complex D."
(type gnrt ,bgnrt)) (type gnrt ,bgnrt))
,@body)) ,@body))
(DEFMACRO WITH--BRGN ((bdegr bgnrt) brgn . body) (DEFMACRO WITH--BRGN ((bdegr bgnrt) brgn . body)
`(let ((,bdegr (-bdegr ,brgn)) `(let ((,bdegr (-bdegr ,brgn))
(,bgnrt (-bgnrt ,brgn))) (,bgnrt (-bgnrt ,brgn)))
@ -590,21 +556,27 @@ chain complex D."
(type gmsm ,gmsm-var)) (type gmsm ,gmsm-var))
,@body)))) ,@body))))
(DEFMACRO DEGENERATE-P (absm) (DEFMACRO DEGENERATE-P (absm)
`(plusp (dgop ,absm))) `(plusp (dgop ,absm)))
(DEFMACRO NON-DEGENERATE-P (absm) (DEFMACRO NON-DEGENERATE-P (absm)
`(zerop (dgop ,absm))) `(zerop (dgop ,absm)))
(DEFMACRO BSPN (smst) (DEFMACRO BSPN (smst)
`(bsgn ,smst)) `(bsgn ,smst))
(DEFMACRO BNDR (&rest rest) (DEFMACRO BNDR (&rest rest)
`(dffr ,@rest)) `(dffr ,@rest))
(DEFMACRO DGNL (&rest rest) (DEFMACRO DGNL (&rest rest)
`(cprd ,@rest)) `(cprd ,@rest))
(DEFMACRO FACE (&rest rest) (DEFMACRO FACE (&rest rest)
(ecase (length rest) (ecase (length rest)
(1 `(face1 ,@rest)) (1 `(face1 ,@rest))
@ -627,15 +599,19 @@ chain complex D."
(DEFMACRO MAKE-GMSM-FACES-INFO (&key gmsm faces bndr) (DEFMACRO MAKE-GMSM-FACES-INFO (&key gmsm faces bndr)
`(cons ,gmsm (cons ,faces ,bndr))) `(cons ,gmsm (cons ,faces ,bndr)))
(DEFMACRO INFO-GMSM (gmsm-faces-info) (DEFMACRO INFO-GMSM (gmsm-faces-info)
`(car ,gmsm-faces-info)) `(car ,gmsm-faces-info))
(DEFMACRO INFO-FACES (gmsm-faces-info) (DEFMACRO INFO-FACES (gmsm-faces-info)
`(cadr ,gmsm-faces-info)) `(cadr ,gmsm-faces-info))
(DEFMACRO INFO-FACE-I (gmsm-faces-info i) (DEFMACRO INFO-FACE-I (gmsm-faces-info i)
`(svref (cadr ,gmsm-faces-info) ,i)) `(svref (cadr ,gmsm-faces-info) ,i))
(DEFMACRO INFO-BNDR (gmsm-faces-info) (DEFMACRO INFO-BNDR (gmsm-faces-info)
`(cddr ,gmsm-faces-info)) `(cddr ,gmsm-faces-info))
@ -656,24 +632,15 @@ chain complex D."
(2 `(crpr2 ,@rest)) (2 `(crpr2 ,@rest))
(4 `(crpr4 ,@rest)))) (4 `(crpr4 ,@rest))))
(DEFMACRO CRPR2 (absm1 absm2) (DEFMACRO CRPR2 (absm1 absm2)
`(crpr4 (dgop ,absm1) (gmsm ,absm1) (dgop ,absm2) (gmsm ,absm2))) `(crpr4 (dgop ,absm1) (gmsm ,absm1) (dgop ,absm2) (gmsm ,absm2)))
(DEFMACRO CRPR4 (dgop1 gmsm1 dgop2 gmsm2) (DEFMACRO CRPR4 (dgop1 gmsm1 dgop2 gmsm2)
`(make-crpr :dgop1 ,dgop1 :gmsm1 ,gmsm1 `(make-crpr :dgop1 ,dgop1 :gmsm1 ,gmsm1
:dgop2 ,dgop2 :gmsm2 ,gmsm2)) :dgop2 ,dgop2 :gmsm2 ,gmsm2))
#|
()
(crpr (absm 3 'a) (absm 4 'b))
(crpr 3 'a 4 'b)
|#
#|
()
(macroexpand '(crpr absm1 absm2))
(macroexpand '(crpr dgop1 gmsm1 dgop2 gmsm2))
|#
#| #|
(DEFMACRO DGOP1 (crpr) (DEFMACRO DGOP1 (crpr)
@ -697,22 +664,11 @@ chain complex D."
(DEFMACRO ABSM1 (crpr) (DEFMACRO ABSM1 (crpr)
`(absm (dgop1 ,crpr) (gmsm1 ,crpr))) `(absm (dgop1 ,crpr) (gmsm1 ,crpr)))
(DEFMACRO ABSM2 (crpr) (DEFMACRO ABSM2 (crpr)
`(absm (dgop2 ,crpr) (gmsm2 ,crpr))) `(absm (dgop2 ,crpr) (gmsm2 ,crpr)))
#|
()
(setf c (crpr 1 'a 2 'b))
(dgop1 c)
(gmsm1 c)
(dgop2 c)
(gmsm2 c)
(absm1 c)
(absm2 c)
|#
(DEFMACRO WITH-CRPR (&rest rest) (DEFMACRO WITH-CRPR (&rest rest)
(ecase (length (first rest)) (ecase (length (first rest))
(2 `(with-crpr-2 ,@rest)) (2 `(with-crpr-2 ,@rest))
@ -733,10 +689,6 @@ chain complex D."
(declare (type absm ,absm1 ,absm2)) (declare (type absm ,absm1 ,absm2))
,@body)) ,@body))
#|
()
(with-crpr (absm1 absm2) (crpr 3 'a 4 'b) (list absm1 absm2))
|#
(DEFMACRO WITH-CRPR-4 ((dgop1 gmsm1 dgop2 gmsm2) crpr . body) (DEFMACRO WITH-CRPR-4 ((dgop1 gmsm1 dgop2 gmsm2) crpr . body)
`(let ((,dgop1 (dgop1 ,crpr)) `(let ((,dgop1 (dgop1 ,crpr))
@ -748,18 +700,6 @@ chain complex D."
(type gmsm ,gmsm1 ,gmsm2)) (type gmsm ,gmsm1 ,gmsm2))
,@body)) ,@body))
#|
()
(macroexpand-1
(macroexpand-1 '(with-crpr (dgop1 gmsm1 dgop2 gmsm2) crpr
(statement-1)
(statement-2))))
(macroexpand-1
(macroexpand-1 '(with-crpr (absm1 absm2) crpr
(statement-1)
(statement-2))))
|#
;;; ;;;
;;; EILENBERG-ZILBER ;;; EILENBERG-ZILBER
;;; ;;;
@ -789,11 +729,13 @@ chain complex D."
(0 `(grml1 ,smgr)) (0 `(grml1 ,smgr))
((1 2) `(? (grml1 ,smgr) ,@rest)))) ((1 2) `(? (grml1 ,smgr) ,@rest))))
(DEFMACRO GRIN (smgr &rest rest) (DEFMACRO GRIN (smgr &rest rest)
(case (length rest) (case (length rest)
(0 `(grin1 ,smgr)) (0 `(grin1 ,smgr))
(otherwise `(? (grin1 ,smgr) ,@rest)))) (otherwise `(? (grin1 ,smgr) ,@rest))))
(DEFMACRO BUILD-AB-SMGR (&rest rest) (DEFMACRO BUILD-AB-SMGR (&rest rest)
`(change-class (build-smgr ,@rest) 'ab-simplicial-group)) `(change-class (build-smgr ,@rest) 'ab-simplicial-group))
@ -804,12 +746,15 @@ chain complex D."
(DEFMACRO POWR (gmsm expn) (DEFMACRO POWR (gmsm expn)
`(cons ,gmsm ,expn)) `(cons ,gmsm ,expn))
(DEFMACRO PGMSM (powr) (DEFMACRO PGMSM (powr)
`(car ,powr)) `(car ,powr))
(DEFMACRO EXPN (powr) (DEFMACRO EXPN (powr)
`(cdr ,powr)) `(cdr ,powr))
(DEFMACRO WITH-POWR ((gmsm expn) powr . body) (DEFMACRO WITH-POWR ((gmsm expn) powr . body)
`(let ((,gmsm (car ,powr)) `(let ((,gmsm (car ,powr))
(,expn (cdr ,powr))) (,expn (cdr ,powr)))
@ -818,6 +763,7 @@ chain complex D."
(fixnum expn)) (fixnum expn))
,@body)) ,@body))
(DEFMACRO WITH-APOWR ((dgop gmsm expn) apowr . body) (DEFMACRO WITH-APOWR ((dgop gmsm expn) apowr . body)
`(let ((,dgop (apdgop ,apowr)) `(let ((,dgop (apdgop ,apowr))
(,gmsm (cadr ,apowr)) (,gmsm (cadr ,apowr))
@ -827,9 +773,11 @@ chain complex D."
(type gmsm ,gmsm)) (type gmsm ,gmsm))
,@body)) ,@body))
(DEFMACRO APOWR (dgop gmsm expn) (DEFMACRO APOWR (dgop gmsm expn)
`(cons ,dgop (cons ,gmsm ,expn))) `(cons ,dgop (cons ,gmsm ,expn)))
(DEFMACRO APDGOP (apowr) (DEFMACRO APDGOP (apowr)
`(car ,apowr)) `(car ,apowr))
@ -837,6 +785,7 @@ chain complex D."
(DEFMACRO APGMSM (apowr) (DEFMACRO APGMSM (apowr)
`(cadr ,apowr)) `(cadr ,apowr))
(DEFMACRO APEXPN (apowr) (DEFMACRO APEXPN (apowr)
`(cddr ,apowr)) `(cddr ,apowr))
@ -847,9 +796,11 @@ chain complex D."
(DEFMACRO LINE-NUMBER (mtrx) (DEFMACRO LINE-NUMBER (mtrx)
`(first (array-dimensions ,mtrx))) `(first (array-dimensions ,mtrx)))
(DEFMACRO COLUMN-NUMBER (mtrx) (DEFMACRO COLUMN-NUMBER (mtrx)
`(second (array-dimensions ,mtrx))) `(second (array-dimensions ,mtrx)))
(DEFMACRO LINE-OP-5 (mtrx-list begin lambda line1 line2) (DEFMACRO LINE-OP-5 (mtrx-list begin lambda line1 line2)
(let ((slambda (gensym))) (let ((slambda (gensym)))
`(let ((,slambda ,lambda)) `(let ((,slambda ,lambda))
@ -857,6 +808,7 @@ chain complex D."
(line-op (second ,mtrx-list) 0 ,slambda ,line1 ,line2) (line-op (second ,mtrx-list) 0 ,slambda ,line1 ,line2)
(line-op (third ,mtrx-list) ,begin ,slambda ,line1 ,line2)))) (line-op (third ,mtrx-list) ,begin ,slambda ,line1 ,line2))))
(DEFMACRO COLUMN-OP-5 (mtrx-list begin lambda column1 column2) (DEFMACRO COLUMN-OP-5 (mtrx-list begin lambda column1 column2)
(let ((slambda (gensym))) (let ((slambda (gensym)))
`(let ((,slambda ,lambda)) `(let ((,slambda ,lambda))
@ -864,29 +816,34 @@ chain complex D."
(column-op (fourth ,mtrx-list) 0 ,slambda ,column1 ,column2) (column-op (fourth ,mtrx-list) 0 ,slambda ,column1 ,column2)
(line-op (fifth ,mtrx-list) 0 (- ,slambda) ,column2 ,column1)))) (line-op (fifth ,mtrx-list) 0 (- ,slambda) ,column2 ,column1))))
(DEFMACRO LINE-SWAP-5 (mtrx-list begin line1 line2) (DEFMACRO LINE-SWAP-5 (mtrx-list begin line1 line2)
`(progn `(progn
(column-swap (first ,mtrx-list) 0 ,line1 ,line2) (column-swap (first ,mtrx-list) 0 ,line1 ,line2)
(line-swap (second ,mtrx-list) 0 ,line1 ,line2) (line-swap (second ,mtrx-list) 0 ,line1 ,line2)
(line-swap (third ,mtrx-list) ,begin ,line1 ,line2))) (line-swap (third ,mtrx-list) ,begin ,line1 ,line2)))
(DEFMACRO COLUMN-SWAP-5 (mtrx-list begin column1 column2) (DEFMACRO COLUMN-SWAP-5 (mtrx-list begin column1 column2)
`(progn `(progn
(column-swap (third ,mtrx-list) ,begin ,column1 ,column2) (column-swap (third ,mtrx-list) ,begin ,column1 ,column2)
(column-swap (fourth ,mtrx-list) 0 ,column1 ,column2) (column-swap (fourth ,mtrx-list) 0 ,column1 ,column2)
(line-swap (fifth ,mtrx-list) 0 ,column1 ,column2))) (line-swap (fifth ,mtrx-list) 0 ,column1 ,column2)))
(DEFMACRO LINE-MINUS-5 (mtrx-list begin line) (DEFMACRO LINE-MINUS-5 (mtrx-list begin line)
`(progn `(progn
(column-minus (first ,mtrx-list) 0 ,line) (column-minus (first ,mtrx-list) 0 ,line)
(line-minus (second ,mtrx-list) 0 ,line) (line-minus (second ,mtrx-list) 0 ,line)
(line-minus (third ,mtrx-list) ,begin ,line))) (line-minus (third ,mtrx-list) ,begin ,line)))
(DEFMACRO COLUMN-MINUS-5 (mtrx-list begin column) (DEFMACRO COLUMN-MINUS-5 (mtrx-list begin column)
`(progn `(progn
(column-minus (third ,mtrx-list) ,begin ,column) (column-minus (third ,mtrx-list) ,begin ,column)
(column-minus (fourth ,mtrx-list) 0 ,column) (column-minus (fourth ,mtrx-list) 0 ,column)
(line-minus (fifth ,mtrx-list) 0 ,column))) (line-minus (fifth ,mtrx-list) 0 ,column)))
(DEFMACRO GNRT-NAME (i) (DEFMACRO GNRT-NAME (i)
`(intern (format nil "GN-~D" ,i) +gnrts-pckg+)) `(intern (format nil "GN-~D" ,i) +gnrts-pckg+))

128
test/macros-test.lisp Normal file
View File

@ -0,0 +1,128 @@
(in-package :kenzo-test)
(in-suite :kenzo)
(test -1-expt-n
(is (equal -1 (cat:-1-expt-n 5)))
(is (equal 1 (cat:-1-expt-n 6))))
(test -1-expt-n+1
(is (equal 1 (cat:-1-expt-n+1 5)))
(is (equal -1 (cat:-1-expt-n+1 6))))
(test -1-expt-n-1
(is (equal 1 (cat:-1-expt-n+1 5)))
(is (equal -1 (cat:-1-expt-n+1 6))))
(test lexico
(let ((cat:*print-level* nil))
(declare (special
#+aclpc allegro:*top-print-level*
#-aclpc cat:*print-level*))
(pprint (macroexpand-1
'(cat:lexico
comparison1
comparison2
comparison3
comparison4)))))
(test with-term
(macroexpand-1 '(cat:with-term (cffc gnrt) term
(statement-1)
(statement-2)))
(macroexpand-1 '(cat:with-term (nil gnrt) term
(statement-1)
(statement-2))))
(test with--term
(macroexpand-1 '(cat:with--term (cffc gnrt) mark
(statement-1)
(statement-2))))
(test with-cmbn
(macroexpand-1 '(cat:with-cmbn (degr list) cmbn
(statement-1)
(statement-2))))
(test cmpr
(macroexpand '(cat:cmpr chcm))
(macroexpand '(cat:cmpr chcm item1 item2)))
(test dffr
(macroexpand '(cat:dffr chcm))
(macroexpand '(cat:dffr chcm cmbn))
(macroexpand '(cat:dffr chcm degr gnrt)))
(test i-cmps
(macroexpand '(cat:i-cmps m1))
(macroexpand '(cat:i-cmps m1 m2))
(macroexpand '(cat:i-cmps m1 m2 m3)))
(test i-add
(macroexpand '(cat:i-add m1))
(macroexpand '(cat:i-add m1 m2))
(macroexpand '(cat:i-add m1 m2 m3)))
(test i-sbtr
(macroexpand '(cat:i-sbtr m1 m2))
(macroexpand '(cat:i-sbtr m1 m2 m3)))
(test f
(macroexpand '(cat:f rdct))
(macroexpand '(cat:f rdct cmbn))
(macroexpand '(cat:f rdct degr gnrt)))
(test tnpr
(macroexpand '(cat:tnpr 1 a 2 b))
(cat:tnpr 2 'a 4 (cat:tnpr 2 'b 2 'c)))
(test with-tnpr
(macroexpand-1 '(cat:with-tnpr (degr1 gnrt1 degr2 gnrt2) tnpr
(statement-1)
(statement-2)))
(macroexpand-1 '(cat:with-tnpr (nil gnrt1 degr2 gnrt2) tnpr
(statement-1)
(statement-2))))
(test crpr
(cat:crpr (cat:absm 3 'a) (cat:absm 4 'b))
(cat:crpr 3 'a 4 'b)
(macroexpand '(cat:crpr absm1 absm2))
(macroexpand '(cat:crpr dgop1 gmsm1 dgop2 gmsm2))
(let ((c (cat:crpr 1 'a 2 'b)))
(cat:dgop1 c)
(cat:gmsm1 c)
(cat:dgop2 c)
(cat:gmsm2 c)
(cat:absm1 c)
(cat:absm2 c)))
(test with-crpr
(cat:with-crpr (absm1 absm2) (cat:crpr 3 'a 4 'b) (list absm1 absm2))
(macroexpand-1
(macroexpand-1 '(cat:with-crpr (dgop1 gmsm1 dgop2 gmsm2) crpr
(statement-1)
(statement-2))))
(macroexpand-1
(macroexpand-1 '(cat:with-crpr (absm1 absm2) crpr
(statement-1)
(statement-2)))))