Subtyping and Intersection Types Revisited

Similar documents
Church and Curry: Combining Intrinsic and Extrinsic Typing

Decomposing Modalities

Intensionality, Extensionality, and Proof Irrelevance in Modal Type Theory

Lecture Notes on The Curry-Howard Isomorphism

Lecture Notes on A Concurrent Logical Framework

Lecture Notes on Certifying Theorem Provers

On a Logical Foundation for Explicit Substitutions

Type Systems as a Foundation for Reliable Computing

The Curry-Howard Isomorphism

REFINEMENT TYPES FOR LOGICAL FRAMEWORKS AND THEIR INTERPRETATION AS PROOF IRRELEVANCE

Mechanizing Metatheory in a Logical Framework

Lecture Notes on Heyting Arithmetic

Towards Concurrent Type Theory

Modal Logic as a Basis for Distributed Computation

Kleene realizability and negative translations

Propositional Logic Language

Lecture Notes on Sequent Calculus

Focusing on Binding and Computation

The Calculus of Inductive Constructions

Discrete Mathematics & Mathematical Reasoning Predicates, Quantifiers and Proof Techniques

Lecture Notes on Focusing

Henk Barendregt and Freek Wiedijk assisted by Andrew Polonsky. Radboud University Nijmegen. March 5, 2012

A Judgmental Reconstruction of Modal Logic

Lecture Notes on Linear Logic

HOAS by example What is a Formal System? A Simply Typed Framework What Does it Mean? Canonical LF References HOAS. Randy Pollack

A Concurrent Logical Framework

Extended Abstract: Reconsidering Intuitionistic Duality

Towards Modal Type Theory

Consequence Relations and Natural Deduction

Natural Deduction for Propositional Logic

Propositional and Predicate Logic. jean/gbooks/logic.html

Lecture Notes on Identity and Inversion

Type Inference. For the Simply-Typed Lambda Calculus. Peter Thiemann, Manuel Geffken. Albert-Ludwigs-Universität Freiburg. University of Freiburg

Learning Goals of CS245 Logic and Computation

Intersection Synchronous Logic

3.2 Reduction 29. Truth. The constructor just forms the unit element,. Since there is no destructor, there is no reduction rule.

Adjoint Logic and Its Concurrent Semantics

Beyond First-Order Logic

First Order Logic (FOL) 1 znj/dm2017

Type Theory and Constructive Mathematics. Type Theory and Constructive Mathematics Thierry Coquand. University of Gothenburg

3 Propositional Logic

An extension of HM(X) with bounded existential and universal data-types

Midterm Exam Types and Programming Languages Frank Pfenning. October 18, 2018

Elaborating evaluation-order polymorphism

Syntax. Notation Throughout, and when not otherwise said, we assume a vocabulary V = C F P.

Some Recent Logical Frameworks

CS522 - Programming Language Semantics

Lecture Notes on Classical Linear Logic

Consequence Relations and Natural Deduction

Proving Completeness for Nested Sequent Calculi 1

Logic. Propositional Logic: Syntax

Example. Lemma. Proof Sketch. 1 let A be a formula that expresses that node t is reachable from s

cis32-ai lecture # 18 mon-3-apr-2006

On the Boolean Algebra of Shape Analysis Constraints

Introduction to Metalogic

Lecture Notes on Quantification

Completeness and Partial Soundness Results for Intersection & Union Typing for λµ µ

Lecture Notes on Combinatory Modal Logic

Theoretical Computer Science. Representing model theory in a type-theoretical logical framework

Description Logics. Deduction in Propositional Logic. franconi. Enrico Franconi

Propositional Logic Not Enough

Lecture 11: Measuring the Complexity of Proofs

Safety Analysis versus Type Inference

A Bidirectional Refinement Type System for LF

Notes on Logical Frameworks

Simply Typed λ-calculus

Partially commutative linear logic: sequent calculus and phase semantics

Computational Logic. Davide Martinenghi. Spring Free University of Bozen-Bolzano. Computational Logic Davide Martinenghi (1/30)

Meta-reasoning in the concurrent logical framework CLF

Propositional Logic: Syntax

A Tableau Calculus for Minimal Modal Model Generation

Relations to first order logic

Mary Southern and Gopalan Nadathur. This work was funded by NSF grant CCF

First-Order Logic. Chapter Overview Syntax

Lazy Strong Normalization

Propositional Logic: Part II - Syntax & Proofs 0-0

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica. Final examination Logic & Set Theory (2IT61/2IT07/2IHT10) (correction model)

Supplementary Notes on Inductive Definitions

Completeness Theorems and λ-calculus

UNIFORM PROOFS AS A FOUNDATION FOR LOGIC PROGRAMMING. Computer and Information Science Department University of Pennsylvania, Philadelphia, PA 19104

Meta-Reasoning in a Concurrent Logical Framework

From Operational Semantics to Abstract Machines

Lecture Notes on Inductive Definitions

Natural deduction for propositional logic via truth tables

INTRODUCTION TO PREDICATE LOGIC HUTH AND RYAN 2.1, 2.2, 2.4

Přednáška 12. Důkazové kalkuly Kalkul Hilbertova typu. 11/29/2006 Hilbertův kalkul 1

Notation for Logical Operators:

Termination and Reduction Checking for Higher-Order Logic Programs

Extending higher-order logic with predicate subtyping: application to PVS

Automated Reasoning Lecture 5: First-Order Logic

Lecture Notes on Inductive Definitions

Introduction to Logic in Computer Science: Autumn 2006

Propositions and Proofs

First-Order Logic First-Order Theories. Roopsha Samanta. Partly based on slides by Aaron Bradley and Isil Dillig

Lecture Notes on Intuitionistic Kripke Semantics

ACLT: Algebra, Categories, Logic in Topology - Grothendieck's generalized topological spaces (toposes)

Normalization by Evaluation

1. Propositional Calculus

Part 1: Propositional Logic

Logic. Propositional Logic: Syntax. Wffs

Transcription:

Subtyping and Intersection Types Revisited Frank Pfenning Carnegie Mellon University International Conference on Functional Programming (ICFP 07) Freiburg, Germany, October 1-3, 2007 Joint work with Rowan Davies, Joshua Dunfield, William Lovas, and Noam Zeilberger Work in progress! ICFP, Freiburg, Oct 07 p.1

Outline Verificationist and pragmatist meaning theory Canonical proofs and atomic subtyping Identity and substitution Defining higher-order subtyping Sound and complete rules for higher-order subtyping Intersections Higher-order subtyping extended Monads: the bridge to functional programming The value restriction and distributivity ICFP, Freiburg, Oct 07 p.2

What is Logic About? Not truth, but consequence Not particular propositions, but arbitrary propositions socrates is a man all men are mortal socrates is mortal P(c) true x.p(x) Q(x) true Q(c) true Proofs are parametric in atomic propositions If A true then [B/P]A true for any B ICFP, Freiburg, Oct 07 p.3

The Meaning of Propositions Atomic propositions are parameters Meaning of compound propositions should be determined by their constituents Verificationist: meaning of a proposition is determined by its verifications A true B true A & B true Introduction rules define: read bottom-up Elimination rules are justified from introduction rules &I ICFP, Freiburg, Oct 07 p.4

The Meaning of Propositions Pragmatist: meaning of a proposition is determined by its uses A & B true A true &E 1 A & B true B true &E 2 Elimination rules define: read top-down Introduction rules are justified from elimination rules ICFP, Freiburg, Oct 07 p.5

An Aside Verificationist = ML programmer (= call-by-value) Pragmatist = Haskell programmer (= call-by-name) See [Zeilberger POPL 08] Origins in [Dummett 76] [Martin-Löf 83] ICFP, Freiburg, Oct 07 p.6

Hypothetical Reasoning Hypothetical reasoning from a notion of consequence A & B true A & B true &E 1 &E 2 B true A true &I B & A true Written as hypothetical judgment A & B true B & A true ICFP, Freiburg, Oct 07 p.7

Canonical Proofs Verificationist to establish conclusion Pragmatist to use hypotheses Meet at an atomic proposition P A verif B verif A & B verif &I P use Q verif P = Q A & B use A use &E 1 A & B use B use &E 2 Bidirectional subformula property ICFP, Freiburg, Oct 07 p.8

Implication Implication requires hypothetical reasoning A use x. B verif A B use A verif A B verif Ix B use Maintains bidirectional subformula property ICFP, Freiburg, Oct 07 p.9

Harmony Identity A use A verif for any proposition A Assume for atomic propositions (= parameters) Ensure for compound propositions (Hereditary) Proof Substitution If Γ,A use C verif and Γ A verif then Γ C verif Hereditary substitution to obtain canonical proofs ICFP, Freiburg, Oct 07 p.10

Relating Atomic Propositions Relate (otherwise parametric) atomic propositions Based on entailment man mortal P Q (P Q) P Q is an assumption on parameters P and Q Use when logical connectives have been eliminated P use P = Q P use P Q Q verif Q verif ICFP, Freiburg, Oct 07 p.11

Rules of Atomic Subtyping Reflexivity, by identity P use P verif P P Transitiviy, by substitution from P use Q verif and Q use R verif P Q Q R P R ICFP, Freiburg, Oct 07 p.12

Curry-Howard-DeBruijn Propositions as types; proofs as terms Annotate judgments with proof terms A verif becomes M A (check M against A) A use becomes R A (R synthesizes A) Canonical proofs as canonical terms (β-normal, η-long) Γ,x A M B Γ λx.m A B I Γ R P P Q Γ R Q Γ,x A x A Γ R A B Γ M A Γ R M B E ICFP, Freiburg, Oct 07 p.13

Identity Revisited Canonical term grammar Canonical terms M ::= λx. M R Atomic terms R ::= x R M Identity with terms x A η A (x) A for any proposition A η A (R) defined by induction on A η P (R) = R η A B (R) = λx.η B (R η A (x)) Definition extends modularly to new connectives ICFP, Freiburg, Oct 07 p.14

Substitution Revisited Hereditary substitution with terms If Γ M A and Γ,x A N C then Γ [M/x] A N C Define [M/x] A N by nested induction on A and N [M/x] A (λy.n) = λy. [M/x] A N [M/x] A (R) = [M/x] A R if hd(r) = x [M/x] A (R) = [M/x] r AR if hd(r) x [M/x] r A (R N) = [M/x] r A (y) ([M/x]r A R) ([M/x] AN) = y ICFP, Freiburg, Oct 07 p.15

Hereditary Substitution Call [M/x] A (R) when hd(r) = x Returns canonical term and its type M : A with A a constituent of A [M/x] A (x) = M : A [M/x] A (R N) = [N /y] B M : C where [M/x] A N = N and [M/x] A R = λy.m : B C Refers back to ordinary substitution with smaller type ICFP, Freiburg, Oct 07 p.16

Application: Logical Frameworks LF Logical Framework Based on dependent types λ Π Higher-order abstract syntax Judgments as types Object language and rules are encoded as signatures with constant declarations Theory of subtyping presented here extends to dependent types [Lovas & Pf 07] Allow declarations a b for type families a and b. A little more later in this talk ICFP, Freiburg, Oct 07 p.17

Example: Encoding CBV Signature (with exp : type and val : type) lam : (val exp) val app : exp exp exp val exp Sample derivation x val x val val exp x val x exp lam (val exp) val λx.x val exp lam (λx.x) val ICFP, Freiburg, Oct 07 p.18

Example: Encoding Polytypes Predicative polymorphism arrow : simp_tp simp_tp simp_tp forall : (simp_tp poly_tp) poly_tp simp_tp poly_tp Impredicative polymorphism arrow : simp_tp simp_tp simp_tp forall : (poly_tp poly_tp) poly_tp simp_tp poly_tp ICFP, Freiburg, Oct 07 p.19

Summary So Far Meaning of connectives given by canonical proofs Analyze the structure of terms in two directions Bi-directional type-checking under CHdB isomorphism Identity and substitution principles Subtyping as entailment on atomic propositions Applicable to dependent types ICFP, Freiburg, Oct 07 p.20

Subtyping at Higher Types What about the usual co-/contra-variant rule of subtyping? B 1 A 1 A 2 B 2 A 1 A 2 B 1 B 2 No need for such a rule The logical meaning of is already given The logical meaning of is already given Canonical forms (specifically: η-long forms) are crucial ICFP, Freiburg, Oct 07 p.21

Defining Higher-Order Subtyping We can define a notion of subtyping several ways (1) A 1 B if for all Γ M A we have Γ M B (2) A 2 B if for all Γ,x B N C we have Γ,x A N C (3) A 3 B if x A η A (x) B (4) A 4 B if for all Γ,x B N C and Γ M A we have Γ [M/x] B N C These are all equivalent! Only compare types of the same shape, since type shape determines term shape (cf. refinement restriction ) ICFP, Freiburg, Oct 07 p.22

Rules for Higher-Order Subtyping Rules so far for atomic types P P P Q P R Q R Also equivalent to (1) (4) is adding the following rule B 1 A 1 A 2 B 2 A 1 A 2 B 1 B 2 General reflexivity and transitivity principles hold Mirror identity and substitution for entailment ICFP, Freiburg, Oct 07 p.23

Subtyping Completeness The rules are complete in a strong sense: A B iff for all Γ M A we have Γ M B! Possible due to the open-ended interpretation of subtyping Quantification over Γ Subtypings are stable under all extensions Consistent with open-ended nature of LF Contrast with functional programming Interested in closed terms for evaluation Datatypes are inductive or recursive, not open-ended Ironically, function spaces are open-ended Cannot expect completeness ICFP, Freiburg, Oct 07 p.24

Subtyping Alone is Insufficient... in practice Consider types even and odd What is the type of successor? Need intersection types z : even s : (even odd) (odd even) Expresses multiple properties of one term in a single type ICFP, Freiburg, Oct 07 p.25

Meaning Explanations Resume verificationist ( I) and pragmatist ( E i ) programs Γ M A Γ M B Γ M A B I Γ R A B Γ R A E 1 Γ R A B Γ R B E 2 Type-theoretic, but not purely logical Again, no new subtyping rules, nothing else needed! Only rule concerned with subtyping remains the same Γ R P P Q Γ R Q ICFP, Freiburg, Oct 07 p.26

Example: 2 is even Recall z : even s : (even odd) (odd even) To check s (s z) even we use s odd even for the outer occurrence s even odd for the inner occurrence z even for the occurrence of z ICFP, Freiburg, Oct 07 p.27

Example: Open-Endedness Add type empty with no constructor We do not know that empty even: x empty x empty but x empty x even unless we specify empty even. We do not know that even odd empty for a similar reason Currently there is no way to specify this [future work] ICFP, Freiburg, Oct 07 p.28

Characterizing HO Subtyping The characterizations of subtyping from before are still equivalent. For example (1) A 1 B if for all Γ M A we have Γ M B (3) A 3 B if x A η A (x) B Several sound and complete set of rules for subtyping Axiomatic Sequent calculus ICFP, Freiburg, Oct 07 p.29

Axiomatic Formulation I Reflexivity and transitivity A A A B A C B C Functions B 1 A 1 A 2 B 2 A 1 A 2 B 1 B 2 ICFP, Freiburg, Oct 07 p.30

Axiomatic Formulation II Intersections A B A C A B C Distributivity A C A B C B C A B C (A B) (A C) A (B C) ICFP, Freiburg, Oct 07 p.31

Sequent Calculus for Subtyping Use sequent calculus to show decidability Not necessary in an implementation! Only to understand subtyping Only atomic subtyping is required for type-checking Judgment C A B A B R,A,B C,A B C L P Q,P Q [A A i ] i [B i ] i B, [A i B i ] i A B ICFP, Freiburg, Oct 07 p.32

Algorithmic Typing Typing rules are non-deterministic Γ R A B Γ R A Γ R A B Γ R B A more efficient system Γ R (R has all types in ) Γ M A (M checks against A) Rules should maximally break down intersection Elide this refinement ICFP, Freiburg, Oct 07 p.33

Algorithmic Typing Rules Γ,x A M B Γ λx.m A B Γ R,P Γ R Q P Q Γ M A Γ M B Γ M A B Γ,x A x A Γ R, [A i B i ] i Γ R M [B i ] i [Γ M A i ] i Γ R,A,B Γ R,A B ICFP, Freiburg, Oct 07 p.34

Summary Logical meaning explanations via canonical proofs Simple and uniform system of subtyping and intersections Subtyping defined on atomic types only Intersection defined for synthesis and checking only Clear derived notions of subtyping for higher-order types Sound and complete set of rules Compare and intersect only types with compatible shape Since type shape determines shape of canonical terms Applies to dependent types with morally identical rules ICFP, Freiburg, Oct 07 p.35

Other Encoding Examples Barendregt s λ-cube Uniform presentation of typing at all levels Different corners of cube with different intersections Syntactic inclusions and properties Values, expressions, and evaluation in functional languages Hereditary Harrop formulas and logic programming Dependent properties of proofs (Weak) (head) normal forms Cut-free sequent proofs Uniform sequent and natural deduction proofs ICFP, Freiburg, Oct 07 p.36

Functional Programming Can we use this approach to design type systems for functional languages? Logical Framework (LF) Complete rules for subtyping and intersection Open interpretation of atomic types Closed interpretation of function spaces Functional programming Closed interpretation of atomic types Open interpretation of function spaces Canonical forms no longer fully characterize meaning Operational semantics, non-termination, effects ICFP, Freiburg, Oct 07 p.37

A Bridge Criterion (3) offers a bridge between logical frameworks and functional programming (3) A 3 B if x A η A (x) B Does not quantify over arbitrary terms or contexts η-expansions are available in functional language η-expansions are always canonical identity maps η-expansions depend only on type constructs in A and B Stability under language extensions ICFP, Freiburg, Oct 07 p.38

A Problem Some rules are unsound because they rely on the closed interpretation of function spaces (canonical forms, pure) Intersection introduction requires a value restriction Drop distributivity of over For counterexamples see [Davies & Pf. ICFP 00] Idea: use monads to isolate effects! Understand the effect of effects on subtyping and intersections ICFP, Freiburg, Oct 07 p.39

Monads in Judgmental Form Maintain verificationist and pragmatist approach Meaning explanation by introduction and elimination forms Need new logical judgment Γ A lax (logically: lax truth of A) Type-theoretic version (with proof terms) Γ E A E is a potentially effectful computation of type A Do not consider specific effects ICFP, Freiburg, Oct 07 p.40

Judgmental Rules Relating lax truth to truth A pure term M is a computation of type A Γ M A Γ M A Substitution: we can compose computations F before E If Γ F A and Γ,x A E C then Γ F/x A E C ICFP, Freiburg, Oct 07 p.41

The Monad Type Constructor Type {A} for pure terms denoting computations of type A Verificationist definition Pragmatist definition Γ E A Γ {E} {A} { }I Γ R {A} Γ,x A E C Γ let {x} = R in E C { }E ICFP, Freiburg, Oct 07 p.42

Identity and Substitution Revisited Leftist hereditary substitution E/x A F Defined by nested induction on A, E, and F let {y} = R in E/x A F = let {y} = R in E/x A F M/x A E = [M/x] A E Identity principle via η-expansion η {A} (R) = {let {x} = R in η A (x)} ICFP, Freiburg, Oct 07 p.43

Subtyping and Intersections Rules for subtyping and intersection are not affected! They were concerned with truth Lax truth is a derived notion Orthogonality of language constructs pays off! It is not the case that Γ E A Γ E B Γ E A B wrong! ICFP, Freiburg, Oct 07 p.44

Higher-Order Subtyping Derived notions of subtyping remain unchanged New rule, axiomatically A B {A} {B} ICFP, Freiburg, Oct 07 p.45

No Distributivity No distributivity: {A} {B} {A B} Quick check via η-expansion x {P } {Q} x {P } {Q} x {P } {Q} x {P } fails y P y P Q y P y P Q x {P } {Q} let {y} = x in y P Q x {P } {Q} {let {y} = x in y} {P Q} ICFP, Freiburg, Oct 07 p.46

Subtyping in Sequent Form In sequent form: commit A B, {A} {B} Contrast with functions [A A i ] i [B i ] i B, [A i B i ] i A B Take all i such that A A i ICFP, Freiburg, Oct 07 p.47

The Value Restriction Call-by-value with effects requires some modifications Value restriction on intersection introduction Γ v : σ Γ v : τ Γ v : σ τ No distributivity Subtyping at higher order (terms are not η-long) Easy: we did all the work already! Typing annotations (terms are not β-normal) Not entirely easy [Dunfield & Pf 03] [Dunfield 07] ICFP, Freiburg, Oct 07 p.48

Deriving Restricted Rules Derive rules from standard encoding into monadic form Types τ ::= b τ 1 τ 2 Computations e ::= e 1 e 2 v Values Type translation b = b v ::= x λx.e τ 1 τ 2 = τ 1 { τ 2 } τ 1 τ 2 = τ 1 τ 2 Form of term translation e = E computations as monadic expressions v = M values as (pure) terms ICFP, Freiburg, Oct 07 p.49

Value Restriction Properties of term translation (elided) If e : τ then e τ If v : τ then v τ Value restriction since does not distribute over { }. Γ {E} {A} Γ {E} {B} Γ {E} {A} {B} Γ {E} {A B} wrong! Also recall: no rule to split E A B ICFP, Freiburg, Oct 07 p.50

Distributivity Distributivity cannot be derived because (A {B}) (A {C}) A ({B} {C}) but So (A {B}) (A {C}) A {B C} (τ σ) (τ ρ) τ (σ ρ) ICFP, Freiburg, Oct 07 p.51

Other Considerations System has empty conjunction (elided for this talk) Interpretation into type theory with proof irrelevance [mostly done] Roughly: M A becomes M,N Ǎ is a type representing the shape of A Â(x) is a type family on elements of type Ǎ N Ǎ(M) is a proof that M has property Ǎ M 1,N 1 = M 2,N 2 iff M 1 = M 2 (by definition) Complexity due to definitional equality Coercion interpretation? [future work] Σx:Ǎ.Â(x) where ICFP, Freiburg, Oct 07 p.52

And More Union types are complex, but fit the story [Zeilberger 07] [Dunfield 07] [Dunfield & Pf 03] Co-value restriction on union types Parametric polymorphism is harder [Davies 05] [Dunfield] Deeper analysis of call-by-name and call-by-value Judgmental method and focusing [Zeilberger POPL 08] Positive and negative intersections, unions [Zeilberger 07] Addings products, sums, and negations ICFP, Freiburg, Oct 07 p.53

Summary: Origins Atomic propositions as parameters Atomic subtyping as assumptions Verificationist and pragmatist definitions of logical connectives canonical proofs intersections monads ICFP, Freiburg, Oct 07 p.54

Summary: Destinations Exceedingly simple rules with subtyping and intersections Derived notion of higher-order subtyping from substitution or η-expansion with sound and complete sets of structural rules Richly epxressive logical framework λ Π Explanation of value restriction on intersections in call-by-value via monadic embedding ICFP, Freiburg, Oct 07 p.55

All (Non-Derived) Rules Γ,x A M B Γ λx.m A B I Γ R P P Q Γ R Q Γ M A Γ M B Γ M A B I Γ,x A x A Γ R A B Γ M A Γ R M B E Γ R A B Γ R A E 1 P P Γ R A B Γ R B E 2 P Q P S Q S ICFP, Freiburg, Oct 07 p.56