#逻辑编程 #Prolog #特性 #编译器

chalk-engine

Chalk项目中的核心特性引擎

90次重大发布

0.98.0 2024年7月7日
0.96.0 2024年1月7日
0.95.0 2023年11月19日
0.92.0 2023年6月30日
0.3.0 2018年3月27日

#110 in 算法

Download history 200/week @ 2024-04-26 302/week @ 2024-05-03 205/week @ 2024-05-10 214/week @ 2024-05-17 212/week @ 2024-05-24 232/week @ 2024-05-31 203/week @ 2024-06-07 202/week @ 2024-06-14 187/week @ 2024-06-21 201/week @ 2024-06-28 325/week @ 2024-07-05 152/week @ 2024-07-12 176/week @ 2024-07-19 675/week @ 2024-07-26 215/week @ 2024-08-02 52/week @ 2024-08-09

1,149 每月下载量
chalk-rust-ir 中使用

MIT/Apache

1MB
19K SLoC

Chalk的核心包。

有关最新信息,请参阅Github


lib.rs:

基于SLG算法的替代求解器,实现了良好形式的语义。有关求解器工作原理的概述,请参阅chalk书中按需SLG求解器

此算法非常基于以下论文中找到的描述,我将在此处评论中引用为EWFS

基于良好形式的语义的有效自顶向下查询计算(Chen, Swift, and Warren; 1995年《逻辑程序设计杂志》)

然而,为了理解该论文,我建议首先从以下论文开始,我将在此处评论中引用为NFTD

带有延迟的新表格解析公式(Swift; 1999年EPIA)

此外,我还从以下论文中包含了扩展,我将分别将其称为SA和RR,它们描述了在处理子目标等时如何引入近似

具有有限三值模型的逻辑程序终止评估(Riguzzi和Swift; 2013年《计算逻辑交易》)(引入“子目标抽象”,因此命名为SA)

径向约束(Grosof和Swift; 2013年)

另一篇有用的论文是以下内容,它给出了所涉及概念的一种高层次概述,我将在此处评论中引用为XSB

XSB:将表格逻辑程序设计扩展到Prolog(Swift和Warren; 2010年《逻辑程序设计的理论与实践》)

虽然这段代码借鉴了那些论文中描述的算法,但它并不完全相同。一方面,那里的方法需要扩展到我们的上下文中,特别是应对遗传harrop谓词和我们的统一版本(产生子目标)。我认为这些扩展在很大程度上是忠实于原意的。然而,还有一些地方我故意偏离了论文中描述的语义——例如通过更积极地近似——我在这些地方加上了注释"DIVERGENCE"。这些地方可能需要在将来进行评估。

其他术语词汇表

  • WAM:Warren抽象机,一种高效评估Prolog程序的方法。请参阅http://wambook.sourceforge.net/
  • HH:遗传harrop谓词。Chalk所处理的内容。由Lambda Prolog普及。

依赖关系

~4MB
~68K SLoC