形式语义学

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
设E和E0是表达式,x是变量名,替换E[E0/x]是表示 把E中的所有x的自由出现替换成E0。 需要明确变量的自由出现 计算规则 ( y. x+y) [y/x] = z. y+z
2018/10/6
11
关于Lambda演算

范式(性质及其计算)



假设E是一个表达式,且其中没有任何一个 归约基,则称该表达式为范式。 范式的存在性:如果有范式,则最左归约法 一定能求出范式。 范式的唯一性:如果有范式则在变换下一 定唯一。
程序设计语言 形式语义
基理 础论
编 译 原 理
离散数学
2018/10/6 4
程序设计语言理解
Formal Method
抽 象 能 力
程序设计语言 形式语义
程 序 设 计 方 法
Formal Verification
2018/10/6
软件开发方法
Formal Specification
5
Biblioteka Baidu
前言:“形式语义学”概述
栈(保存中间计算结果) 语句控制区 表达式控制区 静态环境区 动态环境去 堆区(保存中断现场)
初始状态和终止状态 状态转换规则

– 针对每个语法结构给出执行过程 – 状态到状态的映射
2018/10/6 23
操作语义学 归约方法
2018/10/6
24

归约方法的主要思想:
–一种结构化方法(只依赖于成分的结果) –根据语言的成分给出归约系统的方法
2018/10/6
9
关于Lambda演算

变换规则 (三种变换)



变换:设E是表达式,x是变量,则称下面变换为α变换 (其中y不在 FV( x.E )中) x.E ------〉 y.[y/x] E 变换:设 (x.E)和E0为表达式,则称下面变换为β变换 (称β变换规则的左部表达式为β基) (x.E)E0 E[E0/x] 变换:假设x.Mx是一个表达式,且满足条件xFV(M), 则称下面变换为η变换: (x.M x) M
2018/10/6
16
关于函数式描述方法

用函数式语言来描述算法
– 函数空间:INT* INT BOOL
– 函数定义(方程)
lookup L a = (null L→FALSE, a=hd L→TRUE,lookup (tl L) a )
2018/10/6
17
操作语义学
2018/10/6

函数式语言的组成部分
– 程序结构 函数定义 目标表达式 – 类型及其操作 – 标准类型 – 幂集类型 – 联合类型 – 函数类型 – 抽象类型
- 集合类型 - 元组类型 - 序列类型 - 递归类型
2018/10/6
15
关于函数式描述方法

函数式语言的组成部分
– 表达式 非let表达式(常量,变量,表达式,条件表达 式,以及各种操作) let表达式 let x = E’ in E letrec表达式 letrec x = E1 in E 在表达式中增加类型说明
2018/10/6
12
函数式描述方法
2018/10/6
13
关于函数式描述方法

函数式语言的特点
– 引用透明性;高阶性;模式匹配;并行性;
函数式语言的组成部分
– 程序结构 – 类型及其操作 – 表达式

用函数式语言来描述算法(解释器)
– 函数空间 – 函数定义(方程)
2018/10/6
14
关于函数式描述方法
表达式 自由变量(计算一个表达式的自由变量 集合) 替换(计算) 变换规则 (三种变换) 归约 范式(性质及其计算)

2018/10/6
8
关于Lambda演算

表达式
一个表达式由变量名、抽象符号,.以及括号等符 号构成, 其语法为: < 表达式> ::= <变量名> | < 表达式> < 表达式> | <变量名>.< 表达式> | (< 表达式> )
18
2018/10/6
19
操作语义学

三种方法
– 解释器方法
– 抽象机 – 归约方法(归约系统)

从实现的角度,通过程序的执行过程来定义 程序设计语言的语义;
2018/10/6
20
操作语义学 抽象机方法
2018/10/6
21

主要思想:
– 针对计算机语言,定义一个抽象机来解释执行将该语言的
程序;

归约系统是由以下部分组成的:
–一组归约公理 –一组推理规则,称为归约规则
归约的对象为格局(configuration),归约 的结果也是格局; 初始格局和终止格局;

2018/10/6
25
基于归约方法的操作语义的定义过程
格局的形式:<comp1,…, compn>,通过模式给出 初始格局和终止格局 一组归约公理: configure1 configure2 一组归约规则形: A1,……,An 条件公理 configure1 configure2 推导出的公理 其中A1,……,An是关于configure1中成分的公理,而 configure2中的成分只能从 configure1和 A1,……,An 中的结果格局中得到;

What?
–形式语义学:给出对(形式)语言及其程序采
用形式系统方法进行语义定义的方法。

分类:从不同的角度研究程序的含义
– 操作语义学(执行) – 指称语义学(功能) – 公理语义学(逻辑) – 代数语义学(代数,抽象数据结构) – 其他
2018/10/6
6
Lambda演算
2018/10/6
7
关于Lambda演算
2018/10/6
10
关于Lambda演算

自由变量(计算一个表达式的自由变量集合)



表达式E中变量名x的一次出现称为自由出现,如果E 中任何一个形如x. E’的子表达式包含该出现; y (x y. y (x. x y ) ) (z (x. x x) )的自由变量集合{y, z}
替换(计算)

抽象机的定义包括两个部分:
– 抽象机组成的抽象定义 – 状态结构 – 执行机制的形式定义 -- 状态转换规则

针对如下语言结构给出抽象机定义
– – – – – –
表达式 语句 输入输出 声明 Block 过程/函数
2018/10/6
22
基于抽象机的操作语义的定义过程

状态结构(形式定义)
– – – – – –
本PPT参考了金英老师的课程内容
形式语义学 Formal Semantics
2018/10/6
1
2018/10/6
2
操作语义学
执 行
代 数 代数 语 义 模型 学
程序设计语言 形式语义
功 能
逻辑
关系
公 理 语 义 学
指称语义学
函数式描述方法 理论基础
2018/10/6 3
程序设计语言
语义形式化 语法形式化
相关文档
最新文档