Logic or the Science of Reasoning (SoR) is used for knowledge representation and problem solving, but it can be applied to other problems as well. For example, the satplan algorithm uses logic for planning and inductive logic programming is a method for learning.

Several different forms of logic are used in AI research. Propositional logic involves truth functions such as “or” and “not”. First-order-logic adds quantifiers and predicates, and can express facts about objects, their properties, and their relations with each other. Fuzzy logic assigns a “degree of truth” (between 0 and 1) to vague statements such as “Alice is old” (or rich, or tall, or hungry), that are too linguistically imprecise to be completely true or false.

Default logics, non-monotonic logics and circumscription are forms of logic designed to help with default reasoning and the qualification problem. Several extensions of logic have been designed to handle specific domains of knowledge, such as: description logics; situation calculus, event calculus and fluent calculus (for representing events and time); causal calculus; belief calculus (belief revision); and modal logics. Logics to model contradictory or inconsistent statements arising in multi-agent systems have also been designed, such as paraconsistent logics.

Logic programming is a programming paradigm which is largely based on formal logic. Any program written in a logic programming language is a set of sentences in logical form, expressing facts and rules about some problem domain. Major logic programming language families include Prolog, answer set programming (ASP) and Datalog. In all of these languages, rules are written in the form of *clauses*:

`H :- B`_{1}, …, B_{n}.

and are read declaratively as logical implications:

`H if B`_{1}and … and B_{n}.

`H` is called the *head* of the rule and `B _{1}`, …,

`H.`

In the simplest case in which `H`, `B _{1}`, …,

In ASP and Datalog, logic programs have only a declarative reading, and their execution is performed by means of a proof procedure or model generator whose behaviour is not meant to be controlled by the programmer. However, in the Prolog family of languages, logic programs also have a procedural interpretation as goal-reduction procedures:

- to solve
`H`, solve`B`, and … and solve_{1}`B`._{n}

Consider the following clause as an example:

`fallible(X) :- human(X).`

based on an example used by Terry Winograd ^{}to illustrate the programming language Planner. As a clause in a logic program, it can be used both as a procedure to test whether `X` is `fallible` by testing whether `X` is `human`, and as a procedure to find an `X` which is `fallible` by finding an `X` which is `human`. Even facts have a procedural interpretation. For example, the clause:

`human(socrates).`

can be used both as a procedure to show that `socrates` is `human`, and as a procedure to find an `X` that is `human` by “assigning” `socrates` to `X`.

The declarative reading of logic programs can be used by a programmer to verify their correctness. Moreover, logic based program transformation techniques can also be used to transform logic-programs into logically equivalent programs that are more efficient. In the Prolog family of logic programming languages, the programmer can also use the known problem-solving behaviour of the execution mechanism to improve the efficiency of programs.

In computer science, in particular in knowledge representation and reasoning and metalogic, the area of automated reasoning is dedicated to understanding different aspects of reasoning. The study of automated reasoning helps produce computer programs that allow computers to reason completely, or nearly completely, automatically. Although automated reasoning is considered a sub-field of artificial intelligence, it also has connections with theoretical computer science and philosophy.

The most developed subareas of automated reasoning are automated theorem proving (and the less automated but more pragmatic subfield of interactive theorem proving) and automated proof checking (viewed as guaranteed correct reasoning under fixed assumptions). Extensive work has also been done in reasoning by analogy using induction and abduction.

Other important topics include reasoning under uncertainty and non-monotonic reasoning. An important part of the uncertainty field is that of argumentation, where further constraints of minimality and consistency are applied on top of the more standard automated deduction. John Pollock’s OSCAR system is an example of an automated argumentation system that is more specific than being just an automated theorem prover.

Tools and techniques of automated reasoning include the classical logics and calculi, fuzzy logic, Bayesian inference, reasoning with maximal entropy and many less formal ad hoc techniques.

This website uses cookies. By continuing to use this site, you accept our use of cookies.