U: set of all programs one can write

A: set of all programs which do what the programmer expects them to do

A

A

(1)

A

(2)

B

B

B

B


(3)

A

(4)

A

A

B: set of all programs accepted by the compiler