唠唠闲话

计算机代数系统(computer algebra system,or CAS in short) 泛指一类支持符号运算的软件,这类软件能以类似数学家传统推演的方式,对数学表示式进行操作,常用软件包括 Maxima, Magma, Maple, Mathematica, SageMath 等,本篇要介绍的是基于 Julia 的 OSCAR 项目。选择 Julia 做代数编程,除去最令人眼馋的性能不说,其代码风格比起其他语言也更简洁。

关于 OSCAR

OSCAR 全称为 Open Source Computer Algebra Research system,是一个新的计算机代数系统,它结合了四个基石系统的功能:GAP、Polymake、Antic(Algebraic Number Theory In C) 和 Singular,附:官网地址

以下是 OSCAR 项目的官方存储库列表:

存储库名称 简介 开源协议
AbstractAlgebra.jl 通用抽象代数和抽象类型定义 Simplified “2-clause” BSD License
GAP.jl GAP 4 到 Julia 双向接口 LGPL-3.0 License
GroebnerBasis.jl Christian Eder 的 Groebner 基础项目 GNU Public License, Version 2.0+
Hecke.jl 代数数论 BSD-2-Clause License
HomalgProject.jl Julia 的 homalg 项目兼容性包 LGPL-3.0 License
Nemo.jl Flint/Arb/Antic C 库的包装器 BSD, GPL
Oscar.jl OSCAR Julia 界面 GNU Public License, Version 3.0+:
Polymake.jl Polymake 界面 Lesser GNU Public License, Version 2.1+
Singular.jl Singular 的接口 GNU Public License, Version 3.0+
JuLie 李代数理论和伴随的组合学问题 GPL-3.0 License

相关 Julia 库

  1. GAP.jl 是计算机代数系统 GAP4 的 Julia 接口,它提供两个系统之间低级数据(整数、布尔值、字符串、数组/列表、字典/记录)的转换,文档链接

  2. Singular.jl 是计算机代数系统 Singular 的 Julia 接口,文档链接

  3. GroebnerBasis.jl 是提供 Singulargb 交互接口的 Julia 库,用于 Groebner Basis 计算,目前已合并到 Oscar.jl 中。

  4. Polymake.jl 是用于调用多面体几何软件 polymake 的 Julia 软件包,文档链接

  5. HomalgProject.jl 是用于简化访问 homalg 的 Julia 库,这里 homalg 是用 GAP 编写的用于同调代数的开源项目。

  6. Nemo.jl 是 Julia 编程语言的计算机代数包,由 William Hart、Tommy Hofmann、Claus Fieker、Fredrik Johansson 维护,旨在涵盖交换代数、数论和群论,官网链接

  7. Hecke.jl 是由 Claus Fieker、Carlo Sircana 和 Tommy Hofmann 维护的代数数论软件包,它由 Julia 语言编写,基于计算机代数包 Nemo.jl 。支持的代数对象包括:交换群,经典域论和结合代数等,文档链接

  8. AbstractAlgebra.jl 是用于计算抽象代数的纯 Julia 包。它源于 Nemo 项目,并提供了 Nemo 所依赖的所有抽象类型和通用实现,文档链接

  9. OSCAR.jl 将在 TRR 195 中开发的四个计算机代数系统 GAP、polymake、 Singular 和 Antic(Hecke,Nemo) 集成到一个有远见的下一代开源计算机代数系统中,超越了底层系统的综合数学能力。OSCAR 允许用户通过组合来自任何基石的现有构建块来有效地构建新的数学对象,并以透明的方式为这些对象配备超过单个系统的数学能力。

Julia 作为一个集成层,允许四个基石以比单向接口更直接的方式进行通信。此外,它还用作高级语言,用于实现利用所有基石的高效算法。

JuLie

JuLie 是个人最感兴趣的项目,也是本篇要整理和介绍的内容。

  1. JuLie.jl 是处在初期阶段的 Julia 包,其旨在为表示理论的相关问题提供数学上合理的结构和快速算法,尤其是李代数理论和伴随的组合学问题文档链接。“这些领域很大,而这个包仍然很小——我希望它会随着时间的推移而增长。贡献是必要的,非常受欢迎!”

  2. 相关工作者

    人物 学校 链接 1 链接 2
    Max Horn TU Kaiserslautern 个人主页 GitHub 主页
    Ulrich Thiel TU Kaiserslautern 个人主页 GitHub 主页

JuLie 学习笔记

如何贡献

documentation, tests