24、基于单子解释验证二元决策图(BDD)算法

基于单子解释验证二元决策图(BDD)算法

1. 程序概述

在逻辑计算领域,有三个关键程序:Apply、Build 和 TautChecker。Apply 程序被 Build 程序调用,用于根据给定的布尔表达式生成表示布尔函数的节点。Build 程序通过对布尔表达式的结构进行原始递归定义。而 TautChecker 程序则负责初始化状态,使用输入的布尔表达式调用 Build 程序,并返回一个布尔值。当且仅当 Build 程序返回的节点是 TrueNode 时,TautChecker 返回 True。

下面是这三个程序的工作流程:

graph LR
    A[布尔表达式] --> B[Build程序]
    B --> C{Build返回节点}
    C -->|节点是TrueNode| D(True)
    C -->|节点不是TrueNode| E(False)
    B -->|调用| F[Apply程序]
    F -->|生成节点| B
2. 单子解释

Floyd - Hoare 逻辑的变体和扩展是验证命令式程序最常用的框架。但由于程序的复杂性,我们采用了一种更灵活的方法,即按照单子解释器的风格,将 BDD 程序建模为高阶逻辑中的函数。

一般来说,单子解释器将输入类型为 A、输出类型为 B 的源程序转换为目标函数式语言中类型为 A ⇒M B 的函数,其中类型构造器 M 是一个合适的单子,它封装了源语言使用的计算概念。不同的源语言通过不同的单子进行解释。我们的目标语言是 Isabell

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值