Design
This document contains an overview of the internal language structure, some assumptions, and other design aspects.
Language
Atomic Sentences
Atomic sentences are represented by an atomic symbol and a subscript integer.
Predicates
Predicates are identified by a unique label (name), and have a fixed number of parameters (arity).
There are two system-defined or 'special' predicates:
Predicate |
Common Translation |
Arity |
---|---|---|
Existence |
... exists |
1 |
Identity |
... is identical to ... |
2 |
Note that existence is typically expressed using the Existential Quantifier. The Existence Predicate is used only in Free Logics.
Any number of user-defined predicates of any arity >= 1 can be added.
Constants & Variables
Constants and variables are the parameters for predicate sentences, and are represented by a symbol and a subscript integer. A quantifier binds a variable to an inner sentence. At parsing time, every variable in a predicate sentence must be bound by a quantifier (no free variables allowed), and every variable that is bound by a quantifier must appear as a parameter somewhere in the inner sentence (no superfluous variables allowed).
Quantifiers
Quantifier |
Common Translation |
---|---|
Existential |
there exists an x, such that ... |
Universal |
for all x, ... |
Operators
Sentential operators are identified internally by a unique name and have a fixed number of sentences (arity):
Operator |
Common Translation |
Arity |
---|---|---|
Assertion |
it is true that ... |
1 |
Negation |
not ... |
1 |
Conjunction |
... and ... |
2 |
Disjunction |
... or ... |
2 |
Material Conditional |
if ... then ... |
2 |
Material Biconditional |
... if and only if ... |
2 |
Conditional |
if ... then ... |
2 |
Biconditional |
... if and only if ... |
2 |
Possibility |
possibly, ... |
1 |
Necessity |
necessarily, ... |
1 |
For many logics, the Conditional operator is the same as the Material Conditional operator (and likewise, the Biconditional is equivalent to the Material Biconditional). This comes from the fact that the Material Conditional is defined in terms of a disjunction, i.e. A ⊃ B is equivalent to ¬A ∨ B. However, some logics, like L3 - Łukasiewicz 3-valued Logic, define a separate Conditional → operator, intended to better preserve intuitive classical inferences such as Identity (A ⊃ A). For this reason, the Conditional is treated as a separate operator. Thus, in logics that do not define a distinct Conditional, it will be equivalent to the Material Conditional.
Similar reasoning motivates the Assertion operator. Most logics do not define an Assertion operator, but given that some do (e.g. Bochvar), we introduce it to the vocabulary, treating it as a transparent operator (⚬A == A) in logics that do not traditionally define it.