1 | ;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: Grobner; Base: 10 -*-
|
---|
2 | #|
|
---|
3 | $Id: modular-poly.lisp,v 1.2 2009/01/22 04:04:10 marek Exp $
|
---|
4 | *--------------------------------------------------------------------------*
|
---|
5 | | Copyright (C) 1994, Marek Rychlik (e-mail: rychlik@math.arizona.edu) |
|
---|
6 | | Department of Mathematics, University of Arizona, Tucson, AZ 85721 |
|
---|
7 | | |
|
---|
8 | | Everyone is permitted to copy, distribute and modify the code in this |
|
---|
9 | | directory, as long as this copyright note is preserved verbatim. |
|
---|
10 | *--------------------------------------------------------------------------*
|
---|
11 | |#
|
---|
12 |
|
---|
13 | (defpackage "MODULAR-POLY"
|
---|
14 | (:export modular-trace modular-trace-1)
|
---|
15 | (:use "MODULAR" "POLY" "COMMON-LISP"))
|
---|
16 |
|
---|
17 | (in-package "MODULAR-POLY")
|
---|
18 |
|
---|
19 | #+debug(proclaim '(optimize (speed 0) (debug 3)))
|
---|
20 | #-debug(proclaim '(optimize (speed 3) (debug 0)))
|
---|
21 |
|
---|
22 | (defun modular-trace (plist modulus)
|
---|
23 | "Return PLIST with coefficients reduced modulo prime MODULUS."
|
---|
24 | (mapcar #'(lambda (p) (modular-trace-1 p modulus)) plist))
|
---|
25 |
|
---|
26 | (defun modular-trace-1 (p modulus)
|
---|
27 | "Return a polynomial P with coefficients reduced modulo prime MODULUS."
|
---|
28 | (mapcar
|
---|
29 | #'(lambda (term) (cons (car term) (mod (cdr term) modulus)))
|
---|
30 | p))
|
---|
31 |
|
---|
32 | (defun frobenius-kernel (n modulus)
|
---|
33 | "Return a list of N polynomials of the form XI**MODULUS-XI, where
|
---|
34 | XI is the I-th variable. Work in internal alist representation."
|
---|
35 | (let* ((zero (make-list n :initial-element 0))
|
---|
36 | (plist (make-list n :initial-element (list (cons zero 1) (cons zero (- modulus 1))))))
|
---|
37 | (dotimes (i n plist)
|
---|
38 | (setf (elt plist i) (copy-tree (elt plist i))
|
---|
39 | (elt (caar (elt plist i)) i) modulus
|
---|
40 | (elt (caadr (elt plist i)) i) 1))))
|
---|
41 |
|
---|