Dedukti is a type-checker for the $\lambda$$\Pi$-calculus modulo rewriting, an extension of Edinburgh's logicalframework LF where functions and type symbols can be defined by rewrite rules. It thereforecontains an engine for rewriting LF terms and types according to the rewrite rules given by the user.A key component of this engine is the matching algorithm to find which rules can be fired. In thispaper, we describe the class of rewrite rules supported by Dedukti and the new implementation ofthe matching algorithm. Dedukti supports non-linear rewrite rules on terms with binders usinghigher-order pattern-matching as in Combinatory Reduction Systems (CRS). The new matchingalgorithm extends the technique of decision trees introduced by Luc Maranget in the OCamlcompiler to this more general context.
翻译:Dedukti 是用于 $\ lambda$$\ Pi$- calulus modulo 重写的字型检查器, 这是爱丁堡逻辑框架LF 的扩展, 其函数和类型符号可以通过重写规则定义。 因此, Dedukti 根据用户提供的重写规则, 含有重写LF 术语和类型的引擎。 此引擎的关键组件是找到哪些规则可以发行的匹配算法 。 在本文中, 我们描述由 Dedukti 支持的重写规则类别, 以及匹配算法的新实施 。 Dedukti 支持非线性重写规则, 与在合并减少系统中使用高顺序模式匹配的粘合器( CRS), 支持非线性条款的重写规则 。 新的匹配将 Luc Maranget 在OCamlcompliler 中引入的决策树技术扩展到这个更一般的背景 。