miniKanren is a lightweight embedded language for logic and relational programming. Many of its useful features come from a distinctive search strategy, called interleaving search. However, with interleaving search conventional ways of reasoning about the complexity and performance of logical programs become irrelevant. We identify an important key component -- scheduling -- which makes the reasoning for miniKanren so different, and present a semi-automatic technique to estimate the scheduling impact via symbolic execution for a reasonably wide class of programs.
翻译:小型Kanren是逻辑和关系编程的轻量级嵌入语言。 它的许多有用功能来自一种独特的搜索策略, 称为中继搜索。 但是, 随着对逻辑程序的复杂性和性能的常规推理方法的相互交错的搜索变得无关紧要。 我们确定了一个重要的关键组成部分 -- -- 时间安排 -- -- 这使得对小型Kanren的推理如此不同,我们提出了一个半自动技术,通过象征性地执行相当广泛的程序来估计时间安排的影响。