1. A computer implemented method for responding to a natural language sentence in which: the terms: “reasoning” is: using a first concept in a natural language sentence to identify a second concept by creating a continuous chain of logic from the first concept to the second concept; and “directed reasoning” is: applying reasoning to a first concept in a natural language sentence to identify a second concept, wherein only reasoning related to the natural language sentence is allowed, the method comprising the steps of: receiving, in a computer, at least one input concept, wherein the at least one input concept is generated from parsing an initial natural language sentence; searching a knowledge base comprising a plurality of natural language sentences using the at least one input concept to retrieve at least one response concept from the knowledge base, the searching step further comprising the step of resolving one or more contextual referents occurring in a natural language sentence of the plurality, wherein each of the one or more contextual referents is a word within the natural language sentence, the word referring to a previously parsed word or a phrase in the natural language sentence or another natural language sentence of the plurality; performing directed reasoning on both the at least one input concept and the at least one response concept to select at least one selected response concept by connecting the at least one response concept to the at least one input concept through a continuous chain of logic based on at least one of inductive reasoning, deductive reasoning or abductive reasoning; and generating at least one response sentence containing the at least one selected response concept.