让z3在pydev上工作有困难。
下载Python后,我转到eclipse窗口>首选项> PyDev >解释器> z3解释器,然后将"z3/bin“添加到库中
运行Python2.7.11和z3 32位
当我尝试运行简单的代码时
from z3 import*
x = Int('x')
y = Int('y')
print simplify(x + y + 2*x + 3)
获取错误
NameError: name 'Int' is not defined
在当前的Z3上下文中,断言“try(X,i,j) = ((Xi == i* j)”)已经是existed.the类型的X is (Array Int (Array Int Int)).try(X,i,j)是一个函数,返回类型是bool.here是Z3上下文:
(kernel
(forall ((Y (Array Int (Array Int Int))) (i Int) (j Int))
(let ((a!1 (= (+ (select (select Y i) j) (* (- 1) j i)) 0)))
(= (try Y i j) a!1
我需要得到第二位的索引。在电子邮件广告中。
a)
string email =john.curter@it.dev.comp.com ;
int dotIndex = email.IndexOf('.');
int nextDotIndex = email.IndexOf('.',dotIndex);
结果
nextDotIndex == 4
如果我这样做:
b)
string email =john.curter@it.dev.comp.com ;
int dotIndex = email.IndexOf('.');
int nextDo
我想在C++中使用Z3,并且我遵循了安装指南-- 。
我成功构建了它,然后我还将构建路径添加到了系统路径中。然而,当我试图运行文件时,我仍然得到一个错误。错误显示为[Error] z3++.h: No such file or directory。谁能告诉我,在使用Visual Studio Command Prompt成功构建Z3之后,为了在c++中运行Z3,我还需要进行其他配置吗?
我在StringBuffer中有一个文件的内容。该文件的内容包括多行(不在一行上)。我想编辑从索引4(例如)到该行末尾的行的内容。我使用replace()编辑StringBuffer的内容。
关键是replace方法有一些参数,比如起始索引和结束索引。但是我不知道结束索引是什么,因为每一行都有不同的字符数
我考虑使用str.indexOf("\n")查找行的结束索引,但是文件有很多行,因此它将返回不正确的结果。
如果您需要阅读代码,这是readFile()
谢谢
public StringBuffer readFile(){ //read file line by line
我已经将Z3安装在远程服务器上,其中不是Root。在安装过程中,我将前缀更改为我可以写访问的目录,安装进行得很顺利,现在我的主目录中有两个目录--一个用于项目,另一个用于解压缩/构建/安装z3。当我想执行python脚本时,它包括:
from z3 import *
我收到这个错误:
ModuleNotFoundError: No module named 'z3'
我认为这是一个与路径相关的问题,我的python文件无法访问z3模块,我不知道如何解决这个问题,特别是python3是由根安装的,而不是由我安装的。
我的问题是,“不同”在z3 python中是否有效?我比较了以下代码,结果似乎不一样:
(declare-const x Int)
(declare-const y Int)
(assert (distinct x y))
(check-sat)
(get-model)
结果是:
sat
(model
(define-fun y () Int
0)
(define-fun x () Int
1)
)
我只是为了测试而添加了否定断言,结果是unsat,这是正确的:
(assert (= x y))
unsat
Z3(6, 10): ERROR: model
我一直在搜索z3是否支持复数,并发现了以下内容:
作者指出:(1)复数尚未在Z3中作为内置实现(这是在2013年编写的),(2)复数可以在Z3提供的实数之上进行编码。
其基本思想是将复数表示为一对实数。他用I=(0,1)定义了基本虚数,即:I表示实部等于0,虚部等于1。
他提供了编码(我的意思是,我们可以在机器上测试),在那里我们可以求解方程x^2+2=0。我收到了以下结果:
sat
x = (-1.4142135623?)*I
sat结果是有意义的,因为这个方程在模拟复数理论(作为代数闭场理论的结果)中是可解的。然而,根本的结果对我来说没有意义。我是说:(1.4142135623?)*I呢?
为什么一个元组中的一个元组不能打开?然而,任何元组数组中的单个元组都可以工作。
元组(许多郁金香)-作品
mytup=(([1,2,3],['a','b','c'],99),([2,2,3],['b','b','c'],100))
for t in mytup:
z1,z2,z3=t
print(z3)
结果:
99
100
元组的元组(单组)--不起作用
mytup=(([1,2,3],['a','b','c'],99))
for t
我正在使用z3 C++ API。如果我创建这个简单的false表达式:
z3::expr x = C->int_const("x");
z3::expr p = z3::forall(x, x==0);
试着解决,我得到了一个未知的结果。我不是战略和战术方面的专家,但我相信,如果我使用正确的策略,z3可以解决这个问题。
我也试过了
z3::expr p = !z3::forall(x, x==0);
当然,结果也是一样的。
我正在使用SMT Solver Z3来解决这些约束。例如: (declare-const a Int)
(declare-fun f (Int Bool) Int)
(assert (> a 10))
(assert (< (f a true) 100))
(check-sat)
// SAT 但是,如果我们不知道变量a的类型,有没有办法定义未声明的变量并通过求解约束来获得该变量的预期结果
我正在尝试理解如何使用Z3有效地证明一个稍微简单的函数f : u32 -> u32是双射的:
def f(n):
for i in range(10):
n *= 3
n &= 0xFFFFFFFF # Let's treat this like a 4 byte unsigned number
n ^= 0xDEADBEEF
return n
我已经知道它是双射的,因为它是通过双射函数的组合得到的,所以这更多的是一个计算问题。
现在,知道域和协域是有限的并且大小相同,我想首先通过让Z3找到一个反例来实现这一
我正在尝试编写一段代码来显示如下内容:
1
1 51
151101
1 51 101 151
..。
z1=1
for i in {1..4}
do
j="$(($i + 1))"
z$j="$((z$i)) $((1 + $((i*50))))"
echo -e "\nz$j"
done
然而,这是我最终得到的结果:
z1=1: command not found
z2=1 51: command not found
z2
z3=0 101: command not found
z3
z4=0 151: command not found
在homebrew中,如果选择安装z3,则得到以下结果:
▶ brew install z3
Error: Formulae found in multiple taps:
* homebrew/science/z3
* mht208/formal/z3
Please use the fully-qualified name e.g. homebrew/science/z3 to refer the formula.
一方面,homebrew公式看起来更规范一些,因为它是主存储库(或者在homebrew中调用顶级项的任何东西),但另一方面,mht208是z3的开发人员,据我所知。是否有
我正在使用Z3的Python使用一些脚本获得意想不到的结果。我认为我误解了某个过程,或者只是简单地使用了错误的命令。例如,假设我有以下脚本:
from z3 import *
x = Int('x')
def g(x):
if x == 0:
return 1
elif x > 0:
return x**(x+1)
s = Solver()
s.add(g(x) > x)
print s.check()
if s.check()== sat:
m = s.model()
m.evaluate(x, m