FUNCTIONAL PEARL Functional satisfaction

2004 ◽  
Vol 14 (6) ◽  
pp. 647-656
Author(s):  
LUC MARANGET

This work presents simple decision procedures for the propositional calculus and for a simple predicate calculus. These decision procedures are based upon enumeration of the possible values of the variables in an expression. Yet, by taking advantage of the sequential semantics of boolean connectors, not all values are enumerated. In some cases, dramatic savings of machine time can be achieved. In particular, an equivalence checker for a small programming language appears to be usable in practice.

2011 ◽  
Vol 21 (4) ◽  
pp. 671-677 ◽  
Author(s):  
GÉRARD HUET

This special issue of Mathematical Structures in Computer Science is devoted to the theme of ‘Interactive theorem proving and the formalisation of mathematics’.The formalisation of mathematics started at the turn of the 20th century when mathematical logic emerged from the work of Frege and his contemporaries with the invention of the formal notation for mathematical statements called predicate calculus. This notation allowed the formulation of abstract general statements over possibly infinite domains in a uniform way, and thus went well beyond propositional calculus, which goes back to Aristotle and only allowed tautologies over unquantified statements.


1970 ◽  
Vol 38 ◽  
pp. 145-152
Author(s):  
Akira Nakamura

The purpose of this paper is to present a propositional calculus whose decision problem is recursively unsolvable. The paper is based on the following ideas: (1) Using Löwenheim-Skolem’s Theorem and Surányi’s Reduction Theorem, we will construct an infinitely many-valued propositional calculus corresponding to the first-order predicate calculus.(2) It is well known that the decision problem of the first-order predicate calculus is recursively unsolvable.(3) Thus it will be shown that the decision problem of the infinitely many-valued propositional calculus is recursively unsolvable.


Author(s):  
Timothy Smiley

The predicate calculus is the dominant system of modern logic, having displaced the traditional Aristotelian syllogistic logic that had been the previous paradigm. Like Aristotle’s, it is a logic of quantifiers – words like ‘every’, ‘some’ and ‘no’ that are used to express that a predicate applies universally or with some other distinctive kind of generality, for example ‘everyone is mortal’, ‘someone is mortal’, ‘no one is mortal’. The weakness of syllogistic logic was its inability to represent the structure of complex predicates. Thus it could not cope with argument patterns like ‘everything Fs and Gs, so everything Fs’. Nor could it cope with relations, because a logic of relations must be able to analyse cases where a quantifier is applied to a predicate that already contains one, as in ‘someone loves everyone’. Remedying the weakness required two major innovations. One was a logic of connectives – words like ‘and’, ‘or’ and ‘if’ that form complex sentences out of simpler ones. It is often studied as a distinct system: the propositional calculus. A proposition here is a true-or-false sentence and the guiding principle of propositional calculus is truth-functionality, meaning that the truth-value (truth or falsity) of a compound proposition is uniquely determined by the truth-values of its components. Its principal connectives are negation, conjunction, disjunction and a ‘material’ (that is, truth-functional) conditional. Truth-functionality makes it possible to compute the truth-values of propositions of arbitrary complexity in terms of their basic propositional constituents, and so develop the logic of tautology and tautological consequence (logical truth and consequence in virtue of the connectives). The other invention was the quantifier-variable notation. Variables are letters used to indicate things in an unspecific way; thus ‘x is mortal’ is read as predicating of an unspecified thing x what ‘Socrates is mortal’ predicates of Socrates. The connectives can now be used to form complex predicates as well as propositions, for example ‘x is human and x is mortal’; while different variables can be used in different places to express relational predicates, for example ‘x loves y’. The quantifier goes in front of the predicate it governs, with the relevant variable repeated beside it to indicate which positions are being generalized. These radical departures from the idiom of quantification in natural languages are needed to solve the further problem of ambiguity of scope. Compare, for example, the ambiguity of ‘someone loves everyone’ with the unambiguous alternative renderings ‘there is an x such that for every y, x loves y’ and ‘for every y, there is an x such that x loves y’. The result is a pattern of formal language based on a non-logical vocabulary of names of things and primitive predicates expressing properties and relations of things. The logical constants are the truth-functional connectives and the universal and existential quantifiers, plus a stock of variables construed as ranging over things. This is ‘the’ predicate calculus. A common option is to add the identity sign as a further logical constant, producing the predicate calculus with identity. The first modern logic of quantification, Frege’s of 1879, was designed to express generalizations not only about individual things but also about properties of individuals. It would nowadays be classified as a second-order logic, to distinguish it from the first-order logic described above. Second-order logic is much richer in expressive power than first-order logic, but at a price: first-order logic can be axiomatized, second-order logic cannot.


Author(s):  
B. Nördstrom ◽  
K. Petersson

The type theory described in this chapter has been developed by Martin-Löf with the original aim of being a clarification of constructive mathematics. Unlike most other formalizations of mathematics, type theory is not based on predicate logic. Instead, the logical constants are interpreted within type theory through the Curry-Howard correspondence between propositions and sets [Curry and Feys, 1958; Howard, 1980]: a proposition is interpreted as a set whose elements represent the proofs of the proposition. It is also possible to view a set as a problem description in a way similar to Kolmogorov’s explanation of the intuitionistic propositional calculus [Kolmogorov, 1932]. In particular, a set can be seen as a specification of a programming problem; the elements of the set are then the programs that satisfy the specification. An advantage of using type theory for program construction is that it is possible to express both specifications and programs within the same formalism. Furthermore, the proof rules can be used to derive a correct program from a specification as well as to verify that a given program has a certain property. As a programming language, type theory is similar to typed functional languages such as ML [Gordon et al., 1979; Milner et al., 1990] and Haskell [Hudak et al, 1992], but a major difference is that the evaluation of a well-typed program always terminates. The notion of constructive proof is closely related to the notion of computer program. To prove a proposition ("x Î A)($yÎB)P(x,y) constructively means to give a function f which when applied to an element a in A gives an element b in B such that P(a, b) holds. So if the proposition ("xÎ A)($yÎB)P(x,y) expresses a specification, then the function f obtained from the proof is a program satisfying the specification. A constructive proof could therefore itself be seen as a computer program and the process of computing the value of a program corresponds to the process of normalizing a proof. It is by this computational content of a constructive proof that type theory can be used as a programming language; and since the program is obtained from a proof of its specification, type theory can be used as a programming logic.


1976 ◽  
Vol 41 (4) ◽  
pp. 705-718 ◽  
Author(s):  
M. H. Löb

Some syntactically simple fragments of intuitionistic logic possess considerable expressive power compared with their classical counterparts.In particular, we consider in this paper intuitionistic second order propositional logic (ISPL) a formalisation of which may be obtained by adding to the intuitionistic propositional calculus quantifiers binding propositional variables together with the usual quantifier rules and the axiom scheme (Ex), where is a formula not containing x.The main purpose of this paper is to show that the classical first order predicate calculus with identity can be (isomorphically) embedded in ISPL.It turns out an immediate consequence of this that the classical first order predicate calculus with identity can also be embedded in the fragment (PLA) of the intuitionistic first order predicate calculus whose only logical symbols are → and (.) (universal quantifier) and the only nonlogical symbol (apart from individual variables and parentheses) a single monadic predicate letter.Another consequence is that the classical first order predicate calculus can be embedded in the theory of Heyting algebras.The undecidability of the formal systems under consideration evidently follows immediately from the present results.We shall indicate how the methods employed may be extended to show also that the intuitionistic first order predicate calculus with identity can be embedded in both ISPL and PLA.For the purpose of the present paper it will be convenient to use the following formalisation (S) of ISPL based on [3], rather than the one given above.


1997 ◽  
Vol 31 (4) ◽  
pp. 609-616 ◽  
Author(s):  
R. A. Bull

In the course of a recent paper on modal' extensions of the intuitionist propositional calculus, [1], I made some suggestions as to the relationships between the system MIPC, the intuitionist predicate calculus, and the question of producing a genuine intuitionist concept of modality. This paper may be regarded as a clarification of those rather inaccurate ideas in the light of Kripke's outstanding analysis of the intuitionist predicate calculus, [2]. (I use Kripke's notation and terminology here without explanation — this work is intended to be read in conjunction with [2].) In particular, I shall adapt his interpretation of his modelling to give an account of MIPC in terms of differing mathematical intuitions.


Author(s):  
Harvey M. Friedman ◽  
Andrej Ščedrov

Formal propositional logic describing the laws of constructive (intuitionistic) reasoning was first proposed in 1930 by Heyting. It is obtained from classical pro-positional calculus by deleting the Law of Excluded Middle, and it is usually referred to as Heyting's (intuitionistic) propositional calculus ([9], §§23, 19) (we write HPP in short). Formal logic involving predicates and quantifiers based on HPP is called Heyting's (intuitionistic) predicate calculus ([9], §§31, 19) (we write HPR in short).


Author(s):  
William J. Rasdorf ◽  
Sivand Lakmazaheri

A logic-based approach for automating the processing of design standards is illustrated. This approach is composed of three steps: conceptualization, formalization and implementation. Conceptualization is referred to as the representation of the knowledge necessary for solving the problem of interest in terms of objects and relations. Formalization is referred to as the representation of the objects and relations of interest as axioms using the language of predicate calculus. And, Implementation is referred to as the representation of the axioms of interest and the strategy for manipulating axioms using the constructs of a programming language.The paper illustrates the logic-based approach to engineering problem-solving automation by considering the portion of the AISC Specification that governs the design of axially loaded members. First, the relations of interest are identified (Conceptualization). Then, predicate calculus is used to formally represent the relations (Formalization) as axioms and to mechanically manipulate them. The checking and designing of structural components via mechanical manipulation of the axioms are illustrated in the paper. Finally, a constraint logic programming language is used to develop a computer program for automatic processing of the specification (Implementation). This program is composed of a set of rules that closely resemble the formulated axioms.


Author(s):  
Leonardo de Moura ◽  
Sebastian Ullrich

AbstractLean 4 is a reimplementation of the Lean interactive theorem prover (ITP) in Lean itself. It addresses many shortcomings of the previous versions and contains many new features. Lean 4 is fully extensible: users can modify and extend the parser, elaborator, tactics, decision procedures, pretty printer, and code generator. The new system has a hygienic macro system custom-built for ITPs. It contains a new typeclass resolution procedure based on tabled resolution, addressing significant performance problems reported by the growing user base. Lean 4 is also an efficient functional programming language based on a novel programming paradigm called functional but in-place. Efficient code generation is crucial for Lean users because many write custom proof automation procedures in Lean itself.


Sign in / Sign up

Export Citation Format

Share Document