A reasoning is an operation of cognition that allows – following implicit links (rules, definitions, axioms, etc.) – to produce new knowledge from already existing knowledge. The reasoning is said to be automated when done by an algorithm. There is a great variety of reasonings among which mention may be made of : probabilistic, statistical, possibilistic, symbolic, deductive, inductive, abductive, modal.
The reasoning is said to be symbolic when he can be performed by means of primitive operations manipulating elementary symbols. Usually, symbolic reasoning refers to mathematical logic, more precisely first-order (predicate) logic and sometimes higher orders. The reasoning is considered to be deductive when a conclusion is established by means of premises that is the necessary consequence of it, according to logical inference rules. Constructing an automated reasoning program then consists in giving procedural form to a formal theory (a set of axioms which are primitive rules defined in a declarative form) so that it can be exploited on a computer to produce theorems (valid formulas). The recent improvements in computational power and the efforts made to carefully evaluate and compare the algorithms performances (using complexity theory) have considerably improved the techniques used in this field. Nowadays, automated reasoning is used by researchers to solve open questions in mathematics, and by industry to solve engineering problems.
There are several reasoning languages : the difficulty lies in choosing the language that best suits the given problem or problems. These languages differ from each other by:
- the underlying mathematical theory: is one in reasoning called « deductive » or « classical »? or rather probabilistic? or possibilist?
- their expressiveness: what is the amount of different problems that can be formalized in this language? Can we precisely identify the « fragment » of the underlying mathematical theory in which we are reasoning ?
- the complexity of their reasoning mechanism: will the reasoning terminate ? and if so, how many iterations will be needed according to the size of the data ?
On the one hand, the fields of artificial intelligence and theoretical computing have produced a large number of different reasoning languages that all have both their qualities and their limitations; and on the other hand, industry and engineering have contributed to this effort by adopting or reworking some of these languages in the form of norms and standards.
Among the known reasoning languages, mention may be made of:
- Semantic networks
- The conceptual graphs
- The description logics
- Mathematical logics and their fragments (decidable or not)
Among the standard language provided with a reasoning and/or a semantic layer are those defined in the semantic web or in the business rules fields :
- RDF / S
- Common Logic
- Topic Maps