Sistema de álgebra informática
Axiom es un sistema de álgebra computacional gratuito y de uso general . Consiste en un entorno de intérprete, un compilador y una biblioteca, que define una jerarquía fuertemente tipada .
Historia
IBM desarrolló dos sistemas de álgebra informática denominados Scratchpad . El primero fue iniciado en 1965 por James Griesmer [2] a petición de Ralph Gomory , y escrito en Fortran . [3] El desarrollo de este software se detuvo antes de cualquier lanzamiento público. El segundo Scratchpad, originalmente llamado Scratchpad II , fue desarrollado a partir de 1977, en el Centro de Investigación Thomas J. Watson , bajo la dirección de Richard Dimick Jenks. [4]
El diseño se debe principalmente a Richard D. Jenks (IBM Research), James H. Davenport (Universidad de Bath), Barry M. Trager (IBM Research), David YY Yun (Southern Methodist University) y Victor S. Miller (IBM Research). ). Los primeros consultores del proyecto fueron David Barton (Universidad de California, Berkeley) y James W. Thatcher (IBM Research). La implementación incluyó a Robert Sutor (IBM Research), Scott C. Morrison (Universidad de California, Berkeley), Christine J. Sundaresan (IBM Research), Timothy Daly (IBM Research), Patrizia Gianni (Universidad de Pisa), Albrecht Fortenbacher (Universitaet Karlsruhe). ), Stephen M. Watt (IBM Research y Universidad de Waterloo), Josh Cohen (Universidad de Yale), Michael Rothstein (Kent State University), Manuel Bronstein (IBM Research), Michael Monagan (Universidad Simon Fraser), Jonathan Steinbach (IBM Research ), William Burge (IBM Research), Jim Wen (IBM Research), William Sit (City College de Nueva York) y Clifton Williamson (IBM Research) [5]
Scratchpad II pasó a llamarse Axiom cuando IBM decidió, alrededor de 1990, convertirlo en un producto comercial. Unos años más tarde, fue vendido a NAG . En 2001, fue retirado del mercado y relanzado bajo la Licencia BSD Modificada . Desde entonces, el desarrollador principal del proyecto ha sido Tim Daly.
En 2007, Axiom se bifurcó dos veces, originando dos proyectos diferentes de código abierto : OpenAxiom [6] y FriCAS , [7] tras un "grave desacuerdo sobre los objetivos del proyecto". [8] El proyecto Axiom continuó siendo desarrollado por Tim Daly.
La dirección de investigación actual es "Demostrar que el axioma es sano", es decir, lógico, racional, juicioso y sólido.
Documentación
Axiom es un programa alfabetizado . [9] El código fuente está disponible en un conjunto de volúmenes que están disponibles en el axiom-developer.org
sitio web. Estos volúmenes contienen el código fuente real del sistema.
Los documentos actualmente disponibles son:
- Tabla de contenidos combinada
- Volumen 0: Axiom Jenks y Sutor: el libro de texto principal
- Volumen 1: Tutorial de Axiom: una introducción sencilla
- Volumen 2: Guía del usuario de Axiom: ejemplos detallados de uso del dominio (incompleto)
- Volumen 3: Guía para programadores de Axiom: ejemplos guiados de redacción de programas (incompleto)
- Volumen 4: Guía para desarrolladores de Axiom: ensayos breves sobre temas específicos para desarrolladores (incompleto)
- Volumen 5: Axiom Interpreter: código fuente para Axiom Interpreter (incompleto)
- Volumen 6: Comando Axiom: código fuente para comandos y scripts del sistema (incompleto)
- Volumen 7: Axiom Hyperdoc: código fuente y explicación del navegador de ayuda X11 Hyperdoc
- Volumen 7.1 Páginas de Axiom Hyperdoc: código fuente para páginas de Hyperdoc
- Volumen 8: Axiom Graphics: código fuente para el subsistema de gráficos X11
- Volumen 8.1 Axiom Gallery: una galería de imágenes de Axiom
- Volumen 9: Compilador Axiom: código fuente para el compilador Spad (incompleto)
- Volumen 10: Implementación de Axiom Algebra: ensayos sobre cuestiones de implementación (incompleto)
- Volumen 10.1: Teoría del álgebra de axiomas: ensayos que contienen la teoría básica
- Volumen 10.2: Categorías de Axiom Algebra: código fuente para las categorías de Axiom
- Volumen 10.3: Dominios de álgebra de Axiom: código fuente para dominios de Axiom
- Volumen 10.4: Paquetes de Axiom Algebra: código fuente para los paquetes de Axiom
- Volumen 10.5: Axiom Algebra Numerics: código fuente para Axiom Numerics
- Volumen 11: Navegador Axiom: páginas de origen para la interfaz del navegador Axiom Firefox
- Volumen 12: Axiom Crystal: código fuente para la interfaz de Axiom Crystal (incompleto)
- Volumen 13: Demostrar que el axioma es correcto: demostrar el álgebra del axioma (incompleto)
- Volumen 15: El compilador Axiom SANE
- Bibliografía: Bibliografía de Axiom: referencias literarias
- Lista de errores: Lista de errores de Axiom-Lista de errores
- Tarjeta de referencia: Tarjeta de referencia de Axiom: resumen de funciones útiles
Vídeos
El proyecto Axiom se centra principalmente en proporcionar documentación. Recientemente, el proyecto anunció el primero de una serie de vídeos instructivos, que también están disponibles en el sitio web axiom-developer.org
[10] . El primer vídeo [11] proporciona detalles sobre las fuentes de información de Axiom. [11]
Filosofía
El proyecto Axiom se centra en el “Horizonte de 30 años”. La filosofía principal es que Axiom necesita desarrollar varias características fundamentales para que sea útil para la próxima generación de matemáticos computacionales. La técnica de programación alfabetizada de Knuth se utiliza en todo el código fuente. Axiom planea utilizar tecnología de prueba para demostrar la exactitud de los algoritmos (como Coq y ACL2 ).
Axiom utiliza Docker Containers como parte de un proceso de lanzamiento continuo. La imagen más reciente está disponible en cualquier plataforma usando la ventana acoplable y los comandos:
docker pull daly/axiomadocker run -i -t daly/axiom axioma
Diseño
En Axiom, cada objeto tiene un tipo. Ejemplos de tipos son estructuras matemáticas (como anillos , campos , polinomios ), así como estructuras de datos de la informática (p. ej., listas , árboles , tablas hash ).
Una función puede tomar un tipo como argumento y su valor de retorno también puede ser un tipo. Por ejemplo, Fraction
es una función que toma IntegralDomain
como argumento y devuelve el campo de fracciones de su argumento. Como otro ejemplo, el anillo de matrices con entradas racionales se construiría como . Por supuesto, cuando se trabaja en este dominio, se interpreta como la matriz identidad y daría la inversa de la matriz , si existiera.![{\displaystyle 4\veces 4}](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
SquareMatrix(4, Fraction Integer)
1
A^-1
A
Varias operaciones pueden tener el mismo nombre, y los tipos tanto de los argumentos como del resultado se utilizan para determinar qué operación se aplica (cf. sobrecarga de funciones ).
Axiom viene con un lenguaje de extensión llamado SPAD. Todo el conocimiento matemático de Axiom está escrito en este idioma. El intérprete acepta aproximadamente el mismo idioma.
Características
Dentro del entorno del intérprete, Axiom utiliza inferencia de tipos y un algoritmo heurístico para hacer que las anotaciones de tipos explícitas sean en su mayoría innecesarias.
Cuenta con 'HyperDoc', un sistema de ayuda interactivo similar a un navegador, y puede mostrar gráficos bidimensionales y tridimensionales, además de ofrecer funciones interactivas como rotación e iluminación. También cuenta con un modo de interacción especializado para Emacs , así como un complemento para el editor TeXmacs .
HyperDoc muestra las operaciones disponibles para un dominio
Axioma que muestra una superficie
Interfaz del navegador Axiom Firefox
Axioma que simplifica una ecuación de calor.
Manipulación de la matriz de axiomas
Axioma que calcula una integral de Risch
Axiom tiene una implementación del algoritmo de Risch para integración elemental, realizada por Manuel Bronstein y Barry Trager. Si bien esta implementación puede encontrar la mayoría de las antiderivadas elementales y determinar si existen, tiene algunas ramas no implementadas y genera un error cuando se encuentran tales casos durante la integración. [12] [13]
Ver también
Referencias
- ^ "Etiquetas diarias / axiomas". Centro acoplable . Consultado el 25 de marzo de 2022 .
- ^ Fitch, John (23 de julio de 2012). "James Griesmer 1929-2011". Comunicaciones ACM en álgebra informática . 46 (1/2): 10–11. doi : 10.1145/2338496.2338499 . S2CID 36788754.
- ^ "Sistema de álgebra informática Axiom". axiom-developer.org .
- ^ "Información biográfica de Richard D. Jenks". www.eecis.udel.edu .
- ^ "EUROCAL '85 | SpringerLink". www.springer.com .
- ^ "OpenAxiom: la plataforma de computación científica abierta". www.open-axiom.org .
- ^ "FriCAS 18a5ef5d99c796a89efeac06df40043a85b3d44d - FriCAS". fricas.github.io .
- ^ "Historia - FriCAS". fricas.github.io .
- ^ ¿Por qué programar alfabetizado? en el sitio web axiom-developer.org
- ^ "Sistema de álgebra informática Axiom". www.axiom-developer.org .
- ^ ab "Fuentes de información del sistema de álgebra informática Axiom". YouTube . 30 de noviembre de 2008.
- ^ Bronstein, Manuel (5 de septiembre de 2003). "Manuel Bronstein sobre las capacidades de integración de Axiom". grupos.google.com . Consultado el 10 de febrero de 2023 .
- ^ "integración: ¿Existe una implementación completa del algoritmo de Risch?". Desbordamiento matemático . 15 de octubre de 2020 . Consultado el 10 de febrero de 2023 .
Otras lecturas
- James H. Griesmer; Richard D. Jenks (1971). "SCRATCHPAD / 1: Una instalación interactiva para matemáticas simbólicas | Actas del segundo simposio ACM sobre manipulación simbólica y algebraica (SYMSAC '71)": 42–58.
- Richard D. Jenks (1971). META/PLUS: la función de extensión de sintaxis para SCRATCHPAD (informe de investigación). Centro de investigación IBM Thomas J. Watson . RC 3259.
- James H. Griesmer; Richard D. Jenks (1972). "Experiencia con un sistema matemático simbólico online | Actas de la Conferencia ONLINE72". 1 . Universidad Brunel : 457–476.
- James H. Griesmer; Richard D. Jenks (1972). "Bloc de notas". Avisos ACM SIGPLAN . 7 (10): 93-102. doi :10.1145/942576.807019.
- Richard D. Jenks (1974). "El lenguaje SCRATCHPAD". Boletín ACM SIGSAM . 8 (2): 20–30. doi :10.1145/1086830.1086834. S2CID 14537956.
- Arthur C. Norman (1975). "Computación con series de potencias formales". Transacciones ACM sobre software matemático . 1 (4): 346–356. doi :10.1145/355656.355660. ISSN 0098-3500. S2CID 18321863.
- Richard D. Jenks (1976). "Un compilador de patrones | Actas del tercer simposio de ACM sobre manipulación simbólica y algebraica (SYMSAC '76)": 60–65.
- E. Lueken (1977). Ueberlegungen zur Implementierung eines Formelmanipulationssystems (tesis de maestría) (en alemán). Alemania: Technischen Universitat Carolo-Wilhelmina zu Braunschweig .
- George E. Andrews (1984). "Ramanujan y SCRATCHPAD | Actas de la conferencia de usuarios de MACSYMA de 1984 ". Schenectady: General Electric : 383–408.
- James H. Davenport; P. Gianni; Richard D. Jenks; V. Molinero; Scott Morrison; M. Rothstein; C. Sundaresan; Robert S. Sutor; Barry Trager (1984). "Bloc de notas". Departamento de Ciencias Matemáticas, Centro de Investigación IBM Thomas J. Watson .
- Richard D. Jenks (1984). "El nuevo lenguaje y sistema SCRATCHPAD para álgebra informática". Actas de la Conferencia de usuarios de MACSYMA de 1984 : 409–416.
- Richard D. Jenks (1984). "Introducción: 11 claves para el nuevo Scratchpad | Actas del Simposio internacional sobre computación simbólica y algebraica '84". Saltador: 123–147.
- Robert S. Sutor (1985). "El sistema y lenguaje de álgebra informática Scratchpad II | Actas del Simposio internacional sobre computación simbólica y algebraica '85". Saltador: 32–33.
- Rüdiger Gebauer; H. Michael Möller (1986). Algoritmo de Buchberger y bases lineales al tresbolillo | Actas del quinto simposio ACM sobre computación simbólica y algebraica (Simposio internacional sobre computación simbólica y algebraica '86) . ACM. págs. 218-221. ISBN 978-0-89791-199-3.
- Richard D. Jenks; Robert S. Sutor; Stephen M. Watt (1986). Scratchpad II: un sistema de tipos de datos abstractos para cálculo matemático (informe de investigación). Centro de investigación IBM Thomas J. Watson . RC 12327.
- Michael suerte; Bruce W. Char (1986). Una implementación rápida de la factorización polinómica | Actas de SYMSAC '86 . ACM. págs. 228-232. ISBN 978-0-89791-199-3.
- J. Purtilo (1986). Aplicaciones de un sistema de interconexión de software en entornos de resolución de problemas matemáticos | Actas de SYMSAC '86 . ACM. págs. 16-23. ISBN 978-0-89791-199-3.
- William H. Burge; Stephen M. Watt (1987). Estructura infinita en SCRATCHPAD II (Informe de investigación). Centro de investigación IBM Thomas J. Watson . RC 12794.
- Pascale Sénéchaud; Françoise Siebert; Gilles Villard (1987). Scratchpad II: Presentación de un nuevo lenguaje de cálculo formal . TIM (Informe de investigación) (en francés). IMAG, Instituto Tecnológico de Grenoble . 640-M.
- Robert S. Sutor; Richard D. Jenks (1987). "Las facilidades de inferencia de tipos y coerción en el intérprete scratchpad II". Ponencias del Simposio sobre Intérpretes y técnicas interpretativas - SIGPLAN '87 . págs. 56–63. doi :10.1145/29650.29656. ISBN 978-0-89791-235-8. S2CID 17700911.
- George E. Andrews (1988). R. Janssen (ed.). Aplicación de SCRATCHPAD a problemas de funciones especiales y combinatoria | Tendencias en álgebra informática . Apuntes de conferencias sobre informática . Saltador. págs. 159-166.
- James H. Davenport; Yvon Siret; Evelyne Tournier (1993) [1988]. Álgebra informática: sistemas y algoritmos para la computación algebraica . Prensa académica . ISBN 978-0122042300.
- Rüdiger Gebauer; H. Michael Möller (1988). "Sobre una instalación del algoritmo de Buchberger". Revista de Computación Simbólica . 6 (2–3): 275–286. doi : 10.1016/s0747-7171(88)80048-8 . ISSN 0747-7171.
- Fritz Schwarz (1988). R. Janssen (ed.). Programación con tipos de datos abstractos: el paquete de simetría (SPDE) en Scratchpad | Tendencias en álgebra informática . Apuntes de conferencias sobre informática. Saltador. págs. 167-176.
- David Shannon; Moss Sweedler (1988). "Utilizando las bases de Gröbner para determinar la pertenencia al álgebra, los homomorfismos de álgebra sobreyectiva dividida determinan la equivalencia biracional". Revista de Computación Simbólica . 6 (2–3): 267–273. doi : 10.1016/s0747-7171(88)80047-6 .
- Hans-J. Böhm (1989). "Inferencia de tipos en presencia de abstracción de tipos". Avisos ACM SIGPLAN . 24 (7): 192–206. doi : 10.1145/74818.74835.
- Manuel Bronstein (1989). "Simplificación de funciones elementales reales | Actas del Simposio Internacional sobre Computación Simbólica y Algebraica (SIGSAM '89)". ACC: 207–211.
- Claire Decrescenzo; Dominique Duval (1989). P. Gianni (ed.). "Extensiones algebraicas y cierre algebraico en Scratchpad II | Computación simbólica y algebraica". Saltador: 440–446.
- Timothy Daly "Axioma: Treinta años de Lisp"
- Charla invitada de Timothy Daly "Axiom", Conferencia sobre software libre, Lyon, Francia, mayo de 2002
- Charla invitada de Timothy Daly "Axiom", reunión sobre software libre, Metz, Francia, 9 al 12 de julio de 2003
enlaces externos
Medios relacionados con Axiom (software de álgebra informática) en Wikimedia Commons
- Página de inicio de Axioma
- Sandbox en línea para probar Axiom
- Repositorios de código fuente: Github, SourceForge, GNU Savannah
- Jenks, RD y Sutor, R. "Axioma, el sistema de computación científica"
- Daly, T. "Axiom Volumen 1: Tutorial"
Bifurcaciones de software:
- OpenAxiom (FuenteForge)
- FriCAS (FuenteForge)