I've searched tons of resources and while conceptually I understand the turing machine itself and what it does- I'm a bit stuck on Turing Recognizable and Turing Decidable languages and I'm not sure if the idea I have about them is right or wrong.
My professor defines four possible actions a Turing machine can do on a given input string:
- Hang: The turing machine goes off the left end of the tape and "hangs"
- Loop: The turing machine goes in a loop- never halts
- Accepts: Turing machine halts in an accepting state
- Rejects: Turing machine halts in a rejecting state
Is a turing recognizable language just one that can either hang or loop? How do I determine if it can hang or loop? Just run it through the machine and if it doesn't halt on the rejecting state (or accepting) and its not part of the language of the TM then I determine its not decidable- so it must be recognizable? And then the decider is if the language is guaranteed to accept or reject? What about languages that aren't recognizable? What would they do? Because it seems that all languages would be recognizable unless it would be possible for the language to not be in the language of the turing machine- but it halts in the accepting state anyways. Which seems like it would be due to bad design of the turing machine rather than the language itself.
Just struggling to understand these two definitions. I've been studying for my exam which is tomorrow for hours and I just can't grasp what should be a simple concept. Please help clear up my confusion?