Axiom (bilgisayarlı cebir sistemi)
Geliştirici(ler) | Bağımsız insan grubu |
---|---|
Güncel sürüm | Son Docker sürümü / 13 Kasım 2015 )[1] |
Önizleme sürümü | Sourceforge master / 6 Şubat 2022 | )
Programlama dili | Lisp |
İşletim sistemi | Çapraz platform |
Tür | Bilgisayarlı cebir sistemi |
Lisans | Değiştirilmiş BSD Lisansı |
Resmî sitesi | axiom-developer.org |
Kod deposu | sourceforge.net/p/axiom/code/ |
Axiom, özgür, genel amaçlı bir bilgisayarlı cebir sistemidir. Bir yorumlayıcı ortamı, bir derleyici ve güçlü tipleme hiyerarşisi tanımlayan bir kütüphaneden oluşur.
Tarihçe
[değiştir | kaynağı değiştir]Scratchpad adlı iki bilgisayar cebir sistemi IBM tarafından geliştirilmiştir. İlki 1965 yılında James Griesmer[2] tarafından Ralph Gomory'nin isteği üzerine başlatılmış ve Fortran dilinde yazılmıştır.[3] Bu yazılımın geliştirilmesi herhangi bir halka açık sürümden önce durdurulmuştur. Orijinal adı Scratchpad II olan ikinci Scratchpad, 1977'den itibaren Richard Dimick Jenks yönetiminde Thomas J. Watson Araştırma Merkezi'nde geliştirildi.[4]
Tasarım esas olarak Richard D. Jenks (IBM Research), James H. Davenport (Bath Üniversitesi), Barry M. Trager (IBM Research), David Y.Y. Yun (Southern Methodist University) ve Victor S. Miller'a (IBM Research) aittir. Projenin ilk danışmanları David Barton (University of California, Berkeley) ve James W. Thatcher (IBM Research) idi. Uygulamada Robert Sutor (IBM Research), Scott C. Morrison (University of California, Berkeley), Christine J. Sundaresan (IBM Research), Timothy Daly (IBM Research), Patrizia Gianni (Pisa Üniversitesi), Albrecht Fortenbacher (Universitaet Karlsruhe), Stephen M. Watt (IBM Research ve Waterloo Üniversitesi), Josh Cohen (Yale Üniversitesi), Michael Rothstein (Kent State University), Manuel Bronstein (IBM Research), Michael Monagan (Simon Fraser Üniversitesi), Jonathan Steinbach (IBM Research), William Burge (IBM Research), Jim Wen (IBM Research), William Sit (City College of New York) ve Clifton Williamson (IBM Research)[5]
Scratchpad II, IBM 1990 civarında ticari bir ürün haline getirmeye karar verdiğinde Axiom olarak yeniden adlandırıldı. Birkaç yıl sonra NAG'a satıldı. 2001 yılında piyasadan çekildi ve Değiştirilmiş BSD Lisansı altında yeniden yayımlandı. O zamandan beri projenin baş geliştiricisi Tim Daly'dir.
2007 yılında, "proje hedefleri konusunda ciddi anlaşmazlık" sonrasında Axiom iki kez çatallandı[6] ve iki farklı açık kaynaklı proje ortaya çıktı: OpenAxiom[7] ve FriCAS.[8] Axiom projesi Tim Daly tarafından geliştirilmeye devam etti.
Belgelendirme
[değiştir | kaynağı değiştir]Axiom, bir kolay anlaşılır programdır.[9] Kaynak kodu, axiom-developer.org
web sitesinde bulunan bir dizi cilt halinde kullanıma sunulmaktadır. Bu ciltler sistemin gerçek kaynak kodunu içermektedir.
Halihazırda mevcut olan belgeler şunlardır:
- İçindekiler: Combined Table of Contents
- Cilt 0: Axiom Jenks and Sutor — Ana ders kitabı
- Cilt 1: Axiom Tutorial — Basit bir giriş
- Cilt 2: Axiom Users Guide — Etki alanı (domain) kullanımına ilişkin ayrıntılı örnekler (tamamlanmamış)
- Cilt 3: Axiom Programmers Guide — Yönlendirmeli program yazma örnekleri (tamamlanmamış)
- Cilt 4: Axiom Developers Guide — Geliştiricilere özgü konular üzerine kısa makaleler (tamamlanmamış)
- Cilt 5: Axiom Interpreter — Axiom yorumlayıcısı için kaynak kodu (tamamlanmamış)
- Cilt 6: Axiom Command — Sistem komutları ve betik dosyaları için kaynak kodu (tamamlanmamış)
- Cilt 7: Axiom Hyperdoc — X11 Hyperdoc yardım tarayıcısının kaynak kodu ve açıklaması
- Cilt 7.1 Axiom Hyperdoc Pages — Hyperdoc sayfaları için kaynak kodu
- Cilt 8: Axiom Graphics — X11 Grafik alt sistemi için kaynak kodu
- Cilt 8.1 Axiom Gallery — Axiom resimlerinden oluşan bir galeri
- Cilt 9: Axiom Compiler — Spad derleyicisi için kaynak kodu (tamamlanmamış)
- Cilt 10: Axiom Algebra Implementation — Uygulama sorunları üzerine makaleler (tamamlanmamış)
- Cilt 10.1: Axiom Algebra Theory — Arka plan teorisi içeren makaleler
- Cilt 10.2: Axiom Algebra Categories — Axiom kategorileri için kaynak kodu
- Cilt 10.3: Axiom Algebra Domains — Axiom etki alanları (domain) için kaynak kodu
- Cilt 10.4: Axiom Algebra Packages — Axiom paketleri için kaynak kodu
- Cilt 10.5: Axiom Algebra Numerics — Axiom numerikleri için kaynak kodu
- Cilt 11: Axiom Browser — Axiom Firefox tarayıcı ön yüzü için kaynak sayfalar
- Cilt 12: Axiom Crystal — Axiom Crystal ön yüzü için kaynak kodu (tamamlanmamış)
- Cilt 13: Proving Axiom Correct — Axiom Cebri kanıtı (tamamlanmamış)
- Cilt 15: The Axiom SANE Compiler
- Bibliyografya: Axiom Bibliography —Literatür referansları
- Bug Listesi: Axiom Bug List — Yazılım hata Listesi
- Referans Kartı: Axiom Reference Card — Yararlı fonksiyonlar özeti
Videolar
[değiştir | kaynağı değiştir]Axiom projesi dokümantasyon sağlamaya büyük önem vermektedir. Kısa bir süre önce proje, axiom-developer.org
web sitesinde[10] de bulunan bir dizi eğitici videonun ilkini duyurdu. İlk video Axiom bilgi kaynakları hakkında ayrıntılı bilgi vermektedir.[11]
Felsefe
[değiştir | kaynağı değiştir]Axiom projesi, "30 Yıllık Ufuk (30 Year Horizon)" üzerine odaklanmaktadır. Temel felsefe, Axiom'un yeni nesil hesaplamalı matematikçiler için yararlı olabilmesi için birkaç temel özellik geliştirmesi gerektiğidir. Knuth'un kolay anlaşılır programlama tekniği kaynak kodu boyunca kullanılmaktadır. Axiom, algoritmaların doğruluğunu kanıtlamak için kanıt teknolojisini kullanmayı planlamaktadır (Coq ve ACL2 gibi).
Axiom, sürekli sürüm sürecinin bir parçası olarak Docker konteynerler kullanır. En son görüntü, docker ve komutlar kullanılarak herhangi bir platformda kullanılabilir:
docker pull daly/axiom
docker run -i -t daly/axiom axiom
Tasarım
[değiştir | kaynağı değiştir]Axiom'da her nesne bir türe sahiptir. Türlere örnek olarak matematiksel yapılar (örneğin halkalar, cisimler, polinomlar) ve bilgisayar bilimlerindeki veri yapıları (örneğin listeler, ağaçlar, özet tabloları) verilebilir.
Bir fonksiyon, argüman olarak bir tür alabilir ve geri dönüş değeri de bir tür olabilir. Örneğin, Fraction
argüman olarak bir IntegralDomain
alan ve argümanının kesirler alanını döndüren bir fonksiyondur. Başka bir örnek olarak, rasyonel girdileri olan matrislerinin halkası SquareMatrix(4, Fraction Integer)
olarak oluşturulabilir. Elbette, bu alanda çalışırken, 1
kimlik matrisi olarak yorumlanır ve A^-1
, eğer varsa, A
matrisinin tersini verir.
Birkaç işlem aynı isme sahip olabilir ve hem argümanların hem de sonucun türleri hangi işlemin uygulanacağını belirlemek için kullanılır (bkz. fonksiyon aşırı yükleme).
Axiom, SPAD adı verilen bir uzantı dili ile birlikte gelir. Axiom'un tüm matematiksel bilgisi bu dilde yazılır. Yorumlayıcı kabaca aynı dili kabul eder.
Özellikler
[değiştir | kaynağı değiştir]Yorumlayıcı ortamında Axiom, tip kalıtımı ve sezgisel bir algoritma kullanarak açık tip ek açıklamalarını çoğunlukla gereksiz hale getirir.
Etkileşimli tarayıcı benzeri bir yardım sistemi olan 'HyperDoc' özelliğine sahiptir ve iki ve üç boyutlu grafikleri görüntüleyebilir, ayrıca döndürme ve aydınlatma gibi etkileşimli özellikler sağlar. Ayrıca Emacs için özel bir etkileşim modunun yanı sıra TeXmacs editörü için bir eklentiye sahiptir.
-
Bir etki alanı (domain) için kullanılabilir işlemleri görüntüleyen HyperDoc
-
Axiom Firefox Taryıcı Arayüzü
-
Bir ısı denklemini sadeleştiren Axiom
-
Axiom matris manipülasyonu
-
Bir Risch integralini hesaplayan Axiom
Axiom, Manuel Bronstein ve Barry Trager tarafından yapılan temel integral fonksiyonu için Risch algoritmasının bir uygulamasına sahiptir. Bu uygulama çoğu temel ters-türevi ve var olup olmadıklarını bulabilirken, bazı uygulanmamış dallara sahiptir ve integral alma sırasında bu tür durumlarla karşılaşıldığında bir hata verir.[12][13]
Ayrıca bakınız
[değiştir | kaynağı değiştir]Kaynakça
[değiştir | kaynağı değiştir]- ^ "daly/axiom Tags". Docker Hub. 3 Temmuz 2022 tarihinde kaynağından arşivlendi. Erişim tarihi: 25 Mart 2022.
- ^ Fitch, John (23 Temmuz 2012). "James Griesmer 1929--2011". ACM Communications in Computer Algebra. 46 (1/2): 10-11. doi:10.1145/2338496.2338499 .
- ^ "Axiom Computer Algebra System". axiom-developer.org. 18 Ağustos 2004 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Ekim 2023.
- ^ "Richard D. Jenks Biographical Information". www.eecis.udel.edu. 25 Haziran 2022 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Ekim 2023.
- ^ "EUROCAL '85 | SpringerLink". www.springer.com.
- ^ "History — FriCAS". fricas.github.io. 24 Mayıs 2023 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Ekim 2023.
- ^ "OpenAxiom: The Open Scientific Computation Platform". www.open-axiom.org. 12 Nisan 2023 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Ekim 2023.
- ^ "FriCAS 18a5ef5d99c796a89efeac06df40043a85b3d44d — FriCAS". fricas.github.io. 13 Eylül 2023 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Ekim 2023.
- ^ Why Literate Programming? 30 Ocak 2009 tarihinde Wayback Machine sitesinde arşivlendi. at axiom-developer.org website 18 Ağustos 2004 tarihinde Wayback Machine sitesinde arşivlendi.
- ^ "Axiom Computer Algebra System". www.axiom-developer.org. 8 Ekim 2023 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Ekim 2023.
- ^ "Axiom Computer Algebra System Information Sources". YouTube. 30 Kasım 2008. 29 Mart 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Ekim 2023.
- ^ Bronstein, Manuel (5 Eylül 2003). "Manuel Bronstein on Axiom's Integration Capabilities". groups.google.com. 10 Şubat 2023 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Şubat 2023.
- ^ "integration - Does there exist a complete implementation of the Risch algorithm?". MathOverflow (İngilizce). 15 Ekim 2020. 21 Ağustos 2023 tarihinde kaynağından arşivlendi. Erişim tarihi: 10 Şubat 2023.
Konuyla ilgili okumalar
[değiştir | kaynağı değiştir]- James H. Griesmer; Richard D. Jenks (1971). "SCRATCHPAD/1: An interactive facility for symbolic mathematics | Proceedings of the second ACM symposium on Symbolic and algebraic manipulation (SYMSAC '71)": 42-58.
- Richard D. Jenks (1971). META/PLUS - The Syntax Extension Facility for SCRATCHPAD (Research report). IBM Thomas J. Watson Research Center. RC 3259.
- James H. Griesmer; Richard D. Jenks (1972). "Experience with an online symbolic mathematics system | Proceedings of the ONLINE72 Conference". 1. Brunel University: 457-476.
- James H. Griesmer; Richard D. Jenks (1972). "Scratchpad". ACM SIGPLAN Notices. 7 (10): 93-102. doi:10.1145/942576.807019.
- Richard D. Jenks (1974). "The SCRATCHPAD language". ACM SIGSAM Bulletin. 8 (2): 20-30. doi:10.1145/1086830.1086834.
- Arthur C. Norman (1975). "Computing with Formal Power Series". ACM Transactions on Mathematical Software. 1 (4): 346-356. doi:10.1145/355656.355660. ISSN 0098-3500.
- Richard D. Jenks (1976). "A pattern compiler | Proceedings of the third ACM symposium on Symbolic and algebraic manipulation (SYMSAC '76)": 60-65.
- E. Lueken (1977). Ueberlegungen zur Implementierung eines Formelmanipulationssystems (Masters thesis) (Almanca). Germany: Technischen Universitat Carolo-Wilhelmina zu Braunschweig.
- George E. Andrews (1984). "MACSYMA". Schenectady: General Electric: 383-408.
- James H. Davenport; P. Gianni; Richard D. Jenks; V. Miller; Scott Morrison; M. Rothstein; C. Sundaresan; Robert S. Sutor; Barry Trager (1984). "Scratchpad". Mathematical Sciences Department, IBM Thomas J. Watson Research Center.
- Richard D. Jenks (1984). "The New SCRATCHPAD Language and System for Computer Algebra". Proceedings of the 1984 MACSYMA Users' Conference: 409-416.
- Richard D. Jenks (1984). "A primer: 11 keys to New Scratchpad | Proceedings of International Symposium on Symbolic and Algebraic Computation '84". Springer: 123-147.
- Robert S. Sutor (1985). "The Scratchpad II Computer Algebra Language and System | Proceedings of International Symposium on Symbolic and Algebraic Computation '85". Springer: 32-33.
- Rüdiger Gebauer; H. Michael Möller (1986). Buchberger's algorithm and staggered linear bases | Proceedings of the fifth ACM symposium on Symbolic and algebraic computation (International Symposium on Symbolic and Algebraic Computation '86). ACM. ss. 218-221. ISBN 978-0-89791-199-3.
- Richard D. Jenks; Robert S. Sutor; Stephen M. Watt (1986). Scratchpad II: an abstract datatype system for mathematical computation (Research report). IBM Thomas J. Watson Research Center. RC 12327.
- Michael Lucks; Bruce W. Char (1986). A fast implementation of polynomial factorization | Proceedings of SYMSAC '86. ACM. ss. 228-232. ISBN 978-0-89791-199-3.
- J. Purtilo (1986). Applications of a software interconnection system in mathematical problem solving environments | Proceedings of SYMSAC '86. ACM. ss. 16-23. ISBN 978-0-89791-199-3.
- William H. Burge; Stephen M. Watt (1987). Infinite Structure in SCRATCHPAD II (Research report). IBM Thomas J. Watson Research Center. RC 12794.
- Pascale Sénéchaud; Françoise Siebert; Gilles Villard (1987). Scratchpad II: Présentation d'un nouveau langage de calcul formel. TIM (Research report) (Fransızca). IMAG, Grenoble Institute of Technology. 640-M.
- Robert S. Sutor; Richard D. Jenks (1987). "The type inference and coercion facilities in the scratchpad II interpreter". Papers of the Symposium on Interpreters and interpretive techniques - SIGPLAN '87. ss. 56-63. doi:10.1145/29650.29656. ISBN 978-0-89791-235-8.
- George E. Andrews (1988). R. Janssen (Ed.). Application of SCRATCHPAD to problems in special functions and combinatorics | Trends in Computer Algebra. Lecture Notes in Computer Science. Springer. ss. 159-166.
- James H. Davenport; Yvon Siret; Evelyne Tournier (1993) [1988]. Computer Algebra: Systems and Algorithms for Algebraic Computation. Academic Press. ISBN 978-0122042300.
- Rüdiger Gebauer; H. Michael Möller (1988). "On an installation of Buchberger's algorithm". Journal of Symbolic Computation. 6 (2–3): 275-286. doi:10.1016/s0747-7171(88)80048-8 . ISSN 0747-7171.
- Fritz Schwarz (1988). R. Janssen (Ed.). Programming with abstract data types: the symmetry package (SPDE) in Scratchpad | Trends in Computer Algebra. Lecture Notes in Computer Science. Springer. ss. 167-176.
- David Shannon; Moss Sweedler (1988). "Using Gröbner bases to determine algebra membership, split surjective algebra homomorphisms determine birational equivalence". Journal of Symbolic Computation. 6 (2–3): 267-273. doi:10.1016/s0747-7171(88)80047-6 .
- Hans-J. Boehm (1989). "Type inference in the presence of type abstraction". ACM SIGPLAN Notices. 24 (7): 192-206. doi:10.1145/74818.74835.
- Manuel Bronstein (1989). "Simplification of real elementary functions | Proceedings of the International Symposium on Symbolic and Algebraic Computation (SIGSAM '89)". ACM: 207-211.
- Claire Dicrescenzo; Dominique Duval (1989). P. Gianni (Ed.). "Algebraic extensions and algebraic closure in Scratchpad II | Symbolic and Algebraic Computation". Springer: 440-446.
- Timothy Daly "Axiom -- Thirty Years of Lisp"
- Timothy Daly "Axiom" Invited Talk, Free Software Conference, Lyon, France, May, 2002
- Timothy Daly "Axiom" Invited Talk, Libre Software Meeting, Metz, France, July 9–12, 2003
Dış bağlantılar
[değiştir | kaynağı değiştir]Wikimedia Commons'ta Axiom (computer algebra software) ile ilgili çoklu ortam belgeleri bulunur
- Axiom Homepage
- Online sandbox to try Axiom
- Source code repositories: Github, SourceForge, GNU Savannah
- Jenks, R.D. and Sutor, R. "Axiom, The Scientific Computation System"
- Daly, T. "Axiom Volume 1: Tutorial"
Yazılım çatallanmaları:
- OpenAxiom (SourceForge'da OpenAxiom)
- FriCAS (SourceForge'da FriCAS)