The most basic construct in natural logic is a predicate.
A predicate takes entities in the domain of discourse and evaluates to either true, false or undefined.
You can bind a predicate (denoted by a name, e.g. Socrates) and a tuple of entities (denoted by a list of arguments, e.g. u) by making statements (denoted by a full-stop punctuation mark):
You can evaluate the mapping between predicates and entities with questions:
By default, if a proposition is left unstated, it is assumed to be undefined.
Composite propositions are formed with the help of operators.
You can state the refutation of a proposition with the not operator:
You can state the exclusive disjunction of propostions using the either-or operator:
You can state the conjunction of a series of propositions with the space operator:
You can state pressupositions using the if statement:
You can apply statements over all entities of the domain of discourse using the for operator:
You can ask questions with free variables that bind to entities in the domain of discourse:
Predicates can take an arbitrary number of arguments:
You can also ask questions about