Coherent space

From HandWiki

In proof theory, a coherent space (also coherence space) is a concept introduced in the semantic study of linear logic.

In Proofs and Types, coherent spaces are called coherence spaces. A footnote explains that although in the French original they were "espaces cohérents", the translation used "coherence space", because spectral spaces are sometimes called "coherent spaces".

Definitions

There are several equivalent definitions of a coherent space.

As a family of subsets

The original definition by Jean-Yves Girard is a family of sets 𝒜, satisfying the following closure conditions:

  • Down-closure: if a𝒜 and aa, then a𝒜.
  • Binary completeness: for every M𝒜, if a1a2𝒜 for all a1,a2M, then M𝒜.

The elements of the sets in 𝒜 are tokens. The set of tokens is|𝒜|=𝒜={α{α}𝒜}.We say that each aA is a coherent set of tokens. If a set X is given in advance, and the elements of 𝒜 are presented as subsets of X, then one also requires {α}𝒜 for every αX. This intuitively states that any token is coherent at least to itself.

Given such a family, one obtains a reflexive, symmetric relation on |𝒜|, called coherence modulo 𝒜, by settingαβif and only if{α,β}𝒜.The elements of 𝒜 are then precisely the subsets of |𝒜| whose elements are pairwise related by .

As a family of maximally coherent subsets

The coherent sets are partially ordered under inclusion. By binary completeness and Zorn's lemma, any coherent set is contained in a maximally coherent set. Consequently, it is only necessary to specify the maximally coherent sets, 𝒜max, then perform a down-closure:𝒜={a:a𝒜max,aa}The only condition on 𝒜max is that any two a,a𝒜max, if they are distinct, then neither contains the other.

As an undirected graph

Coherence spaces are in bijection with undirected graphs whose vertices are tokens.

Given a coherence space 𝒜, its associated graph, called the web of 𝒜, has vertex set |𝒜|. Its edges are the unordered pairs {α,β} such that αβ. Note that we require each vertex to have a self-edge purely as a convenient convention.

Conversely, given an undirected graph (|𝒜|,E) where each vertex has a self-edge, one obtains a coherence space by taking 𝒜 to be the family of all cliques of the graph:𝒜={a|𝒜|α,βa,{α,β}E}.That is, the elements of 𝒜 are the sets of vertices whose elements are pairwise adjacent.

As a biorthogonally closed family

Let |𝒜| be a set of tokens. Two subsets a,b|𝒜| are said to be orthogonal, (or polar), if ab is either empty or a singleton. We write this as ab.

For a family 𝒜𝒫(|𝒜|), its dual is the family𝒜={a|𝒜|b𝒜, ab}.A coherence space is a family 𝒜𝒫(|𝒜|) satisfying𝒜=(𝒜).That is, it is a family that is biorthogonally closed under polarity.

Stable functions

The coherent spaces make up a category 𝐂𝐨𝐡. Each object is a coherent space, and each morphism f:𝒜 is a stable function.

Definition

A stable function is defined as a function mapping cliques to cliques:f:𝒜such that it is

  • continuous: If {ai}i𝒜 is a directed family, then f(iai)=if(ai).
  • stable: If a,a𝒜 such that aa𝒜, then f(aa)=f(a)f(a).

By stability, if aa𝒜 then f(a)f(a), so f is monotonic.

By stability, f(a)=aa,a is finitef(a). So it shows that f is determined by its value on finite coherent sets.

For continuity, considering the special case where {ai}i𝒜 is the empty set, we have f()=.

Trace

Given a stable function, its trace Tr(f)𝒜×|| is defined asTr(f):={(a,β)|a𝒜,βf(a),(aa,β∉f(a))}That is, each (a,β)Tr(f) is such that a is a minimal coherent set needed to produce token β. By stability, any (a,β)Tr(f) must have a finite a.

Conversely, each stable function is determined by its trace:f(a)={β:(a,β)Tr(f),aa}

Linearity

A stable function f is linear iff any (a,β)Tr(f), a has just one element. This was the original motivation for linear logic.

Linear stable functions are particularly simple and can be thought of as a clique-valued function f:|𝒜| such that given a clique a𝒜, αaf(α) is still a clique in .

Examples

The intuition of a coherent space is that each token is a trait that an object might possess, and a coherent set of tokens is a set of traits that is possessed by some object simultaneously. There is no object that can possess an incoherent set of tokens as its traits. One explores an object by observing more and more of its traits. The set of observed traits grows, but will always remain coherent.

Categorical constructions

Any coherent space can be specified by its maximally coherent sets. Any union of two distinct maximally coherent sets is incoherent.

Given a coherent space 𝒜, its polar 𝒜 is still a coherent space. This is a dual object construction in category theory.

Given any set X, we have the discrete/minimal coherent space {{α}:αX}, and the indiscrete/maximal coherent space 𝒫(X).

Given two coherent spaces 𝒜,, there is a coherent space 𝒜& (pronounced "A and B"). It is defined as a graph. The set of tokens is the disjoint union of the two sets of tokens:|𝒜&|=|𝒜|+||and the edges of 𝒜& is the union of the edges in 𝒜, the edges in , and {{α,β}:α𝒜,β}. More generally, given a family of coherent spaces, {𝒜i}iI, we can define &iI𝒜i similarly.

Given two coherent spaces 𝒜,, there is a coherent space 𝒜. The set of tokens is still|𝒜|=|𝒜|+|| and the edges of 𝒜 is the union of the edges in 𝒜, the edges in . This is the coproduct. This can be defined in general for a family of coherent spaces, {𝒜i}iI.

Coherent space of stable functions

Given two sets X,Y, the set of partial functions of type XY can be modelled by a coherent space. The token set is X×Y, and the edges are {(x,y),(x,y)} for all xx. Equivalently, for each xX, define 𝒴x to be the discrete/minimal coherent space of Y. Then &xX𝒴x is the coherent space that we constructed.

This can be intuitively understood as follows: a partial function f:XY has the set of traits {(x,f(x)):xXf(x) is defined}. A maximally coherent set is the set of traits of a total function. As we enumerate the values of a partial function, we enumerate the set of traits, which is coherent at every step. This is useful when f is computed by a Turing machine that might fail to halt on some entries. If f(x) does not halt, then we simply never observe the trait during trait-enumeration. The set of observed traits will remain coherent at all steps of our enumeration.

Now, define 𝒳,𝒴 to be the discrete/minimal coherent spaces. Then f:𝒳𝒴 is a stable function iff there is a partial function f:XY, such thatf({x})={{f(x)} if f(x) is defined, elseand f can be identified with its set of traits, which is a coherent set in &xX𝒴x. Thus, Hom𝐂𝐨𝐡(𝒳,𝒴)&xX𝒴x is a coherent space.

In general, we have a functor :𝐂𝐨𝐡2𝐂𝐨𝐡, contravariant in the first argument and covariant in the second argument, such thatHom𝐂𝐨𝐡(𝒜,)𝒜That is, given any two coherent spaces 𝒜,, the hom-set between them is structured as a coherent space as well. This makes the category enriched over itself.

The token set |𝒜| is 𝒜fin×||, where 𝒜fin is the set of nonempty finite coherent sets in 𝒜. Two tokens (a,β),(a,β) are coherent iff

  • If aa𝒜, then {β,β}.
  • If aa𝒜 and aa, then ββ.

Note that, if aa∉𝒜, then (a,β),(a,β) for any β,β||. That is, we only demand coherence in given coherence in 𝒜. If there is no coherence in 𝒜, then we make no demands on coherence in .

Coherence spaces as types

Coherence spaces can act as an interpretation for types in type theory where points of a type 𝒜 are points of the coherence space 𝒜. This allows for some structure to be discussed on types. For instance, each term a of a type 𝒜 can be given a set of finite approximations I which is in fact, a directed set with the subset relation. With a being a coherent subset of the token space |𝒜| (i.e. an element of 𝒜), any element of I is a finite subset of a and therefore also coherent, and we have a=ai,aiI.

Stable functions

Functions between types 𝒜 are seen as stable functions between coherence spaces. A stable function is defined to be one which respects approximants and satisfies a certain stability axiom. Formally, F:𝒜 is a stable function when

  1. It is monotone with respect to the subset order (respects approximation, categorically, is a functor over the poset 𝒜): aa𝒜F(a)F(a).
  2. It is continuous (categorically, preserves filtered colimits): F(iIai)=iIF(ai) where iI is the directed union over I, the set of finite approximants of a.
  3. It is stable: a1a2𝒜F(a1a2)=F(a1)F(a2). Categorically, this means that it preserves the pullback:
    Commutative diagram of the pullback preserved by stable functions

Product space

In order to be considered stable, functions of two arguments must satisfy the criterion 3 above in this form: a1a2𝒜b1b2F(a1a2,b1b2)=F(a1,b1)F(a2,b2)which would mean that in addition to stability in each argument alone, the pullback

is preserved with stable functions of two arguments. This leads to the definition of a product space 𝒜 &  which makes a bijection between stable binary functions (functions of two arguments) and stable unary functions (one argument) over the product space. The product coherence space is a product in the categorical sense i.e. it satisfies the universal property for products. It is defined by the equations:

  • |𝒜 & |=|𝒜|+||=({1}×|𝒜|)({2}×||) (i.e. the set of tokens of 𝒜 &  is the coproduct (or disjoint union) of the token sets of 𝒜 and .
  • Tokens from differents sets are always coherent and tokens from the same set are coherent exactly when they are coherent in that set.
    • (1,α)𝒜 & (1,α)α𝒜α
    • (2,β)𝒜 & (2,β)ββ
    • (1,α)𝒜 & (2,β),α|𝒜|,β||

References