《Egg: Fast and Extensible Equality Saturation》中文翻译:
热切希望读者提出翻译建议!
Egg (e-graphs good, https://egraphs-good.github.io/) 的工作提供了两项技术,使 e-graphs 快速和方便扩展,使其专门用于 Equality saturation:一是新的摊销的不变性恢复技术,称为重建。利用了 Equality saturation 的独特工作量,在实践中提供了比目前技术更多的渐进式(asymptotic speedups)加速;二是一个名为 e-class 分析的通用机制,它将特定领域的分析整合到 e-graph 中,减少了临时操作的需要。作者将这些技术在一个新的开源库实现,叫做 egg。另外对以前发表的三个 Equality saturation 的应用进行了案例研究,它突出了 egg 的性能和灵活性,在不同的领域可达到最先进的效果。在这些案例里,作者使用已发布的 egg 的工具,用于演绎综合(deductive synthesis)和程序优化( program optimization)的案例研究。这些领域包括浮点精度、线性代数优化、和 CAD 程序综合。相比以前的实现方式中, egg 的速度快了几个数量级,并提供了更多的功能。
翻译中需要注意的术语如下,译者未找到合适通用的翻译而自行翻译的有特别标注。
-
确定的或有同类型文献使用的翻译
-
钩入、钩子(hook);钩子编程(hooking),也称作“挂钩”,是计算机程序设计术语,指通过拦截软件模块间的函数调用、消息传递、事件传递来修改或扩展操作系统、应用程序或其他软件组件的行为的各种技术。处理被拦截的函数调用、事件、消息的代码,被称为钩子(hook)。
-
上近似(over-approximation);粗糙集术语。
-
半格(semilattice);半格是满足运算是幂等的和交换的半群。
“半格域”(semilattice domain)是一个数学概念,它是指一个满足一定条件的偏序集合,具体来说,它必须满足半格的条件,即任意两个元素都有最小上界和最大下界。
半格域在计算机科学和离散数学中有着广泛的应用。例如,它们可以用来描述并发系统中的时间戳序列,也可以用来定义关系数据库中的关系模型。
总之,半格域是一个重要的数学概念,它在许多领域都有着广泛的应用。
-
演绎综合(deductive synthesis);国内综述《形式化方法概貌》使用此翻译。
-
最先进的技术(state-of-the-art);科研习语。
-
常量折叠(constant folding);所谓常量折叠,指的是编译时查找并计算常量表达式,而不是在运行时再对其进行计算,从而会使运行时更加精简和快速。
-
线性代数(Linear Algebra,LA),是一门数学学科,主要研究线性方程组、向量空间、线性变换等概念。
-
关系代数(Relational Algebra,RA)是一门计算机科学学科,主要研究关系数据库系统中数据存储和检索的方法。它提供了一组数学符号,用于描述数据库中数据关系,并提供了一组操作,用于处理数据库中的数据。
-
-
译者未找到合适通用的翻译而自行的翻译
-
等式饱和(equality saturation);本论文主要面向的技术之一。
- 等式饱和工作负载(equality saturation workload)
-
项(term);
- 项图(term graph);
-
哈希康(hashcons);参考 Hash consing - Wikipedia 、列表构造函数 - 维基百科,自由的百科全书 (wikipedia.org)中的说法,列表构造函数是用来构造列表的基本函数,在大多数 LISP 体系的计算机编程语言中,使用的函数名称是 cons。LISP 编程中表达要把 x 加入 y 的语法:(cons x y)。“cons”和诸如“cons onto”的词句,也是函数编程的通用术语。在计算机科学中,特别是在函数式编程中,哈希 consing 是一种用于共享结构上相等的值的技术。散列 consing 一词起源于 Lisp 的实现,它试图重用以前构建的 cons 单元,避免了内存分配的惩罚。因比较复杂,而“哈希”一词已是音译,故采用音译。
- 哈希康化(hashconsing);
-
不变量(Invariant);
- 同余不变量(Congruence Invariant);
- 哈希康不变量(Hashcons Invariant);
- 延迟不变性(deferred invariant);
-
同余(congruence);对于本论文,congruence 指 𝑎 ≡ 𝑏 蕴含 𝑓 (𝑎) ≡ 𝑓 (𝑏 )。
-
代码搜索(code search);
-
术语排序选择(phase ordering);有些翻译为编译优化选择(Phase Ordering Problem )
-
渐进式加速(asymptotic speedups);
-
重建(rebuilding);
-
去重(deduplication);
-
黑盒 ID(opaque identifiers);一个不透明的标识符
-
规范化(canonicalizes);典型化,正规化;
-
半格联并(semilattice join),此词为 join-semilattice 的变化;
-
半格域(semilattice domain);
-
等式推理(equational reasoning);
-
偏序归约(partial-order reduction),即检查各个状态和行为间的独立性以减小整体的状态空间;
-
捕获避免(capture avoidance);
-
每规则每次调度器(every-rule-every-time scheduler);一种调度器
-
平面缓冲区(flat buffers);计算机技术,一种缓冲区
-
超优化(Superoptimization);Superoptimization - Wikipedia:超优化是一个编译器自动找到无循环指令序列的最佳序列的过程。现实世界的编译器通常不能产生真正的最优代码,而大多数标准的编译器优化只能部分地改进代码,超级优化器的目标是找到最优序列,即典型形式。超级优化器可以用来改进传统的优化器,它突出显示错过的机会,这样人类就可以编写额外的规则。
-
不动点(saturation);函数不动点是函数的一个应用广泛且深入的性质。
-
萃取(extraction);egg 的主要工作之一,分析 E 图并选择根据用户提供的成本函数,选择最佳程序。
-
特定领域的分析(domain-specific analyses);
-
循环重绕(loop rerolling);loop rerolling rules 用来发现特定的结构。
-
求解器支持的重写(solver-backed rewrites);
-
反向变换(inverse transformations);
-
消解(cancellation);
-
函数反转(function inverses);
-
冗余计算(redundant computation);
-
格点组合(composition of lattices);lattices:格点
-
-
保留英文写法
- E-graph 、E-matching
- union-find(联合查找);
- fact(事实)
-
临时存放
-
ATP 自动定理证明(Automated Theorem Proving)
-
equality modulo alpha renaming 同模(equality modulo)阿尔法重命名(alpha renaming)
- "equality modulo"是数学和计算机科学中的术语,表示相等关系在某些条件下成立。具体来说,在模掉某个等价类之后,两个对象仍然相等。
- "Alpha renaming"是一个计算机科学中的概念,通常在编程语言中使用。它是指更改函数或变量名称的过程,同时保持其语法结构和功能不变。这种更改通常是为了避免命名冲突或提高代码的可读性。
-
lambda 演算 (Lambda calculus)
三条公理:
- alpha-变换 α-conversion:函数参数名是随意取的
λx.(λx.x)x 与 λy.(λx.x)y 是等价的。 - beta-归约 β-reduction:函数应用(运算过程)就是符号模板的替换过程。
(λx. M) N 表示将函数体 M 中所有名称为 x 的符号都替换为 N。例如 (λf.f 3)(λx.x+2) = (λx.x+2)3 = 3 + 2 = 5
这里存在一个隐含的内在复杂性:没有一个通用的方法来判定两个 λ 表达式是否等价。Church 提出 lambda 演算就是为了证明这个定理,从而否证希尔伯特判定性问题。
- eta-归约 η-reduction:如果运算结果总相等,则 λ 表达式等价
f ≡ λx.f x
Church-Rosser 定理:当把归约规则施用于 λ 项和 λ 演算时,所选择的归约顺序将不会影响最终的结果
- alpha-变换 α-conversion:函数参数名是随意取的
-
e-class 分析器(e-class Analyses)
-
循环重投(loop rerolling)
-
网格反编译(mesh decompilation)
-