用z3 smt求解器进行语法推理

z3gi的Python项目详细描述


使用Z3 SMT解算器的语法推理
========================



[z3]:https://github.com/z3prover/z3

找到一个最小尺寸的确定性有限自动机(dfa),它接受一组给定的正字符串,拒绝一组给定的负字符串。已经证明它是np完全的。
z3gi提供了使用可满足性模理论(smt)解决这个(和类似)问题的不同方法。

sources
--------


或者,您可以通过克隆此存储库来安装z3gi,使用“setuptools”进行安装:https://gitlab.science.ru.nl/rick/smtgi.git
$python smtgi/z3gi/setup.py install'1'的1或3大于5的倍数(这样的dfa在这里被描述为[dfa])。

[dfa]:http://abbadingo.cs.num.ie/dfa.html

this file can be found at `docs/train.txt`):

```
16 2
1 4 1 0 0 0
1 4 0 1 0 0
1 4 0 0 1 0
1 5 1 0 1 1 1
1 6 1 1 1 1 0 1
1 6 0 1 0 0 0 0
1 6 1 0 0 0 0 0
1 7 0 0 0 1 1 0 1
1 7 0 0 0 0 1 0 1
0 3 1 0 1
0 4 0 0 0 0
0 4 1 1 0 1
0 5 0 0 0 0 0
0 5 0 0 1 0 1
0 6 0 1 0 1 1 1
0 7 1 0 0 0 1 1 1
```

我们可以用Z3GI来学习train.txt中字符串的模型如下:





我是说,
状态0=0,
n=5,
状态2=2,
状态4=4,
1=input!瓦尔!0,
状态1=1,
0=输入!瓦尔!1,
输出=[3->;真,4->;真,否则->;假],
传输=[(0,输入!瓦尔!0)->;3,
(0,输入!瓦尔!1)->;4,
(4,输入!瓦尔!0)->;2,
(3,输入!瓦尔!0)->;4,
(3,输入!瓦尔!1)->;2,
(2,输入!瓦尔!0)->;1,
(1,输入!瓦尔!1)->;3,
(4,输入!瓦尔!1)->;1,
else->;0]
```


我们可以将学习到的模型解释如下。
-`0=输入!瓦尔!1`和'1=输入!瓦尔!0“提供'0'和'1'的标识符
-`n=5'表示学习的模型有5个状态
-`state0=0'到`state4=4'提供这些状态的标识符
-`out'描述这些状态的输出函数(如果接受则为'true',如果拒绝则为'false')
-`trans'定义状态和符号到状态(例如`(0,输入!瓦尔!0)->;3)`描述从'state0'到'state3'的转换`)

在python中使用z3gi打开python解释器:

```
$python
````
2。这次让我们使用不同的编码器:

```
>;>z3gi.encoder s import expressive
>;>encoder=expressive.encoder()
```
>3.创建一个示例:

```
>;>z3gi.sample import sample
>;>sample=sample(encoder)
```
>4。将“train.txt”中字符串的约束添加到示例中:

```
>;>gt;来自Z3GI。解析器导入abbadingo
>;>gt;对于字符串,在abbadingo.read中添加标签(open('train.txt','r'),header=1):
…示例[字符串]=标签

```
5。获取模型!

```
>;>model=sample.model()
>;>print(model)
```



欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java读取SSLSocket的最快或最佳方式   JavaGuice向类构造函数注入对象   java类不是抽象的,并且不会覆盖OnClickListener中的抽象方法onClick(视图)   java OpenGL 1.1更改颜色更改以前的颜色?   c#将Java/Android连接到。网络服务   java在节点上生成AES密钥   java Liferay与MarkLogic XDBC数据库集成   java使用静态初始化块来提高性能   java如何在需要不同参数的另一个方法中使用同一类中的方法   音频Java多种声音   Java显式引用转换   java Intellij,如何在maven项目中导入模块   java在什么条件下调用ELResolver的setValue方法?   java在beanshell中计算代码字符串并获取beanshell解释器返回的值   javascript将音频文件上载到服务器并从服务器响应设置图像   编码风格清理java代码,多个else if语句   java是否需要使此变量可变?   java线程未更新GlassPane上的进度条   java关闭调试模式@Vaadin Spring启动应用程序