;;; -*- Mode: Lisp; Package: Maxima; Syntax: Common-Lisp; Base: 10 -*- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; Copyright (C) 1999, 2002, 2009, 2015 Marek Rychlik ;;; ;;; This program is free software; you can redistribute it and/or modify ;;; it under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 2 of the License, or ;;; (at your option) any later version. ;;; ;;; This program is distributed in the hope that it will be useful, ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with this program; if not, write to the Free Software ;;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defpackage "NGROBNER" (:use :cl :ring :monomial :order :term :polynomial :grobner-debug :division :buchberger :gebauer-moeller :gb-postprocessing :ideal :utils :grobner-wrap) (:export ;; ;; Global switches valid at maxima level ;; "$LEX" "$GRLEX" "$GREVLEX" "$INVLEX" ;names of monomial order "$RING_OF_INTEGERS" ;names of rings "$POLY_ELIMINATION_ORDER" "$POLY_MONOMIAL_ORDER" "$POLY_MONOMIAL_ORDER" "$POLY_PRIMARY_ELIMINATION_ORDER" "$POLY_PRIMARY_ELIMINATION_ORDER" "$POLY_SECONDARY_ELIMINATION_ORDER" "$POLY_RETURN_TERM_LIST" "$POLY_COEFFICIENT_RING" "$POLY_GROBNER_DEBUG" ;debugging switch ;; ;; Global variables ;; "*EXPRESSION-RING*" "*ELIMINATION-ORDER*" "*MONOMIAL-ORDER*" "*PRIMARY-ELIMINATION-ORDER*" "*SECONDARY-ELIMINATION-ORDER*" "*RATDISREP-FUN*" ;; ;; Polynomial ring operations ;; "POLY-ADD" "POLY-SUB" "POLY-UMINUS" "POLY-MUL" "POLY-EXPT" "POLY-ZEROP" "POLY-LM" "POLY-LT" "POLY-PSEUDO-DIVIDE" "POLY-NORMALIZE" "POLY-NORMALIZE-LIST" ;; ;; High-level Groebner Basis related functions ;; "FIND-ORDER" "FIND-RING" "NORMAL-FORM" "POLY-EXACT-DIVIDE" "COLON-IDEAL" "ELIMINATION-IDEAL" "GROBNER" "REDUCED-GROBNER" "MINIMIZATION" "REDUCTION" "POLY-LCM" "GROBNER-EQUAL" "GROBNER-MEMBER" "GROBNER-SUBSETP" "IDEAL-INTERSECTION" "IDEAL-POLYSATURATION" "IDEAL-POLYSATURATION-1" "IDEAL-SATURATION" "IDEAL-SATURATION-1" ;; ;; Low-level functions ;; "COERCE-COEFF" "MAKE-POLY-FROM-TERMLIST" "MAKE-POLY-ZERO" "MAKE-RING" "MAKE-TERM" "MAKE-VARIABLE" "MONOM-EXPONENTS" "POLY-CONTENT" "POLY-DEPENDS-P" "POLY-PRIMITIVE-PART" "POLYSATURATION-EXTENSION" "POLY-TERMLIST" "RING-UNIT" "SATURATION-EXTENSION" "SPOLY" "$POLY_ELIMINATION_ORDER" "TERM-COEFF" "TERM-MONOM" "MAKELIST-1" "MAKELIST" "MAKE-MONOM" "LEX>" "GRLEX>" "GREVLEX>" "REVLEX>" "INVLEX>" "ELIMINATION-ORDER" "ELIMINATION-ORDER-1" "*PRIMARY-ELIMINATION-ORDER*" "*SECONDARY-ELIMINATION-ORDER*" "*ELIMINATION-ORDER*" )) (in-package :ngrobner) (defun compile-ngrobner () "Compile/load NGROBNER package files without ASDF. The order of files is important!" (dolist (file '("ngrobner-package" "utils" "ngrobner" "monomial" "order" "term" "termlist" "polynomial" "priority-queue" "pair-queue" "division" "criterion" "buchberger" "gebauer-moeller" "gb-postprocessing" "ideal")) (compile-file file :verbose t :print t)))