finite-topological-spaces-core.lisp file added
This commit is contained in:
parent
0c81fd96b4
commit
8c3a3cf06e
@ -59,7 +59,8 @@
|
|||||||
(:file "smith")
|
(:file "smith")
|
||||||
(:file "sage-interface")
|
(:file "sage-interface")
|
||||||
(:file "finite-topological-spaces-aux")
|
(:file "finite-topological-spaces-aux")
|
||||||
(:file "finite-topological-spaces-class")
|
(:file "finite-topological-spaces-class")
|
||||||
|
(:file "finite-topological-spaces-core")
|
||||||
(:module "anromero"
|
(:module "anromero"
|
||||||
:components
|
:components
|
||||||
((:file "resolutions")
|
((:file "resolutions")
|
||||||
|
|||||||
@ -97,6 +97,27 @@
|
|||||||
rslt))))
|
rslt))))
|
||||||
|
|
||||||
|
|
||||||
|
(DEFUN MATRICE-TO-LMTRX (mtrx)
|
||||||
|
(let* ((column-n (ncol mtrx))
|
||||||
|
(rslt (make-array column-n)))
|
||||||
|
(dotimes (j column-n)
|
||||||
|
(let ((rsltj '())
|
||||||
|
(columnj-pair-list
|
||||||
|
(let ((ptc (basecol mtrx (1+ j)))
|
||||||
|
(res '()))
|
||||||
|
(do ((pc (up ptc) (up pc)))
|
||||||
|
((eq pc ptc))
|
||||||
|
(push (list (ilig pc) (val pc)) res))
|
||||||
|
res)))
|
||||||
|
|
||||||
|
(mapcar #'(lambda (pair)
|
||||||
|
(push (list (1- (first pair)) (second pair)) rsltj))
|
||||||
|
columnj-pair-list)
|
||||||
|
|
||||||
|
(setf (svref rslt j) (nreverse rsltj) )))
|
||||||
|
rslt))
|
||||||
|
|
||||||
|
|
||||||
(DEFUN SAFE-* (arg1 arg2)
|
(DEFUN SAFE-* (arg1 arg2)
|
||||||
#| This is in 'NewSmith' |#
|
#| This is in 'NewSmith' |#
|
||||||
(declare (type fixnum arg1 arg2))
|
(declare (type fixnum arg1 arg2))
|
||||||
|
|||||||
@ -79,8 +79,6 @@
|
|||||||
|
|
||||||
(DEFUN SUBMATRIX (mtrx rows cols)
|
(DEFUN SUBMATRIX (mtrx rows cols)
|
||||||
#| Extract the submatrix of 'mtrx' formed by the rows whose indexes are in 'rows' and the columns whose indexes are in 'cols' |#
|
#| Extract the submatrix of 'mtrx' formed by the rows whose indexes are in 'rows' and the columns whose indexes are in 'cols' |#
|
||||||
(declare (type matrice mtrx)
|
|
||||||
(type list rows cols))
|
|
||||||
(let ((rslt (creer-matrice (length rows) (length cols))))
|
(let ((rslt (creer-matrice (length rows) (length cols))))
|
||||||
(do ((k 1 (1+ k))
|
(do ((k 1 (1+ k))
|
||||||
(columnas cols (cdr columnas)))
|
(columnas cols (cdr columnas)))
|
||||||
@ -230,18 +228,18 @@
|
|||||||
`(stongmat (randomtop ,dim ,dens)))
|
`(stongmat (randomtop ,dim ,dens)))
|
||||||
|
|
||||||
|
|
||||||
(DEFUN ALTUR (stong lst)
|
(DEFUN HEIGHTS-AUX (stong lst)
|
||||||
(if (null lst)
|
(if (null lst)
|
||||||
NIL
|
NIL
|
||||||
(let ((minimals (loop for n in lst
|
(let ((minimals (loop for n in lst
|
||||||
if (null (loop for i from 0 to (1- (position n lst))
|
if (null (loop for i from 0 to (1- (position n lst))
|
||||||
thereis (eq (terme stong (nth i lst) n) 1)))
|
thereis (eq (terme stong (nth i lst) n) 1)))
|
||||||
collect n)))
|
collect n)))
|
||||||
(cons minimals (altur stong (reverse (set-difference lst minimals)))))))
|
(cons minimals (heights-aux stong (set-difference lst minimals)))))) ; 'set-difference' must be in ascending order
|
||||||
|
|
||||||
(DEFMETHOD HEIGHTS ((stong matrice))
|
(DEFMETHOD HEIGHTS ((stong matrice))
|
||||||
#| List of elements separated by heights |#
|
#| List of elements separated by heights |#
|
||||||
(altur stong (<a-b> 1 (ncol stong))))
|
(heights-aux stong (<a-b> 1 (ncol stong))))
|
||||||
|
|
||||||
|
|
||||||
(DEFCLASS FINITE-SPACE ()
|
(DEFCLASS FINITE-SPACE ()
|
||||||
@ -334,7 +332,6 @@
|
|||||||
|
|
||||||
|
|
||||||
(DEFMETHOD ADMISSIBLE-P ((topogenous matrice))
|
(DEFMETHOD ADMISSIBLE-P ((topogenous matrice))
|
||||||
|
|
||||||
(the boolean
|
(the boolean
|
||||||
(let ((fin T)
|
(let ((fin T)
|
||||||
(stong (stongmat topogenous)))
|
(stong (stongmat topogenous)))
|
||||||
@ -346,7 +343,6 @@
|
|||||||
|
|
||||||
|
|
||||||
(DEFMETHOD ADMISSIBLE-P ((finspace finite-space))
|
(DEFMETHOD ADMISSIBLE-P ((finspace finite-space))
|
||||||
|
|
||||||
(the boolean
|
(the boolean
|
||||||
(let ((fin T))
|
(let ((fin T))
|
||||||
(do ((j 2 (1+ j))) ((or (null fin) (> j (ncol (top finspace)))) fin)
|
(do ((j 2 (1+ j))) ((or (null fin) (> j (ncol (top finspace)))) fin)
|
||||||
|
|||||||
124
src/finite-topological-spaces-core.lisp
Normal file
124
src/finite-topological-spaces-core.lisp
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*
|
||||||
|
|
||||||
|
;; FINITE-TOPOLOGICAL-SPACES FINITE-TOPOLOGICAL-SPACES FINITE-TOPOLOGICAL-SPACES
|
||||||
|
;; FINITE-TOPOLOGICAL-SPACES FINITE-TOPOLOGICAL-SPACES FINITE-TOPOLOGICAL-SPACES
|
||||||
|
;; FINITE-TOPOLOGICAL-SPACES FINITE-TOPOLOGICAL-SPACES FINITE-TOPOLOGICAL-SPACES
|
||||||
|
|
||||||
|
(IN-PACKAGE #:cat)
|
||||||
|
|
||||||
|
(PROVIDE "finite-topological-spaces-core")
|
||||||
|
|
||||||
|
;;
|
||||||
|
;; Point reductions: beat points and weak beat points
|
||||||
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
(DEFUN DOWNBP (topogenous n list)
|
||||||
|
#| T if Xn is a down beat point of the submatrix 'list'x'list' |#
|
||||||
|
(the boolean
|
||||||
|
(let ((maximal (loop for k in (reverse (subseq list 0 (position n list)))
|
||||||
|
thereis (and (eq (terme topogenous k n) 1) k))))
|
||||||
|
|
||||||
|
(unless (or (null maximal)
|
||||||
|
(loop for i in (subseq list 0 (position n list))
|
||||||
|
thereis (not (eq (terme topogenous i maximal) (terme topogenous i n)))))
|
||||||
|
+TRUE+))))
|
||||||
|
|
||||||
|
|
||||||
|
(DEFUN UPBP (topogenous n list) ; T if Xn is an up beat point of the submatrix 'list'x'list'
|
||||||
|
(the boolean
|
||||||
|
(let ((minimal (loop for k in (subseq list (1+ (position n list)))
|
||||||
|
thereis (and (eq (terme topogenous n k) 1) k))))
|
||||||
|
(unless (or (null minimal)
|
||||||
|
(loop for i in (subseq list (1+ (position n list)))
|
||||||
|
thereis (not (eq (terme topogenous minimal i) (terme topogenous n i)))))
|
||||||
|
+TRUE+))))
|
||||||
|
|
||||||
|
|
||||||
|
(DEFUN BEATPOINT (topogenous n list) ; T if Xn is a beat point of the submatrix 'list'x'list'
|
||||||
|
(the boolean
|
||||||
|
(if (< (1+ n) (/ (ncol topogenous) 2))
|
||||||
|
(if (downbp topogenous n list)
|
||||||
|
+TRUE+
|
||||||
|
(upbp topogenous n list))
|
||||||
|
(if (upbp topogenous n list)
|
||||||
|
+TRUE+
|
||||||
|
(downbp topogenous n list)))))
|
||||||
|
|
||||||
|
|
||||||
|
(DEFUN CORE_LIST (topogenous list) ; List of the elements of the core of the submatrix 'list'x'list'
|
||||||
|
(let ((eliminar NIL))
|
||||||
|
(setf eliminar (loop for n in list
|
||||||
|
thereis (and (beatpoint topogenous n list) n)))
|
||||||
|
(if (null eliminar)
|
||||||
|
(return-from core_list list)
|
||||||
|
(core_list topogenous (remove eliminar list)))))
|
||||||
|
|
||||||
|
|
||||||
|
(DEFMACRO Un-N (topogenous n list) ; List of the elements in Un-{Xn}
|
||||||
|
`(loop for i in (subseq ,list 0 (position ,n ,list))
|
||||||
|
when (eq (terme ,topogenous i ,n) 1)
|
||||||
|
collect i))
|
||||||
|
|
||||||
|
|
||||||
|
(DEFMACRO Fn-N (topogenous n list) ; List of the elements in Fn-{Xn}
|
||||||
|
`(loop for j in (subseq ,list (1+ (position ,n ,list)))
|
||||||
|
when (eq (terme ,topogenous ,n j) 1)
|
||||||
|
collect j))
|
||||||
|
|
||||||
|
|
||||||
|
(DEFMACRO LINK_LIST (topogenous n list) ; List of the elements in the link of Xn
|
||||||
|
`(append (Un-N ,topogenea ,n ,list) (Fn-N ,topogenous ,n ,list)))
|
||||||
|
|
||||||
|
|
||||||
|
(DEFUN WEAKPOINT (topogenous n list) ; T if Xn is a weak beat point of the submatrix 'list'x'list'
|
||||||
|
(the boolean
|
||||||
|
(or (eq (length (core_list topogenous (Un-N topogenous n list))) 1)
|
||||||
|
(eq (length (core_list topogenous (Fn-N topogenous n list))) 1))))
|
||||||
|
|
||||||
|
|
||||||
|
(DEFUN WEAKCORE_LIST (topogenous list) ; List of the elements of a "weak core" of the submatrix 'list'x'list'
|
||||||
|
(let ((eliminar NIL))
|
||||||
|
(setf eliminar (loop for n in list
|
||||||
|
thereis (and (or (beatpoint topogenous n list) (weakpoint topogenous n list)) n)))
|
||||||
|
(if (null eliminar)
|
||||||
|
(return-from weakcore_list list)
|
||||||
|
(weakcore_list topogenous (remove eliminar list)))))
|
||||||
|
|
||||||
|
|
||||||
|
(DEFMETHOD CORE ((topogenous matrice) &optional list) ; Matrice of the core of 'topogenous'
|
||||||
|
(the matrice
|
||||||
|
(let* ((list2 (if list
|
||||||
|
list
|
||||||
|
(<a-b> 1 (nlig topogenous))))
|
||||||
|
(corelist (core_list topogenous list2)))
|
||||||
|
(submatrix topogenous corelist corelist))))
|
||||||
|
|
||||||
|
|
||||||
|
(DEFMETHOD CORE ((finspace finite-space) &optional list) ; Finite-Space whose 'top' is the topogenous matrix of the core of (top 'finspace')
|
||||||
|
(let ((already (find `(CORE ,finspace) *finite-space-list* :test #'equal :key #'orgn)))
|
||||||
|
(declare (type (or finite-space null) already))
|
||||||
|
(if already
|
||||||
|
already
|
||||||
|
(build-finite-space :orgn `(CORE ,finspace)
|
||||||
|
:top (core (top finspace) list)))))
|
||||||
|
|
||||||
|
|
||||||
|
(DEFMETHOD WEAKCORE ((topogenous matrice) &optional list) ; Matrice of a "weak core" of 'topogenea'
|
||||||
|
(the matrice
|
||||||
|
(let* ((list2 (if list
|
||||||
|
list
|
||||||
|
(<a-b> 1 (nlig topogenous))))
|
||||||
|
(weakcorelist (weakcore_list topogenous (core_list topogenous list2))))
|
||||||
|
(submatrix topogenous weakcorelist weakcorelist))))
|
||||||
|
|
||||||
|
|
||||||
|
(DEFMETHOD WEAKCORE ((finspace finite-space) &optional list) ; Finite-Space whose 'top' is the topogenous matrix of a "weak core" of (top 'finspace')
|
||||||
|
(let ((already (find `(WEAK-CORE ,finspace) *finite-space-list* :test #'equal :key #'orgn)))
|
||||||
|
(declare (type (or finite-space null) already))
|
||||||
|
(if already
|
||||||
|
already
|
||||||
|
(build-finite-space :orgn `(WEAK-CORE ,finspace)
|
||||||
|
:top (weakcore (top finspace) list)))))
|
||||||
|
|
||||||
|
|
||||||
BIN
src/kenzo.fas
Executable file
BIN
src/kenzo.fas
Executable file
Binary file not shown.
Loading…
Reference in New Issue
Block a user