I'm going over hardcore predicates now and trying to understand the concept. Some lecture slides I've seen online imply that there cannot be a generic hardcore predicate for all one way functions because for a OWF f(x) and predicate b(x) you can always define g(x) = (f(x), b(x)).
Which supposedly gives up the information of what b(x) is while g remains one way (because f is).
My question is, what about the predicate b(x) = x?
Since the functions are one way, there is no way we can guess x given f(x) in an easy manner.
And if we were to define a g as before it would no longer be one way seeing as it gives up what it's initial input was.
Am I missing something? Maybe I misunderstood the lecture and there does exist a generic hardcore predicate for one way functions? Any helps would be appreciated.