Moved ABSM-EXT-INT, ABSM-INT_EXT, and VERTEX-I to special-smsts.lisp.
This commit is contained in:
parent
5c23300e73
commit
54893a7b0b
@ -533,6 +533,8 @@
|
|||||||
|
|
||||||
;; special-smsts.lisp
|
;; special-smsts.lisp
|
||||||
|
|
||||||
|
#:ABSM-EXT-INT
|
||||||
|
#:ABSM-INT-EXT
|
||||||
#:BUILD-FINITE-SS
|
#:BUILD-FINITE-SS
|
||||||
#:BUILD-SMST
|
#:BUILD-SMST
|
||||||
#:FINITE-SS-PRE-TABLE
|
#:FINITE-SS-PRE-TABLE
|
||||||
@ -545,6 +547,7 @@
|
|||||||
#:SPHERE
|
#:SPHERE
|
||||||
#:SPHERE-FACE
|
#:SPHERE-FACE
|
||||||
#:SPHERE-WEDGE
|
#:SPHERE-WEDGE
|
||||||
|
#:VERTEX-I
|
||||||
|
|
||||||
;; suspensions.lisp
|
;; suspensions.lisp
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*
|
||||||
;;; SPECIAL-SMSTS SPECIAL-SMSTS SPECIAL-SMSTS SPECIAL-SMSTS SPECIAL-SMSTS
|
;;; SPECIAL-SMSTS SPECIAL-SMSTS SPECIAL-SMSTS SPECIAL-SMSTS SPECIAL-SMSTS
|
||||||
;;; SPECIAL-SMSTS SPECIAL-SMSTS SPECIAL-SMSTS SPECIAL-SMSTS SPECIAL-SMSTS
|
;;; SPECIAL-SMSTS SPECIAL-SMSTS SPECIAL-SMSTS SPECIAL-SMSTS SPECIAL-SMSTS
|
||||||
;;; SPECIAL-SMSTS SPECIAL-SMSTS SPECIAL-SMSTS SPECIAL-SMSTS SPECIAL-SMSTS
|
;;; SPECIAL-SMSTS SPECIAL-SMSTS SPECIAL-SMSTS SPECIAL-SMSTS SPECIAL-SMSTS
|
||||||
@ -13,42 +14,42 @@
|
|||||||
(declare (list list))
|
(declare (list list))
|
||||||
(the list
|
(the list
|
||||||
(let ((pre-rslt +empty-list+)
|
(let ((pre-rslt +empty-list+)
|
||||||
(dmns-mark nil)
|
(dmns-mark nil)
|
||||||
(gmsm-mark nil))
|
(gmsm-mark nil))
|
||||||
(declare (list pre-rslt dmns-mark gmsm-mark))
|
(declare (list pre-rslt dmns-mark gmsm-mark))
|
||||||
(dolist (item list)
|
(dolist (item list)
|
||||||
(declare (type (or fixnum symbol list) item))
|
(declare (type (or fixnum symbol list) item))
|
||||||
(cond ((typep item 'fixnum)
|
(cond ((typep item 'fixnum)
|
||||||
(let ((found (assoc item pre-rslt)))
|
(let ((found (assoc item pre-rslt)))
|
||||||
(declare (list found))
|
(declare (list found))
|
||||||
(setf dmns-mark
|
(setf dmns-mark
|
||||||
(or found
|
(or found
|
||||||
(car (push (list item) pre-rslt)))
|
(car (push (list item) pre-rslt)))
|
||||||
gmsm-mark nil)))
|
gmsm-mark nil)))
|
||||||
((symbolp item)
|
((symbolp item)
|
||||||
(when (assoc item (cdr dmns-mark))
|
(when (assoc item (cdr dmns-mark))
|
||||||
(error "In BUILD-FINITE-SS, the symbol ~A is present two times."
|
(error "In BUILD-FINITE-SS, the symbol ~A is present two times."
|
||||||
item))
|
item))
|
||||||
(setf gmsm-mark (car (push (list item) (cdr dmns-mark)))))
|
(setf gmsm-mark (car (push (list item) (cdr dmns-mark)))))
|
||||||
((listp item)
|
((listp item)
|
||||||
(unless gmsm-mark
|
(unless gmsm-mark
|
||||||
(error "In BUILD-FINITE-SS, the face list ~A~@
|
(error "In BUILD-FINITE-SS, the face list ~A~@
|
||||||
is not after a symbol." item))
|
is not after a symbol." item))
|
||||||
(nconc gmsm-mark item)
|
(nconc gmsm-mark item)
|
||||||
(setf gmsm-mark nil))
|
(setf gmsm-mark nil))
|
||||||
(t
|
(t
|
||||||
(error "In BUILD-FINITE-SS, the argument ~A does not make sense." item))))
|
(error "In BUILD-FINITE-SS, the argument ~A does not make sense." item))))
|
||||||
(do ((mark1 pre-rslt (cdr mark1)))
|
(do ((mark1 pre-rslt (cdr mark1)))
|
||||||
((endp mark1))
|
((endp mark1))
|
||||||
(declare (list mark1))
|
(declare (list mark1))
|
||||||
(do ((mark2 (rest mark1) (cdr mark2)))
|
(do ((mark2 (rest mark1) (cdr mark2)))
|
||||||
((endp mark2))
|
((endp mark2))
|
||||||
(declare (list mark2))
|
(declare (list mark2))
|
||||||
(let ((inter (intersection (cdar mark1) (cdar mark2)
|
(let ((inter (intersection (cdar mark1) (cdar mark2)
|
||||||
:key #'first)))
|
:key #'first)))
|
||||||
(declare (list inter))
|
(declare (list inter))
|
||||||
(when inter
|
(when inter
|
||||||
(error "In BUILD-FINITE-SS, the symbol ~A is present two times."
|
(error "In BUILD-FINITE-SS, the symbol ~A is present two times."
|
||||||
(caar inter))))))
|
(caar inter))))))
|
||||||
pre-rslt)))
|
pre-rslt)))
|
||||||
|
|
||||||
@ -56,14 +57,14 @@
|
|||||||
(DEFUN FINITE-SS-PRE-TABLE-TABLE (pre-table)
|
(DEFUN FINITE-SS-PRE-TABLE-TABLE (pre-table)
|
||||||
(declare (list pre-table))
|
(declare (list pre-table))
|
||||||
(let* ((maxdim (1+ (apply #'max (mapcar #'first pre-table))))
|
(let* ((maxdim (1+ (apply #'max (mapcar #'first pre-table))))
|
||||||
(table (make-array maxdim :initial-element +empty-list+)))
|
(table (make-array maxdim :initial-element +empty-list+)))
|
||||||
(declare
|
(declare
|
||||||
(fixnum maxdim)
|
(fixnum maxdim)
|
||||||
(simple-vector table))
|
(simple-vector table))
|
||||||
(dolist (item pre-table)
|
(dolist (item pre-table)
|
||||||
(declare (list item))
|
(declare (list item))
|
||||||
(setf (svref table (first item))
|
(setf (svref table (first item))
|
||||||
(sort (rest item) #'string< :key #'first)))
|
(sort (rest item) #'string< :key #'first)))
|
||||||
table))
|
table))
|
||||||
|
|
||||||
|
|
||||||
@ -77,7 +78,7 @@
|
|||||||
(let ((found (find gmsm (svref table dmns) :test #'eq :key #'car)))
|
(let ((found (find gmsm (svref table dmns) :test #'eq :key #'car)))
|
||||||
(declare (type (or cons null) found))
|
(declare (type (or cons null) found))
|
||||||
(when found
|
(when found
|
||||||
(return-from finite-ss-find-gmsm dmns)))))
|
(return-from finite-ss-find-gmsm dmns)))))
|
||||||
|
|
||||||
|
|
||||||
(DEFUN FINITE-SS-FINISH-TABLE (table bspn)
|
(DEFUN FINITE-SS-FINISH-TABLE (table bspn)
|
||||||
@ -93,10 +94,10 @@
|
|||||||
(simple-vector table)
|
(simple-vector table)
|
||||||
(fixnum dmns))
|
(fixnum dmns))
|
||||||
(setf (svref table dmns)
|
(setf (svref table dmns)
|
||||||
(mapcar
|
(mapcar
|
||||||
#'(lambda (entry)
|
#'(lambda (entry)
|
||||||
(finite-ss-finish-entry table entry dmns bspn))
|
(finite-ss-finish-entry table entry dmns bspn))
|
||||||
(svref table dmns))))
|
(svref table dmns))))
|
||||||
|
|
||||||
|
|
||||||
(DEFUN FINITE-SS-FINISH-ENTRY (table entry dmns bspn)
|
(DEFUN FINITE-SS-FINISH-ENTRY (table entry dmns bspn)
|
||||||
@ -106,64 +107,64 @@
|
|||||||
(fixnum dmns)
|
(fixnum dmns)
|
||||||
(symbol bspn))
|
(symbol bspn))
|
||||||
(let ((simplex (first entry))
|
(let ((simplex (first entry))
|
||||||
(faces (rest entry)))
|
(faces (rest entry)))
|
||||||
(declare
|
(declare
|
||||||
(symbol simplex)
|
(symbol simplex)
|
||||||
(list faces))
|
(list faces))
|
||||||
(when (zerop dmns)
|
(when (zerop dmns)
|
||||||
(return-from finite-ss-finish-entry
|
(return-from finite-ss-finish-entry
|
||||||
(make-gmsm-faces-info
|
(make-gmsm-faces-info
|
||||||
:gmsm simplex :faces +s-empty-vector+
|
:gmsm simplex :faces +s-empty-vector+
|
||||||
:bndr +zero-negative-cmbn+)))
|
:bndr +zero-negative-cmbn+)))
|
||||||
(setf faces (nconc faces (make-list (1+ (- dmns (length faces)))
|
(setf faces (nconc faces (make-list (1+ (- dmns (length faces)))
|
||||||
:initial-element bspn)))
|
:initial-element bspn)))
|
||||||
(let ((rslt (make-gmsm-faces-info :gmsm simplex)))
|
(let ((rslt (make-gmsm-faces-info :gmsm simplex)))
|
||||||
(declare (cons rslt))
|
(declare (cons rslt))
|
||||||
(flet ((process-face (face)
|
(flet ((process-face (face)
|
||||||
(declare (type (or symbol list) face))
|
(declare (type (or symbol list) face))
|
||||||
(when (symbolp face)
|
(when (symbolp face)
|
||||||
(setf face (list face)))
|
(setf face (list face)))
|
||||||
(let* ((gmsm2 (car (last face)))
|
(let* ((gmsm2 (car (last face)))
|
||||||
(dgop-ext (nbutlast face))
|
(dgop-ext (nbutlast face))
|
||||||
(dmns2 (finite-ss-find-gmsm table gmsm2 0 dmns)))
|
(dmns2 (finite-ss-find-gmsm table gmsm2 0 dmns)))
|
||||||
(declare
|
(declare
|
||||||
(symbol gmsm2)
|
(symbol gmsm2)
|
||||||
(list dgop-ext)
|
(list dgop-ext)
|
||||||
(type (or fixnum null) dmns2))
|
(type (or fixnum null) dmns2))
|
||||||
(unless dmns2
|
(unless dmns2
|
||||||
(error "In BUILD-FINITE-SS, the face ~A is absent." gmsm2))
|
(error "In BUILD-FINITE-SS, the face ~A is absent." gmsm2))
|
||||||
(when (zerop (length dgop-ext))
|
(when (zerop (length dgop-ext))
|
||||||
(setf dgop-ext (nreverse (<a-b< dmns2 (1- dmns)))))
|
(setf dgop-ext (nreverse (<a-b< dmns2 (1- dmns)))))
|
||||||
(unless (= (+ (length dgop-ext) dmns2 1) dmns)
|
(unless (= (+ (length dgop-ext) dmns2 1) dmns)
|
||||||
(error "In BUILD-FINITE-SS, the face ~A has a wrong dimension."
|
(error "In BUILD-FINITE-SS, the face ~A has a wrong dimension."
|
||||||
(append dgop-ext (list gmsm2))))
|
(append dgop-ext (list gmsm2))))
|
||||||
(absm (dgop-ext-int dgop-ext) gmsm2))))
|
(absm (dgop-ext-int dgop-ext) gmsm2))))
|
||||||
(setf (info-faces rslt)
|
(setf (info-faces rslt)
|
||||||
(map 'simple-vector #'process-face faces))
|
(map 'simple-vector #'process-face faces))
|
||||||
(setf (info-bndr rslt)
|
(setf (info-bndr rslt)
|
||||||
(apply #'nterm-add #'s-cmpr (1- dmns)
|
(apply #'nterm-add #'s-cmpr (1- dmns)
|
||||||
(do ((rslt +empty-list+)
|
(do ((rslt +empty-list+)
|
||||||
(faces (info-faces rslt))
|
(faces (info-faces rslt))
|
||||||
(indx dmns (1- indx)))
|
(indx dmns (1- indx)))
|
||||||
((minusp indx) rslt)
|
((minusp indx) rslt)
|
||||||
(declare
|
(declare
|
||||||
(list rslt)
|
(list rslt)
|
||||||
(simple-vector faces)
|
(simple-vector faces)
|
||||||
(fixnum indx))
|
(fixnum indx))
|
||||||
(let ((face (svref faces indx)))
|
(let ((face (svref faces indx)))
|
||||||
(declare (type absm face))
|
(declare (type absm face))
|
||||||
(unless (degenerate-p face)
|
(unless (degenerate-p face)
|
||||||
(push (term (-1-expt-n indx) (gmsm face))
|
(push (term (-1-expt-n indx) (gmsm face))
|
||||||
rslt))))))
|
rslt))))))
|
||||||
rslt))))
|
rslt))))
|
||||||
|
|
||||||
|
|
||||||
(DEFUN FINITE-SS-TABLE (list)
|
(DEFUN FINITE-SS-TABLE (list)
|
||||||
(declare (list list))
|
(declare (list list))
|
||||||
(setf list (cons 0 list))
|
(setf list (cons 0 list))
|
||||||
(let* ((bspn (second list))
|
(let* ((bspn (second list))
|
||||||
(pre-table (finite-ss-pre-table list))
|
(pre-table (finite-ss-pre-table list))
|
||||||
(table (finite-ss-pre-table-table pre-table)))
|
(table (finite-ss-pre-table-table pre-table)))
|
||||||
(declare
|
(declare
|
||||||
(symbol bspn)
|
(symbol bspn)
|
||||||
(list pre-table)
|
(list pre-table)
|
||||||
@ -175,11 +176,11 @@
|
|||||||
(DEFUN FINITE-SS-BASIS (table)
|
(DEFUN FINITE-SS-BASIS (table)
|
||||||
(declare (simple-vector table))
|
(declare (simple-vector table))
|
||||||
(flet ((rslt (dmns)
|
(flet ((rslt (dmns)
|
||||||
(declare (fixnum dmns))
|
(declare (fixnum dmns))
|
||||||
(the list
|
(the list
|
||||||
(if (< -1 dmns (length table))
|
(if (< -1 dmns (length table))
|
||||||
(mapcar #'car (svref table dmns))
|
(mapcar #'car (svref table dmns))
|
||||||
+empty-list+))))
|
+empty-list+))))
|
||||||
#'rslt))
|
#'rslt))
|
||||||
|
|
||||||
|
|
||||||
@ -189,14 +190,14 @@
|
|||||||
(simple-vector table))
|
(simple-vector table))
|
||||||
(flet ((rslt (indx dmns gmsm)
|
(flet ((rslt (indx dmns gmsm)
|
||||||
(declare
|
(declare
|
||||||
(fixnum indx dmns)
|
(fixnum indx dmns)
|
||||||
(symbol gmsm))
|
(symbol gmsm))
|
||||||
(let ((found (find gmsm (svref table dmns) :key #'car)))
|
(let ((found (find gmsm (svref table dmns) :key #'car)))
|
||||||
(unless found
|
(unless found
|
||||||
(error "In the finite simplicial set ~A,~@
|
(error "In the finite simplicial set ~A,~@
|
||||||
the simplex ~A is absent in dimension ~D."
|
the simplex ~A is absent in dimension ~D."
|
||||||
(eval ind-smst) gmsm dmns))
|
(eval ind-smst) gmsm dmns))
|
||||||
(svref (info-faces found) indx))))
|
(svref (info-faces found) indx))))
|
||||||
#'rslt))
|
#'rslt))
|
||||||
|
|
||||||
|
|
||||||
@ -206,40 +207,40 @@
|
|||||||
(simple-vector table))
|
(simple-vector table))
|
||||||
(flet ((rslt (dmns gmsm)
|
(flet ((rslt (dmns gmsm)
|
||||||
(declare
|
(declare
|
||||||
(fixnum dmns)
|
(fixnum dmns)
|
||||||
(symbol gmsm))
|
(symbol gmsm))
|
||||||
(let ((found (find gmsm (svref table dmns) :key #'car)))
|
(let ((found (find gmsm (svref table dmns) :key #'car)))
|
||||||
(unless found
|
(unless found
|
||||||
(error "In the finite simplicial set ~A,~@
|
(error "In the finite simplicial set ~A,~@
|
||||||
the simplex ~A is absent in dimension ~D." (eval ind-smst) gmsm dmns))
|
the simplex ~A is absent in dimension ~D." (eval ind-smst) gmsm dmns))
|
||||||
(info-bndr found))))
|
(info-bndr found))))
|
||||||
#'rslt))
|
#'rslt))
|
||||||
|
|
||||||
|
|
||||||
(DEFUN BUILD-FINITE-SS (list)
|
(DEFUN BUILD-FINITE-SS (list)
|
||||||
(declare (list list))
|
(declare (list list))
|
||||||
(let ((bspn (first list))
|
(let ((bspn (first list))
|
||||||
(table (finite-ss-table list))
|
(table (finite-ss-table list))
|
||||||
(ind-smst (gensym)))
|
(ind-smst (gensym)))
|
||||||
(declare
|
(declare
|
||||||
(symbol bspn ind-smst)
|
(symbol bspn ind-smst)
|
||||||
(simple-vector table))
|
(simple-vector table))
|
||||||
;; (vector (vector gmsm-faces-info))
|
;; (vector (vector gmsm-faces-info))
|
||||||
(let ((rslt (build-smst
|
(let ((rslt (build-smst
|
||||||
:cmpr #'s-cmpr
|
:cmpr #'s-cmpr
|
||||||
:basis (finite-ss-basis table)
|
:basis (finite-ss-basis table)
|
||||||
:bspn bspn
|
:bspn bspn
|
||||||
:face (finite-ss-face ind-smst table)
|
:face (finite-ss-face ind-smst table)
|
||||||
:intr-bndr (finite-ss-intr-bndr ind-smst table)
|
:intr-bndr (finite-ss-intr-bndr ind-smst table)
|
||||||
:bndr-strt :gnrt
|
:bndr-strt :gnrt
|
||||||
:orgn `(build-finite-ss ,list))))
|
:orgn `(build-finite-ss ,list))))
|
||||||
(setf (symbol-value ind-smst) rslt)
|
(setf (symbol-value ind-smst) rslt)
|
||||||
(inspect rslt)
|
(inspect rslt)
|
||||||
(unless (check-smst rslt 0 (length table))
|
(unless (check-smst rslt 0 (length table))
|
||||||
(pop *smst-list*)
|
(pop *smst-list*)
|
||||||
(pop *chcm-list*)
|
(pop *chcm-list*)
|
||||||
(pop *mrph-list*)
|
(pop *mrph-list*)
|
||||||
(return-from build-finite-ss nil))
|
(return-from build-finite-ss nil))
|
||||||
rslt)))
|
rslt)))
|
||||||
|
|
||||||
|
|
||||||
@ -253,13 +254,13 @@
|
|||||||
(let ((fund-gmsm (intern (format nil "S~D" dmns))))
|
(let ((fund-gmsm (intern (format nil "S~D" dmns))))
|
||||||
(declare (symbol fund-gmsm))
|
(declare (symbol fund-gmsm))
|
||||||
(flet ((rslt (dmns2)
|
(flet ((rslt (dmns2)
|
||||||
(declare (fixnum dmns2))
|
(declare (fixnum dmns2))
|
||||||
(cond ((zerop dmns2)
|
(cond ((zerop dmns2)
|
||||||
(list '*))
|
(list '*))
|
||||||
((= dmns2 dmns)
|
((= dmns2 dmns)
|
||||||
(list fund-gmsm))
|
(list fund-gmsm))
|
||||||
(t
|
(t
|
||||||
+empty-list+))))
|
+empty-list+))))
|
||||||
(the basis #'rslt))))
|
(the basis #'rslt))))
|
||||||
|
|
||||||
|
|
||||||
@ -268,8 +269,8 @@
|
|||||||
(let ((face (absm (mask (1- dmns)) '*)))
|
(let ((face (absm (mask (1- dmns)) '*)))
|
||||||
(declare (type absm face))
|
(declare (type absm face))
|
||||||
(flet ((rslt (indx dmns2 gmsm)
|
(flet ((rslt (indx dmns2 gmsm)
|
||||||
(declare (ignore indx dmns2 gmsm))
|
(declare (ignore indx dmns2 gmsm))
|
||||||
(the absm face)))
|
(the absm face)))
|
||||||
#'rslt)))
|
#'rslt)))
|
||||||
|
|
||||||
|
|
||||||
@ -279,16 +280,16 @@
|
|||||||
(error "In SPHERE, the dimension ~D should be positive." dmns))
|
(error "In SPHERE, the dimension ~D should be positive." dmns))
|
||||||
(unless (< dmns +maximal-dimension+)
|
(unless (< dmns +maximal-dimension+)
|
||||||
(error "In SPHERE, the dimension ~D should be < ~D."
|
(error "In SPHERE, the dimension ~D should be < ~D."
|
||||||
dmns +maximal-dimension+))
|
dmns +maximal-dimension+))
|
||||||
(the simplicial-set
|
(the simplicial-set
|
||||||
(let ((rslt (build-smst
|
(let ((rslt (build-smst
|
||||||
:cmpr #'sphere-cmpr
|
:cmpr #'sphere-cmpr
|
||||||
:basis (sphere-basis dmns)
|
:basis (sphere-basis dmns)
|
||||||
:bspn '*
|
:bspn '*
|
||||||
:face (sphere-face dmns)
|
:face (sphere-face dmns)
|
||||||
:intr-bndr #'zero-intr-dffr
|
:intr-bndr #'zero-intr-dffr
|
||||||
:bndr-strt :cmbn
|
:bndr-strt :cmbn
|
||||||
:orgn `(sphere ,dmns))))
|
:orgn `(sphere ,dmns))))
|
||||||
(declare (type simplicial-set rslt))
|
(declare (type simplicial-set rslt))
|
||||||
(setf (slot-value (bndr rslt) 'orgn)
|
(setf (slot-value (bndr rslt) 'orgn)
|
||||||
`(zero-mrph ,rslt ,rslt -1))
|
`(zero-mrph ,rslt ,rslt -1))
|
||||||
@ -298,17 +299,17 @@
|
|||||||
(DEFUN SPHERE-WEDGE-BASIS (dmns-list)
|
(DEFUN SPHERE-WEDGE-BASIS (dmns-list)
|
||||||
(declare (list dmns-list))
|
(declare (list dmns-list))
|
||||||
(flet ((rslt (dmns)
|
(flet ((rslt (dmns)
|
||||||
(declare (fixnum dmns))
|
(declare (fixnum dmns))
|
||||||
(when (zerop dmns)
|
(when (zerop dmns)
|
||||||
(return-from rslt '(*)))
|
(return-from rslt '(*)))
|
||||||
(do ((i (count dmns dmns-list) (1- i))
|
(do ((i (count dmns dmns-list) (1- i))
|
||||||
(basis +empty-list+
|
(basis +empty-list+
|
||||||
(cons (intern (format nil "S~D-~D" dmns i))
|
(cons (intern (format nil "S~D-~D" dmns i))
|
||||||
basis)))
|
basis)))
|
||||||
((zerop i) basis)
|
((zerop i) basis)
|
||||||
(declare
|
(declare
|
||||||
(fixnum i)
|
(fixnum i)
|
||||||
(list basis)))))
|
(list basis)))))
|
||||||
(the basis #'rslt)))
|
(the basis #'rslt)))
|
||||||
|
|
||||||
|
|
||||||
@ -323,12 +324,12 @@
|
|||||||
(declare (list dmns-list))
|
(declare (list dmns-list))
|
||||||
(the simplicial-set
|
(the simplicial-set
|
||||||
(let ((rslt (build-smst
|
(let ((rslt (build-smst
|
||||||
:cmpr #'s-cmpr
|
:cmpr #'s-cmpr
|
||||||
:basis (sphere-wedge-basis dmns-list)
|
:basis (sphere-wedge-basis dmns-list)
|
||||||
:face #'sphere-wedge-face
|
:face #'sphere-wedge-face
|
||||||
:intr-bndr #'zero-intr-dffr
|
:intr-bndr #'zero-intr-dffr
|
||||||
:bndr-strt :cmbn
|
:bndr-strt :cmbn
|
||||||
:orgn `(sphere-wedge ,@dmns-list))))
|
:orgn `(sphere-wedge ,@dmns-list))))
|
||||||
(declare (type simplicial-set rslt))
|
(declare (type simplicial-set rslt))
|
||||||
(setf (slot-value (bndr rslt) 'orgn)
|
(setf (slot-value (bndr rslt) 'orgn)
|
||||||
`(zero-mrph ,rslt ,rslt -1))
|
`(zero-mrph ,rslt ,rslt -1))
|
||||||
@ -343,58 +344,58 @@
|
|||||||
(DEFUN MOORE-BASIS (dmns)
|
(DEFUN MOORE-BASIS (dmns)
|
||||||
(declare (fixnum dmns))
|
(declare (fixnum dmns))
|
||||||
(let ((lgmsm1 (list (intern (format nil "M~D" dmns))))
|
(let ((lgmsm1 (list (intern (format nil "M~D" dmns))))
|
||||||
(lgmsm2 (list (intern (format nil "N~D" (1+ dmns))))))
|
(lgmsm2 (list (intern (format nil "N~D" (1+ dmns))))))
|
||||||
(declare (list lgmsm1 lgmsm2))
|
(declare (list lgmsm1 lgmsm2))
|
||||||
(flet ((rslt (dmns2)
|
(flet ((rslt (dmns2)
|
||||||
(declare (fixnum dmns2))
|
(declare (fixnum dmns2))
|
||||||
(cond ((zerop dmns2) '(*))
|
(cond ((zerop dmns2) '(*))
|
||||||
((= dmns dmns2) lgmsm1)
|
((= dmns dmns2) lgmsm1)
|
||||||
((= (1+ dmns) dmns2) lgmsm2)
|
((= (1+ dmns) dmns2) lgmsm2)
|
||||||
(t +empty-list+))))
|
(t +empty-list+))))
|
||||||
(the basis #'rslt))))
|
(the basis #'rslt))))
|
||||||
|
|
||||||
|
|
||||||
(DEFUN MOORE-FACE (pii dmns)
|
(DEFUN MOORE-FACE (pii dmns)
|
||||||
(declare (fixnum pii dmns))
|
(declare (fixnum pii dmns))
|
||||||
(let ((face (absm 0 (intern (format nil "M~D" dmns))))
|
(let ((face (absm 0 (intern (format nil "M~D" dmns))))
|
||||||
(bspn1 (absm (mask (1- dmns)) '*))
|
(bspn1 (absm (mask (1- dmns)) '*))
|
||||||
(bspn2 (absm (mask dmns) '*))
|
(bspn2 (absm (mask dmns) '*))
|
||||||
(2pii (ash pii 1)))
|
(2pii (ash pii 1)))
|
||||||
(declare
|
(declare
|
||||||
(type absm face)
|
(type absm face)
|
||||||
(type absm bspn1 bspn2)
|
(type absm bspn1 bspn2)
|
||||||
(fixnum 2pii))
|
(fixnum 2pii))
|
||||||
(flet ((rslt (indx dmns2 gmsm)
|
(flet ((rslt (indx dmns2 gmsm)
|
||||||
(declare
|
(declare
|
||||||
(fixnum indx dmns2)
|
(fixnum indx dmns2)
|
||||||
(ignore gmsm))
|
(ignore gmsm))
|
||||||
(the absm
|
(the absm
|
||||||
(if (= dmns dmns2)
|
(if (= dmns dmns2)
|
||||||
bspn1
|
bspn1
|
||||||
(if (oddp indx)
|
(if (oddp indx)
|
||||||
bspn2
|
bspn2
|
||||||
(if (< indx 2pii)
|
(if (< indx 2pii)
|
||||||
face
|
face
|
||||||
bspn2))))))
|
bspn2))))))
|
||||||
(the face #'rslt))))
|
(the face #'rslt))))
|
||||||
|
|
||||||
|
|
||||||
(DEFUN MOORE-INTR-BNDR (pii dmns)
|
(DEFUN MOORE-INTR-BNDR (pii dmns)
|
||||||
(declare (fixnum pii dmns))
|
(declare (fixnum pii dmns))
|
||||||
(let ((1+dmns (1+ dmns))
|
(let ((1+dmns (1+ dmns))
|
||||||
(gmsm1 (intern (format nil "M~D" dmns))))
|
(gmsm1 (intern (format nil "M~D" dmns))))
|
||||||
(declare
|
(declare
|
||||||
(fixnum 1+dmns)
|
(fixnum 1+dmns)
|
||||||
(type symbol gmsm1))
|
(type symbol gmsm1))
|
||||||
(flet ((rslt (cmbn)
|
(flet ((rslt (cmbn)
|
||||||
(declare
|
(declare
|
||||||
(type cmbn cmbn))
|
(type cmbn cmbn))
|
||||||
(with-cmbn (degr list) cmbn
|
(with-cmbn (degr list) cmbn
|
||||||
(unless list
|
(unless list
|
||||||
(return-from rslt (zero-cmbn (1- (cmbn-degr cmbn)))))
|
(return-from rslt (zero-cmbn (1- (cmbn-degr cmbn)))))
|
||||||
(if (= degr 1+dmns)
|
(if (= degr 1+dmns)
|
||||||
(term-cmbn dmns (* (cffc (first list)) pii) gmsm1)
|
(term-cmbn dmns (* (cffc (first list)) pii) gmsm1)
|
||||||
(zero-cmbn (1- (cmbn-degr cmbn)))))))
|
(zero-cmbn (1- (cmbn-degr cmbn)))))))
|
||||||
(the intr-mrph #'rslt))))
|
(the intr-mrph #'rslt))))
|
||||||
|
|
||||||
|
|
||||||
@ -402,12 +403,12 @@
|
|||||||
(declare (fixnum pii dmns))
|
(declare (fixnum pii dmns))
|
||||||
(the simplicial-set
|
(the simplicial-set
|
||||||
(build-smst
|
(build-smst
|
||||||
:cmpr #'moore-cmpr
|
:cmpr #'moore-cmpr
|
||||||
:basis (moore-basis dmns)
|
:basis (moore-basis dmns)
|
||||||
:face (moore-face pii dmns)
|
:face (moore-face pii dmns)
|
||||||
:intr-bndr (moore-intr-bndr pii dmns)
|
:intr-bndr (moore-intr-bndr pii dmns)
|
||||||
:bndr-strt :cmbn
|
:bndr-strt :cmbn
|
||||||
:orgn `(moore ,pii ,dmns))))
|
:orgn `(moore ,pii ,dmns))))
|
||||||
|
|
||||||
|
|
||||||
(DEFUN R-PROJ-SPACE-CMPR (gmsm1 gmsm2)
|
(DEFUN R-PROJ-SPACE-CMPR (gmsm1 gmsm2)
|
||||||
@ -419,34 +420,34 @@
|
|||||||
(declare (fixnum k) (type (or (eql :infinity) fixnum) l))
|
(declare (fixnum k) (type (or (eql :infinity) fixnum) l))
|
||||||
(the basis
|
(the basis
|
||||||
(progn
|
(progn
|
||||||
(when (eq l :infinity)
|
(when (eq l :infinity)
|
||||||
(setf l most-positive-fixnum))
|
(setf l most-positive-fixnum))
|
||||||
(flet
|
(flet
|
||||||
((rslt (dmns)
|
((rslt (dmns)
|
||||||
(declare (fixnum dmns))
|
(declare (fixnum dmns))
|
||||||
(the list
|
(the list
|
||||||
(if (or (minusp dmns)
|
(if (or (minusp dmns)
|
||||||
(< 0 dmns k)
|
(< 0 dmns k)
|
||||||
(>= dmns l))
|
(>= dmns l))
|
||||||
+empty-list+
|
+empty-list+
|
||||||
(list dmns)))))
|
(list dmns)))))
|
||||||
(the basis #'rslt)))))
|
(the basis #'rslt)))))
|
||||||
|
|
||||||
|
|
||||||
(DEFUN R-PROJ-SPACE-FACE (k)
|
(DEFUN R-PROJ-SPACE-FACE (k)
|
||||||
(declare (fixnum k))
|
(declare (fixnum k))
|
||||||
(flet ((rslt (indx dmns gmsm)
|
(flet ((rslt (indx dmns gmsm)
|
||||||
(declare
|
(declare
|
||||||
(fixnum indx dmns)
|
(fixnum indx dmns)
|
||||||
(ignore gmsm))
|
(ignore gmsm))
|
||||||
(if (<= dmns k)
|
(if (<= dmns k)
|
||||||
(absm (mask (1- dmns)) 0)
|
(absm (mask (1- dmns)) 0)
|
||||||
(if (or (zerop indx)
|
(if (or (zerop indx)
|
||||||
(= indx dmns))
|
(= indx dmns))
|
||||||
(absm 0 (1- dmns))
|
(absm 0 (1- dmns))
|
||||||
(if (= dmns (1+ k))
|
(if (= dmns (1+ k))
|
||||||
(absm (mask (1- dmns)) 0)
|
(absm (mask (1- dmns)) 0)
|
||||||
(absm (2-exp (1- indx)) (- dmns 2)))))))
|
(absm (2-exp (1- indx)) (- dmns 2)))))))
|
||||||
(the face #'rslt)))
|
(the face #'rslt)))
|
||||||
|
|
||||||
|
|
||||||
@ -455,15 +456,15 @@
|
|||||||
(flet ((rslt (cmbn)
|
(flet ((rslt (cmbn)
|
||||||
(declare (type cmbn cmbn))
|
(declare (type cmbn cmbn))
|
||||||
(with-cmbn (degr list) cmbn
|
(with-cmbn (degr list) cmbn
|
||||||
(unless list
|
(unless list
|
||||||
(return-from rslt (zero-cmbn (1- degr))))
|
(return-from rslt (zero-cmbn (1- degr))))
|
||||||
(if (<= degr k)
|
(if (<= degr k)
|
||||||
(zero-cmbn (1- degr))
|
(zero-cmbn (1- degr))
|
||||||
(if (evenp degr)
|
(if (evenp degr)
|
||||||
(make-cmbn
|
(make-cmbn
|
||||||
:degr (1- degr)
|
:degr (1- degr)
|
||||||
:list (list (term (* 2 (-cffc list)) (1- degr))))
|
:list (list (term (* 2 (-cffc list)) (1- degr))))
|
||||||
(zero-cmbn (1- degr)))))))
|
(zero-cmbn (1- degr)))))))
|
||||||
(the intr-mrph #'rslt)))
|
(the intr-mrph #'rslt)))
|
||||||
|
|
||||||
(DEFUN R-PROJ-SPACE (&optional (l :infinity) (k 1))
|
(DEFUN R-PROJ-SPACE (&optional (l :infinity) (k 1))
|
||||||
@ -476,13 +477,13 @@
|
|||||||
(<= k l)))))
|
(<= k l)))))
|
||||||
(the simplicial-set
|
(the simplicial-set
|
||||||
(build-smst
|
(build-smst
|
||||||
:cmpr #'R-proj-space-cmpr
|
:cmpr #'R-proj-space-cmpr
|
||||||
:basis (R-proj-space-basis k l)
|
:basis (R-proj-space-basis k l)
|
||||||
:bspn 0
|
:bspn 0
|
||||||
:face (R-proj-space-face k)
|
:face (R-proj-space-face k)
|
||||||
:intr-bndr (R-proj-space-intr-bndr k)
|
:intr-bndr (R-proj-space-intr-bndr k)
|
||||||
:bndr-strt :cmbn
|
:bndr-strt :cmbn
|
||||||
:orgn `(R-proj-space ,k ,l))))
|
:orgn `(R-proj-space ,k ,l))))
|
||||||
|
|
||||||
|
|
||||||
;;; Constructing a small simplicial subset
|
;;; Constructing a small simplicial subset
|
||||||
@ -498,13 +499,13 @@
|
|||||||
|
|
||||||
|
|
||||||
(DEFUN GMSMS-SUBSMST (smst gmsms
|
(DEFUN GMSMS-SUBSMST (smst gmsms
|
||||||
&aux
|
&aux
|
||||||
(dmns (typecase gmsms
|
(dmns (typecase gmsms
|
||||||
(cmbn (cmbn-degr gmsms))
|
(cmbn (cmbn-degr gmsms))
|
||||||
(otherwise (first gmsms))))
|
(otherwise (first gmsms))))
|
||||||
(cmpr= #'(lambda (gmsm1 gmsm2)
|
(cmpr= #'(lambda (gmsm1 gmsm2)
|
||||||
(declare (type gmsm gmsm1 gmsm2))
|
(declare (type gmsm gmsm1 gmsm2))
|
||||||
(the boolean
|
(the boolean
|
||||||
(eq (cmpr smst gmsm1 gmsm2) :equal)))))
|
(eq (cmpr smst gmsm1 gmsm2) :equal)))))
|
||||||
(declare
|
(declare
|
||||||
(type simplicial-set smst)
|
(type simplicial-set smst)
|
||||||
@ -515,42 +516,85 @@
|
|||||||
(setf gmsms (cmbn-gmsms gmsms)))
|
(setf gmsms (cmbn-gmsms gmsms)))
|
||||||
(the (values simplicial-set morphism)
|
(the (values simplicial-set morphism)
|
||||||
(let ((prslt (make-array (1+ dmns) :initial-element +empty-list+)))
|
(let ((prslt (make-array (1+ dmns) :initial-element +empty-list+)))
|
||||||
(declare (type simple-vector prslt))
|
(declare (type simple-vector prslt))
|
||||||
(setf (svref prslt dmns) (rest gmsms))
|
(setf (svref prslt dmns) (rest gmsms))
|
||||||
(do ((d dmns (1- d)))
|
(do ((d dmns (1- d)))
|
||||||
((zerop d))
|
((zerop d))
|
||||||
(declare (fixnum d))
|
(declare (fixnum d))
|
||||||
(dolist (gmsm (svref prslt d))
|
(dolist (gmsm (svref prslt d))
|
||||||
(declare (type gmsm gmsm))
|
(declare (type gmsm gmsm))
|
||||||
(dotimes (iface (1+ d))
|
(dotimes (iface (1+ d))
|
||||||
(declare (fixnum iface))
|
(declare (fixnum iface))
|
||||||
(with-absm (dgop gmsm) (face smst iface d gmsm)
|
(with-absm (dgop gmsm) (face smst iface d gmsm)
|
||||||
(declare (fixnum dgop) (type gmsm gmsm))
|
(declare (fixnum dgop) (type gmsm gmsm))
|
||||||
(pushnew gmsm (svref prslt (- d 1 (logcount dgop)))
|
(pushnew gmsm (svref prslt (- d 1 (logcount dgop)))
|
||||||
:test cmpr=)))))
|
:test cmpr=)))))
|
||||||
(let ((rslt-basis #'(lambda (k)
|
(let ((rslt-basis #'(lambda (k)
|
||||||
(declare (fixnum dmns))
|
(declare (fixnum dmns))
|
||||||
(the list
|
(the list
|
||||||
(if (<= 0 k dmns)
|
(if (<= 0 k dmns)
|
||||||
(aref prslt k)
|
(aref prslt k)
|
||||||
+empty-list+)))))
|
+empty-list+)))))
|
||||||
(declare (type (function (fixnum) list) rslt-basis))
|
(declare (type (function (fixnum) list) rslt-basis))
|
||||||
(let ((subsmst (build-smst
|
(let ((subsmst (build-smst
|
||||||
:cmpr (cmpr smst)
|
:cmpr (cmpr smst)
|
||||||
:basis rslt-basis
|
:basis rslt-basis
|
||||||
:bspn (let ((bspn (bspn smst)))
|
:bspn (let ((bspn (bspn smst)))
|
||||||
(declare (type gmsm bspn))
|
(declare (type gmsm bspn))
|
||||||
(pushnew bspn (svref prslt 0) :test cmpr=)
|
(pushnew bspn (svref prslt 0) :test cmpr=)
|
||||||
bspn)
|
bspn)
|
||||||
:face (face smst)
|
:face (face smst)
|
||||||
:orgn `(gmsms-subsmst ,gmsms))))
|
:orgn `(gmsms-subsmst ,gmsms))))
|
||||||
(declare (type simplicial-set subsmst))
|
(declare (type simplicial-set subsmst))
|
||||||
(values subsmst
|
(values subsmst
|
||||||
(build-mrph :sorc subsmst
|
(build-mrph :sorc subsmst
|
||||||
:trgt smst
|
:trgt smst
|
||||||
:degr 0
|
:degr 0
|
||||||
:intr #'(lambda (cmbn)
|
:intr #'(lambda (cmbn)
|
||||||
(declare (type cmbn cmbn))
|
(declare (type cmbn cmbn))
|
||||||
(the cmbn cmbn))
|
(the cmbn cmbn))
|
||||||
:strt :cmbn
|
:strt :cmbn
|
||||||
:orgn `(gmsms-subsmst-incl ,gmsms))))))))
|
:orgn `(gmsms-subsmst-incl ,gmsms))))))))
|
||||||
|
|
||||||
|
(defun absm-ext-int (vlist)
|
||||||
|
(do ((dgop nil)
|
||||||
|
(gmsm (list (first vlist)))
|
||||||
|
(mark (rest vlist) (cdr mark))
|
||||||
|
(idgop 0 (1+ idgop)))
|
||||||
|
((endp mark) (absm (dgop-ext-int dgop)
|
||||||
|
(dgop-ext-int gmsm)))
|
||||||
|
(if (= (first gmsm) (car mark))
|
||||||
|
(push idgop dgop)
|
||||||
|
(push (car mark) gmsm))))
|
||||||
|
|
||||||
|
|
||||||
|
(defun absm-int-ext (absm)
|
||||||
|
(with-absm
|
||||||
|
(dgop gmsm) absm
|
||||||
|
(do ((dgop (nreverse (dgop-int-ext dgop)))
|
||||||
|
(gmsm (rest (dlop-int-ext gmsm)))
|
||||||
|
(i 0 (1+ i))
|
||||||
|
(rslt (list (first (dlop-int-ext gmsm)))))
|
||||||
|
((and (endp dgop) (endp gmsm)) (nreverse rslt))
|
||||||
|
(if dgop
|
||||||
|
(if (= i (car dgop))
|
||||||
|
(progn
|
||||||
|
(pop dgop)
|
||||||
|
(push (first rslt) rslt))
|
||||||
|
(push (pop gmsm) rslt))
|
||||||
|
(return (nreconc rslt gmsm))))))
|
||||||
|
|
||||||
|
|
||||||
|
(defun vertex-i (absm i)
|
||||||
|
(with-absm
|
||||||
|
(dgop gmsm) absm
|
||||||
|
(let ((dgop (nreverse (dgop-int-ext dgop)))
|
||||||
|
(gmsm (dlop-int-ext gmsm)))
|
||||||
|
(do ((dgop-mark dgop)
|
||||||
|
(gmsm-mark gmsm)
|
||||||
|
(ii 0 (1+ ii)))
|
||||||
|
((= i ii) (car gmsm-mark))
|
||||||
|
(if (and dgop-mark
|
||||||
|
(= ii (car dgop-mark)))
|
||||||
|
(pop dgop-mark)
|
||||||
|
(pop gmsm-mark))))))
|
||||||
|
|||||||
@ -1,99 +1,55 @@
|
|||||||
|
;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*
|
||||||
|
|
||||||
(in-package :kenzo-test)
|
(in-package :kenzo-test)
|
||||||
|
|
||||||
(in-suite :kenzo)
|
(in-suite :kenzo)
|
||||||
|
|
||||||
(defun vertex-i (absm i)
|
|
||||||
(cat:with-absm
|
|
||||||
(dgop gmsm) absm
|
|
||||||
(let ((dgop (nreverse (cat:dgop-int-ext dgop)))
|
|
||||||
(gmsm (cat:dlop-int-ext gmsm)))
|
|
||||||
(do ((dgop-mark dgop)
|
|
||||||
(gmsm-mark gmsm)
|
|
||||||
(ii 0 (1+ ii)))
|
|
||||||
((= i ii) (car gmsm-mark))
|
|
||||||
(if (and dgop-mark
|
|
||||||
(= ii (car dgop-mark)))
|
|
||||||
(pop dgop-mark)
|
|
||||||
(pop gmsm-mark))))))
|
|
||||||
|
|
||||||
|
|
||||||
(test vertex-i
|
(test vertex-i
|
||||||
(let ((d (cat:delta-infinity)))
|
(let ((d (cat:delta-infinity)))
|
||||||
(vertex-i (cat:absm 0 1) 0)
|
(cat:vertex-i (cat:absm 0 1) 0)
|
||||||
(vertex-i (cat:absm 1 1) 0)
|
(cat:vertex-i (cat:absm 1 1) 0)
|
||||||
(vertex-i (cat:absm 1 1) 1)
|
(cat:vertex-i (cat:absm 1 1) 1)
|
||||||
(vertex-i (cat:absm 0 3) 0)
|
(cat:vertex-i (cat:absm 0 3) 0)
|
||||||
(vertex-i (cat:absm 0 3) 1)
|
(cat:vertex-i (cat:absm 0 3) 1)
|
||||||
(vertex-i (cat:absm 3 1) 0)
|
(cat:vertex-i (cat:absm 3 1) 0)
|
||||||
(vertex-i (cat:absm 3 1) 1)
|
(cat:vertex-i (cat:absm 3 1) 1)
|
||||||
(vertex-i (cat:absm 3 1) 2)
|
(cat:vertex-i (cat:absm 3 1) 2)
|
||||||
(vertex-i (cat:absm 1 3) 0)
|
(cat:vertex-i (cat:absm 1 3) 0)
|
||||||
(vertex-i (cat:absm 1 3) 1)
|
(cat:vertex-i (cat:absm 1 3) 1)
|
||||||
(vertex-i (cat:absm 1 3) 2)
|
(cat:vertex-i (cat:absm 1 3) 2)
|
||||||
(vertex-i (cat:absm 2 3) 0)
|
(cat:vertex-i (cat:absm 2 3) 0)
|
||||||
(vertex-i (cat:absm 2 3) 1)
|
(cat:vertex-i (cat:absm 2 3) 1)
|
||||||
(vertex-i (cat:absm 2 3) 2)
|
(cat:vertex-i (cat:absm 2 3) 2)
|
||||||
(vertex-i (cat:absm 0 7) 0)
|
(cat:vertex-i (cat:absm 0 7) 0)
|
||||||
(vertex-i (cat:absm 0 7) 1)
|
(cat:vertex-i (cat:absm 0 7) 1)
|
||||||
(vertex-i (cat:absm 0 7) 2)))
|
(cat:vertex-i (cat:absm 0 7) 2)))
|
||||||
|
|
||||||
|
|
||||||
(defun absm-int-ext (absm)
|
|
||||||
(cat:with-absm
|
|
||||||
(dgop gmsm) absm
|
|
||||||
(do ((dgop (nreverse (cat:dgop-int-ext dgop)))
|
|
||||||
(gmsm (rest (cat:dlop-int-ext gmsm)))
|
|
||||||
(i 0 (1+ i))
|
|
||||||
(rslt (list (first (cat:dlop-int-ext gmsm)))))
|
|
||||||
((and (endp dgop) (endp gmsm)) (nreverse rslt))
|
|
||||||
(if dgop
|
|
||||||
(if (= i (car dgop))
|
|
||||||
(progn
|
|
||||||
(pop dgop)
|
|
||||||
(push (first rslt) rslt))
|
|
||||||
(push (pop gmsm) rslt))
|
|
||||||
(return (nreconc rslt gmsm))))))
|
|
||||||
|
|
||||||
|
|
||||||
(defun absm-ext-int (vlist)
|
|
||||||
(do ((dgop nil)
|
|
||||||
(gmsm (list (first vlist)))
|
|
||||||
(mark (rest vlist) (cdr mark))
|
|
||||||
(idgop 0 (1+ idgop)))
|
|
||||||
((endp mark) (cat:absm (cat:dgop-ext-int dgop)
|
|
||||||
(cat:dgop-ext-int gmsm)))
|
|
||||||
(if (= (first gmsm) (car mark))
|
|
||||||
(push idgop dgop)
|
|
||||||
(push (car mark) gmsm))))
|
|
||||||
|
|
||||||
|
|
||||||
(test absm-int-ext
|
(test absm-int-ext
|
||||||
(absm-ext-int '(0 0 0 1 2 3 3 3))
|
(cat:absm-ext-int '(0 0 0 1 2 3 3 3))
|
||||||
(absm-ext-int '(0 1 1 1 2))
|
(cat:absm-ext-int '(0 1 1 1 2))
|
||||||
(absm-int-ext (absm-ext-int '(0 0 0 1 2 3 3 3)))
|
(cat:absm-int-ext (cat:absm-ext-int '(0 0 0 1 2 3 3 3)))
|
||||||
(absm-int-ext (absm-ext-int '(0 1 1 1 2))))
|
(cat:absm-int-ext (cat:absm-ext-int '(0 1 1 1 2))))
|
||||||
|
|
||||||
|
|
||||||
(defun dkfll (indx dmns hat)
|
(defun dkfll (indx dmns hat)
|
||||||
(cond ((= 1 dmns)
|
(cond ((= 1 dmns)
|
||||||
(cat:absm 1 (cat:gmsm (first hat))))
|
(cat:absm 1 (cat:gmsm (first hat))))
|
||||||
((= 0 indx)
|
((= 0 indx)
|
||||||
(let ((del-1 (absm-int-ext (first hat)))
|
(let ((del-1 (cat:absm-int-ext (first hat)))
|
||||||
(del-2 (absm-int-ext (second hat))))
|
(del-2 (cat:absm-int-ext (second hat))))
|
||||||
(absm-ext-int
|
(cat:absm-ext-int
|
||||||
(cons (first del-1)
|
(cons (first del-1)
|
||||||
(cons (second del-2) (rest del-1))))))
|
(cons (second del-2) (rest del-1))))))
|
||||||
((= 1 indx)
|
((= 1 indx)
|
||||||
(let ((del-0 (absm-int-ext (first hat)))
|
(let ((del-0 (cat:absm-int-ext (first hat)))
|
||||||
(del-2 (absm-int-ext (second hat))))
|
(del-2 (cat:absm-int-ext (second hat))))
|
||||||
(absm-ext-int
|
(cat:absm-ext-int
|
||||||
(cons (first del-2) del-0))))
|
(cons (first del-2) del-0))))
|
||||||
(t
|
(t
|
||||||
(let ((del-0 (absm-int-ext (first hat)))
|
(let ((del-0 (cat:absm-int-ext (first hat)))
|
||||||
(del-1 (absm-int-ext (second hat))))
|
(del-1 (cat:absm-int-ext (second hat))))
|
||||||
(absm-ext-int
|
(cat:absm-ext-int
|
||||||
(cons (first del-1) del-0))))))
|
(cons (first del-1) del-0))))))
|
||||||
|
|
||||||
|
|
||||||
(let ((d (cat:delta-infinity)))
|
(let ((d (cat:delta-infinity)))
|
||||||
@ -108,12 +64,12 @@
|
|||||||
|
|
||||||
(test check-hat
|
(test check-hat
|
||||||
(let* ((od (cat:gdeltab))
|
(let* ((od (cat:gdeltab))
|
||||||
(s (cat:loop3 0 31 2))
|
(s (cat:loop3 0 31 2))
|
||||||
(faces (mapcar #'(lambda (indx) (cat:face od indx 3 s))
|
(faces (mapcar #'(lambda (indx) (cat:face od indx 3 s))
|
||||||
'(0 1 2 3))))
|
'(0 1 2 3))))
|
||||||
(delete (nth 1 faces) faces)
|
(delete (nth 1 faces) faces)
|
||||||
(cat:check-hat od 1 3 faces)
|
(cat:check-hat od 1 3 faces)
|
||||||
(setf (nth 2 faces) (nth 1 faces))
|
(setf (nth 2 faces) (nth 1 faces))
|
||||||
(signals #-ecl simple-error
|
(signals #-ecl simple-error
|
||||||
#+ecl simple-type-error
|
#+ecl simple-type-error
|
||||||
(cat:check-hat od 1 3 faces))))
|
(cat:check-hat od 1 3 faces))))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user