Logic in computer science
||It has been suggested that this article be merged into Computational logic. (Discuss) Proposed since May 2012.|
||This article is in a list format that may be better presented using prose. (June 2010)|
- Investigations into logic that are guided by applications in computer science. For example:
- Rewriting systems were motivated by solving equations algorithmically;
- Many developments in type theory were motivated by applications in programming language theory;
- Abstract interpretation was developed to allow proofs of certain program properties;
- Logics of knowledge and beliefs (of human and artificial agents);
- Spatial logics, used for reasoning about interaction between concurrent and distributed processes.
- Logics for spatial reasoning, e.g. about moving in Euclidean space (which should not be confused with spatial logics used for concurrent systems);
- some developments in categorical logic;
- Program logics, such as Hoare logic, Hennessy-Milner logic, and dynamic logic are used to reason about program correctness
- Process calculi were developed to reason about correctness of concurrent systems.
- Descriptive complexity theory relates logics to computational complexity
- Applications of logic in computer science, such as Formal methods:
- Boolean logic, is used for the design of computer circuits;
- Specification languages are extended logics for reasoning about whether programs behave correctly, such as the Z specification language. Cf. program logics, below, which can be considered to be minimalist specification logics, and cf. also, automated theorem provers, below; specification languages are often integrated into theorem provers.
- The notion of institution has been developed as an abstract formalization of the notion of logical system, with the goal of handling the "population explosion" of logics used in formal methods.
- Predicate logic and logical frameworks are used for proving programs correct, and logics such as temporal logic and #Fundamental concepts in computer science that are naturally expressible in formal logic. For example:
- Formal semantics of programming languages;
- Logic programming;
- Definition of formal languages;
- Aspects of the theory of computation that cast light on fundamental questions of formal logic. For example: Curry-Howard correspondence and Game semantics;
- Tools for logicians considered as computer science. For example: Automated theorem proving and Model checking;
The study of basic mathematical logic such as propositional logic and predicate logic (normally in conjunction with set theory) is considered an important theoretical underpinning to any undergraduate computer science course. Higher-order logic is usually considered an advanced topic, but is important in theorem proving tools like HOL.
- Ben-Ari, Mordechai (2003). Mathematical Logic for Computer Science (2nd ed.). Springer-Verlag. ISBN 1-85233-319-7.
- Huth, Michael; Ryan, Mark (2004). Logic in Computer Science: Modelling and Reasoning about Systems (2nd ed.). Cambridge University Press. ISBN 0-521-54310-X.
- Burris, Stanley N. (1997). Logic for Mathematics and Computer Science. Prentice Hall. ISBN 0-13-285974-2.
- Article on Logic and Artificial Intelligence at the Stanford Encyclopedia of Philosophy.
- IEEE Symposium on Logic in Computer Science (LICS)
- Draft book on Logic in Computer Science by Andrei Voronkov
- Alwen Tiu, Introduction to logic video recording of a lecture at ANU Logic Summer School '09 (aimed mostly at computer scientists)
|P ≟ NP||This theoretical computer science–related article is a stub. You can help Wikipedia by expanding it.|