是,我们的加法器有了。
这种看起来很像左脚踩右脚登天的构造方式叫做“原始递归”,它的定义是这样的:
这章没有结束,请点击下一页继续阅读!
基准函数f:Nn—N
递归函数g:Nn+2—N
使用f和g的原始递归h=ρn(f,g):Nn+1—N
对于h:
基准条件:h(x1,...xn,0)=f(x1,...,xn)
递归条件: h(x1,...,xn,y+1)=g(x1,...,xn,y,h(x1,...,xn,y))
回到我们的加法器add:
add:N2→N
add(x,y)=x+y=ρ1(f,g)
基准条件:add(x,0)=f(x)=proj11
递归条件:add(x,y+1)=g(x,y,add(x,y))=succ(add(x,y)),g=succ·[proj33]
add=ρ1(proj11,succ·[proj33])
完美无瑕。
类似地,乘法器mult=ρ1(zero,add·[proj13,proj33])
前继函数,减法器等等基本运算都可以据此定义,只需要proj,zero,succ三种原始函数和组合·,原始递归ρ这两种基本操作。所有完全函数都可以据此构造。
那么“偏函数”呢?
构造偏函数还需要额外的一个操作:最小化。
如果我们有一个函数f:N^n+1—N (这里^代表上标,虽然不好看,但实在是敲得太麻烦没有耐心了),具体的f(a1,...an,x),其中a1,...an是固定参数,x是可变参数。
那么最小化操作为:μ^nf:N^n—N它会找到给它输入的n个参数里,最小的一个,并输出
比如f(5,4,3,2,1,0)=0
如果遇到重复参数,那么就输出第一个最小的。
比如f(5,4,3,2,1,1)=1
假设我们有一个投影函数长这样:
proj21:N2—N (proj21中的2是上标,1是下标,下同,写不动摆烂了)
那么μ^1proj21:N—N
举个栗子:
本章未完,请点击下一页继续阅读! 第3页 / 共5页