The Coq proof assistant : principles and practice J.-F. Monin - - PowerPoint PPT Presentation

the coq proof assistant principles and practice
SMART_READER_LITE
LIVE PREVIEW

The Coq proof assistant : principles and practice J.-F. Monin - - PowerPoint PPT Presentation

Coq J.-F. Monin Polymorphism Lists The Coq proof assistant : principles and practice J.-F. Monin Universit Grenoble Alpes 2016 Lecture 7 Outline Coq J.-F. Monin Polymorphism Lists Polymorphism Outline Coq J.-F. Monin


slide-1
SLIDE 1

Coq J.-F. Monin Polymorphism Lists

The Coq proof assistant : principles and practice

J.-F. Monin

Université Grenoble Alpes

2016 Lecture 7

slide-2
SLIDE 2

Coq J.-F. Monin Polymorphism Lists

Outline

Polymorphism

slide-3
SLIDE 3

Coq J.-F. Monin Polymorphism Lists

Outline

Polymorphism Lists

slide-4
SLIDE 4

Coq J.-F. Monin Polymorphism Lists

Outline

Polymorphism Lists

slide-5
SLIDE 5

Coq J.-F. Monin Polymorphism Lists

Polymorphism

A type can be a parameter of a function

Example: the identity function Definition ide := fun (X: Type) => fun (x: X) => x. Definition ide (X: Type) (x: X) := x.

slide-6
SLIDE 6

Coq J.-F. Monin Polymorphism Lists

Implicit arguments

When using the identity function, the first argument can be automatically inferred from the second

Example

id nat 3 id 3

Local declaration

Definition id {X: Type} (x: X) := x.

Simplified application

id 3

slide-7
SLIDE 7

Coq J.-F. Monin Polymorphism Lists

Implicit arguments

When using the identity function, the first argument can be automatically inferred from the second

Example

id nat 3 id 3

Local declaration

Definition id {X: Type} (x: X) := x.

Simplified application

id 3

Recovering explicit application

@id nat id (X:=nat)

slide-8
SLIDE 8

Coq J.-F. Monin Polymorphism Lists

Implicit arguments

When using the identity function, the first argument can be automatically inferred from the second

Example

id nat 3 id 3

Local declaration

Definition id {X: Type} (x: X) := x.

Simplified application

id 3

Recovering explicit application

@id nat id (X:=nat)

Global declaration

Set Implicit Arguments.

slide-9
SLIDE 9

Coq J.-F. Monin Polymorphism Lists

Outline

Polymorphism Lists

slide-10
SLIDE 10

Coq J.-F. Monin Polymorphism Lists

Lists

Polymorphic inductive definition

Inductive list (X: Set) : Set := | nil : list X | cons : X -> list X -> list X.

On Type

Can be used in more situations (e.g., lists of predicates) Inductive list (X: Type) : Type := | nil : list X | cons : X -> list X -> list X.

slide-11
SLIDE 11

Coq J.-F. Monin Polymorphism Lists

Basic important properties

app : for appending two lists

slide-12
SLIDE 12

Coq J.-F. Monin Polymorphism Lists

Basic important properties

app : for appending two lists nil is neutral on the left and on the right for app

◮ left : by reflexivity ◮ right : by induction

slide-13
SLIDE 13

Coq J.-F. Monin Polymorphism Lists

Basic important properties

app : for appending two lists nil is neutral on the left and on the right for app

◮ left : by reflexivity ◮ right : by induction

app is associative

◮ app (app u v) w = app u (app v w)

just by induction on u

slide-14
SLIDE 14

Coq J.-F. Monin Polymorphism Lists

Additional material

See coq files Lecture07 lists