 Knowledge representation goes hand in hand with automated reasoning because one of the main purposes of explicitly representing knowledge is to be able to reason about that knowledge, to make inferences, assert new knowledge, etc.Virtually all knowledge representation languages have a reasoning or inference engine as part of the system.A key trade-off in the design of a knowledge representation formalism is that between expressivity and practicality.