I am trying to get my head around this problem. Hopefully someone can help.
Imagine we have a program called Confusion
;
Program confusion
if(Virus-Finder(Confusion) = false) then
infect-executable
else
halt
End program confusion
Obviously this is pseudo code, so won't run.
For any program P
, we can run Virus-Finder(P)
the result will be True
if it is a virus, and False
if it is not.
infect-executable
is a module that scans the memory for executable programs and replicates the program Confusion
in those executables.
We have no direction as to what Virus-Finder
actually does, only that it returns True
if the input is a virus, or False
if it is not,.
Is it possible to determine if Virus-Finder
can correctly decide whether Confusion
is a virus or not? My initial thought is no, it cannot. But I cannot get my head around the logic.