Please note that the content of this book primarily consists of articles available from Wikipedia or other free sources online. In computability theory and computational complexity theory, a reduction is a transformation of one problem into another problem. Depending on the transformation used this can be used to define complexity classes on a set of problems. Intuitively, problem A is reducible to problem B if solutions to B exist and give solutions to A whenever A has solutions. Thus, solving A cannot be harder than solving B. We write A B, usually with a subscript on the to indicate the type of reduction being used.