当前位置: 首页 > 新闻中心 > 要闻速递 > 正文

新闻中心

要闻速递

NEWS

ProdCAS: 北太天元符号计算内核(详解篇)

时间:2026-11-02    来源:

  • 分享

ProdCAS: 北太天元符号计算内核

北太天元&北太真元2026

ProdCAS:一个符号计算内核的四十年

近日,由北京大学李若教授带领的北太天元团队与中国科学院数学与系统科学研究院贾晓红研究员带领的软件开发团队合作研发的通用符号计算引擎ProdCAS完成v2.0.0版本交付。按照计划,它将在北太天元的2026版(2026年10月发版)中进入插件体系开展试用,邀请广大用户参与测试。

就软件本身而言,这是一次版本发布:以C++17从零实现,代码规模十万行出头,覆盖微积分、微分方程、多项式与交换代数、数论、椭圆曲线与模形式等方向,在包含1709个用例的独立认证套件中全部通过。

这件事的意义,需要放到更长的线索中理解。

中国学者在符号计算这个方向上开创的方法,多年前已被写进了世界上主流的符号计算软件,欧共体资助的项目里也开发了专门的软件包;而在过去四十多年中,中国始终缺少一块属于自己的、可以装进任何一款国产软件里的通用符号计算内核。需要精确解的地方,只能借助国外软件,或者调用别人的库。这块缺口,如今有了一个可用的答案。

一个延续了四十年的题目

1977年,58岁的吴文俊先生开始研究几何定理的机器证明。在这之前,他已经是学部委员、国家自然科学奖一等奖获得者,在拓扑学上做出过被五位菲尔兹奖得主引用的工作。以他的学术地位,本可以选择更熟悉的研究方向。

他转向一个与此前研究截然不同的方向:把几何定理的证明变成可按固定规则机械执行的计算过程。1978年,他发表关于几何定理机器证明的奠基性论文,提出先把几何问题代数化,再以可机械执行的代数变换把假设方程组化成具有三角结构的特征列,据此逐步判定结论。整个证明过程可由计算机完成。这套方法后来被国际同行称为“吴方法”。

当时的研究条件与今天差距很大。电子计算机在国内远未普及,他最初成功证明的几条定理是手算出来的,证明中涉及的多项式往往有数百项,任何一步出错都会导致后面全部作废。后来有了机器,他从零开始学编程,自己写程序、自己上机,存储介质是穿孔纸带和打了洞的卡片,在相当长一段时间里是整个数学所上机时间最长的人。

到 80 年代,他把几何定理机器证明的方法扩展到更一般的方程机器求解,形成了一个系统的领域,即数学机械化。它的方法后来渗透到力学、天文学、物理学、化学、计算机科学,也被用于机器人、连杆设计、控制技术和计算机辅助设计。1997年,他获得国际自动推理领域的最高奖Herbrand杰出成就奖;2000年,他成为国家最高科学技术奖设立以来的首位获奖人。

吴方法在国际上产生了较快影响。1984 年以后,自动推理与符号计算界的一批知名学者,包括Bledsoe、Wos、Boyer、Moore、Kapur等人,对他的工作给予高度评价;他在国内发表的两篇论文,分别被《自动推理杂志》与美国数学会出版的《当代数学》论文集全文转发(当时国外很难看到国内发表的论文)。他的学生高小山后来回忆,1986 年前后吴先生在欧美各地讲学,意大利学者在二十年后的会议上仍说:“会议的明星是吴文俊教授。”

值得记下的是这个方向与产业的关系。如今,吴方法已被实现于若干主流的符号计算软件中;欧共体在1992—1995年资助的POSSO计划(POlynomial System SOlving)也开发了包含特征列方法的多项式系统求解软件包CARDANO。方法是中国人的,软件实现却率先发生在别人的系统里。这并非个人疏忽,而是从算法到软件产品通常要经历的过程;在中国,这一段路走得比较长。

事实上,这条路的探索在国内一直没有停。1990年,国家科委专门拨款支持数学机械化研究,中国科学院成立数学机械化研究中心,吴文俊先生任主任。1992年,国家攀登项目“机器证明及其应用”立项,他任首席科学家。1997年国家启动973计划,“数学机械化与自动推理平台”在270多个申请项目、三轮答辩后入选首批,1999年正式启动。

这个项目的名称值得注意:平台。从方法到算法,从算法到系统,从系统到平台,路线图是清楚的,方向也一直是往“能用”上走的。

这条路线最终落实为一套软件。在中国科学院数学与系统科学研究院数学机械化研究中心,高小山、王定康等把这条路线做成了一套自主的数学软件:数学机械化平台(Mathematics Mechanization Platform,MMP)。它以吴文俊开创的特征列方法为核心,能做多项式方程系统、代数常微分方程系统与代数偏微分方程系统的求解与投影,能做几何定理的机器证明与自动发现,还带有方程求解、机器证明、几何作图、机器人、机构设计、曲面拼接等成组的应用模块。因为整套软件要建立在自己的方法之上,MMP里包含一套自己的符号计算基本运算系统,由支撑系统、符号计算系统、核心模块与应用模块四个部分组成;它用 C++ 写成,运行在Windows图形界面下,发布过 3.0版本,以及MMP/Geometer、MMP/Robot、MMP/Linkage等应用包。2006 年,高小山、王定康、裘宗燕、杨宏把这套方法连同软件本身写成了《方程求解与机器证明——基于MMP的问题求解》,由科学出版社出版;这本书既是MMP的使用手册,也是了解数学机械化的入门参考。

中国科学院学部在一份战略研究里回顾这段历史时写道:在MMP之前,国内在方程求解、机器证明、几何作图等方向上做过多个成功的软件,但其中大部分是在 Maple 一类国外软件的基础上开发的,始终没有一个基于自己的理论、真正独立的通用软件平台。MMP走的正是另一条路:它用C++写成,自带一个符号计算基本运算系统作为支撑;按这份报告的说法,它不建立在Maple一类国外软件之上,是国内第一个基于自己的理论、真正独立的通用软件平台。这标志着国内符号计算软件的一条自主路线。值得提出的是,MMP与今天的ProdCAS 内核形态不同:MMP是一套自带图形界面与编程环境的完整平台,用户直接在这套软件里做计算;而ProdCAS是嵌在通用科学计算软件里的内核,供平台上的各种计算共同调用。

吴文俊先生本人对国家需求的变化十分敏感。2007年秋天,他在《参考消息》转载的一篇日本媒体文章中看到,中国尚未掌握高端数控的核心技术。在实验室的讨论班上,他从随身带的黑色书包里拿出那份报纸,对学生们说:“数学机械化方法有可能攻克这一关键技术,打破日本封锁。”此后,中国科学院的基础局与高技术局设立联合项目,支持数学机械化重点实验室与中科院沈阳计算所开展交叉研究;这一合作在数控系统最核心的“数控插补”环节提出了国际上性能最好的算法之一,并在商用数控系统中得到实现。

这些工作证明,中国的算法积累足以支撑起可用的软件,只是它们分散在不同的项目与团队里,各自沿着一条具体的路线走。从1977年到2007年,这三十年间,这个方向一直在向实际应用靠近。方法有了,软件也有人做过,但符号计算内核这块最基础的东西,始终没有作为一块通用的内核,装进任何一款国产软件里。

转折出现在2020 年。

那一年,美国MATLAB软件对国内部分高校停止授权。这件事在计算数学界引起的反应,不只是“少了一个工具”,而是一个更根本的问题被摆到桌面上:数学运算是一切工程计算的根干,而这个根干长期长在别人的地基上。在中国计算数学学会的常务理事会上,大家认为需要造出自己的MATLAB。任务落到了北京大学数学科学学院李若教授与卢朓副教授肩上。

起步的难度,团队后来这样形容:好比是对着核潜艇的图造核潜艇。一款通用科学计算软件,要从第四代编程语言写起,要把数值、优化、符号、统计各类算法整合编排成直观易用的功能,还要让人愿意用、能用起来。卢朓后来回忆,那几年他不得不花很多精力做软件推广。

那时候还有一个具体的窟窿:数值计算之外,凡是要拿出精确结果的地方都得靠符号计算内核,而北太天元没有这样一块内核。

最早顶上来的,是上海交通大学应文俊教授编写的原型代码。它解决了一部分问题,但可处理的范围有限。此后,团队转向调用开源符号计算库SymPy的路线,以支撑平台内部的基本需求。这条路走得通,也走得很艰难:性能受制于解释层与数据交换,接口要反复适配,功能边界取决于别人实现到哪里,而且平台的核心能力始终建立在一个外部依赖之上。

那几年,缺少自主符号计算内核是一个明确的事实。

在数学机械化的谱系里,还有另一条线索在延续。

李若教授的硕士导师黄凯教授,是吴文俊院士的博士后。李若在硕士阶段跟随黄凯教授学习计算机代数,博士期间转向偏微分方程的数值解,此后长期在计算数学与科学计算软件上用力。二十多年后他再次回到这个题目上,而这一次要做的不是论文,是一个能装进软件里的内核。而在中国科学院数学与系统科学研究院,数学机械化重点实验室至今延续着吴文俊先生开创的方向。贾晓红研究员长期以来在计算几何和计算机代数结合的方向上开展研究,自2020年起带领团队开发自研的CAD几何内核,而在几何内核的很多关键功能模块里,底层需要大量的符号计算库。“在团队专注开发几何内核的过程中,常常需要额外投入人力开发一部分符号计算库,这是一个不小的困扰。”于是,当李若说起要做符号计算内核这件事时,两个团队很快走到了一起。这项工作是李若与他培养的学生先做起来的;后来,中国科学院数学与系统科学研究院的贾晓红研究员与团队工程师曾铮也加入进来,一同参与开发。贾晓红研究员从计算几何与计算机代数的结合处走来,又带着自研 CAD几何内核的经验回到符号计算,走了一条不算短的路。李若同样离开过又回来。两个人最终走到同一个题目上。

这就是这件事的来路:一个从1977年开始的题目,几代人的算法积累,一个国家项目名单上写着的“平台”,以及两个因为同一个缺口走到一起的团队。

这个内核是怎么造的

符号计算与数值计算的分野,可以从一个简单的例子上看出来。数值方法求解√2,得到的是1.41421356这样一串近似小数;符号方法给出的答案是√2 本身,并且这个结果可以继续参与求导、化简、代入、证明。这个差别带来的直接后果是:符号计算不给“近似正确”留余地,算法要么给出精确结果,要么就给不出,没有中间地带。

这也决定了它的实现方式。一个可用的符号计算内核,必须同时解决三件事:把数学表达式表示得足够紧凑、在精确算术的前提下把速度做出来、以及把几十年的算法积累一件件装进去。

十二层,从平台到接口。ProdCAS采用自底向上的分层结构,依次是平台层、并发层、内存层、基础数值层、表达式DAG层、化简管线层、多项式层、线性代数层、高等代数层、微积分层、求解器层与接口层。这个顺序本身就是一份设计说明:最下面几层解决“算得准、算得快、不泄漏”,中间各层承载数学算法,最上面才是给人用的接口。分层的好处是,上面任何一层被替换或重写,下面各层的正确性保证不受影响;而对使用者来说,无论从命令行、Python、C接口还是从北太天元的插件进入,落到的是同一套引擎。

表达式是一张不可变的图。系统内部,每个数学表达式都存成一张有向无环图,节点是不可变的;结构相同的子表达式通过一个管理器做内部化(interning),在内存里只保留一份指针,这就是hash-consing。它带来的好处是连锁的:判断两个表达式是否相等变成指针比较,化简的结果可以安全共享,缓存也才有了意义。每个节点被压到96字节以内(约一条半缓存行),用一个带标记的联合体表示整数、有理数、符号、加法、乘法、幂与函数;而用户手里的表达式句柄只有 8 字节,指向图中的节点。记忆化缓存与资源限制挂在上下文对象上,随计算一起传递。

化简是一条管线,不是散落的规则。表达式进入系统后,会经过一条按优先级排序的化简管线,最多23条规则反复作用,直到表达式收敛到规范形式。规则是幂等的,并各自带有形式化描述。这一点在工程上很重要,它让“为什么这一步能化简”可以被复核,而不是靠经验。为了不让缓存本身成为瓶颈,规范化的结果用一个Count-Min Sketch(4×64 个计数器,共 256 字节)配合四路共识准入来过滤,真正命中的才落到四路分片的 LRU 缓存里(16384 项)。管线还带环检测:一旦发现化简过程出现循环,立即终止。

在精确算术上抠性能。大整数与有理数运算比浮点慢若干数量级,这是符号计算绕不过去的代价,只能一层层往回抠。内存这一层用基于 slab的bump-pointer分配器做Arena,并带压缩式回收;GMP的临时对象用一个256槽的线程局部池管理,位图标记、批量获取,避免频繁进出分配器。并发这一层是NUMA感知的工作窃取线程池,支持CPU绑定、批量入队与自适应自旋;它甚至能探测cgroup限制,在容器里也不会把并行度开错。性能工程还包括一个用于重复数值求值的栈式虚拟机字节码编译器,以及一条三阶段的PGO(profile-guided optimization)流水线。构建与质量门同样自成体系:格式化、静态检查、-Werror构建、核心测试、模糊测试、基准回归依次通过才算合格,另有一条更重的通道加上AddressSanitizer、UndefinedBehaviorSanitizer、ThreadSanitizer与覆盖率。持续集成的矩阵覆盖GCC 12至14、Clang18,以及ARM64、macOS、Windows、Alpine、i386、MinGW与WebAssembly 多条战线。

算法积累来自长期工作,难以取巧。多项式最大公因子上,用的是子结式PRS配合模算法与CRT重组,再加启发式求值;因式分解走Hensel提升与Berlekamp算法,多变量情形用齐次化与插值方法,其中双变量的Wang方法做了分组化处理:求值点取全部平方自由因子,按次数约束枚举子集分组、跨点插值试除,这样像x4+y4− 2x2y2−2x2−2y2+1这样的四次型才分解得开。

Gröbner基是交换代数中的核心工具之一:用它对多项式做约化(带余除法),可以判定理想成员关系;在消元序下,它还能把方程组化成便于回代的三角结构,为消元和求解提供系统框架。它对单项式序与规模都相当敏感,因此实现上既有经典的Buchberger算法,也有利用稀疏线性代数、签名技术等发展出的加速算法,以及有限域上的实现;单项式序可选lex、grlex、grevlex等。

微积分方面,不定积分走Risch算法的初等与Liouvillian扩张部分,定积分覆盖有理式、三角商、广义积分与发散判定,并配有一个精确已知值库(Euler矩、Beta-ψ族、Dirichlet积分、log·log型、Catalan常数等)。极限用已知值表配合L’Hôpital多重迭代与Taylor展开。

微分方程是最厚的一块:一共17个求解器,带自动分类与分派,覆盖常系数任意阶(含共振与多共振项)、待定系数法的全组合驱动项、参数变易法、Euler–Riccati、Bernoulli、Clairaut、恰当方程,Kovacic算法做到case 1 至 3(含半整数指数),特殊函数解覆盖Bessel、Legendre、Chebyshev、Laguerre、Airy与超几何2F1,另有一阶线性方程组、初值与边值问题。

数论与代数结构这一侧,能力清单读起来更像一份数学目录:椭圆曲线的导子、L(E,1)、根数、Néron–Tate高度与2-descent 秩,以及 2-同源与同源类的枚举、有理点群的饱和验证;二次域的类群、单位群、调节子与虚二次域射线类数;模形式的 Γ(N) 与 Γ1(N) 维数、Hecke特征、Ramanujan τ,以及两类带特征的 θ 级数(二平方和 r(n)与Eisenstein范数rE(n));类域论方向的Hilbert类多项式;群论与表示论方向的Coxeter/Weyl群阶、单李代数根系、最高权表示维数与Freudenthal重数分解。其中不少对象在通用系统里属于“有就有、没有也不影响”的部分,但对数论方向的使用者是刚需。

这些结果可以通过命令行现场验证。下面几行是命令行界面的真实回显:

第一行的积分没有初等原函数,但它的广义定积分值是已知常数 −γ;第二行极限的值精确到 1/6;第三行说明x²+97的类群是四阶循环群;第四行给出椭圆曲线的 L 值与挠群阶。这些结果是精确推导得到的,不是近似值。

ProdCAS 的定位。它设计为北太天元的符号计算内核,提供命令行接口、Python 绑定、C 接口与插件四种用法,插件以 prodcas:: 为前缀注册了215个函数。按计划,它会随北太天元的2026版(2026年10月发版)一同发布,先以插件形式交给用户试用,也欢迎大家参与测试。对北太天元而言,平台由此具备了自主的符号计算内核;从吴方法开始的这条技术路线,也进入了一个通用科学计算软件的内核。唯一必需的第三方依赖是GMP(6.2 及以上版本)。数学表达在这里被转化为可执行、可验证的形式,接下来交给使用者检验。 

怎么证明它是对的

数学软件有一种特殊的失败模式:给出一个错误答案,而使用者看不出来。数值软件算错了,通常会在量级、收敛性或与实验的比对中露出马脚;符号软件算错了,输出的仍然是一个形式漂亮的表达式。所以在符号计算这个领域,“怎么知道它是对的”不是一个附加问题,而是核心问题。

一套独立的认证套件。项目自建了认证套件tools/certify.py,对十个领域的1709个用例结果做验证。这里的关键词是“独立”:验证不复用求解时的路径,而是换另一套数值或符号方法复核同一个结果。用例覆盖每个领域的代表性形态:积分部分包括初等原函数、特殊函数值与发散判定,数论部分对标Magma的公开结果,交换代数部分覆盖理想分解与同调不变量。

2026 年 10 月 16 日的实测结果如下:

整套跑完 32 秒,调用方式只有一行:

python3 tools/certify.py --all --cli ./build/prodcas_cli --timeout30

不止一套认证。除认证套件外,项目维护96个自动化测试套件,涵盖单元、集成、属性、边界与回归测试,并设有带基线比对的性能回归门,性能退化会像功能退化一样被拦下来。构建侧的质量门是串联的:从代码格式、静态检查到-Werror构建,再到核心测试、模糊测试与基准回归,一道不过就过不去;更重的一条通道还要加跑三套动态分析工具。持续集成的矩阵横跨十余种编译器与平台组合。这些机制的作用,是让每一次改动都重新经过检验,包括那些看起来无关紧要的改动。

几处保守的错误处理设计。在正确性设计上,有几处处理刻意保持保守。主分解与微分方程求解等模块采用“自验证加安全回退”:结果在输出前先经另一条路径复核,未通过验证的中间结果不会被交付,宁可返回“无法求解”。一个具体的例子是变系数Riccati方程:系统曾对y′=y²+x²这类方程给出过看起来成立、实则错误的cos-log形式的解,修正办法是加一道数值代回校验门:把求得的特解在多个点上代回原方程,残差接近于零才接受,否则优雅地拒绝。真解(如Euler 型的y′=y²+1/x²)保留,伪解退回。项目团队对此的说法很直接:对数学软件而言,给出错误答案比拒绝回答的风险高得多。

此外,团队也公开了一份限制清单。与认证结果同时公开的,是当前的已知缺口:WebAssembly后端尚未完全打通,受Mini-GMP的有理数与临时池移植阻塞,持续集成里只验证配置阶段;MPI已编译入库但默认不激活,分布式Gröbner基尚未实现;Risch算法的有理函数部分标注为不完整(超越与代数扩张情形已完备);线性代数的复特征值可检测但不返回,广义特征向量仅支持单层Jordan链;多项式乘法的并行阈值已定义但尚未启用,Karatsuba与Toom系列目前都是顺序实现;GCC的LTO在本代码库上不稳定,并行任务数较高时会触发内部编译错误,需要显式关闭。这些限制与认证套件的通过率并不矛盾:前者是功能覆盖的边界,后者是已覆盖范围内的正确性,两者分别记录,互不替代。

与同类系统比较。项目维护了一份与主流系统的能力对比与差距分析,对照MATLAB符号计算工具箱、Magma、Singular与 Macaulay2 四款代表性系统。按领域看,对手各不相同:符号微积分与微分方程方向上只有MATLAB工具箱是同类,Gröbner 基与交换代数要对标Singular 与 Macaulay2,数论与椭圆曲线方向上只有 Magma 是同类,群论与表示论同样如此。对比得出的一个观察是:在同时覆盖符号微积分、微分方程、交换代数、数论与群论/表示论这五个方向上,ProdCAS 是目前少有的一个。这份文档同时逐项写出了差距所在:完整 Risch 算法、深层奇点理论、工业级大规模数值计算,都是明确写着的短板。  

它是谁的,往哪里去

ProdCAS由两支队伍合作完成

北京大学这一侧由李若教授带领。北太天元的研发始于2020年,他与卢朓副教授牵头推进,在北京大学大数据分析与应用技术国家工程实验室进行技术孵化,并在北京大学重庆大数据研究院推动产品化。它是一款面向科学计算与工程计算的国产通用型科学计算软件,具备完全自主知识产权;2026年1月,“北太天元&北太真元2025”正式登陆北京大学正版软件平台,面向全校师生开放使用。ProdCAS在其中承担符号计算内核的角色,将随北太天元 2026版进入插件体系,与广大用户见面。围绕这块内核的研发,最早由李若教授和他在北大带出的学生着手推进。

另一侧在中国科学院数学与系统科学研究院,由贾晓红研究员带领。她所在的数学机械化重点实验室,正是吴文俊先生当年开辟的那条路;她的研究工作始终在计算几何与计算机代数的交叉地带。2020年起,该团队响应国家自主工业软件CAD的战略需求,开始自研CAD几何内核,其中曲面求交、布尔运算等关键模块涉及大量符号计算,需要填补底层符号库的空缺。了解到符号计算内核的需求后,她与团队工程师曾铮也加入到开发工作中来。

三方在这项工作中各司其职:北京大学把这项工作开展起来,负责内核的设计与实现;中国科学院数学与系统科学研究院的团队后来加入,一同参与开发;北太天元提供了产品化的平台与出口。谨向以下各位致谢:夏壁灿教授、冯荣权教授、方汉隆博士(北京大学);苑立平教授(河北师范大学);杨晓波教授(中国矿业大学)。

“符号计算内核的门槛不在能不能算,而在能不能算得又快又可靠。这件事我们做了很多年,现在有了一个可以拿出来被检验的版本。”

——李若教授

“符号计算是计算几何中很多关键算法想要跑得精跑得准的灵魂。它也是藏在我们自研CAD内核过程中始终没有放下的念想。这个念想现在找到了它的出口。”

——贾晓红研究员

下一阶段的工作集中在三个方面:完成WebAssembly后端,使引擎可在浏览器环境中运行;继续优化多项式与Gröbner基相关算法的性能;扩展领域覆盖范围,把“能算的边界”继续往外推。团队表示,欢迎同行就方法与结论提出意见。

吴文俊先生在谈到科研评价时说过:“评价一个国家的科学发展,群体的高度才是真正的进步。”

1977年,他一边学习编程,一边用穿孔卡片手写程序。四十多年后,这项工作由两个团队、几代人的积累共同推进,并以一个可运行、可认证的内核形式交付使用。

这件事仍在继续。一个内核的价值最终取决于其结果能否经得起独立检验。上面每一条数据都写明了测法,便于一一对照。  

附录:技术数据(实测口径)

以下数据均为2026年10月16日实测:

口径说明:模块数在项目文档中记为120个公共模块,实际头文件数为122,本文采用文档口径;插件函数数在部分文档中记为213,实测注册名为215条,本文采用实测口径;认证套件反映的是金标准用例的通过率,与项目内部架构说明中记录的功能覆盖缺口属于不同口径,两者分别记录。文中涉及的吴文俊先生生平与项目史实,取自中国科学院数学与系统科学研究院吴文俊先生纪念网站所载资料;北太天元的研发历程,取自科技日报相关报道与北京大学大数据分析与应用技术国家工程实验室公开材料;MMP与相关著作的信息,取自数学机械化重点实验室与科学院学部的公开材料、科学出版社书目。      

完整技术资料下

《ProdCAS:一个符号计算内核的四十年》全文(含附录“技术数据(实测口径)”)可下载查阅。

下载试用链接

北太天元 2026 版本已正式发布

https://www.baltamatica.com/download

更多内容可扫码观看了解

欢迎建议反馈

符号计算工具箱将随北太天元2026版一同发布,届时将以插件形式与大家见面,也欢迎大家参与测试并反馈。

转载本网文章请注明出处


版权所有©北京大学大数据分析与应用技术国家工程实验室 京ICP备05065075号-1 京公网安备 110402430047 号