satisfiability相关内容
在Z3(Python)中,有没有办法将SAT搜索“偏向”“条件”? 一个案例:我希望Z3获得一个模型,但不是任何模型:如果可能,请给我一个有大量否定文字的模型。 例如,如果我们必须搜索A or B,可能的模型是[A = True, B = True],但我宁愿收到模型[A = True, B = False]或模型[A = False, B = True],因为它们有更多的False分
..
我有一个 ANTLR 表达式解析器,它可以使用生成的访问者评估形式 ( A & ( B | C ) ) 的表达式.A 、 B 和 C 可以采用 true 或 false 两个值中的任何一个.但是,我面临着找到表达式正确的 A、B 和 C 的所有组合的挑战.我尝试通过以下方法解决此问题. 评估 3 个变量的表达式,每个变量取真假 这有 8 种组合,因为 2 ^ 3 是 8 我评估给变量提供
..
有没有办法在 Z3 中表达假设(我使用的是 Z3Py 库),这样引擎就不会检查它们的有效性,而是将它们作为基础理论,就像在定理证明中一样? 例如,假设我有两个参数为 Real 类型的一元函数.我想告诉 Z3 引擎,对于所有输入值,f1(t) 等于 f2(t). 在 Z3Py 中编码,如下所示: t = Real("t") 假设 1 = ForAll(t, f1(t) = f2(t)
..
要解决一组布尔方程,我正在尝试Constraint-Programming Solver MiniZinc 使用以下输入: % Solve system of Brent's equations modulo 2 % Matrix dimensions int: aRows = 3; int: aCols = 3; int: bCols = 3; int: noOfProducts =
..
在ASP(答案集编程)中,程序以更高级别的声明性语言编写,然后以确定性方式进行基础化,以使用lparse或gringo等基础知识来生成ASP实例. SAT社区是否使用流行的基础生成实例?换句话说,是否有可以表达的东西,例如: vertex(a; b; c). isRed(V) \/ isBlue (V) \/ isGreen(V) :- vertex(V). 并从中生成DIMACS
..
给定一组子句,我想首先检查它们是否可以满足要求.如果是的话,我想简化它们并创建一个CNF,例如(a OR b)^(NOt b)应该简化为:a ^(NOt b).我只使用命题公式.我尝试使用Java SAT4j库来执行此操作.它可以告诉我这组子句是否令人满意,但是似乎没有任何方法可以返回简化的CNF.如何有效简化CNF?有任何Java或Python实现吗? 解决方案 您可以使用 Riss3g
..
我想知道对 这样的布尔公式进行编码需要多少位 @(x1,x2,x3,x4) = (x1 OR x2 OR NOT(x3) OR x4) AND ((NOT)x2 OR x3) AND (x1 OR (NOT)x4) @是SAT的一个实例.我认为这是4位,因为可能的组合总数为2(power4).那是对的吗?我应该计算OR,NOT和AND来计算编码所需的位数吗?我搜索了很多,但找不到任何东
..
我有一个ANTLR表达式解析器,它可以使用生成的访问者来评估形式(A&(B | C))的表达式. A,B和C可以采用两个值true或false中的任何一个.但是,我面临着寻找表达式正确的A,B和C的所有组合的挑战.我试图通过以下方法解决这个问题. 计算3个变量分别为true和false的表达式 这是8种组合,因为2 ^ 3是8 我评估给变量提供000、001、010 .........
..
我是命题逻辑和布尔表达式的新手.所以这就是为什么我需要帮助.这是我的问题: 在汽车工业中,购买汽车时可以选择成千上万种不同的组件.并非每个组件都是可组合的,因此对于每辆汽车,都有很多以命题逻辑表示的规则.就我而言,每辆车都有2000到4000条规则. 它们看起来像这样: A→B∨C∨D C→¬F F∧G→D ... 其中“∧" =“和"/“∨" =“或"/“¬" =“
..
我想解析描述命题公式的 String ,然后用SAT求解器找到命题公式的所有模型。 现在我可以使用 hatt 包解析命题公式;请参阅下面的 testParse 函数。 我也可以使用SBV库运行SAT解算器调用;请参阅下面的 testParse 函数。 问题: ,在运行时,在SBV库中生成一个类型为 Predicate 类似 myPredicate 的值,该值代表刚刚解析的命题公
..
我正在通过使用 SAT Solver 来解决组合问题。 这涉及以下步骤: 将问题编码为一组布尔表达式。 将表达式的结合转换为 CNF / DIMACS (使用本土工具, bc2cnf , bool2cnf 或 Limboole ) 解决 CNF (使用SAT解析器,如 Cryptominisat , Plingeling ,表带或 Z3 ) 将解决方案(假设“SAT”
..
给定一个m * n个二进制矩阵A,M * P二进制矩阵B,其中N> M什么是有效的算法来计算X,使得AX = B? 例如: A = 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 1 1 0B = 0 1 0 1 1 0 1 1 0 1 0 0 1 0
..
有谁知道一个很好的方案,以CNF文件转换任意数量的每个条款变量CNF文件,每个条款(3-CNF)正好3个变量的?我已经看到了这个算法,计算机科学书籍,但无法找到一个实现随时随地,真舍不得浪费时间实现它自己,如果别人已经做到了。谢谢! 解决方案 我不知道任何程序做,要么,但算法是非常简单,所以只是我写了下面的python脚本(的下载),它读取DIMACS格式的通用CNF和写入的等效3-SAT问题
..
我知道,布尔可满足性是NP完全的,但是是一个布尔值前pression最小化/简化,我指的是采取一个给定的前pression以符号形式和产生一个等价的,但简单的前pression以符号形式,NP完全?我不知道这有一个从可满足到最小化的减少,但我觉得可能有。有谁知道肯定? 解决方案 好了,这样看的:用一个最小化的算法,可以压缩任何非可满足EX pression字面假,对不对?这有效地解决了周六
..
只是一个好奇的问题。还记得在课堂groupwork当教授会分裂人成一定数量的群体( N )? 我的一些教授将采取的列表 N 人一个人想与和 N 人1没有按工作'T想从每个学生的作业,然后神奇地变成组 N ,学生应该是匹配的人,他们preFER,避免与人合作,他们不要preFER。 要我这个算法听起来很像一个背包问题,但我想我会问周围约你的方式来这样的问题会。 修改:发现的一个ACM文章描述的
..