CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of...

23
Computable functions Recall: Definition. f N n N is (register machine) computable if there is a register machine M with at least n + 1 registers R 0 , R 1 ,..., R n (and maybe more) such that for all ( x 1 ,..., x n ) N n and all y N, the computation of M starting with R 0 = 0, R 1 = x 1 ,..., R n = x n and all other registers set to 0, halts with R 0 = y if and only if f ( x 1 ,..., x n )= y. Computation Theory , L 3 33/171

Transcript of CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of...

Page 1: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Computable functionsRecall:

Definition. f ∈ Nn⇀N is (register machine)

computable if there is a register machine M with at leastn + 1 registers R0, R1, . . . , Rn (and maybe more)such that for all (x1, . . . , xn) ∈ N

n and all y ∈ N,

the computation of M starting with R0 = 0,R1 = x1, . . . , Rn = xn and all other registersset to 0, halts with R0 = y

if and only if f (x1, . . . , xn) = y.

Computation Theory , L 3 33/171

Page 2: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Multiplication f (x, y) , xyis computable

START R+3

R−1 R

−2 R

+0

HALT R−3 R

+2

Computation Theory , L 3 34/171

Page 3: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Multiplication f (x, y) , xyis computable

START R+3

R−1 R

−2 R

+0

HALT R−3 R

+2

Computation Theory , L 3 35/171

Page 4: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Multiplication f (x, y) , xyis computable

START R+3

R−1 R

−2 R

+0

HALT R−3 R

+2

Computation Theory , L 3 35/171

Page 5: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Multiplication f (x, y) , xyis computable

START R+3

R−1 R

−2 R

+0

HALT R−3 R

+2

Computation Theory , L 3 35/171

Page 6: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Multiplication f (x, y) , xyis computable

START R+3

R−1 R

−2 R

+0

HALT R−3 R

+2

If the machine is started with (R0, R1, R2, R3) = (0, x, y, 0), it haltswith (R0, R1, R2, R3) = (xy, 0, y, 0).

Computation Theory , L 3 35/171

Page 7: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Further examples

The following arithmetic functions are all computable.(Proof—left as an exercise!)

projection: p(x, y) , x

constant: c(x) , n

truncated subtraction: x ·− y ,

{

x− y if y ≤ x

0 if y > x

Computation Theory , L 3 36/171

Page 8: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Further examples

The following arithmetic functions are all computable.(Proof—left as an exercise!)

integer division:

x div y ,

{

integer part of x/y if y > 0

0 if y = 0

integer remainder: x mod y , x ·− y(x div y)

exponentiation base 2: e(x) , 2x

logarithm base 2:

log2(x) ,

{

greatest y such that 2y ≤ x if x > 0

0 if x = 0

Computation Theory , L 3 37/171

Page 9: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Coding Programs as Numbers

Computation Theory , L 3 38/171

Page 10: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Turing/Church solution of the Etscheidungsproblem usesthe idea that (formal descriptions of) algorithms can bethe data on which algorithms act.

To realize this idea with Register Machines we have tobe able to code RM programs as numbers. (In general,such codings are often called Gödel numberings.)

To do that, first we have to code pairs of numbers andlists of numbers as numbers. There are many ways to dothat. We fix upon one. . .

Computation Theory , L 3 39/171

Page 11: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Numerical coding of pairs

For x, y ∈ N, define

{〈〈x, y〉〉 , 2x(2y + 1)

〈x, y〉 , 2x(2y + 1)− 1

So0b〈〈x, y〉〉 = 0by 1 0 · · · 0

0b〈x, y〉 = 0by 0 1 · · · 1

(Notation: 0bx , x in binary.)

E.g. 27 = 0b11011 = 〈〈0, 13〉〉 = 〈2, 3〉

Computation Theory , L 3 40/171

Page 12: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Numerical coding of pairs

For x, y ∈ N, define

{〈〈x, y〉〉 , 2x(2y + 1)

〈x, y〉 , 2x(2y + 1)− 1

So0b〈〈x, y〉〉 = 0by 1 0 · · · 0

0b〈x, y〉 = 0by 0 1 · · · 1

〈−,−〉 gives a bijection (one-one correspondence)between N×N and N.

〈〈−,−〉〉 gives a bijection between N×N and{n ∈ N | n 6= 0}.

Computation Theory , L 3 41/171

Page 13: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Numerical coding of lists

list N , set of all finite lists of natural numbers, usingML notation for lists:

I empty list: []

I list-cons: x :: ` ∈ list N (given x ∈ N and ` ∈ list N)

I [x1, x2, . . . , xn] , x1 :: (x2 :: (· · · xn :: [] · · · ))

Computation Theory , L 3 42/171

Page 14: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Numerical coding of lists

list N , set of all finite lists of natural numbers, usingML notation for lists.For ` ∈ list N, define p`q ∈ N by induction on thelength of the list `:

{p[]q , 0

px :: `q , 〈〈x, p`q〉〉 = 2x(2 · p`q+ 1)

Thus p[x1, x2, . . . , xn]q = 〈〈x1, 〈〈x2, · · · 〈〈xn, 0〉〉 · · · 〉〉〉〉

Computation Theory , L 3 43/171

Page 15: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Numerical coding of lists

list N , set of all finite lists of natural numbers, usingML notation for lists.For ` ∈ list N, define p`q ∈ N by induction on thelength of the list `:

{p[]q , 0

px :: `q , 〈〈x, p`q〉〉 = 2x(2 · p`q+ 1)

0bp[x1, x2, . . . , xn]q = 1 0· · ·0 1 0· · ·0 ··· 1 0· · ·0

Computation Theory , L 3 44/171

Page 16: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Numerical coding of lists

list N , set of all finite lists of natural numbers, usingML notation for lists.For ` ∈ list N, define p`q ∈ N by induction on thelength of the list `:

{p[]q , 0

px :: `q , 〈〈x, p`q〉〉 = 2x(2 · p`q+ 1)

0bp[x1, x2, . . . , xn]q = 1 0· · ·0 1 0· · ·0 ··· 1 0· · ·0

Hence ` 7→ p`q gives a bijection from list N to N.Computation Theory , L 3 44/171

Page 17: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Numerical coding of lists

list N , set of all finite lists of natural numbers, usingML notation for lists.For ` ∈ list N, define p`q ∈ N by induction on thelength of the list `:

{p[]q , 0

px :: `q , 〈〈x, p`q〉〉 = 2x(2 · p`q+ 1)

For example:p[3]q = p3 :: []q = 〈〈3, 0〉〉 = 23(2 · 0 + 1) = 8 = 0b1000

p[1, 3]q = 〈〈1, p[3]q〉〉 = 〈〈1, 8〉〉 = 34 = 0b100010

p[2, 1, 3]q = 〈〈2, p[1, 3]q〉〉 = 〈〈2, 34〉〉 = 276 = 0b100010100

Computation Theory , L 3 45/171

Page 18: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Numerical coding of lists

list N , set of all finite lists of natural numbers, usingML notation for lists.For ` ∈ list N, define p`q ∈ N by induction on thelength of the list `:

{p[]q , 0

px :: `q , 〈〈x, p`q〉〉 = 2x(2 · p`q+ 1)

For example:p[3]q = p3 :: []q = 〈〈3, 0〉〉 = 23(2 · 0 + 1) = 8 = 0b1000

p[1, 3]q = 〈〈1, p[3]q〉〉 = 〈〈1, 8〉〉 = 34 = 0b100010

p[2, 1, 3]q = 〈〈2, p[1, 3]q〉〉 = 〈〈2, 34〉〉 = 276 = 0b100010100

Computation Theory , L 3 45/171

Page 19: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Numerical coding of programs

If P is the RM program

L0 : body0

L1 : body1...

Ln : bodyn

then its numerical code is

pPq , p[pbody0q, . . . , pbodynq]q

where the numerical code pbodyq of an instruction body

is defined by:

pR+i � Ljq , 〈〈2i, j〉〉

pR−i � Lj, Lkq , 〈〈2i + 1, 〈j, k〉〉〉

pHALTq , 0

Computation Theory , L 3 46/170

Page 20: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Any x ∈ N decodes to a unique instruction body(x):

if x = 0 then body(x) is HALT,else (x > 0 and) let x = 〈〈y, z〉〉 inif y = 2i is even, then

body(x) is R+i � Lz,

else y = 2i + 1 is odd, let z = 〈j, k〉 inbody(x) is R

−i � Lj, Lk

So any e ∈ N decodes to a unique program prog(e),called the register machine program with index e:

prog(e) ,

L0 : body(x0)...

Ln : body(xn)where e = p[x0, . . . , xn]q

Computation Theory , L 3 47/171

Page 21: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Example of prog(e)

I 786432 = 219 + 218 = 0b110 . . . 0︸ ︷︷ ︸

18 ”0”s

= p[18, 0]q

I 18 = 0b10010 = 〈〈1, 4〉〉 = 〈〈1, 〈0, 2〉〉〉 = pR−0 � L0, L2q

I 0 = pHALTq

So prog(786432) =L0 : R

−0 � L0, L2

L1 : HALT

Computation Theory , L 3 48/171

Page 22: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Example of prog(e)

I 786432 = 219 + 218 = 0b110 . . . 0︸ ︷︷ ︸

18 ”0”s

= p[18, 0]q

I 18 = 0b10010 = 〈〈1, 4〉〉 = 〈〈1, 〈0, 2〉〉〉 = pR−0 � L0, L2q

I 0 = pHALTq

So prog(786432) =L0 : R

−0 � L0, L2

L1 : HALT

N.B. jump to label with nobody (erroneous halt)

Computation Theory , L 3 48/171

Page 23: CST Part IB [4] Computation Theory€¦ · Computation Theory , L 3 39/171. Numerical coding of pairs Forx,y ...

Example of prog(e)

I 786432 = 219 + 218 = 0b110 . . . 0︸ ︷︷ ︸

18 ”0”s

= p[18, 0]q

I 18 = 0b10010 = 〈〈1, 4〉〉 = 〈〈1, 〈0, 2〉〉〉 = pR−0 � L0, L2q

I 0 = pHALTq

So prog(786432) =L0 : R

−0 � L0, L2

L1 : HALT

N.B. In case e = 0 we have 0 = p[]q, so prog(0) is the programwith an empty list of instructions, which by convention we regard asa RM that does nothing (i.e. that halts immediately).

Computation Theory , L 3 48/171