Consider the following language
is undecidable. This can be proved using contradiction.
Suppose to the contrary that that there exists a TM,
, that decides
. This machine takes
as an input. It accepts if
accepts
and rejects if
does not accept
.


Using
, build another TM
as follows
On input ![]()
- Run
on
. - If
accepts, reject. If
rejects, accept.
Notice that
is the string encoding of a machine and can be used as the
argument to
.

. The shaded box is
.The machine
takes
as an input. It accepts if
does not accept
and rejects if
accepts
.
However, this leads to a contradiction. If
is fed the input
, it accepts if
does not accept
and rejects if
accepts
.
This contradiction implies that
cannot and consequently
cannot exist. The assumption that there exists a machine to decide
was wrong. Thus
is undecidable.
However,
is recognizable.
On input ![]()
- Run
on
. - If
accepts, accept.