Reasoning system

From Wikipedia, the free encyclopedia
Jump to: navigation, search

In information technology a reasoning system is a software application whose computational function is to generate conclusions from available knowledge using logical techniques of deduction, induction or other forms of reasoning. Reasoning systems are a subset of a broader category of intelligent systems. They play an important role in the practical implementation knowledge engineering and artificial intelligence.

A reasoning system manipulates previously acquired knowledge in order to generate new knowledge. Knowledge is typically represented symbolically as informational facts and propositional statements that capture assertions, assumptions, beliefs and other premises. Sub-symbolic (connectionist) knowledge representations may also be used (e.g., trained neural nets). Reasoning systems automate the process of inferring or otherwise deriving new knowledge via the application of logic. In a concrete implementation, reasoning systems may support procedural attachments and built-in actions to process or apply knowledge within some given domain or situation.

Reasoning systems have a wide field of application that includes scheduling, business rule processing, problem solving, complex event processing, intrusion detection, predictive analytics, robotics, computer vision, and natural language processing.

Use of logic[edit]

Reasoning systems apply logic in order to generate knowledge. However, they demonstrate significant variation in terms of systems of logic and formality. Most reasoning systems implement variations of propositional and symbolic (predicate) logic. These variations may be mathematically precise representations of formal logic systems (e.g., FOL), or extended and hybrid versions of those systems (e.g., Courteous logic[1]). Reasoning systems may explicitly implement additional logic types (e.g., modal, deontic, temporal logics). However, many reasoning systems implement imprecise and semi-formal approximations to recognised logic systems. These systems typically support a variety of procedural and semi-declarative techniques in order to model different reasoning strategies. They emphasise pragmatism over formality and may depend on custom extensions and attachments in order to solve real-world problems.

Many reasoning systems employ deductive reasoning to draw inferences from available knowledge. These inference engines support forward reasoning or backward reasoning to infer conclusions via modus ponens. The recursive reasoning methods they employee are termed ‘forward chaining’ and ‘backward chaining’, respectively. Although reasoning systems widely support deductive inference, some systems employ abductive, inductive, defeasible and other types of reasoning. Heuristics may also be employed to determine acceptable solutions to intractable problems.

Reasoning systems may employ the closed world assumption (CWA) or open world assumption (OWA). The OWA is often associated with ontological knowledge representation and the Semantic Web. Different systems exhibit a variety of approaches to negation. As well as logical or bitwise complement, systems may support existential forms of strong and weak negation including negation-as-failure and ‘inflationary’ negation (negation of non-ground atoms). Different reasoning systems may support monotonic or non-monotonic reasoning, stratification and other logical techniques.

Reasoning under uncertainty[edit]

Many reasoning systems provide capabilities for reasoning under uncertainty. This is important when building situated reasoning agents which must deal with uncertain representations of the world. There are several common approaches to handling uncertainty. These include the use of certainty factors, probabilistic methods such as Bayesian inference or Dempster–Shafer theory, multi-valued (‘fuzzy’) logic and various connectionist approaches.

Types of reasoning system[edit]

This section provides a non-exhaustive and informal categorisation of common types of reasoning system. These categories are not discreet. They overlap to a significant degree and share a number of techniques, methods and algorithms.

Constraint solvers[edit]

Constraint solvers solve constraint satisfaction problems (CSPs). They support constraint programming. A constraint is a condition which must be met by any valid solution to a problem. Constraints are defined declaratively and applied to variables within given domains. Constraint solvers use search, backtracking and constraint propagation techniques to find solutions and determine optimal solutions. They may employ forms of linear and nonlinear programming. They are often used to perform optimization within highly combinatorial problem spaces. For example, they may be used to calculate optimal scheduling, design efficient integrated circuits or maximise productivity in a manufacturing process.

Theorem provers[edit]

Theorem provers use automated reasoning techniques to determine proofs of mathematical theorems. They may also be used to verify existing proofs. In addition to academic use, typical applications of theorem provers include verification of the correctness of integrated circuits, software programs, engineering designs, etc.

Logic programs[edit]

Logic programs (LPs) are software programs written using programming languages whose primitives and expressions provide direct representations of constructs drawn from mathematical logic. An example of a general-purpose logic programming language is Prolog. LPs represent the direct application of logic programming to solve problems. Logic programming is characterised by highly declarative approaches based on formal logic, and has wide application across many disciplines.

Expert systems[edit]

Expert systems apply reasoning based on knowledge drawn from human (‘expert’) experience and insight. They emulate the reasoning processes of human experts. They provide mechanisms in which expert knowledge in a given domain can be captured and exploited in an automated or semi-automated fashion. Expert systems are often used to support decision making by eliciting facts from human operators and applying rule-based reasoning to recommend appropriate actions or decisions. They may support the elaboration and refinement of knowledge bases over time based on on-going human interaction.

Rule engines[edit]

Rule engines represent conditional logic as discrete rules. Rule sets can be managed and applied separately to other functionality. They have wide applicability across many domains. Many rule engines implement reasoning capabilities. A common approach is to implement production systems to support forward or backward chaining. Each rule (‘production’) binds a conjunction of predicate clauses to a list of executable actions. At run-time, the rule engine matches productions against facts and executes (‘fires’) the associated action list for each match. If those actions remove or modify any facts, or assert new facts, the engine immediately re-computes the set of matches. Rule engines are widely used to model and apply business rules, to control decision-making in automated processes and to enforce business and technical policies.

Machine learning systems[edit]

Machine learning systems evolve their behavior over time based on experience. This may involve reasoning over observed events or example data provided for training purposes. For example, machine learning systems may use inductive reasoning to generate hypotheses for observed facts. Learning systems search for generalised rules or functions that yield results in line with observations and then use these generalisations to control future behavior.

Case-based reasoning systems[edit]

Case-based reasoning (CBR) systems provide solutions to problems by analysing similarities to other problems for which known solutions already exist. They use analogical reasoning to infer solutions based on case histories. CBR systems are commonly used in customer/technical support and call centre scenarios and have applications in industrial manufacture, agriculture, medicine, law and many other areas.

Procedural reasoning systems[edit]

A procedural reasoning system (PRS) uses reasoning techniques to select plans from a procedural knowledge base. Each plan represents a course of action for achievement of a given goal. The PRS implements a belief-desire-intention model by reasoning over facts (‘beliefs’) to select appropriate plans (‘intentions’) for given goals (‘desires’). Typical applications of PRS include management, monitoring and fault detection systems.


  1. ^ Grosof, Benjamin N. (30 December 1997). "Courteous Logic Programs: Prioritized Conflict Handling For Rules" (Postscript). IBM Research Report. RC 20836 (92273).