There are four branches of modern mathematical logic, all of which provide crucial
foundations for PL.
Model Theory |
examines relationships between formal languages and mathematical structures. In
PL, it provides the foundation for type systems and formal semantics, offering
frameworks to understand how programs denote mathematical objects and how
logical specifications correspond to program behavior. While classical model
theory often deals with infinite structures, finite model theory is particularly
relevant to program verification and synthesis, where it enables techniques like
model checking and automated reasoning over bounded domains, supporting both
correctness verification and synthesis from specs. |
Proof Theory |
studies formal proofs as mathematical objects. Through the Curry-Howard
isomorphism, it connects directly to type systems in FP, where programs are
proofs and types are propositions. Its concepts underpin type
checkers, theorem provers, and formal verification tools.
|
Set Theory |
forms the mathematical basis for denotational semantics, where programs are
interpreted as operations on well-defined mathematical objects. Domain theory,
built on set-theoretic foundations, provides models for recursive definitions
and is essential for understanding language semantics. |
Recursion Theory |
aka the famous Computability Theory, establishes the fundamental limits
of computation. Its results on undecidability (like Rice's theorem) directly
impact program analysis, while fixed-point theorems provide the foundation for
understanding recursive programs and iterative algorithms. |