1 / 38

第 5 章 类型化  演算的模型

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

miron
Download Presentation

第 5 章 类型化  演算的模型

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第5章 类型化演算的模型 • PCF语言的三部分组成 • 带函数和积类型的纯类型化演算 • 自然数类型和布尔类型 • 不动点算子 • 第3章对代数数据类型进行了透彻的研究 • 第4章研究简单类型化演算 • 本章研究不动点算子 • 上一章的模型不能解释不动点算子

  2. 5.1 引 言 本章的主要内容 • 基于完全偏序集合的,带不动点算子的类型化演算的论域理论模型。 • 不动点归纳法,这是一种对递归定义进行推理的证明方法 • 计算的适当性和完全抽象定理,它将PCF(及其衍生)的操作语义和基于论域的指称语义联系起来

  3. 5.2 论域理论模型和不动点 5.2.1 递归定义和不动点算子 • 在类型化演算中,如果想加递归定义 letrec f : = M in N 只要加上不动点算子fix就够了 • 下面用fix归约的性质来启发fix的语义解释

  4. 5.2 论域理论模型和不动点 使用fixnatnat,阶乘函数可以写成fact =deffixnatnat F,其中F是表达式 F =deff :natnat.y:nat.if Eq? y 0 then 1 else yf (y-1) fact nfix Fn = (f : (natnat)  (natnat). f (fix f)) F n = F(fix F) n  (f : natnat.y:nat.if Eq? y 0 then 1 else yf(y-1)) (fix F) n = if Eq? n 0 then 1 else n (fix F) (n-1)

  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[n1] F = (fix[n] F) {n, n}是真包含所有的fix[i] F (in), • 即 {0, 0!}  {0, 0!, 1, 1!}  {0, 0!, 1, 1!, 2, 2!}  …

  6. 5.2 论域理论模型和不动点 • 让fact = n ( fix[n] F)是有直观的计算意义的 • 尚不足以让人相信,对任意的F,n ( fix[n] F)就是F的不动点 • 需要强加一些相对自然的条件到F才能保证这一点 • 当用集合包含对部分函数排序时,n ( fix[n] F)将是F的最小不动点

  7. 阶乘函数 常函数1 {0,1,1,1,2,1} {0,1,1,1,2,2} . . . . . . . . . {0,1,1,1} . . . . . . {0,1} {0,5} . . . . . . . . .  5.2 论域理论模型和不动点 • 用集合之间的包含关系来定义部分函数之间的偏序 • 在类型化演算的 论域理论模型中,类型 指称值的偏序集合, 叫做论域

  8. 5.2 论域理论模型和不动点 • 和递归相联系的一个特别问题是如何给计算不终止的项以合理解释? • letrec f : nat nat = x: nat. f (x1) in f 3 • 延伸“自然数”论域,包含一个额外的值nat,用以表示类型nat上的不终止的计算 • 任何部分数值函数可以看成值域为自然数加nat上的一个全函数 • 论域上的这种序可用来刻画称之为“信息量”或“定义度”的特征

  9. 5.2 论域理论模型和不动点 5.2.2 完全偏序集合、提升和笛卡儿积 • 偏序集合D,:有自反、反对称和传递关系的集合D • 任何集合可以看成有离散序的偏序集合,离散序是指xy当且仅当xy • 上界:如果D,是偏序集合,那么子集SD的上界是元素xD,使得对任何yS都有yx • 最小上界: S的一 个上界,它小于()S的任何其它上界

  10. a2 b2 a1 b1 a0 b0 ai和bi没有最小上界 5.2 论域理论模型和不动点 • 有向集合:在偏序集合D,中,对于子集SD, 如果每个有限集合S0S都有上界在S中, 那么子集S称作有向的 • 有向集合都是非空集合 • 如果SD是线性序, 那么S一定是有向的 • 偏序集合{a0, b0, a1, b1, a2, b2,…},其中对所有 的ij都有aiaj, bj并且 biaj, bj

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

  12. 0 1 2 3 4  CPO N的图形表示 5.2 论域理论模型和不动点 • 有最小元的CPO • D D,有一个元素a,使得对D的任何元素b都有a b • 最小元(也叫底元)用D表示 • 提升集合 • 提升CPO D, 得到有底元的 CPO D

  13. 5.2 论域理论模型和不动点 • 引理 假定D和E都是CPO。如果D和E都是有底元的,那么它们的积DE也是一个有底元的CPO。而且,如果SDE是有向的,那么∨S=∨S1, ∨S2,其中Si= ProjiS。 如果D和E分别有最小元D和E,那么D, E是DE的最小元

  14. 5.2 论域理论模型和不动点 5.2.3连续函数 • CPO上的连续函数 • 包括了在程序设计中使用的所有普通函数 • 给出一类有不动点的函数 • 本节证明从一个CPO到另一个CPO的所有连续函数的集合形成一个CPO • 在构造把每个类型看成一个CPO的模型时,这是最本质的一步,因为构造这样的模型时,函数类型必须解释成CPO

  15. 5.2 论域理论模型和不动点 • 如果f : D E是函数,如果S D,用记号 f (S )表示E的子集:f (S ) = { f (d ) | dS} • 单调函数 假设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)

  16. 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})

  17. 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是严格的和连续的

  18. 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} 给出的集合

  19. f9 f10 f5 f7 f6 f8 f3 f1 f2 f4 f0 5.2 论域理论模型和不动点 表5.1 从B到B的单调函数 f () f (true) f (false) f () f (true) f (false) f0f6falsetrue f1 true f7 truefalse f2 false  f8 falsefalse f3  truef9 true truetrue f4  falsef10 falsefalsefalse f5 true true

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

  21. 5.2 论域理论模型和不动点 • (积函数)作为CPO积上n元函数,f : D 1 … DnE是连续的,当且仅当它在每个变元上是连续的 • (配对函数)如果SD和TE都是有向的,那么∨S, ∨T =∨{s, t | sS, tT} • (射影函数)如果SD E是有向的,那么Proji(∨S) = ∨{ Proji(x) | xS} • (函数作用)如果SDE和TD都是有向的,那么∨S(∨T) = ∨{f (x) | fS, xT} • (函数合成)如果SD E和T E F都是有向的,那么(∨S) (∨T) =∨{g f | fS, gT}

  22. 5.2 论域理论模型和不动点 5.2.4 不动点和完全连续体系 • 完全连续体系 • 若有CPOAb0, 0, …, Abk, k ,则Ab0, …, Abk为基类型 • A   A A,由 逐坐标地定序 • A   所有连续的f : A,   A, ,由 逐点地定序 每个A, 都是一个CPO 这是在CPOAb0, 0, …, Abk, k 上构造的类型框架

  23. 5.2 论域理论模型和不动点 • 本节的主要结论:任何若干个CPO上的完全连续类型体系形成一个Henkin模型,并在所有有底元的类型上有最小不动点算子。 • 引理如果D是有底元CPO,并且f : D D连续,那么f有最小不动点 fixD f = ∨{f n () | n  0} 此外,映射fixD是连续的 • 先证∨{f n () | n  0}是不动点 • 再证它是最小不动点 • 最后证明fixD是连续的

  24. 5.2 论域理论模型和不动点 • 例:id : D D是有底元CPO D上的恒等函数,计算fix id fix id = ∨{ idn (D) | n  0} = ∨{D} = D • 例: f : PNPN, f (A) = A 不在A中的最小iN,如果它存在的话 很容易看出f k () = {0, …, k-1} 于是fix f = N

  25. 5.2 论域理论模型和不动点 5.2.5 PCF的CPO模型 • 考虑PCF语言的论域理论语义APCF • 提供对PCF性质的某种透彻理解 • 提供对PCF进行语义推理的基础 • PCF等式公理系统对APCF的可靠性 • 归约系统对APCF也是可靠的 • PCF等式证明系统对APCF不可能是完备的 • 5.3节将考虑等式公理系统的一个扩展,它基于该CPO模型,能证明项之间更多的性质

  26. 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不应该指称

  27. 5.2 论域理论模型和不动点 • 不动点常量按下面定理进行解释 如果D是有底元CPO,并且f : D D连续,那么f有最小不动点 fixD f = ∨{f n () | n  0} 此外,映射fixD是连续的 • PCF的每个项在APCF中都有含义

  28. 5.2 论域理论模型和不动点 • 定理令M和N是上的PCF表达式。如果  M=N:从PCF的公理可以证明,那么APCF满足等式 M=N: • 推论如果 M:是一个良类型的PCF项,并且MN,那么PCF模型APCF满足等式  M=N:

  29. 5.2 论域理论模型和不动点 例 阶乘函数可以写成fact =def fixnatnat F,其中 F =deff :natnat. y:nat. if Eq? y 0 then 1 else yf (y-1) • 可以证明,APCF〖F〗是连续的 • APCF〖fact〗=∨{(APCF〖fact〗)n() | n0} • (APCF〖fact〗)0() = natnat • 直接用项来表示相应论域中元素的名字

  30. 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 (natnat) (y-1) = y:nat. if Eq? y 0 then 1 else nat

  31. 5.2 论域理论模型和不动点 例:考虑函数F : (natnat)  (natnat),其定义为 F =deff :natnat. 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是偶数时,计算不终止。

  32. 5.3 不动点归纳 • 例 如果f : D D和g : D D是某个CPO D上的连续函数,则fix (f g) = f (fix (gf)) fix (f g) = ∨{( f g)i () | i  0} = ∨{, ( f g)(), ( f g f g)(), …} = ∨{( f  (g f )i )() | i  0} = f (fix (gf)) 仅使用PCF的等式证明系统不可能证明 fix (f g) = f (fix (gf))

  33.  M= N :   M N:   MN : ,  N M:   M = N:  5.3 不动点归纳 • 基于项的CPO解释来扩展证明系统 在CPO模型A中,一个近似M N 对环境是满足的,如果A〖M〗A〖N〗 (eq) (asym)

  34.  MN : ,  N P:   MP:   M1  M2:  ,  N1  N2:   M1N1 M2 N2:  , x :  M N : x : .Mx : . N :   5.3 不动点归纳 (trans)   M   (bot)   = x : . :    (botf) (acong) (fcong)

  35.  MN =N :   fix MN:   [/x] A, , [c/x]A [F(c)/x]A  [fix F/x]A 常量c不在A中 (fpind) 5.3 不动点归纳 用 A表示从一组等式和近似可以证明等式或近 似A

  36. 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 :

  37. 5.4 计算适当性和完全抽象 本节完成 =ax  =den  =op 和 ( programs M) ( results N) M =axN 当且仅当M =denN 当且仅当M =opN 的证明

  38. 习 题 第一次:5.3,5.10 第二次: 5.15(a), 5.25(b)

More Related