- •Sense, Denotation and Semantics
- •Sense and denotation in logic
- •The algebraic tradition
- •The syntactic tradition
- •The two semantic traditions
- •Tarski
- •Heyting
- •Natural Deduction
- •The calculus
- •The rules
- •Interpretation of the rules
- •The Curry-Howard Isomorphism
- •Lambda Calculus
- •Types
- •Terms
- •Operational significance
- •Conversion
- •Description of the isomorphism
- •Relevance of the isomorphism
- •The Normalisation Theorem
- •The weak normalisation theorem
- •Proof of the weak normalisation theorem
- •Degree and substitution
- •Degree and conversion
- •Conversion of maximal degree
- •Proof of the theorem
- •The strong normalisation theorem
- •Sequent Calculus
- •The calculus
- •Sequents
- •Structural rules
- •The intuitionistic case
- •Logical rules
- •Some properties of the system without cut
- •The last rule
- •Subformula property
- •Asymmetrical interpretation
- •Sequent Calculus and Natural Deduction
- •Properties of the translation
- •Strong Normalisation Theorem
- •Reducibility
- •Properties of reducibility
- •Atomic types
- •Product type
- •Arrow type
- •Reducibility theorem
- •Pairing
- •Abstraction
- •The theorem
- •The calculus
- •Types
- •Terms
- •Intended meaning
- •Conversions
- •Normalisation theorem
- •Expressive power: examples
- •Booleans
- •Integers
- •Expressive power: results
- •Canonical forms
- •Representable functions
- •Coherence Spaces
- •General ideas
- •Coherence Spaces
- •The web of a coherence space
- •Interpretation
- •Stable functions
- •Parallel Or
- •Direct product of two coherence spaces
- •The Function-Space
- •The trace of a stable function
- •Representation of the function space
- •The Berry order
- •Partial functions
- •Denotational Semantics of T
- •Simple typed calculus
- •Types
- •Terms
- •Properties of the interpretation
- •Booleans
- •Integers
- •Sums in Natural Deduction
- •Defects of the system
- •Standard conversions
- •The need for extra conversions
- •Subformula Property
- •Extension to the full fragment
- •Commuting conversions
- •Properties of conversion
- •The associated functional calculus
- •Empty type
- •Sum type
- •Additional conversions
- •System F
- •The calculus
- •Comments
- •Representation of simple types
- •Booleans
- •Product of types
- •Empty type
- •Sum type
- •Existential type
- •Representation of a free structure
- •Free structure
- •Representation of the constructors
- •Induction
- •Representation of inductive types
- •Integers
- •Lists
- •Binary trees
- •Trees of branching type U
- •The Curry-Howard Isomorphism
- •Coherence Semantics of the Sum
- •Direct sum
- •Lifted sum
- •dI-domains
- •Linearity
- •Characterisation in terms of preservation
- •Linear implication
- •Linearisation
- •Linearised sum
- •Tensor product and units
- •Cut Elimination (Hauptsatz)
- •The key cases
- •The principal lemma
- •The Hauptsatz
- •Resolution
- •Strong Normalisation for F
- •Idea of the proof
- •Reducibility candidates
- •Remarks
- •Reducibility with parameters
- •Substitution
- •Universal abstraction
- •Universal application
- •Reducibility theorem
- •Representation Theorem
- •Representable functions
- •Numerals
- •Total recursive functions
- •Provably total functions
- •Proofs into programs
- •Formulation of HA2
- •Translation of HA2 into F
- •Representation of provably total functions
- •Semantics of System F
- •What is Linear Logic?
Chapter 9
Denotational Semantics of T
The constructions of chapter 8 provide a nice denotational semantics of the systems we have already considered.
9.1Simple typed calculus
We propose here to interpret the simple typed calculus, based on ! and . The essential idea is that:
-abstraction turns a function (x 7!t[x]) into an object;
application associates to an object t of type U!V a function u 7!t u.
In other words, application and -abstraction are two mutually inverse operations which identify objects of type U!V and functions from U to V .
So we shall interpret them as follows:
-abstraction by the operation which maps a stable function from A to B to its trace, a point of A ! B;
application by the operation which maps a point of A ! B to the function of which it is the trace.
9.1.1Types
Suppose we have xed for each atomic type Si a coherence space [[Si]]; then we de ne [[T ]] for each type T by:
[[U V ]] = [[U]] N [[V ]] |
[[U!V ]] = [[U]] ! [[V ]] |
66
9.1. SIMPLE TYPED CALCULUS |
67 |
9.1.2Terms
If t[x1; : : : ; xn] is a term of type T depending on free variables xi of type Si (some of the xi may not actually occur in t), we associate to it a stable function [[t]] of n arguments from [[S1]]; : : : ; [[Sn]] to [[T ]]:
1.t[x1; : : : ; xn] = xi: then [[t]](a1; : : : ; an) = ai; the stability of this function is immediate.
2. t = hu; vi; we have at our disposal functions [[u]] and [[v]] from [[S1]]; : : : ; [[Sn]] to [[U]] and [[V ]] respectively. Consider the stable binary function Pair, from [[U]]; [[V ]] to [[U]] N [[V ]], de ned by:
Pair(a; b) = f1g a [ f2g b
We put [[t]](a1; : : : ; an) = Pair([[u]](a1; : : : ; an); [[v]](b1; : : : ; bn)); this function is still stable.
3.t = 1w or t = 2w. Here again we compose with one of the following two stable functions:
1(c) = f : (1; ) 2 cg 2(c) = f : (2; ) 2 cg
4. t = x: v; by hypothesis we already have a (n + 1)-ary stable function [[v]] from [[S]]; [[U]] to [[V ]]; in particular, for a xed, the function b 7![[v]](a; b) is stable from [[U]] to [[V ]] and so one can de ne [[t]](a) = Tr(b 7![[v]](a; b)).
Checking that [[t]] is stable is a boring but straightforward exercise. For example, in the case where n = 1, we have to show that if F is a stable function from A N B to C, it induces a stable function G from A to B ! C, by
G(a) = Tr(b 7!F (Pair(a; b)))
Then G itself has a trace, for which we shall just give the formula:
Tr(G) = f(a; (b; )) : (Pair(a; b); ) 2 Tr(F )g
It is not a proof, but it should be enough to convince us!