: Primitive Recursive Function

1

n  (Brainerd and Landweber, 1974)

PR

while使for

定義

編集

 {0, 1, 2, ...} n  n (n-ary-ary ) :

(一) (Constant Function) : 0  0 [1]

(二)Successor Function: 1   S (successor) S (k) = k + 1.

(三)Projection Function: n 1  n1  i n i n Pini 

:

(一) (Composition) : k f k m g1, ..., gkf  g1, ..., gk m h(x1, ..., xm) = f(g1(x1, ..., xm), ..., gk(x1, ..., xm)) 

(二) (Primitive Recursion) : k f (k + 2)  gf  g (k + 1) h(0, x1, ..., xk) = f(x1, ..., xk)  h(S(n), x1, ..., xk) = g(h(n, x1, ..., xk), n, x1, ..., xk)  h


射影関数の役割

編集

射影関数を使って、上述の関数群での引数の個数を変化させることができる。射影関数の合成を行うと、ある関数の引数のサブセットを別の関数に渡すことができる。例えば、2 項原始再帰関数 gh を次のように合成する。

 

f も原始再帰的である。射影関数による形式的定義は以下のようになる。

 .

述語を数値関数に変換する

編集

設定によっては、真理値を引数に含む原始再帰関数や値域が真理値であるような原始再帰関数が考えられる (Kleene 1952年、pp.226-227)。これは真理値を何らかの固定された手法で数に変換してやればよい。例えば、「真; true」を 1 に、「偽; false」を 0 に対応させるのが一般的である。このようにすると、集合 A指示関数1 または 0 を返す関数)をある数値が集合 A に含まれるかどうかを示す述語とみなすことができる。

引数が 1 つで再帰的に定義される多くの数論的関数は原始再帰的である。基本的な例として加算と「限定された減算」関数がある。

加算

編集

直観的に、加算は次の規則で再帰的に定義できる:

add(0, x) = x,
add(n + 1, x) = add(n, x) + 1.

これを厳密な原始再帰関数の定義に当てはめるため、次のように定義する:

add(0, x) = P11(x),
add(S(n), x) = S(P13(add(n, x), n, x)).

ここで、P13 は射影関数であり、3つの引数をとり、最初の引数を返す。また、S は後者関数である。

P11 は単純な恒等関数であり、上述の原始再帰関数の定義に当てはめるために導入されている。同語反復的な定義となっていた "+" 記号が無くなっている点に注意されたい。

減算

編集

 sub(a, b)  b- a 0 

 (Predecessor Function) :

pred(0)=0,

pred(n + 1) = n.

:

pred(0)=0,

pred(S(n)) = P22(pred(n), n).

使使:

sub(0, x) = P11(x),

sub(S(n), x) = pred(P13(sub(n, x), n, x)).

 sub(a, b)  b- a

 e, f, g, he  f g h

整数および有理数の演算

編集

ゲーデル数を使うと、原始再帰関数を整数や有理数に拡張することができる。整数を標準的な方法でゲーデル数に符号化した場合、その算術演算である加算、減算、乗算は全て原始再帰的である。同様に有理数をゲーデル数で表した場合、の演算は全て原始再帰的である。

再帰関数との関係

編集

μ使μ (Partial Function)  (Total Function) 

 A(m,n) 使 m A(m, n)

限界

編集

:

2                    [2]

×         

     1

 (en) 使

:

原始再帰関数の例

編集
以下の例と定義の典拠は Kleene (1952) pp. 223-231 である。類似の一覧は Boolos-Burgess-Jeffrey 2002 pp. 63-70 にもある。

4:

(一) (Function) - 

(二) (Predicate) - 

(三) (Propositional Connective) - 

(四) (Representing Function) -  0 1φ  0 1P 0  φ(x)  P(x) 

a'  " ' "  (successor)  "+1" a +1 =def a' 1621 #G 

(一): a+b

(二): a*b

(三): ab,

(四) a! : 0! = 1, a'! = a!*a'

(五)pred(a): : a a>0  a-1  anew  0  a 

(六): a  b  " a  b  a-b,  0 "

(七) (a1, ... an)

(八) (a1, ... an)

(九): | a-b | =def a  b + b  a

(十)~sg(a): NOT[signum(a}]: a=0  sg(a)=1  a>0  sg(a)=0

(11)sg(a): signum(a): a=0  sg(a)=0  a>0  sg(a)=1

(12) (a, b): a b

(13) [ a | b ]:  0 

(14)s = b: sg | a - b |

(15)a < b: sg( a'  b )

(16)a | b: 

(17)Pr(a): a  Pr(a) =def a>1 & NOT(Exists c)1<c<a [ c|a ]

(18)Pi: i+1 

(19)(a)i : pi =def μx [ x<a [pix|a & NOT(pi x'|a ] ai μx  #E 

(20)lh(a): a  (non-vanishing exponents) 

(21)a*b: a ba*b 

(22)lo(x, y): yx

x =defxi, ... xn 使使x x 

#A:  Ψ q1 , ... qn  φ  Ψ 

#B:  Σy<z ψ(x, y)  Πy<zψ(x, y)  ψ 

#C: Q χ1 , ..., χm P χ1, ..., χm, Q 

#D: QR:

: NOT_Q(x) .

: Q(x) V R(x),

: Q(x) & R(x),

: Q(x)  R(x)

: Q(x)  R(x)

#E: R:

(Ey)y<z R(x, y): (Ey)y<z zy

(y)y<z R(x, y): (y) zy  

μyy<z R(x, y):  μyy<z R(x, y) μzy R(x, y) 

#F: : Q1, ..., Qm φ1, ..., Q1, ... Qm :

φ(x) =
φ1(x) if Q1(x) is true,

. . . . . . . . . . . . . . . . . . .

φm(x) if Qm(x) is true

φm+1(x) otherwise

#G: φ  φ(y, x) = χ(y, NOT-φ(y; x2, ... xn ), x2, ... xn  χ  φ 

参考文献

編集
  • Brainerd, W.S., Landweber, L.H. (1974), Theory of Computation, Wiley, ISBN 0-471-09585-0
  • Robert I. Soare, Recursively Enumerable Sets and Degrees, Springer-Verlag, 1987. ISBN 0-387-15299-7
  • Stephen Kleene (1952) Introduction to Metamathematics, North-Holland Publishing Company, New York, 11th reprint 1971: (2nd edition notes added on 6th reprint). In Chapter XI. General Recursive Functions §57
  • George Boolos, John Burgess, Richard Jeffrey (2002), Computability and Logic: Fourth Edition, Cambridge University Press, Cambridge, UK. Cf pp. 70-71.

関連項目

編集

脚注

編集
  1. ^ つまり、0 項関数とは自然数のことであると取り決める。
  2. ^ ただし原始帰納的関数を重複なく枚挙する計算可能関数が存在することが知られている。Shih-Chao Liu, An enumeration of the primitive recursive functions without repetation, Tohoku Math. J. (2) Volume 12, Number 3 (1960), pp. 400-402.

外部リンク

編集