{0,1}* means bit-string which can be any program (x86,TM,...)
To avoid the issue that g∉F, we modify the spec. of S:
Spec1: S(x) returns 1 if x() returns 1.
Spec2: S(x) returns 0 if x() returns 0 or x() is non-halting.
S is now looked like a kind of satisfaction function, so call it Sat(x)
Claim: Sat(x) cannot exist, because there always exists such an instance g():
int g(void) { return !Sat(g); }
that Sat cannot accomplish its task.
If g()=1, then Sat(g)=0, but Sat spec2. says g returns 0 or non-halt (Sat failed)
If g()=0, then Sat(g)=1, but Sat spec1. says g returns 1 (Sat failed)
If g() is non-halting, then Sat(g) is non-halting (Sat failed)
Am I confused of or missing anything?
I did not study such question deep and not familiar with 'computation theory'
(I read about 7,8 such books long time ago). This problem is converted from a
similar one I came across recently and seemed appropriate to submit in current
'HP atmosphere'.