Nominal semantics for predicate logic

Nominal semantics for predicate logic Murdoch J. Gabbay Thanks to the CILC organising committee June 7, 2012 Introduction I want to talk about alg...
0 downloads 0 Views 129KB Size
Nominal semantics for predicate logic Murdoch J. Gabbay Thanks to the CILC organising committee

June 7, 2012

Introduction

I want to talk about algebraic semantics for logic. You are familiar with Boolean algebra φ ::= ⊥ | φ ∧ φ | ¬φ along with axioms. You are also familiar with lattices; a bounded lattice is a partially ordered set (X , ≤) with finite meets x ∧ y and > (greatest lower bounds) and finite joins x ∨ y and ⊥ (least upper bounds). A lattice is complemented when for every x ∈ X there is a ¬x such that x ∧ ¬x = ⊥ and x ∨ ¬x = >.

Algebra vs. limits Models of Boolean algebra are precisely the complemented bounded lattices. The difference is that in Boolean algebra, the axioms are expressed algebraically, i.e. by equalities like this: (x∧y )∧z = x∧(y ∧z)

x∧y = y ∧x

(x∧y )∨z = (x∧z)∨(y ∧z) . . .

In lattices, meets and joins are characterised by universal properties, like this: ∀z.z≤x ∧ z≤y ⇒ z≤(x∧y ) So we have equational axioms on the one hand, and universal properties on the other: algebra, and lattices; Boolean algebra, and complemented bounded lattices.

What my paper with Gilles does:

In our paper we do the same thing for first-order logic (FOL). On the one side we have a nominal algebraic FOL axiomatisation. On the other side we have a simple and beautiful universal property of lattices. Algebra, and lattices—for first-order logic instead of Boolean algebra.

Predicate logic = Boolean logic + ∀ Broadly speaking, predicate logic = Boolean algebra + variables and ∀. (Intuitionistic version also possible). So we need the following ingredients: I I

A notion of algebraic specification capable of algebraising not only ⊥, ∧, and ¬, but also ∀. A notion for lattice in which ∀ admits a nice universal interpretation.

E.g. in a bounded lattice x ∧ y is the greatest lower bound of {x, y } and > is the greatest lower bound of ∅. What is ∀a.x? What is it the greatest lower bound of?

This paper is not complicated, but it is unfamiliar

Some meta-level comments about the answer we give. It is not hard. But it is probably unlike anything you have seen before. It takes a radically different view of variables. You will find that assumptions you didn’t even know you make, are challenged. And the mathematics behind this paper has depth. This is part of a larger—and necessary—programme to refound mathematics on a nominal basis.

What does it give us? I I I

I I

Formalises what we do in practice. New, attractive mathematics. (Lots of deep theorems, virgin territory.) Ongoing: New logical systems. Of course we have tons of catching up to do with the dominant functions-based semantics. Speculative: better algorithms. Speculative: better semantics for existing algorithms.

Broadly speaking, the dominant account of variables is based on functions. I do not accept that; it’s not the whole truth and it misses out important ‘symmetry’ properties. This paper is one of a sequence proposing a radical, symmetric, non-functional view of variables as one example of a family of ‘nominal’ name-like entities.

Nominal posets

I will omit the algebraisation of first-order logic; read the paper for that. Let’s concentrate on the lattices. I want to give you some idea of the universal property of ∀. Fix a countably infinite set of names a, b, c, . . . . A nominal poset (X , ≤, ·) is a poset with a finitely-supported permutation action π·x where π is a permutation of names. So given x ∈ X we also have π·x ∈ X which is ‘x with the permutation π applied to it’.

Nominal posets

Finitely-supported means that each x ∈ X has a fixed finite supporting set of atoms supp(x); if π(a) = a for all a ∈ supp(x) then π·x = x. Write A#x when A ∩ supp(x) = ∅ and say that A is fresh for x. For instance A with the permutation action π·a = π(a) and the trivial partial order such that a ≤ a always, is a nominal poset. supp(a) = {a}.

Two examples

Finite and cofinite sets of atoms ordered by inclusion A ≤ B when A ⊆ B, and with the pointwise action π·A = {π(a) | a ∈ A}, form a nominal poset (actually a lattice). The support of finite A ⊆ A is A; the support of A\A is also A. Check this yourself: if π(a) = a for every a ∈ A then π·A = A and π·(A\A) = A\π·A = A\A. So supp(A\A) = supp(A). Predicates of first-order logic quotiented by derivable logical equivalence form a nominal lattice. It is a theorem that the support of [φ]⇔ is the intersection of the free names of all the formulae logically equivalent to φ.

A-fresh limits (greatest lower bound)

Suppose U ⊆ X is a finite subset of a nominal lattice and A is a finite set of atoms. V Write #A U for the greatest lower bound of U amongst elements z such that A#z:  V ∀z. A#z ∧ (∀u∈U.z ≤ u) ⇒ z ≤ #A U V#A U is the greatest element under U for which A is fresh.

Fresh limits

Then we can unify >, ∧, and ∀ like this: I I I

> is the greatest ∅-fresh lower bound of ∅. x ∧ y is the greatest ∅-fresh lower bound of {x, y }. ∀a.x is the greatest {a}-fresh lower bound of {x}.

Isn’t that stunningly simple and elegant?

Substitution

I know what you are thinking: “But surely universal quantification should be the greatest lower bound (glb) of {x[a7→v ] | v ∈V }” for some domain V ? And what would x[a7→v ] mean, given that the lattice elements x ∈ X are not assumed to be syntax? Yes. In nominal techniques, substitution is just an algebraic theory like groups rings and fields. The lattice has an abstract substitution action; algebraic axiomatisation.

Substitution

Nominal interpretation of a predicate with a substitution [ φ[a7→t]]] should map under interpretation to semantics of predicate with abstract substitution. That is: [ φ[a7→t]]] = [ φ]][a7→[ t]]] There is no valuation: atoms map to themselves. I told you that your assumptions would be challenged. The correct semantics for φ is absolute; it does not depend on a valuation. Instead, we have abstract substitution to substitute for atoms after interpretation.

Substitution

Theorem: I I

if a finitely fresh-complete nominal lattice has an abstract substitution action, V then ∀a.x = #{a} {x} (the {a}-fresh glb of {x}) is a glb of the infinite set {x[a7→v ] | v ∈V }.

Conclusions

There is more in the paper. Axioms. Soundness. Completeness. But, I hope this overview will help to make sense of these results. Nominal techniques allow nominal algebra axiomatisation of predicate logic and absolute interpretation (no valuations). They also allow notions of A-fresh limit and colimit (greatest lower bound and least upper bound). In the presence of substitution, a finitely fresh-complete nominal lattice automagically becomes the lattice equivalent of nominal algebraic first-order logic. The maths just clicks into place.

Future work Nominal algebraic logic can axiomatise first-order logic. But it can also axiomatise higher-order logic, lambda-calculus, pi-calculus, and so on. Nominal algebra is very expressive. Nominal semantics translate these axioms into corresponding mathematical properties, phrased in the language of limits. One of the key innovations is considering A-fresh limits. I expect this will have independent interest. I expect we could do something similar for the λ-calculus. Very exciting. I would also like to see this applied computationally. The nominal models are ‘relatively small’. It should be possible to take advantage of that for e.g. model checking.

Some related work

Stone duality for first-order logic: a nominal approach to logic and topology: A Stone duality theorem for the first-order logic axiomatisation of this paper. Permissive-nominal logic (journal version): An sound and complete axiomatisation of arithmetic inside an axiomatisation of first-order logic. A nominal axiomatisation of the λ-calculus. Capture-avoiding substitution as a nominal algebra. Nominal universal algebra: equational logic with names and binding.

(Bonus slide) Nominal algebra axioms for substitution

(Suba) (Subid) (Sub#) (Subα) (Subσ)

a[a7→u] = x[a7→a] = a#x ⇒ x[a7→u] = b#x ⇒ x[a7→u] = a#v ⇒ x[a7→u][b7→v ] =

u x x ((b a)·x)[b7→u] x[b7→v ][a7→u[b7→v ]]