I am studying complexity theory and I have problem with understanding some concepts about it. Can anyone help me please?
I have some problems with Rice Theorem. It says let $C$ be a class of partially decidable languages, let $L_C= \{<M> | L(M) \in C \}$. Then $L_C$ is decidable iff $C$ is either empty or contain all partially decidable languages.
Regarding this,
In proving undecidability using Rice Theorem, firstly, we provide an example which is not in $L_C$ and another one which is in $L_C$. This is to prove, the language is not trivial which makes sense. However, when we say let $A$ and $B$ be two languages that $L(A)= L(B)$, then both should have property $C$ or none of them have this property. What are we proving here? I mean why we do this?
Secondly, as we know, all finite languages are decidable. On the other hand, we can simply use Rice Theorem to prove that the class of finite languages are undecidable. How is it possible? How does it make sense that each member of a class is decidable, but considering the class, it will be undecidable?
My third question is not about Rice theorem but about concept of decidability itself. By definition, a language $L$ is decidable if there is a TM M that for any input $x$, it always halt and decides whether it accept or reject it. Based on this definition, we can say that all NP problems are decidable by defining a TM that for any input x, accept whenever the answer is a 'yes' and rejects whenever the answer is a 'no'. But, can we also say that decidable languages are in NP class? Because the NP problems are the ones that are verifiable in polynomial time and to me, and this is what a TM is doing for decidable languages. Is it true? If not, what am I getting wrong here?
Any answer to one of these questions would be really helpful and I really appreciate it.