38
第5第 第第第第第第第第 PCF 第第第第第第第第 第第第第第第第第第第第第第第 第第第第第第第第第第 第第第第第 第 3 第第第第第第第第第第第第第第第第 第 4 第第第第第第第第第第 第第第第第第第第第 第第第第第第第第第第第第第

第 5 章 类型化 演算的模型

  • Upload
    miron

  • View
    146

  • Download
    0

Embed Size (px)

DESCRIPTION

第 5 章 类型化  演算的模型. PCF 语言的三部分组成 带函数和积类型的纯类型化  演算 自然数类型和布尔类型 不动点算子 第 3 章对代数数据类型进行了透彻的研究 第 4 章研究简单类型化  演算 本章研究不动点算子 上一章的模型不能解释不动点算子. 5.1 引 言. 本章的主要内容 基于完全偏序集合的,带不动点算子的类型化  演算的论域理论模型。 不动点归纳法,这是一种对递归定义进行推理的证明方法 计算的适当性和完全抽象定理,它将 PCF( 及其衍生)的操作语义和基于论域的指称语义联系起来. 5.2 论域理论模型和不动点. - PowerPoint PPT Presentation

Citation preview

Page 1: 第 5 章  类型化  演算的模型

第 5 章 类型化演算的模型• PCF 语言的三部分组成

– 带函数和积类型的纯类型化演算– 自然数类型和布尔类型– 不动点算子

• 第 3 章对代数数据类型进行了透彻的研究• 第 4 章研究简单类型化演算• 本章研究不动点算子• 上一章的模型不能解释不动点算子

Page 2: 第 5 章  类型化  演算的模型

5.1 引 言本章的主要内容• 基于完全偏序集合的,带不动点算子的类型化

演算的论域理论模型。• 不动点归纳法,这是一种对递归定义进行推理

的证明方法• 计算的适当性和完全抽象定理,它将 PCF (及

其衍生)的操作语义和基于论域的指称语义联系起来

Page 3: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点5.2.1 递归定义和不动点算子• 在类型化演算中,如果想加递归定义

letrec f : = M in N

只要加上不动点算子 fix 就够了• 下面用 fix 归约的性质来启发 fix 的语义解释

Page 4: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点使用 fixnatnat ,阶乘函数可以写成 fact =def fixnatnat F ,

其中 F 是表达式F =def f :natnat.y:nat.if Eq? y 0 then 1 else yf (y-1)

fact n fix F n

= (f : (natnat) (natnat). f (fix f)) F n

= F(fix F) n

(f : natnat.y:nat.if Eq? y 0 then 1 else yf(y-1)) (fix F) n

= if Eq? n 0 then 1 else n (fix F) (n-1)

Page 5: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点• 考虑 fix F 的有限步展开,用另一种方式来理

解– fix[n+1] F = F (fix[n] F)– fix[0] F = diverge (表示处处无定义的函数)– fix[n] F 描述 F 体的计算最多使用 n 次的递归计算– (fix[2] F)0 = 1 , (fix[2] F)1 = 1 , (fix[2] F) n 对 n 2

没有定义– 把函数看成二元组的集合后, fix[n1] F = (fix[n] F)

{n, n} 是真包含所有的 fix[i] F (in) ,– 即 {0, 0!} {0, 0!, 1, 1!} {0, 0!, 1, 1!,

2, 2!} …

Page 6: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点– 让 fact = n ( fix

[n] F) 是有直观的计算意义的– 尚不足以让人相信,对任意的 F , n ( fix

[n] F) 就是 F 的不动点

– 需要强加一些相对自然的条件到 F 才能保证这一点– 当用集合包含对部分函数排序时, n ( fix

[n] F) 将是 F 的最小不动点

Page 7: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点• 用集合之间的包含关系来定义部分函数之间的

偏序

• 在类型化演算的论域理论模型中,类型指称值的偏序集合,叫做论域

{0,1,1,1,2,1}

常函数 1 阶乘函数

{0,1,1,1,2,2}

{0,1,1,1}

{0,1}

{0,5}. . . . . .. . .

. . . . . .. . .

. . .. . .

Page 8: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点• 和递归相联系的一个特别问题是如何给计算不

终止的项以合理解释 ?– letrec f : nat nat = x: nat. f (x1) in f 3

– 延伸“自然数”论域,包含一个额外的值 nat ,用以表示类型 nat 上的不终止的计算

– 任何部分数值函数可以看成值域为自然数加 nat 上的一个全函数

– 论域上的这种序可用来刻画称之为“信息量”或“定义度”的特征

Page 9: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点5.2.2 完全偏序集合、提升和笛卡儿积• 偏序集合 D ,:有自反、反对称和传递关

系的集合 D• 任何集合可以看成有离散序的偏序集合,离

散序是指 xy 当且仅当 xy• 上界:如果 D ,是偏序集合,那么子集

SD 的上界是元素 xD ,使得对任何 yS都有 yx

• 最小上界: S 的一 个上界,它小于() S的任何其它上界

Page 10: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点• 有向集合:在偏序集合 D ,中,对于子集

SD, 如果每个有限集合 S0S 都有上界在 S

中 , 那么子集 S 称作有向的– 有向集合都是非空集合– 如果 SD 是线性序,

那么 S 一定是有向的– 偏序集合 {a0, b0, a1, b1,

a2, b2,…} ,其中对所有的 i j 都有 aiaj, bj 并且biaj, bj

a0

a1

a2

b0

b1

b2

ai 和 bi 没有最小上界

Page 11: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点• 完全偏序集合(简称 CPO )– 偏序集合 D ,– 每个有向集合 SD 都有最小上界,写成∨ S– 例:使用离散序,任何集合都可以看成 CPO– 例:任何有限偏序集合都是 CPO– 例:考虑普通算术序,自然数集合不是 CPO– 例:有理数的非平凡闭区间不是 CPO ,所有小于 的有理数的最小上界是无理数– 如果 S , TD 都是有向的,并且 S 的每个元素

都小于或等于 T 的某个元素,那么∨ S ∨T

2

Page 12: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点• 有最小元的 CPO– D D ,有一个元素 a ,使得对 D 的任何元

素 b 都有 a b

– 最小元(也叫底元)用 D 表示– 提升集合– 提升 CPO D ,

得到有底元的CPO D

…0 1 2 3 4

CPO N 的图形表示

Page 13: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点• 引理 假定 D 和 E 都是 CPO 。如果 D 和 E 都

是有底元的,那么它们的积 DE 也是一个有底元的 CPO 。而且,如果 SDE 是有向的,那么∨ S =∨ S1, ∨S2 ,其中 Si= ProjiS 。

如果 D 和 E 分别有最小元 D 和 E ,那么 D, E 是 DE 的最小元

Page 14: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点5.2.3 连续函数• CPO 上的连续函数– 包括了在程序设计中使用的所有普通函数– 给出一类有不动点的函数– 本节证明从一个 CPO 到另一个 CPO 的所有连续

函数的集合形成一个 CPO– 在构造把每个类型看成一个 CPO 的模型时,这是

最本质的一步,因为构造这样的模型时,函数类型必须解释成 CPO

Page 15: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点• 如果 f : D E 是函数,如果 S D ,用记号

f (S ) 表示 E 的子集: f (S ) = { f (d ) | dS}• 单调函数

假设 D = D, D 和 E = E, E 都是 CPO ,并且 f :D E

是它们基础集合上的函数,如果 d d蕴涵 f(d) f (d),则 f 是单调的如果 f 是单调的并且 S 是有向的,那么 f (S) 是有向的

• 连续函数– 单调– 如果对每个有向的 S D ,有 f (∨S) ∨f (S)

Page 16: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点• 连续函数的例子– 在实轴闭区间 [x, y] 上,通常计算意义下的连续函

数,当把 [x, y] 看成一个 CPO 时,该函数也是连续的

– 任何 CPO 上的常函数是平凡地连续的– 如果 D 是离散序,那么 D 上的每个函数都是连续

的– 从提升集合 A 到任何 CPO 的单调函数是连续的因为在 A 上,非平凡有向集合一定是 {, a} ,并且单调函数 f 一定把∨ {, a}=a映射到∨ f ({, a}) = {∨ f (), f (a)} = f (a) = f ( {∨ , a})

Page 17: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点• 提升函数

如果 D 和 E 都是 CPO ,并且 f : D E 是连续的,定义

f : (D{}) (E{}) 如下 f(d) = if d D then f(d) else

• 严格函数如果 f 是有底元 CPO 之间的函数,且 f ()

• 引理 令 D 和 E 都是 CPO ,如果 f : D E 是连续的,那么 f: D E 是严格的和连续的

Page 18: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点• CPO 之间的函数集合上的偏序关系

– 假设 D = D, D 和 E = E, E 都是 CPO ,对于连续函数 f, g : D E ,如果对每个 d D ,有 f(d) E g(d) ,就说 f D E g (逐点地排序)

• 记号– 从 D 到 E 的连续函数集,写成

D E D E, D E– 如果 S D E 是一个函数集合,并且 d D ,

那么 S (d) E 是由S (d) = {f (d) | f S}

给出的集合

Page 19: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点表 5.1 从 B到 B 的单调函数

f () f (true) f (false) f () f (true) f (false)

f0 f6 false true

f1 true f7 true false

f2 false f8 false false

f3 true f9 true true true

f4 false f10 false false false

f5 true true

f0

f1 f2f3 f4

f5 f6 f7 f8

f9 f10

Page 20: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点引理 对任何 CPO D 和 E ,逐点排序的连续函数集 DE 也是一个 CPO具体说,如果 S DE 是有向的,那么作为其最小上界的函数 f 由 f(d) =∨S(d) 给出。如果 E 有最小元,则CPO D E 有最小元– DE 是一个偏序集合– 如果 E 有最小元 E ,则 x:D.E 是 D E 的最小元– 每个有向集合 S 都有最小上界 f– f 是连续的

Page 21: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点• (积函数)作为 CPO 积上 n 元函数, f : D 1 …

Dn E 是连续的,当且仅当它在每个变元上是连续的

• (配对函数)如果 SD 和 TE 都是有向的,那么∨ S, ∨T =∨{s, t | sS, tT}

• (射影函 数 ) 如 果 SD E 是 有 向 的 , 那 么Proji(∨S) = ∨{ Proji(x) | xS}

• (函数作用)如果 SDE 和 TD 都是有向的,那么∨ S(∨T) = ∨{f (x) | fS, xT}

• (函数合成)如果 SD E 和 T E F 都是有向的 ,那么 (∨ S) (∨T) =∨{g f | fS, gT}

Page 22: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点5.2.4 不动点和完全连续体系• 完全连续体系

– 若有 CPOAb0, 0, …, Abk, k ,则 Ab0, …, Abk 为基类型

– A A A ,由 逐坐标地定序– A 所有连续的 f : A, A, ,由

逐点地定序每个 A, 都是一个 CPO

这是在 CPOAb0, 0, …, Abk, k 上构造的类型框架

Page 23: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点• 本节的主要结论:任何若干个 CPO 上的完全

连续类型体系形成一个 Henkin 模型,并在所有有底元的类型上有最小不动点算子。

• 引理 如果 D 是有底元 CPO ,并且 f : D D 连续,那么 f 有最小不动点

fixD f = {∨ f n () | n 0}

此外,映射 fixD 是连续的– 先证∨ {f n () | n 0} 是不动点– 再证它是最小不动点– 最后证明 fixD 是连续的

Page 24: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点• 例: id : D D 是有底元 CPO D 上的恒等函

数 , 计算 fix idfix id = {∨ idn (D) | n 0}

= {∨ D}

= D

• 例: f : PNPN, f (A) = A 不在 A 中的最小 iN ,如果它存在的话 很容易看出 f k () = {0, …, k-1}

于是 fix f = N

Page 25: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点5.2.5 PCF 的 CPO 模型• 考虑 PCF 语言的论域理论语义 APCF

– 提供对 PCF 性质的某种透彻理解– 提供对 PCF 进行语义推理的基础

• PCF 等式公理系统对 APCF 的可靠性• 归约系统对 APCF 也是可靠的• PCF 等式证明系统对 APCF 不可能是完备的• 5.3节将考虑等式公理系统的一个扩展,它基

于该 CPO 模型,能证明项之间更多的性质

Page 26: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点• APCF 是 N和 B 上的完全连续体系– PCF 的类型常量解释为有底元的 CPO– PCF 的所有类型都可以解释为有底元的 CPO

• 常量的解释– 常量 0,1,2,… 和 true , false按通常的方式解释为提

升集合 N和 B 上的自然数和布尔值– + 和 Eq? 解释为它们普通解释的提升版本和 Eq?

nat + x = x + nat = nat

– 条件运算的解释需仔细考虑当 M 指称而 N 不是时, if false then M else N 不应该指称

Page 27: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点– 不动点常量按下面定理进行解释

如果 D 是有底元 CPO ,并且 f : D D 连续,那么 f 有最小不动点

fixD f = {∨ f n () | n 0}

此外,映射 fixD 是连续的

• PCF 的每个项在 APCF 中都有含义

Page 28: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点• 定理 令 M 和 N 是上的 PCF 表达式。如果

M=N: 从 PCF 的公理可以证明,那么APCF满足等式 M=N:

• 推论 如果 M: 是一个良类型的 PCF 项,并且 MN ,那么 PCF 模型 APCF满足等式 M=N:

Page 29: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点例 阶乘函数可以写成 fact =def fixnatnat F ,其中F =def f :natnat. y:nat. if Eq? y 0 then 1 else yf (y-1)

• 可以证明, APCF〖 F〗是连续的• APCF〖 fact 〗 =∨{(APCF〖 fact 〗 )n () | n0}

• (APCF〖 fact 〗 )0 () = natnat

– 直接用项来表示相应论域中元素的名字

Page 30: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点(APCF〖 fact 〗 )1() = y:nat. if Eq? y 0 then 1

else y ((APCF 〖 fact 〗 )0

() )(y-1)

= y:nat. if Eq? y 0 then 1 else y (natnat) (y-1)

= y:nat. if Eq? y 0 then 1 else nat

Page 31: 第 5 章  类型化  演算的模型

5.2 论域理论模型和不动点例:考虑函数 F : (natnat) (natnat) ,其定义为 F =def f :natnat. x:nat. if Eq? x 1 then 1 else f (x-2)

满足下列条件的函数 g : nat nat 都是上面 F 的不动点g(1) = 1

g(x+2) = g(x)

最小不动点是:当 x 是奇数时,结果是 1;

当 x 是偶数时,计算不终止。

Page 32: 第 5 章  类型化  演算的模型

5.3 不动点归纳• 例 如果 f : D D 和 g : D D 是某个 CPO D

上的连续函数,则 fix (f g) = f (fix (gf))fix (f g) = {(∨ f g)i () | i 0}

= {∨ , ( f g) (), ( f g f g) (), …}

= {(∨ f (g f )i ) () | i 0}

= f (fix (gf))

仅使用 PCF 的等式证明系统不可能证明fix (f g) = f (fix (gf))

Page 33: 第 5 章  类型化  演算的模型

5.3 不动点归纳• 基于项的 CPO 解释来扩展证明系统

在 CPO 模型 A 中,一个近似 M N 对环境 是满足 的 , 如 果 A 〖 M 〗 A 〖 N 〗

(eq)

(asym)

M = N :

M N:

M N : , N M :

M = N:

Page 34: 第 5 章  类型化  演算的模型

5.3 不动点归纳

(trans)

M (bot)

= x : . : (botf)

(acong)

(fcong)

M N : , N P :

M P :

M1 M2 : , N1 N2 :

M1 N1 M2 N2 : , x : M N :

x : . M x : . N :

Page 35: 第 5 章  类型化  演算的模型

5.3 不动点归纳

用 A 表示从一组等式和近似可以证明等式或近似 A

MN = N :

fix M N :

[/x] A, , [c/x]A [F(c)/x]A [fix F/x]A

常 量 c 不 在 A 中 (fpind)

Page 36: 第 5 章  类型化  演算的模型

5.3 不动点归纳例 证明 ,如果 N 是 M 的一个不动点 ,那么 fix M

N– 假定 MN N ,这就有 MN N

– 令 A , x : x N : ,其中 x 在 N 中不是自由的

– 令不动点归纳规则中 F 是 M

1. 首先证明 [/x]A N :

2.然后取 [c/x]A c N : 作为假设,证明[Mc/x]A Mc N :

根据假设 c N, 由单调性,有 Mc MN :

因为 MN N ,所以 Mc N :

Page 37: 第 5 章  类型化  演算的模型

5.4 计算适当性和完全抽象本节完成

=ax =den =op

和( programs M) ( results N) M =ax N 当且仅当 M =den N 当且仅当 M =op N

的证明

Page 38: 第 5 章  类型化  演算的模型

习 题 第一次: 5.3 , 5.10

第二次: 5.15(a), 5.25(b)