Proceedings of SAT Competition 2022 : Solver and Benchmark Descriptions

https://helda.helsinki.fi/handle/10138/347211


 

1. Armin Biere Mathias Fleury

弗莱堡大学,德国

GIMSATUL, ISASAT, KISSAT

GIMSATUL——2022年提交的多线程的求解器,参加parallel组。

ISASAT, KISSAT —— 2022年提交的顺序求解器,参加main组。

笔记:

(1-1)内部嵌入式SAT求解器KITTEN来查找从候选变量的环境子句及其邻近子句;用于find backbones and equivalent literals 。

version “KISSAT SC2021 SWEEP” submitted to the SAT Competition 2021——sweeping算法通过替换在扫描期间已经确定等价的字面量和更仔细地调度和重新调度候选变量,特别是在相同的扫描阶段,得到了改进。

(1-2) non-recursive model rotation

IMPROVED SWEEPING IN KISSAT is inspired by non-recursive model rotation [2] used in MUS extraction。

新的模型翻转尝试翻转KITTEN返回的最后一个模型中指定文字的值,如果结果的新赋值仍然满足公式,则成功。如果成功,则更新模型。否则,如果翻转使公式证伪,最后一个模型不被触及。

(2-1)2022年提交的“KISSAT SC2022 BULKY”版继承了2021年提交的“KISSAT SC2021 SWEEP版”[1]的大部分功能,但包括以下更改:

  • added ACIDS [3] branching variable heuristics (disabled)  添加ACIDS[3]分支变量启发式(禁用)
  • added CHB [4] variable branching heuristic (but disabled by default) inspired by the success of ’kissat mab’ [5]
  • faster randomization of phases in the Kitten sub-solver 在Kitten子求解器中更快的相位随机化
  • literal flipping for faster refinement during sweeping 字面翻转以在扫描期间更快地细化
  • disabled priority queue for variable elimination (elimination attempts follow the given fixed variable order)禁用变量消除优先队列
  • disabled by default reusing the trail during restarts 默认情况下禁用在重启期间重用跟踪
  • disabled by default hyper ternary resolution 默认禁用超三元分辨率
  • initial local search through propagation (similar to ”warmup” runs of Donald Knuth [6] and how local search is initialized in ”ReasonLS” solvers by Shaowei Cai [7]) 通过传播进行初始的本地搜索
  • actual watch replacement of true literals during unit propagation instead of just updating the blocking literal (as suggested by Norbert Manthey [8]) 在单元传播过程中替换真正的字面量,而不是仅仅更新阻塞字面量
  • fixed clause length and variable occurrences limits during variable elimination instead of dynamically increasing 固定子句长度和变量出现限制在变量消除而不是动态增加

(3-1)KISSAT SC2022 LIGHT AND KISSAT SC2022 HYPER

为了把重点放在KISSAT最重要的功能上,我们去掉了那些在最后三个比赛基准中没有显著提高表现的功能:

  • autarky reasoning 自给自足的推理
  • eager forward and backward subsumption during variable elimination (global forward subsumption only) 变量消去过程中的急切向前和向后包容
  • caching and reusing of minima during local search 在本地搜索中缓存和重用最小值
  • failed literal probing   文字failed的调查
  • transitive reduction of the binary implication graph 二值蕴涵图的传递约简
  • eager subsumption of recently learned clauses   急切地subsumption最近学过的从句
  • XOR gate extraction during variable elimination  变量消除过程中的异或门提取
  • delaying of inprocessing functions based on formula size 基于公式大小的延迟处理
  • vivification of irredundant clauses 非冗余从句的生动化
  • keeping untried elimination, backbone and vivification candidates for next inprocessing round (removed options) 子句删除策略改进时可以重点参考。
  • initial focused mode phase limited only by conflicts now (not as before also by ticks)  最初的集中模式阶段只受到现在冲突的限制
  • The light version also removes hyper binary resolution, enabling the use of more variables 轻版本还删除了超二进制分辨率,支持使用更多变量.
   
 

2. Watch Sat and LTO for CaDiCaL and Kissat

Norbert Manthey
nmanthey@conp-solutions.com      Dresden, Germany

CADICAL_watch-sat-flto

KISSAT_watch-sat-flto

笔记

(1)对编译过程进行了针对性设置与优化;

link time optimization (LTO)

LTO can be enabled by adding -flto to the compiler invocation.

(2)针对minisat和cadical观察体系在传播中的处理过程异同进行了对比叙述。

MINISAT 2.2 2.1 [2] started to use a blocking literal. When propagating a clause, first the truth value of the blocking literal is checked. In case the blocking literal is satisfied, the related clause is known to be satisfied. Therefore, the clause does not have to be processed further.   翻译: MINISAT 2.2 2.1[2]开始使用阻塞字面值。在传播子句时,首先检查阻塞字面值的真值。如果阻塞字面值被满足,则已知相关子句被满足。因此,该子句不需要进一步处理,Always Watching the Satisfied Literal

One difference between CADICAL and MINISAT 2.2 based solvers is the way how they treat these satisfied clauses.

CADICAL skip updating watch lists. Instead, CADICAL implements further extensions, like memorizing the literal in a clause that was tested when last processing the clause [4]. 译文:CADICAL跳过更新监视列表。相反,CADICAL实现了进一步的扩展,比如记住上次处理子句[4]时测试的子句中的文字

下面这段,基本内容没有搞明白:

Just Update the Blocking Literal: As an alternative,
CADICAL keep watching the current literal, which is now
falsified, but updates the blocking literal to the satisfied literal.
While this breaks the assumption that falsified literals are only
watched for conflict clauses or unit clauses, we still know that
the clause is satisfied. Hence, breaking this assumption does
not have consequences. The positive effect is that the clause
does not have to be removed from the current watch list. This
results in no cache miss, nor a TLB miss. However, when the
search progresses, after backtracking, the same clause might
need to be processed again. In case the satisfied literal is
still satisfied, only the blocking literal has to be processed.
Otherwise, backtracking also removed the assignment for the
blocking literal, so that the whole clause needs to be processed
again.

Preliminary testing with MERGESAT when just up-dating the blocking literal of a clause resulted in a performance
degradation. 在使用MERGESAT进行初步测试时,仅仅更新子句的阻塞文字就会导致性能下降

(3)一句很重要的结论式表述:

Not processing a satisfied clause during propagation soon again can result in a different order of propagated literals,
as well as different conflicts, and consequently in different heuristic updates and many different follow-up search steps
of the solver. Hence, performance differences can not only be attributed to lower or higher compute resource utilization. 译文:在传播过程中没有很快处理一个满意的子句,可能会导致传播文字的顺序不同,以及不同的冲突,从而导致不同的启发式更新和求解器的许多不同的后续搜索步骤。因此,性能差异不仅可以归因于较低或较高的计算资源利用率。

   
 

3. SEQFROST at the SAT Race 2022

Sequential Formal ReasOning about SaTisfiability

译文:可满足性的顺序形式推理

SEQFROST is a new solver mostly rewritten from scratch based on our last year submission [1] with efficient data structures and many code optimizations.

This year, we observed a large amount of time is spent on function calls in Boolean Constraint Propagation (BCP) and data sorting especially in Multiple-Decision Making (MDM) and inprocessing.

主要技术改进:

(1)Thus, we resorted to inlined code and pointer prefetching in BCP and replaced the standard sort procedure with faster modern alternatives, e.g., pdqsort. 我们在BCP中使用内联代码和指针预取,并使用更快的现代替代方法(例如pdqsort)取代标准排序过程。

(2)Further, we augment the Multi-Arm Bandit (MAB) rewarding scheme as implemented in the last year winner KISSAT-MAB to MDM strategy [2], and implement functional dependency extraction to enhance the effectiveness of variable elimination.

译文:此外,我们增强了多臂强盗(MAB)奖励方案将去年获奖者KISSAT-MAB实施到MDM策略[2],并实现功能依赖项提取,提高变量消除的有效性

(3)Finally, we extend our elimination method eager redundancy elimination (ERE) [1], [3] with clause strengthening to remove redundant literals. 最后,我们扩展了我们的消除方法热切冗余消除(ERE)[1],[3]与子句加强去除冗余字面量。

VARIABLE ELIMINATION

   
 

4. SLIME SAT Solver

1st Oscar Riveros
Santiago, Chile
oscar.riveros@gmail.com

(1)给出了一个结论:The DISTANCE heuristic is now parametric, on the experiments, DISTANCE work well with cryptographic instances, but not with generics.

(2)提出了HESS black-box algorithm算法--决策变元相位选择的一种策略:

   
 

5. new solvers Cadical ESA and Kissat MAB ESA

Cadical ESA

Kissat MAB ESA

分别从 Cadical and Kissat MAB进行的修改。

在变元消除方面进行了改进

variable elimination is essential for modern SAT solvers.

In MiniSat [1] and its derived solvers, variable elimination is used in preprocessing(预处理), and in Kissat [2] and other Kissat-based solvers, it is used in inprocessing(制程巡检).

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   

2022竞赛新方法学习1--学习Proceedings of SAT Competition 2022 : Solver and Benchmark Descriptions的更多相关文章

  1. 【模型压缩】MetaPruning:基于元学习和AutoML的模型压缩新方法

    论文名称:MetaPruning: Meta Learning for Automatic Neural Network Channel Pruning 论文地址:https://arxiv.org/ ...

  2. JavaScript ES6 数组新方法 学习随笔

    JavaScript ES6 数组新方法 学习随笔 新建数组 var arr = [1, 2, 2, 3, 4] includes 方法 includes 查找数组有无该参数 有返回true var ...

  3. 【转载】 DeepMind发表Nature子刊新论文:连接多巴胺与元强化学习的新方法

    原文地址: baijiahao.baidu.com/s?id=1600509777750939986&wfr=spider&for=pc 机器之心 18-05-15   14:26 - ...

  4. vue学习(十四) 条件搜索框动态查询表中数据 数组的新方法

    //html <div id="app"> <label> 名称搜索关键字: <input type="text" clasa=& ...

  5. 5332盛照宗 如何获取新技能+c语言学习调查

    如何获取新技能+c语言学习调查 你有什么技能比大多人(超过90%以上)更好? 如果问我有没有什么技能比大多数人,并且是90%的人好,我还真不敢说有,因为世界上有70亿人,要比63亿人做的好才行啊.我也 ...

  6. 现代C++新四大名著及C++学习杂谈

    现代C++新四大名著及C++学习杂谈 翻开自己的博客,在2012年8月我曾经写过如下一篇博客, <<C++学习的方法以及四大名著>> http://www.cnblogs.co ...

  7. 20155332 如何获取新技能+c语言学习调查

    如何获取新技能+c语言学习调查 你有什么技能比大多人(超过90%以上)更好? 如果问我有没有什么技能比大多数人,并且是90%的人好,我还真不敢说有,因为世界上有70亿人,要比63亿人做的好才行啊.我也 ...

  8. 工厂方法FactoryMethod 初步学习笔记

    一,意图   定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 二,别名   虚构造器 Virtual Constructor 三,适用性 当一个类不知道它 ...

  9. 我的学习归纳方法(以学习Maven为例)

    以我的个人角度来看待学习这件长久的事,希望对你有帮助,也希望你能提一下你的意见 本文初衷 把自己模板化 以此篇为引,与同行沟通心得,所以在此严重要求如果你有对应的心得还请能回复下,真心感谢!(鞠躬) ...

  10. jquery中ajax中post方法(多学习:洞悉原理,触类旁通)(函数封装思想)

    jquery中ajax中post方法(多学习:洞悉原理,触类旁通)(函数封装思想) 一.总结 1.多看学习视频:洞悉原理,触类旁通, 2.函数封装:$.post(URL,data,callback); ...

随机推荐

  1. android 编译 node js 14

    本文基于wsl ubuntu 22.04.1 LTS 系统 上成功编译 安卓版 node js 14.15.4的一些记录. 编译环境: nodejs 用到两套编译器分别用来编译本机的一些工具链和目标平 ...

  2. pytest设计项目结构

    api目录封装所有的接口 testcases目录写所有的测试用例.conftest全局登录前置操作 data目录测试数据 common或者utils目录.存放公共模块比如读取yml文件.连接数据库.所 ...

  3. ACCESS中查询语句:查询所得数据另存到一个指定目录下的文件夹里,并新建新的文件

    select * into [excel 8.0 database=d:\aa.xls].sheet1 from bb where bb.cc="dd" excel 8.0 为什么 ...

  4. 使用laydate时间输入控件

    下载 layDate 后,将文件夹 laydate 整个放置在您的项目任意目录,使用时只需引入 laydate.js 即可. 详细的使用方法见:https://www.layui.com/laydat ...

  5. cublas fp16

    编译选项: nvcc 4.cpp -o test_gemm  -lcudart -lcuda -lcublas -std=c++11 #include <sys/time.h> #incl ...

  6. zabbix源码目录结构

    用的是今年最新的zabbix-3.0.1 bin: 包含windows下zabbix_agentd.zabbix_get.zabbix_sender的二进制程序文件和sender的二次开发需要的头文件 ...

  7. localStorage/sessionStorage/cookie

    html5本地存储主要有两种localStorage和sessionStorage        都是使用相同api,存入后都是字符串类型 localStorage和sessionStorage使用方 ...

  8. imputation文献-A systematic evaluation of single-cell RNA-sequencing imputation methods

    文章题目 A systematic evaluation of single-cell RNA-sequencing imputation methods 中文名: 单细胞RNA测序插补方法的系统评价 ...

  9. 2019-2020-1 20199318《Linux内核原理与分析》第十三周作业

    <Linux内核原理与分析> 第十三周作业 一.预备知识 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片 ...

  10. C - Watchmen CodeForces - 651C (使用map例题)

    #include<iostream>#include<map> using namespace std;map<int,int> x;map<int,int& ...