Vectors are records, too!
|
|
- Samantha Ford
- 5 years ago
- Views:
Transcription
1 Vectors are records, too! Jesper Cockx 1 Gaëtan Gilbert 2 Nicolas Tabareau 2 Matthieu Sozeau 2 1 Gothenburg University, Sweden 2 INRIA, France 21 June 2018
2 types most popular example 1 data V (A : Set) : (n : N) Set where nil : V A zero cons : (m : N)(x : A)(xs : V A m) V A (suc m) 1 Disclaimer: I did not actually count all examples since / 15
3 types most popular example 1 V : (A : Set)(n : N) Set V A zero = V A (suc n) = A V A n 1 Disclaimer: I did not actually count all examples since / 15
4 types most popular example 1 data V (A : Set) : (n : N) Set where nil : V A zero cons : (m : N)(x : A)(xs : V A m) V A (suc m) vs. V : (A : Set)(n : N) Set V A zero = V A (suc n) = A V A n 1 Disclaimer: I did not actually count all examples since / 15
5 Presenting... A common representation of indexed datatypes and recursive types as case-splitting datatypes. An elaboration algorithm to automatically transform an indexed datatype into a case-splitting datatype. 2 / 15
6 Inductive types vs. recursive types Case-splitting datatypes Elaborating indexed datatypes
7 Inductive types vs. recursive types Case-splitting datatypes Elaborating indexed datatypes
8 Inductive type Recursive type 3 / 15
9 Inductive type I Intuitive notation Recursive type data V (A : Set) : (n : N) Set where nil : V A zero cons : (m : N)(x : A)(xs : V A m) V A (suc m) 3 / 15
10 Inductive type I Intuitive notation Recursive type I Eta equality x : V A zero x tt x : V A (suc m) x (x.π 1, x.π 2 ) 3 / 15
11 Inductive type II Intuitive notation Pattern matching Recursive type I Eta equality tail : (m : N)(xs : V A (suc m)) V A m tail m (cons m x xs) = xs 3 / 15
12 Inductive type II Intuitive notation Pattern matching Recursive type II Eta equality Forcing & detagging for free cons : (m : Nat)(x : A)(xs : V A m) V A (suc m) cons m x xs = (x, xs) 3 / 15
13 Inductive type III Intuitive notation Pattern matching Structural recursion Recursive type II Eta equality Forcing & detagging for free 3 / 15
14 Inductive type III Intuitive notation Pattern matching Structural recursion Recursive type III Eta equality Forcing & detagging for free Large indices : N N Prop zero n = (suc m) zero = (suc m) (suc n) = m n 3 / 15
15 Inductive type IIII Intuitive notation Pattern matching Structural recursion Non-indexed / non-stratified types Recursive type III Eta equality Forcing & detagging for free Large indices N = N is not a valid definition! 3 / 15
16 Inductive type IIII Intuitive notation Pattern matching Structural recursion Non-indexed / non-stratified types Recursive type IIII Eta equality Forcing & detagging for free Large indices Non-positive types data U : Set where : U U U = : U Set =(t 1 t 2 ) = = t 1 = t 2 3 / 15
17 Inductive types vs. recursive types Case-splitting datatypes Elaborating indexed datatypes
18 Indexed datatype data V A : N Set where... Recursive type V A zero =... V A (suc m) =... 4 / 15
19 Indexed datatype data V A : N Set where... Case-splitting datatype V A n = case n {...} Recursive type V A zero =... V A (suc m) =... 4 / 15
20 Indexed datatype Case-splitting datatype Recursive type data V A : N Set where... V A n = case n {...} V A zero =... V A (suc m) =... 4 / 15
21 Indexed datatype Case-splitting datatype Recursive type data V A : N Set where... V A n = case n {...} V A zero =... V A (suc m) =... 4 / 15
22 General syntax for case-splitting datatypes Q ::= c c k k case x c 1 ˆ 1 τ 1 Q 1. c n ˆ n τ n Q n 5 / 15
23 Case tree for V A n case n zero nil suc m cons (x : A)(xs : V A m) 6 / 15
24 Case tree for m n case m zero lz suc m case n zero suc n ls (p : m n ) 7 / 15
25 From case tree to a datatype: Ignore case splits; gather all constructors in a flat list. From case tree to a recursive definition: Translate case splits with tools from eliminating dependent pattern matching. 8 / 15
26 Inductive types vs. recursive types Case-splitting datatypes Elaborating indexed datatypes
27 Problem: We don t want to write case trees, we want to write datatypes! 9 / 15
28 Problem: We don t want to write case trees, we want to write datatypes! Solution: Elaborate datatypes to case trees automatically. 9 / 15
29 State of elaborating a datatype c 1 1 [Φ 1 ]. c k k [Φ k ] is outer telescope of datatype indices c 1,..., c k are the constructor names i is inner telescope of arguments of c i Φ i is a set of constraints {v j /? p j } 10 / 15
30 Initial elaboration state (A : Set)(n : N) { nil [zero /? n] } cons (m : N)(x : A)(xs : V A m) [suc m /? n] 11 / 15
31 Elaboration step: case split on index (A : Set)(n : N) { nil [zero /? n] } cons (m : N)(x : A)(xs : V A m) [suc m /? n] (A : Set) { nil [zero /? zero] } (A : Set)(n : N) { cons (m : N)(x : A)(xs : V A m) [suc m /? suc n ] } 11 / 15
32 Elaboration step: solve constraint (A : Set)(n : N) { cons (m : N)(x : A)(xs : V A m) [suc m /? suc n ] } (A : Set)(n : N) { cons (x : A)(xs : V A n ) } 12 / 15
33 Elaboration step: finish splitting (A : Set)(n : N) { cons (m : N)(x : A)(xs : V A m) [suc m /? suc n ] } (A : Set)(n : N) { cons (x : A)(xs : V A n ) } cons (x : A)(xs : V A n ) 12 / 15
34 Elaboration step: introduce equality proof (A B : Set)(f : A B)(y : B) { image (x : A) [f x /? y] } (A B : Set)(f : A B)(y : B) { image (x : A) (e : f x B y) } 13 / 15
35 Ongoing & future work Implement translation in Coq (WIP) Generate constructors & eliminator Generate case trees for Agda datatypes User syntax to control splitting? 14 / 15
36 Conclusion Datatypes have long been denied features of record types such as η-equality. 15 / 15
37 Conclusion Datatypes have long been denied features of record types such as η-equality. We can automatically transform a datatype into an equivalent definition with η-laws. 15 / 15
38 Conclusion Datatypes have long been denied features of record types such as η-equality. We can automatically transform a datatype into an equivalent definition with η-laws. Now you can both have the cake and eat it: vectors are records, too! 15 / 15
First-Class Type Classes
First-Class Type Classes Matthieu Sozeau Joint work with Nicolas Oury LRI, Univ. Paris-Sud - Démons Team & INRIA Saclay - ProVal Project Gallium Seminar November 3rd 2008 INRIA Rocquencourt Solutions for
More informationTheorem Proving Principles, Techniques, Applications Recursion
NICTA Advanced Course Theorem Proving Principles, Techniques, Applications Recursion 1 CONTENT Intro & motivation, getting started with Isabelle Foundations & Principles Lambda Calculus Higher Order Logic,
More informationEquations: a tool for dependent pattern-matching
Equations: a tool for dependent pattern-matching Cyprien Mangin cyprien.mangin@m4x.org Matthieu Sozeau matthieu.sozeau@inria.fr Inria Paris & IRIF, Université Paris-Diderot May 15, 2017 1 Outline 1 Setting
More informationCoq with Classes. Matthieu Sozeau. Journées PPS 2011 September 5th 2011 Trouville, France. Project Team πr 2 INRIA Paris
Coq with Classes Matthieu Sozeau Project Team πr 2 INRIA Paris Journées PPS 2011 September 5th 2011 Trouville, France This talk A quick overview of Coq Elaboration Type Classes Matthieu Sozeau - Coq with
More informationDependent Polymorphism. Makoto Hamana
1 Dependent Polymorphism Makoto Hamana Department of Computer Science, Gunma University, Japan http://www.cs.gunma-u.ac.jp/ hamana/ This Talk 2 [I] A semantics for dependently-typed programming [II] A
More informationInduction in Coq. Nate Foster Spring 2018
Induction in Coq Nate Foster Spring 2018 Review Previously in 3110: Functional programming in Coq Logic in Coq Curry-Howard correspondence (proofs are programs) Today: Induction in Coq REVIEW: INDUCTION
More information10 Years of Partiality and General Recursion in Type Theory
10 Years of Partiality and General Recursion in Type Theory Ana Bove Chalmers University of Technology DTP 10 July 9th 2010 Claims and Disclaims I know that I know nothing Socrates Ana Bove DTP 10 July
More informationSummer 2017 Discussion 10: July 25, Introduction. 2 Primitives and Define
CS 6A Scheme Summer 207 Discussion 0: July 25, 207 Introduction In the next part of the course, we will be working with the Scheme programming language. In addition to learning how to write Scheme programs,
More informationIsabelle s meta-logic. p.1
Isabelle s meta-logic p.1 Basic constructs Implication = (==>) For separating premises and conclusion of theorems p.2 Basic constructs Implication = (==>) For separating premises and conclusion of theorems
More informationProgramming with dependent types: passing fad or useful tool?
Programming with dependent types: passing fad or useful tool? Xavier Leroy INRIA Paris-Rocquencourt IFIP WG 2.8, 2009-06 X. Leroy (INRIA) Dependently-typed programming 2009-06 1 / 22 Dependent types In
More informationCIS 500: Software Foundations
CIS 500: Software Foundations Midterm I October 2, 2018 Name (printed): Username (PennKey login id): My signature below certifies that I have complied with the University of Pennsylvania s Code of Academic
More informationStructures in Coq January 27th 2014
MPRI 2-7-2 Proof assistants ~sozeau/teaching/mpri-2-7-2-270114.pdf! Structures in Coq January 27th 2014 Matthieu Sozeau! "r² project team! Inria Paris & PPS! matthieu.sozeau@inria.fr! www.pps /~sozeau
More informationTracing Ambiguity in GADT Type Inference
Tracing Ambiguity in GADT Type Inference ML Workshop 2012, Copenhagen Jacques Garrigue & Didier Rémy Nagoya University / INRIA Garrigue & Rémy Tracing ambiguity 1 Generalized Algebraic Datatypes Algebraic
More informationInductive Definitions, continued
1 / 27 Inductive Definitions, continued Assia Mahboubi Jan 7th, 2016 2 / 27 Last lecture Introduction to Coq s inductive types: Introduction, elimination and computation rules; Twofold implementation :
More informationGeneric Programming With Dependent Types: II
Generic Programming With Dependent Types: II Generic Haskell in Agda Stephanie Weirich University of Pennsylvania March 2426, 2010 SSGIP Generic-Haskell style generic programming in Agda Dependently-typed
More informationA NEW PROOF-ASSISTANT THAT REVISITS HOMOTOPY TYPE THEORY THE THEORETICAL FOUNDATIONS OF COQ USING NICOLAS TABAREAU
COQHOTT A NEW PROOF-ASSISTANT THAT REVISITS THE THEORETICAL FOUNDATIONS OF COQ USING HOMOTOPY TYPE THEORY NICOLAS TABAREAU The CoqHoTT project Design and implement a brand-new proof assistant by revisiting
More informationProgramming with Universes, Generically
Programming with Universes, Generically Andres Löh Well-Typed LLP 24 January 2012 An introduction to Agda Agda Functional programming language Static types Dependent types Pure (explicit effects) Total
More informationMoreIntro.v. MoreIntro.v. Printed by Zach Tatlock. Oct 07, 16 18:11 Page 1/10. Oct 07, 16 18:11 Page 2/10. Monday October 10, 2016 lec02/moreintro.
Oct 07, 16 18:11 Page 1/10 * Lecture 02 Set Implicit Arguments. Inductive list (A: Type) : Type := nil : list A cons : A > list A > list A. Fixpoint length (A: Type) (l: list A) : nat := nil _ => O cons
More informationInductive datatypes in HOL. lessons learned in Formal-Logic Engineering
Inductive datatypes in HOL lessons learned in Formal-Logic Engineering Stefan Berghofer and Markus Wenzel Institut für Informatik TU München = Isabelle λ β HOL α 1 Introduction Applications of inductive
More informationGeneric Constructors and Eliminators from Descriptions
DRAFT Generic Constructors and Eliminators from Descriptions Type Theory as a Dependently Typed Internal DSL Larry Diehl Tim Sheard Portland State University {ldiehl,sheard}@cs.pdx.edu Abstract Dependently
More informationA NEW PROOF-ASSISTANT THAT REVISITS HOMOTOPY TYPE THEORY THE THEORETICAL FOUNDATIONS OF COQ USING NICOLAS TABAREAU
COQHOTT A NEW PROOF-ASSISTANT THAT REVISITS THE THEORETICAL FOUNDATIONS OF COQ USING HOMOTOPY TYPE THEORY NICOLAS TABAREAU The CoqHoTT project Design and implement a brand-new proof assistant by revisiting
More informationPreuves Interactives et Applications
Preuves Interactives et Applications Christine Paulin & Burkhart Wolff http://www.lri.fr/ paulin/preuvesinteractives Université Paris-Saclay HOL and its Specification Constructs 10/12/16 B. Wolff - M2
More informationMLW. Henk Barendregt and Freek Wiedijk assisted by Andrew Polonsky. March 26, Radboud University Nijmegen
1 MLW Henk Barendregt and Freek Wiedijk assisted by Andrew Polonsky Radboud University Nijmegen March 26, 2012 inductive types 2 3 inductive types = types consisting of closed terms built from constructors
More informationA Second Look At ML. Chapter Seven Modern Programming Languages, 2nd ed. 1
A Second Look At ML Chapter Seven Modern Programming Languages, 2nd ed. 1 Outline Patterns Local variable definitions A sorting example Chapter Seven Modern Programming Languages, 2nd ed. 2 Two Patterns
More informationBasic Foundations of Isabelle/HOL
Basic Foundations of Isabelle/HOL Peter Wullinger May 16th 2007 1 / 29 1 Introduction into Isabelle s HOL Why Type Theory Basic Type Syntax 2 More HOL Typed λ Calculus HOL Rules 3 Example proof 2 / 29
More informationIntroduction to Co-Induction in Coq
August 2005 Motivation Reason about infinite data-structures, Reason about lazy computation strategies, Reason about infinite processes, abstracting away from dates. Finite state automata, Temporal logic,
More informationProvably Correct Software
Provably Correct Software Max Schäfer Institute of Information Science/Academia Sinica September 17, 2007 1 / 48 The Need for Provably Correct Software BUT bugs are annoying, embarrassing, and cost gazillions
More informationNonuniform (Co)datatypes
Foundational Nonuniform (Co)datatypes for Higher-Order Logic Jasmin Blanchette Fabian Meier Andrei Popescu Dmitriy Traytel uniform datatype 'a list = Nil Cons 'a ('a list) 1 3 4 uniform datatype 'a list
More informationInductive data types
Inductive data types Assia Mahboubi 9 juin 2010 In this class, we shall present how Coq s type system allows us to define data types using inductive declarations. Generalities Inductive declarations An
More informationLecture 8: Summary of Haskell course + Type Level Programming
Lecture 8: Summary of Haskell course + Type Level Programming Søren Haagerup Department of Mathematics and Computer Science University of Southern Denmark, Odense October 31, 2017 Principles from Haskell
More informationOverloading, Type Classes, and Algebraic Datatypes
Overloading, Type Classes, and Algebraic Datatypes Delivered by Michael Pellauer Arvind Computer Science and Artificial Intelligence Laboratory M.I.T. September 28, 2006 September 28, 2006 http://www.csg.csail.mit.edu/6.827
More informationOn Agda JAIST/AIST WS CVS/AIST Yoshiki Kinoshita, Yoriyuki Yamagata. Agenda
On Agda 2009.3.12 JAIST/AIST WS CVS/AIST Yoshiki Kinoshita, Yoriyuki Yamagata Agenda On Agda Agda as a programming language Agda as a proof system Further information. 2 1 Agenda On Agda Agda as a programming
More informationHeq: a Coq library for Heterogeneous Equality
Heq: a Coq library for Heterogeneous Equality Chung-Kil Hur PPS, Université Paris Diderot Abstract. We give an introduction to the library Heq, which provides a set of tactics to manipulate heterogeneous
More informationCoq Summer School, Session 2 : Basic programming with numbers and lists. Pierre Letouzey
Coq Summer School, Session 2 : Basic programming with numbers and lists Pierre Letouzey Predened data structures Predened types are actually declared to Coq at load time 1 : Inductive bool := true false.
More informationIdris: Implementing a Dependently Typed Programming Language
Idris: Implementing a Dependently Typed Programming Language Edwin Brady University of St Andrews ecb10@st-andrews.ac.uk @edwinbrady Type Inference and Automated Proving, Dundee, 12th May 2015 1 / 25 Idris
More informationProgramming Up-to-Congruence, Again. WG 2.8 Estes Park
Programming Up-to-Congruence, Again Stephanie Weirich University of Pennsylvania August 12, 2014 WG 2.8 Estes Park Zombie A functional programming language with a dependent type system intended for lightweight
More informationA totally Epic backend for Agda
A totally Epic backend for Agda Master of Science Thesis in the Programme Computer Science: Algorithms, Languages and Logic OLLE FREDRIKSSON DANIEL GUSTAFSSON Chalmers University of Technology University
More information(ii) Define a function ulh that takes a list xs, and pairs each element with all other elements in xs.
EXAM FUNCTIONAL PROGRAMMING Tuesday the 1st of October 2016, 08.30 h. - 10.30 h. Name: Student number: Before you begin: Do not forget to write down your name and student number above. If necessary, explain
More informationCoq. LASER 2011 Summerschool Elba Island, Italy. Christine Paulin-Mohring
Coq LASER 2011 Summerschool Elba Island, Italy Christine Paulin-Mohring http://www.lri.fr/~paulin/laser Université Paris Sud & INRIA Saclay - Île-de-France September 2011 Lecture 4 : Advanced functional
More informationAn Algebra of Dependent Data Types
An Algebra of Dependent Data Types TYPES 2006 Tyng-Ruey Chuang Joint work with Jan-Li Lin Institute of Information Science, Academia Sinica Nangang, Taipei 115, Taiwan trc@iis.sinica.edu.tw 1 List in Coq
More informationProgramming with Math and Logic
.. Programming with Math and Logic an invitation to functional programming Ed Morehouse Wesleyan University The Plan why fp? terms types interfaces The What and Why of Functional Programming Computing
More information15 212: Principles of Programming. Some Notes on Continuations
15 212: Principles of Programming Some Notes on Continuations Michael Erdmann Spring 2011 These notes provide a brief introduction to continuations as a programming technique. Continuations have a rich
More informationInheritance and Overloading in Agda
Inheritance and Overloading in Agda Paolo Capriotti 3 June 2013 Abstract One of the challenges of the formalization of mathematics in a proof assistant is defining things in such a way that the syntax
More informationInductive prod (A B : Set) : Set := pair : A -> B -> prod A B. Inductive sum (A B : Set) : Set := inl : A -> sum A B inr : B -> sum A B.
Jacques Garrigue, 2013 5 10 1 Coq Inductive nat : Set := O S -> nat. Coq 1 Inductive prod (A B : Set) : Set := pair : A -> B -> prod A B. Inductive sum (A B : Set) : Set := inl : A -> sum A B inr : B ->
More informationType checking by theorem proving in IDRIS
Type checking by theorem proving in IDRIS p. 1 Type checking by theorem proving in IDRIS Scottish Theorem Proving, 10th February 2012 ecb10@st-andrews.ac.uk University of St Andrews Edwin Brady Type checking
More informationA Small Interpreted Language
A Small Interpreted Language What would you need to build a small computing language based on mathematical principles? The language should be simple, Turing equivalent (i.e.: it can compute anything that
More informationTail Calls. CMSC 330: Organization of Programming Languages. Tail Recursion. Tail Recursion (cont d) Names and Binding. Tail Recursion (cont d)
CMSC 330: Organization of Programming Languages Tail Calls A tail call is a function call that is the last thing a function does before it returns let add x y = x + y let f z = add z z (* tail call *)
More informationProgramming with Ornaments
Under consideration for publication in J. Functional Programming 1 Programming with Ornaments HSIANG-SHANG KO National Institute of Informatics, Japan JEREMY GIBBONS University of Oxford, UK Abstract Dependently
More informationCombining Proofs and Programs in a Dependently Typed Language. Certification of High-level and Low-level Programs
Combining Proofs and Programs in a Dependently Typed Language Stephanie Weirich University of Pennsylvania July 7, 2014 Certification of High-level and Low-level Programs Zombie A functional programming
More informationFunctional programming with Common Lisp
Functional programming with Common Lisp Dr. C. Constantinides Department of Computer Science and Software Engineering Concordia University Montreal, Canada August 11, 2016 1 / 81 Expressions and functions
More informationTowards Reasoning about State Transformer Monads in Agda. Master of Science Thesis in Computer Science: Algorithm, Language and Logic.
Towards Reasoning about State Transformer Monads in Agda Master of Science Thesis in Computer Science: Algorithm, Language and Logic Viet Ha Bui Department of Computer Science and Engineering CHALMERS
More informationarxiv: v1 [cs.se] 4 Jan 2017
Theory Plug-in for Rodin 3.x T.S. Hoang 1, L. Voisin 2, A. Salehi 1, M. Butler 1, T. Wilkinson 1, and N. Beauger 2 1 ECS, University of Southamtpon, U.K. 2 Systerel, France arxiv:1701.08625v1 [cs.se] 4
More informationProgramming with Dependent Types Interactive programs and Coalgebras
Programming with Dependent Types Interactive programs and Coalgebras Anton Setzer Swansea University, Swansea, UK 14 August 2012 1/ 50 A Brief Introduction into ML Type Theory Interactive Programs in Dependent
More informationThe war on error. James Chapman University of Tartu
The war on error James Chapman University of Tartu Practicalities 4 weeks of 4 sessions per week Monday, 16.15-18.00 Tuesday, 08.15-10.00 Wednesday, 08.15-10.00 Wednesday, 12.15-14.00 It will be assessed
More informationNormalization by hereditary substitutions
Normalization by hereditary substitutions Chantal Keller INRIA Saclay Île-de-France France keller@lix.polytechnique.fr Thorsten Altenkirch The University of Nottingham United Kingdom txa@cs.nott.ac.uk
More informationCertified Programming with Dependent Types
1/30 Certified Programming with Dependent Types Inductive Predicates Niels van der Weide March 7, 2017 2/30 Last Time We discussed inductive types Print nat. (* Inductive nat : Set := O : nat S : nat nat*)
More informationB2. The Logical Framework
B2. The Logical Framework (a) Basic Form of Rules (b) The non-dependent function type and product. (c) The dependent function type and product. (d) Structural rules. Critical Systems, CS 411, Lentterm
More informationCalculus of Inductive Constructions
Calculus of Inductive Constructions Software Formal Verification Maria João Frade Departmento de Informática Universidade do Minho 2008/2009 Maria João Frade (DI-UM) Calculus of Inductive Constructions
More informationCase-Analysis for Rippling and Inductive Proof
Case-Analysis for Rippling and Inductive Proof Moa Johansson 1 Joint work with Lucas Dixon 2 and Alan Bundy 2 Dipartimento di Informatica, Università degli Studi di Verona, Italy. 1 School of Informatics,
More informationRelational Algebraic Ornaments
Relational Algebraic Ornaments Hsiang-Shang Ko Jeremy Gibbons Department of Computer Science, University of Oxford {Hsiang-Shang.Ko, Jeremy.Gibbons}@cs.ox.ac.uk Abstract Dependently typed programming is
More informationλ calculus is inconsistent
Content Rough timeline COMP 4161 NICTA Advanced Course Advanced Topics in Software Verification Gerwin Klein, June Andronick, Toby Murray λ Intro & motivation, getting started [1] Foundations & Principles
More informationGeneric programming with ornaments and dependent types
Utrecht University Master Thesis Computing Science Generic programming with ornaments and dependent types Yorick Sijsling Supervisors dr. Wouter Swierstra prof. dr. Johan Jeuring June 29, 2016 Abstract
More informationGADTs. Wouter Swierstra. Advanced functional programming - Lecture 7. Faculty of Science Information and Computing Sciences
GADTs Advanced functional programming - Lecture 7 Wouter Swierstra 1 Today s lecture Generalized algebraic data types (GADTs) 2 A datatype data Tree a = Leaf Node (Tree a) a (Tree a) This definition introduces:
More informationOverview. A Compact Introduction to Isabelle/HOL. Tobias Nipkow. System Architecture. Overview of Isabelle/HOL
Overview A Compact Introduction to Isabelle/HOL Tobias Nipkow TU München 1. Introduction 2. Datatypes 3. Logic 4. Sets p.1 p.2 System Architecture Overview of Isabelle/HOL ProofGeneral Isabelle/HOL Isabelle
More informationCS 457/557: Functional Languages
CS 457/557: Functional Languages Lists and Algebraic Datatypes Mark P Jones Portland State University 1 Why Lists? Lists are a heavily used data structure in many functional programs Special syntax is
More informationCombining Programming with Theorem Proving
Combining Programming with Theorem Proving Chiyan Chen and Hongwei Xi Boston University Programming with Theorem Proving p.1/27 Motivation for the Research To support advanced type systems for practical
More informationInductive data types (I)
5th Asian-Pacific Summer School on Formal Methods August 5-10, 2013, Tsinghua University, Beijing, China Inductive data types (I) jean-jacques.levy@inria.fr 2013-8-6 http://sts.thss.tsinghua.edu.cn/coqschool2013
More informationProgramming with (co-)inductive types in Coq
Programming with (co-)inductive types in Coq Matthieu Sozeau February 3rd 2014 Programming with (co-)inductive types in Coq Matthieu Sozeau February 3rd 2014 Last time 1. Record Types 2. Mathematical Structures
More informationExpr_annotated.v. Expr_annotated.v. Printed by Zach Tatlock
Oct 05, 16 8:02 Page 1/14 * Lecture 03 Include some useful libraries. Require Import Bool. Require Import List. Require Import String. Require Import ZArith. Require Import Omega. List provides the cons
More informationLesson 11 Universal Types. Universal Types and System F
Lesson 11 Universal Types 2/28 Chapter 23 Universal Types and System F Varieties of polymorphism System F Examples Basic properties Erasure Evaluation issues Parametricity Impredicativity Lesson 11: Universal
More informationGADTs. Wouter Swierstra and Alejandro Serrano. Advanced functional programming - Lecture 7. [Faculty of Science Information and Computing Sciences]
GADTs Advanced functional programming - Lecture 7 Wouter Swierstra and Alejandro Serrano 1 Today s lecture Generalized algebraic data types (GADTs) 2 A datatype data Tree a = Leaf Node (Tree a) a (Tree
More informationTheory Exploration on Infinite Structures. Master s thesis in Computer Science Algorithms, Languages, and Logic SÓLRÚN HALLA EINARSDÓTTIR
Theory Exploration on Infinite Structures Master s thesis in Computer Science Algorithms, Languages, and Logic SÓLRÚN HALLA EINARSDÓTTIR Department of Computer Science and Engineering CHALMERS UNIVERSITY
More informationGADTs. Alejandro Serrano. AFP Summer School. [Faculty of Science Information and Computing Sciences]
GADTs AFP Summer School Alejandro Serrano 1 Today s lecture Generalized algebraic data types (GADTs) 2 A datatype data Tree a = Leaf Node (Tree a) a (Tree a) This definition introduces: 3 A datatype data
More informationProgramming Languages Lecture 14: Sum, Product, Recursive Types
CSE 230: Winter 200 Principles of Programming Languages Lecture 4: Sum, Product, Recursive Types The end is nigh HW 3 No HW 4 (= Final) Project (Meeting + Talk) Ranjit Jhala UC San Diego Recap Goal: Relate
More informationFunctional Programming with Isabelle/HOL
Functional Programming with Isabelle/HOL = Isabelle λ β HOL α Florian Haftmann Technische Universität München January 2009 Overview Viewing Isabelle/HOL as a functional programming language: 1. Isabelle/HOL
More informationMoreIntro_annotated.v. MoreIntro_annotated.v. Printed by Zach Tatlock. Oct 04, 16 21:55 Page 1/10
Oct 04, 16 21:55 Page 1/10 * Lecture 02 Infer some type arguments automatically. Set Implicit Arguments. Note that the type constructor for functions (arrow " >") associates to the right: A > B > C = A
More informationHomework 3 COSE212, Fall 2018
Homework 3 COSE212, Fall 2018 Hakjoo Oh Due: 10/28, 24:00 Problem 1 (100pts) Let us design and implement a programming language called ML. ML is a small yet Turing-complete functional language that supports
More informationThe Next 700 Syntactic Models of Type Theory
The Next 700 Syntactic Models of Type Theory Simon Boulier 1 Pierre-Marie Pédrot 2 Nicolas Tabareau 1 1 INRIA, 2 University of Ljubljana CPP 17th January 2017 Pédrot & al (INRIA & U Ljubljana) The Next
More informationTesting. Wouter Swierstra and Alejandro Serrano. Advanced functional programming - Lecture 2. [Faculty of Science Information and Computing Sciences]
Testing Advanced functional programming - Lecture 2 Wouter Swierstra and Alejandro Serrano 1 Program Correctness 2 Testing and correctness When is a program correct? 3 Testing and correctness When is a
More informationRefinement Types as Proof Irrelevance. William Lovas with Frank Pfenning
Refinement Types as Proof Irrelevance William Lovas with Frank Pfenning Overview Refinement types sharpen existing type systems without complicating their metatheory Subset interpretation soundly and completely
More informationSOFTWARE VERIFICATION AND COMPUTER PROOF (lesson 1) Enrico Tassi Inria Sophia-Antipolis
SOFTWARE VERIFICATION AND COMPUTER PROOF (lesson 1) Enrico Tassi Inria Sophia-Antipolis Who am I? 1. I'm a researcher at Inria 2. I work on proof assistants, the kind of tools that we will be using for
More informationCITS3211 FUNCTIONAL PROGRAMMING. 6. Folding operators
CITS3211 FUNCTIONAL PROGRAMMING 6. Folding operators Summary: This lecture discusses an important group of higher order functions known as the folding operators. Almost any recursive function over lists
More informationSingleton. A General-Purpose Dependently-Typed Assembly Language. Simon Winwood. Manuel Chakravarty. Abstract. 1. Introduction
Singleton A General-Purpose Dependently-Typed Assembly Language Simon Winwood NICTA and UNSW sjw@cse.unsw.edu.au Manuel Chakravarty UNSW chak@cse.unsw.edu.au Abstract In this paper we present Singleton,
More informationPositively Dependent Types
Positively Dependent Types Daniel R. Licata Robert Harper Carnegie Mellon University {drl,rwh}@cs.cmu.edu Abstract This paper is part of a line of work on using the logical techniques of polarity and focusing
More informationFunctional Programming and Modeling
Chapter 2 2. Functional Programming and Modeling 2.0 2. Functional Programming and Modeling 2.0 Overview of Chapter Functional Programming and Modeling 2. Functional Programming and Modeling 2.1 Overview
More informationProgram certification with computational
Program certification with computational effects Burak Ekici j.w.w. Jean-Guillaume Dumas, Dominique Duval, Damien Pous y LJK, University Joseph Fourier, Grenoble y LIP, ENS-Lyon November 5, 2014 JNCF 14,
More informationAugust 5-10, 2013, Tsinghua University, Beijing, China. Polymorphic types
5th Asian-Pacific Summer School on Formal Methods August 5-10, 2013, Tsinghua University, Beijing, China Polymorphic types jean-jacques.levy@inria.fr 2013-8-8 http://sts.thss.tsinghua.edu.cn/coqschool2013
More informationTypes Summer School Gothenburg Sweden August Dogma oftype Theory. Everything has a type
Types Summer School Gothenburg Sweden August 2005 Formalising Mathematics in Type Theory Herman Geuvers Radboud University Nijmegen, NL Dogma oftype Theory Everything has a type M:A Types are a bit like
More informationLaying Tiles Ornamentally
Thesis for the Degree of Licentiate of Engineering Laying Tiles Ornamentally An approach to structuring container traversals Nikita Frolov Department of Computer Science and Engineering Chalmers University
More informationScheme. Functional Programming. Lambda Calculus. CSC 4101: Programming Languages 1. Textbook, Sections , 13.7
Scheme Textbook, Sections 13.1 13.3, 13.7 1 Functional Programming Based on mathematical functions Take argument, return value Only function call, no assignment Functions are first-class values E.g., functions
More informationIdeas over terms generalization in Coq
Ideas over terms generalization in Coq Vincent Siles 1,2 LIX/INRIA/Ecole Polytechnique Palaiseau, France Abstract Coq is a tool that allows writing formal proofs and check their correctness in its underlying
More informationSafe Reactive Programming: the FunLoft Proposal
Safe Reactive Programming: the FunLoft Proposal Frédéric Boussinot MIMOSA Project, Inria Sophia-Antipolis (Joint work with Frédéric Dabrowski) http://www.inria.fr/mimosa/rp With support from ALIDECS SYNCHRON
More informationCoq projects for type theory 2018
Coq projects for type theory 2018 Herman Geuvers, James McKinna, Freek Wiedijk February 6, 2018 Here are five projects for the type theory course to choose from. Each student has to choose one of these
More informationIntroduction to dependent types in Coq
October 24, 2008 basic use of the Coq system In Coq, you can play with simple values and functions. The basic command is called Check, to verify if an expression is well-formed and learn what is its type.
More informationCIS 500: Software Foundations
CIS 500: Software Foundations Midterm I October 3, 2017 Name (printed): Username (PennKey login id): My signature below certifies that I have complied with the University of Pennsylvania s Code of Academic
More informationModern Programming Languages. Lecture LISP Programming Language An Introduction
Modern Programming Languages Lecture 18-21 LISP Programming Language An Introduction 72 Functional Programming Paradigm and LISP Functional programming is a style of programming that emphasizes the evaluation
More informationAlonzo a Compiler for Agda
Alonzo a Compiler for Agda Marcin Benke Institute of Informatics, Warsaw University, ben@mimuw.edu.pl 1 Introduction Agda [Norell, 2007] is an interactive system for developing constructive proofs in a
More informationModularising Inductive Families
Modularising Inductive Families Hsiang-Shang Ko and Jeremy Gibbons Department of Computer Science, University of Oxford March 21, 2013 Abstract Dependently typed programmers are encouraged to use inductive
More informationLogic - CM0845 Introduction to Haskell
Logic - CM0845 Introduction to Haskell Diego Alejandro Montoya-Zapata EAFIT University Semester 2016-1 Diego Alejandro Montoya-Zapata (EAFIT University) Logic - CM0845 Introduction to Haskell Semester
More informationIntegration of SMT Solvers with ITPs There and Back Again
Integration of SMT Solvers with ITPs There and Back Again Sascha Böhme and University of Sheffield 7 May 2010 1 2 Features: SMT-LIB vs. Yices Translation Techniques Caveats 3 4 Motivation Motivation System
More information