Lecture 2: Introduction to Domain theory
Teacher: PaulAndré Melliès
Intuition: when we have a program $P: A → B$, we can think of it as a function $[A] \overset{[P]}{→} [B]$, where $[A]$ is the domain associated to the type $A$.
Goal: associate to every
 type $A$ a domain $[A]$
 $λ$term $P: A → B$ a continuous function $[A] \overset{[P]}{→} [B]$
 Domain:

a partially odered set with extraproperties (every directed $D$ subset has a least upper bound $\bigvee D$ (lub))
Idea: $x ≤ y$ means that $y$ contains more information than $x$. This intuition will be justified later.
(cf. lecture notes)
Property: If $f: (A, ≤_A) → (B, ≤_B)$ is a monotonic function and $ℱ ⊆ A$ has a lub:
\bigvee f(ℱ) ≤ f\left(\bigvee ℱ\right)
Proof: because $f(ℱ) ≤ f(\bigvee ℱ)$ due to $f$ being monotone, and then we use the minimality of the lub.
Example where where this inequality is strict: $A ≝ \underline{ω+1}, \, B ≝ \underline{ω+2}$, $f$ is
 the identity on $ℕ$
 $f(ω) = ω+1$
and $ℱ ≝ ℕ$. Then $\bigvee f(ℱ) = ω < ω+1 = f\left(\bigvee ℱ\right)$.
From a computational point of vue: we never have access to $ω$, if contains an infinite amount of information, so $f$ is not continuous when setting $f(ω) = ω+1$ ($ω$ should be mapped to the union of all the approximations of itself to have a continuous function).
Flat domains:
$𝔹_⊥ ≝$
digraph {
rankdir=BT;
⊥ > true, false;
}
$ℕ_⊥ ≝$
digraph {
rankdir=BT;
⊥ > 1, 2, 3, ⋯
}
Streams
 Stream:

a function from $ℕ$ to $(A, ≤)$
Example: with $A ≝ ℕ_⊥$
Maximal elements: total streams (no coordinate is ‘undefined’: $⊥$). E.g.: the stream of decimals of the number $π$.
We never have access to total stream, but how can we describe them as least upper bounds?
Ex: with the stream $π$ of the decimals of $π$.
Unsuccessful attempt: $π = \bigvee \lbrace y \mid y ≤ π \rbrace$. But there are “infinite” elements as well in $\lbrace y \mid y ≤ π \rbrace$! (ex: streams such that even positions are decimals of $π$, odd ones are undefined $⊥$).
Good notion:
 A stream $x$ is called finite/compact:

when $\lbrace n \mid x(n) ≠ ⊥ \rbrace$ is finite
Claim: $ℱ_x$ has a lub and
\bigvee ℱ_x = x
Be careful: the set $\lbrace (1, ⊥, ⊥, …), (0, ⊥, ⊥, …) \rbrace$ has no upper bound.
NB: $∀ a, b ∈ ℱ_x$, there exists $c ∈ ℱ_x$ such that $a, b ≤ c$.
 Filter:

a nonempty directed set
 Domain:

a poset that has a least element $⊥$ such that every directed set has a lub.
Property: if $D$ is a domain, $Stream(D)$ is a domain as well.
Proof:
 the least element of $Stream(D)$ is the constant stream at $⊥$.
 the least upper bound of a filter $ℱ$ is taken pointwise. Indeed, for each index $i$, the set $\lbrace x_i \mid x ∈ ℱ\rbrace$ is still a filter, as $ℱ$ is (or alternatively: because the projection $π_i$ upon coordinate $i$ is continuous, so $π_i(ℱ)$ remains a filter).
More generally:
Theorem: If $A$ is a poset and $B$ a domain, $B^A$ is still a domain.
 Continuous function $f: D → E$:

is a monotone function that preserves lubs, i.e. for every filter $ℱ$: \bigvee f(ℱ) = f\left(\bigvee ℱ\right)
NB:

Equivalently: continuous functions are functions that send filters to filters.

While continous may be “computable”, noncontinuous functions are never “computable”.
 Ex: Computing the decimals of $π$: \begin{cases} Stream(ℕ_⊥) ⟶ 𝔹_⊥ \\ \underbrace{x}_{\text{stream of decimals of } π} \mapsto f(x) ≝ true \end{cases}
$ℱ_x ≝ \lbrace y \text{ finite } \mid y ≤ x \rbrace$
If $f$ were continuous:
\bigvee f(ℱ_x) = f\left(\bigvee ℱ_x\right) = f(x) = trueThen, it means that there exists $y ∈ ℱ_x$ such that $f(y) = true$ ($y$ is a finite approximation of $x$).
On top of that, we know that
∀y ∈ ℱ_x, \; f(y) ≤ truethat is:
∀y ∈ ℱ_x, \; f(y) = true \; ∨ \; f(y) = ⊥But any program deciding whether we have all the decimals of $π$ has only a finite execution time! But if you’re not in front of the decimals of $π$, then surely there exists a finite approximation/program such that it fails ⟹ this has to do with semidecidability.
(cf. drawing)
$λ$calculus
Untyped
 ChurchRosser theorem (confluence theorem)
 Standardisation theorem: the standard evaluation strategy, whicch evaluates the function befor the argument, terminates if the term is weakly normalising.
 Every recursive function is $λ$definable ($Y$ combinator used to encode recursion).
For a long time, people have thought that (untyped) $λ$calculus was purely syntactic/symbolic, in that there was no model:
where $D$ would be a space/model of $λ$terms (as $λ$abstraction are $λ$terms as well). In $Set$: no nontrivial solution, because of Russel’s theorem.
Scott, who was working with Strachey (who thought that it was possible to turn imperative programs into $λ$terms), gave a solution thereof in 1969 by switching from the category $Set$ to the category of Scott domains and continuous functions.
Simply typed
Inference rules/typing judgement:
Logical rules
Structural rules
And then, structural rules: weakening, contraction, and the permutation rule.
Key theorems
Subject reduction: If $Γ ⊢ P:A$ and $P ⟶_β Q$, then $Γ ⊢ Q:A$
Proof: by induction on the derivation tree.
Strong normalisation: If $P$ is simply typed, $P$ is strongly normalising.
NB: in particular, $Ω ≝ δδ$ is not simply typed (as it not normalising).
CurryHoward isomorphism
Remove the terms in the typing rules ⇒ minimal intuitionistic logic.
BHK interpretation: proof of
 $A ∧ B$ is a proof of $A$ and a proof of $B$
 $A ⇒ B$ is an algorithm turning a proof of $A$ into a proof of $B$. But what sort of algorithm? ⟶ a $λ$term! So $β$reduction has a corresponding BHKinterpretation.
 Logic:

 Positive side: building data structures
 Negative side: using these data structures
 Positive side: building data structures
Orthogonality in logic: proofs of type $A^⊥$ (dual of $A$) are “counterproofs” of $A$.
Interpretation in $Set$
 $⟦α⟧ \, ≝ \, X_α$
 $⟦A ⇒ B⟧ \, ≝ \, ⟦A⟧ ⇒ ⟦B⟧ = {\rm Hom}_{Set}(⟦A⟧, ⟦B⟧)$
A sequent x_1: A_1, …, x_n:A_n ⊢ M:B
is interpreted as a function ⟦A_1⟧ × ⋯ × ⟦A_n⟧ ⟶ ⟦B⟧
Soundness rules
Actually, the fact that we have these properties has nothing to do with sets and functions in and by themselves. It’s not specific to $Set$.
⟶ What is the categorical structure of $Set$? A cartesian closed category
Poincaré space in homotopy ≃ Categories with one object are monoids.
Leave a comment