
形式化方法
文章平均质量分 81
小柒很爱喵
十年后的博客专家
展开
-
【形式化方法】Part A: Concrete execution(具体执行)
在这节课中,我们讨论了定义程序语义的一种特定风格:操作语义,即程序在某些虚拟机上执行。我们还讨论了符号执行,它类似于操作语义,只是程序是在一个符号虚拟机上执行的,所有的程序路径都是以系统的方式探索的。最后,我们讨论了concolic的执行,即程序的具体执行和符号执行。在这个任务中,我们将构建几个执行器:具体执行器、符号执行器和concolic执行器。具体来说,这个作业分为四个部分,每个部分都包含一些教程和问题。第一部分是关于具体执行的,您将根据我们在类中讨论的大步骤操作语义实现一个执行器;第二部分是符号原创 2021-01-17 18:27:32 · 1217 阅读 · 0 评论 -
【形式化方法】PartB:Linear Regression(线性回归)
线性回归在统计学中,线性回归是对标量响应和一个或多个解释变量(也称为因变量和自变量)之间关系建模的一种线性方法。近年来,线性线性回归在人工智能和机器学习领域发挥了重要作用。线性回归算法因其相对简单和众所周知的特性而成为监督机器学习的基本算法之一。感兴趣的读者可以参考深度学习方面的资料,例如Andrew Ng从深度学习的角度很好地介绍了线性回归(到第7页)。但是,由于这不是一门深度学习的课程,所以我们将从数学的角度来解决这个问题。我们从学习一个具体的例子开始,给出以下数据(在深度学习的术语中,这些原创 2020-12-20 18:15:25 · 824 阅读 · 1 评论 -
【形式化方法】PartB:Linear Programming(线性规划)
目录线性规划背包问题1. 0-1背包问题2. 完全背包问题一般来说,一个线性规划问题(以下简称LP)由两部分组成:约束C和目标函数F。我们的目标是在C的约束下求出F的最小值或最大值。约束和目标函数都是线性形式的。在这一部分,我们将研究一些LP问题,同样也借助Z3。例如,给定约束条件:我们想要算出:要用Z3解决LP问题,我们将使用优化模块,具体来说,还将使用maximize() API。关于模块和API的更多细节,你可以参考官方文档。对于上面的例子,我们可以有下面的Z3代码..原创 2020-12-20 16:41:37 · 1117 阅读 · 0 评论 -
【形式化方法】PartB:LA/LP Applications(N皇后问题)
N-Queen Problem:在作业3(挑战问题)中,我们在SAT之前解决了N个皇后的问题(4个皇后)。这个问题是关于把N个皇后放在一个N*N的棋盘上,这样就没有两个皇后互相威胁了。一种解决方案要求没有两个皇后共享同一行、列、对角线或反对角线。下图显示了N = 4的样本N -皇后谜题的解:这个问题的目标是在一个N*N棋盘,找出存在多少个解。SAT实现的基本思想是通过Bool值构造n-queen谜题约束。实际上,我们可以用LA来求解n-queen问题,它比SAT更容易理解,也更高效。其思路与求解原创 2020-12-19 20:25:58 · 2201 阅读 · 21 评论 -
【形式化方法】Part B: LA/LP Applications(子集和问题)
在本节中,我们将研究如何利用LA/LP理论,借助Z3求解器建立模型和解决问题。具体地说,我们将解决几个非常难的问题,这里的“难”是指这些问题都是np完全的,也就是说,对于这些问题一般没有已知的多项式算法。但是,您很快就会发现使用LA/LP求解器(如Z3)解决这些问题是多么容易(和多么有趣)。一般来说,您将认识到基于求解器的问题解决策略的威力和简单性。我们要解决的np完全问题是(其中一些已经在我们之前的讲座中讨论过):子集和问题 N-queen问题 背包问题 线性回归请注意,这并不是基原创 2020-12-19 18:01:40 · 778 阅读 · 3 评论 -
【形式化方法】Part A:线性算术基础理论
在这节课中,我们讨论了线性算法(以下简称LA)和线性规划(以下简称LP)的理论。算术约束在形式推理和(困难的)问题解决的每个方面都是普遍存在的,LA和LP都是建立这些模型和解决问题的非常有力的工具。从计算机科学的观点来看,大多数LA和LP问题都可以通过专用软件或库来解决,IBM非常流行的CPLEX就是一个例子。然而,通过在整数、有理数或实数域上合并调优的LA/LP决策过程,大多数现代求解器/验证器对LA/LP理论也有足够的支持。以Z3为例,它对LA和LP都有很好的支持。在这个作业中,你将熟悉LA/L原创 2020-12-19 13:38:54 · 945 阅读 · 7 评论 -
【中科大软院-形式化】Part B: Predicate Logic
在本节中,我们将学习如何使用Coq来证明谓词逻辑定理。在Coq中,我们可以像声明命题变量一样声明集合变量:Variables A B: Set.在我们声明A和B都是集合的变量之前。接下来,我们在集合A上声明一些谓词变量P和Q:Variables P Q: A -> Prop.你可以把P和Q看作从A获取元素并返回一个Prop的函数。如果我们有一个集合的元素,例如a: A,我们可以用P(a)来表示满足命题P。使用相同的方法,我们可以声明与几个元素相关的属性。例如,我们可以通过以下方式引.翻译 2020-11-14 14:40:14 · 1491 阅读 · 11 评论 -
【中科大软院-形式化课程】PartA:More Coq Tactics
Negation: tacticunfoldCoq用符号~表示命题的否定。~ P是P -> False的一个语法,我们可以用像下面这样的否定来建立定理:Theorem example_1: forall P: Prop, ~(P /\ ~P). Proof. unfold not. intros. inversion H. apply H1. apply H0. Qed..原创 2020-11-12 20:14:22 · 1649 阅读 · 0 评论 -
【形式化方法】Part B: SAT And Validity(SAT和有效性)
Part B: SAT 和有效性In Exercise 1, we've learned how to represent propositions in Z3 and how to use Z3 to obtain the solutions that make a given proposition satisfiable. In this part, we continue to discuss how to use Z3 to check the validity of propositions原创 2020-11-02 15:12:06 · 1703 阅读 · 9 评论 -
【形式化方法】Basic Propositional Logic 基本命题逻辑z3
Part A: 基本命题逻辑这个模块、我们学习如何用z3来解决基本命题逻辑的问题命题的声明:我们可以在声明两个布尔类型的命题,当然,这两个命题有两种取值true 或者是false,声明命题P和Q如下: P = Bool('P') Q = Bool('Q')或者,我们可以用简短的写法: P, Q = Bools('P Q')用连接词来创建命题:Z3 supports connectives: /\(And), \/(Or), ~(Not), ->原创 2020-11-01 13:35:11 · 1357 阅读 · 2 评论