Eliminating reflection€¦ · reflection 㱺 vec A (S n + m) ... u ≡ v ETT = ITT + reflection 4. Intensional VS Extensional p : u = v u ≡ v ETT = ITT + reflection What is

Post on 23-May-2020

6 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

Transcript

Nicolas Tabareau

Eliminating reflection through reflection

Matthieu Sozeau

Théo Winterhalter

joint work with

EUTypes 2018

Different notions of equality

Conversion Identity typesExtends the notion of β-equality To handle equalities within type theory

(λx.t) u ≡ t[x← u] refl u : u = u

1

Different notions of equality

Conversion Identity typesExtends the notion of β-equality To handle equalities within type theory

(λx.t) u ≡ t[x← u] refl u : u = u

If u ≡ v then refl u : u = v

1

Reflection

Conversion Identity typesExtends the notion of β-equality To handle equalities within type theory

2

Reflection

Conversion Identity typesExtends the notion of β-equality To handle equalities within type theory

p : u = v

u ≡ v

2

Example

3

ExamplevecA : nat → Type

3

ExamplevecA : nat → Type

[] : vecA 0

3

ExamplevecA : nat → Type

[] : vecA 0

cons : ∀ n, A → vecA n → vecA (S n)

3

ExamplevecA : nat → Type

[] : vecA 0

cons : ∀ n, A → vecA n → vecA (S n)

rev : ∀ {n m}, vecA n → vecA m → vecA (n + m)

3

ExamplevecA : nat → Type

[] : vecA 0

cons : ∀ n, A → vecA n → vecA (S n)

rev : ∀ {n m}, vecA n → vecA m → vecA (n + m)

rev [] acc ≐ acc

3

ExamplevecA : nat → Type

[] : vecA 0

cons : ∀ n, A → vecA n → vecA (S n)

rev : ∀ {n m}, vecA n → vecA m → vecA (n + m)

rev [] acc ≐ acc

rev (cons n a v) acc ≐ rev v (cons m a acc)

3

ExamplevecA : nat → Type

[] : vecA 0

cons : ∀ n, A → vecA n → vecA (S n)

rev : ∀ {n m}, vecA n → vecA m → vecA (n + m)

rev [] acc ≐ acc

rev (cons n a v) acc ≐ rev v (cons m a acc)

vecA m 3

ExamplevecA : nat → Type

[] : vecA 0

cons : ∀ n, A → vecA n → vecA (S n)

rev : ∀ {n m}, vecA n → vecA m → vecA (n + m)

rev [] acc ≐ acc

rev (cons n a v) acc ≐ rev v (cons m a acc)

vecA (S m) 3

ExamplevecA : nat → Type

[] : vecA 0

cons : ∀ n, A → vecA n → vecA (S n)

rev : ∀ {n m}, vecA n → vecA m → vecA (n + m)

rev [] acc ≐ acc

rev (cons n a v) acc ≐ rev v (cons m a acc)

vecA (n + S m) 3

ExamplevecA : nat → Type

[] : vecA 0

cons : ∀ n, A → vecA n → vecA (S n)

rev : ∀ {n m}, vecA n → vecA m → vecA (n + m)

rev [] acc ≐ acc

rev (cons n a v) acc ≐ rev v (cons m a acc)

vecA (n + S m)expected: vecA (S n + m) ≠ 3

ExamplevecA : nat → Type

[] : vecA 0

cons : ∀ n, A → vecA n → vecA (S n)

rev : ∀ {n m}, vecA n → vecA m → vecA (n + m)

rev [] acc ≐ acc

rev (cons n a v) acc ≐ rev v (cons m a acc)

vecA (n + S m)reflection ⇒ vecA (S n + m) ≡ 3

Intensional VS Extensionalp : u = v

u ≡ v

ETT = ITT + reflection

4

Intensional VS Extensionalp : u = v

u ≡ v

ETT = ITT + reflection

What is the relation between the two?

4

Intensional VS ExtensionalWhat is the relation between the two?

1995 Martin HofmannETT is conservative over ITT + K + funext

5

Intensional VS ExtensionalWhat is the relation between the two?

1995 Martin HofmannETT is conservative over ITT + K + funext

5

Intensional VS ExtensionalWhat is the relation between the two?

1995 Martin HofmannETT is conservative over ITT + K + funext

K : ∀ A (x : A) (e : x = x), e = refl x

5

Intensional VS ExtensionalWhat is the relation between the two?

1995 Martin HofmannETT is conservative over ITT + K + funext

K : ∀ A (x : A) (e : x = x), e = refl x

funext : ∀ A B (f g : A → B), (∀ (x : A), f x = g x) → f = g

5

Intensional VS ExtensionalWhat is the relation between the two?

2005 Nicolas OuryETT can be translated to ITT + K + funext + ?

K : ∀ A (x : A) (e : x = x), e = refl x

funext : ∀ A B (f g : A → B), (∀ (x : A), f x = g x) → f = g

6

Intensional VS ExtensionalWhat is the relation between the two?

2005 Nicolas OuryETT can be translated to ITT + K + funext + ?

K : ∀ A (x : A) (e : x = x), e = refl x

funext : ∀ A B (f g : A → B), (∀ (x : A), f x = g x) → f = g

‘?’ : « heterogenous equality is a congruence for application »6

Intensional VS ExtensionalWhat is the relation between the two?

TODAYETT can be translated to ITT + K + funext

K : ∀ A (x : A) (e : x = x), e = refl x

funext : ∀ A B (f g : A → B), (∀ (x : A), f x = g x) → f = g

‘?’ : « heterogenous equality is a congruence for application »7

Intensional VS ExtensionalWhat is the relation between the two?

TODAYETT can be translated to ITT + K + funext

K : ∀ A (x : A) (e : x = x), e = refl x

funext : ∀ A B (f g : A → B), (∀ (x : A), f x = g x) → f = g

‘?’ : « heterogenous equality is a congruence for application »7

Intensional VS ExtensionalWhat is the relation between the two?

TODAYETT can be translated to ITT + K + funext

8

Intensional VS ExtensionalWhat is the relation between the two?

TODAYETT can be translated to ITT + K + funext

+ Minimal (axiom-wise)

+ Constructive (formalised in Coq)

+ Computes (produces Coq terms)8

Fundamental differenceOury Hofmann / us

9

Fundamental differenceOury Hofmann / us

Minimal annotations

λ(x : A).t

t u

9

Fundamental differenceOury Hofmann / us

Minimal annotations Fully annotated terms

λ(x : A).t

t u

λ(x : A).B.t

t @(x:A).B u

9

Fundamental differenceOury Hofmann / us

Minimal annotations Fully annotated terms

λ(x : A).t

t u

λ(x : A).B.t

t @(x:A).B u

Blocked β-reduction

(λ(x : A).B.t) @(x:A).B u≡ t[x := u]

9

Fundamental differenceOury Hofmann / us

Minimal annotations Fully annotated terms

λ(x : A).t

t u

λ(x : A).B.t

t @(x:A).B u

Blocked β-reduction

(λ(x : A).B.t) @(x:A).B u≡ t[x := u]

Free β-reduction

(λ(x : A).t) u≡ t[x := u]

9

Fundamental differenceOury Hofmann / us

Free β-reduction Blocked β-reduction

(λ(x : A).B.t) @(x:A).B u≡ t[x := u]

(λ(x : A).t) u≡ t[x := u]

9

Fundamental differenceOury Hofmann / us

Free β-reduction Blocked β-reduction

(λ(x : A).B.t) @(x:A).B u≡ t[x := u]

(λ(x : A).x) u≡ x[x := u]

9

Fundamental differenceOury Hofmann / us

Free β-reduction Blocked β-reduction

(λ(x : A).B.t) @(x:A).B u≡ t[x := u]

(λ(x : A).x) u≡ u

9

Fundamental differenceOury Hofmann / us

Free β-reduction Blocked β-reduction

(λ(x : A).B.t) @(x:A).B u≡ t[x := u]

(λ(x : nat).x) 0 ≡ 0

9

Fundamental differenceOury Hofmann / us

Free β-reduction Blocked β-reduction

(λ(x : A).B.t) @(x:A).B u≡ t[x := u]

(λ(x : nat).x) 0 ≡ 0

nat → nat

9

Fundamental differenceOury Hofmann / us

Free β-reduction Blocked β-reduction

(λ(x : A).B.t) @(x:A).B u≡ t[x := u]

(λ(x : nat).x) 0 ≡ 0

nat → nat

≡ nat → bool

9

under consistent context

Fundamental differenceOury Hofmann / us

Free β-reduction Blocked β-reduction

(λ(x : A).B.t) @(x:A).B u≡ t[x := u]

(λ(x : nat).x) 0 ≡ 0

bool

9

Fundamental differenceOury Hofmann / us

Free β-reduction Blocked β-reduction

(λ(x : A).B.t) @(x:A).B u≡ t[x := u]

(λ(x : nat).x) 0 ≡ 0

bool nat

9

Fundamental differenceOury Hofmann / us

Free β-reduction Blocked β-reduction

(λ(x : A).B.t) @(x:A).B u≡ t[x := u]

(λ(x : nat).x) 0 ≡ 0

bool nat≠

9

under consistent context

Fundamental differenceOury Hofmann / us

Free β-reduction Blocked β-reduction

(λ(x : A).B.t) @(x:A).B u≡ t[x := u]

(λ(x : nat).x) 0 ≡ 0

bool nat≠

No Uniqueness of type

No Subject reductionOR

9

Fundamental differenceOury Hofmann / us

Free β-reduction Blocked β-reduction

(λ(x : A).B.t) @(x:A).B u≡ t[x := u]

(λ(x : nat).x) 0 ≡ 0

bool nat≠

No Uniqueness of type

No Subject reductionOR

Uniqueness of typeandΓ ⊢ t : A Γ ⊢ t : B

⇒ Γ ⊢ A ≡ B 9

Principle of the translationETT ITT

10

Principle of the translationETT ITT

Typing derivation Well typed term

10

Principle of the translationETT ITT

Typing derivation Well typed term

Γ’ ⊢i t’ : A’

Γ ⊢x t : A

… ……… ⋮⋮⋮

10

Principle of the translationETT ITT

Typing derivation Well typed term

Γ’ ⊢i t’ : A’

Γ ⊢x t : A

… ……… ⋮⋮⋮

Idea: Conversion is translated to transport.10

Principle of the translationETT ITT

Typing derivation Well typed term

Γ’ ⊢i t’ : B’

Γ ⊢x t : A

⋮⋮

Idea: Conversion is translated to transport.

Γ ⊢x t : B Γ ⊢x B ≡ A Γ’ ⊢i e : B’ = A’

Γ’ ⊢i transp(e,t’) : A’⇓

10

Principle of the translationETT ITT

Typing derivation Well typed term

Γ’ ⊢i t’ : B’

Γ ⊢x t : A

⋮⋮

Idea: Conversion is translated to transport.

Γ ⊢x t : B Γ ⊢x B ≡ A Γ’ ⊢i e : B’ = A’

Γ’ ⊢i transp(e,t’) : A’⇓

⇒ Coherence problems10

Heterogenous equality

a A=B b

11

Heterogenous equality

a A=B b

≐ ∑ (p : A = B), transp(p,a) = b

11

Terms up to transportt ∼ t’

t ∼ transp(e,t’)

12

Terms up to transportt ∼ t’

t ∼ transp(e,t’) t @(x:A).B u ∼ t’ @(x:A’).B’ u’

t ∼ t’ A ∼ A’ B ∼ B’ u ∼ u’

12

Terms up to transportt ∼ t’

t ∼ transp(e,t’) t @(x:A).B u ∼ t’ @(x:A’).B’ u’

t ∼ t’ A ∼ A’ B ∼ B’ u ∼ u’…

12

Terms up to transportt ∼ t’

t ∼ transp(e,t’) t @(x:A).B u ∼ t’ @(x:A’).B’ u’

t ∼ t’ A ∼ A’ B ∼ B’ u ∼ u’…

t is translated to t’ with t ∼ t’Invariant

12

Terms up to transportt ∼ t’

t ∼ transp(e,t’) t @(x:A).B u ∼ t’ @(x:A’).B’ u’

t ∼ t’ A ∼ A’ B ∼ B’ u ∼ u’…

t is translated to t’ with t ∼ t’Invariant

Given Γ and t ∼ t’, there exists a term p such that if Γ ⊢i t : A and Γ ⊢i t’ : B then Γ ⊢x p : t A=B t’.

Fundamental lemma

12

Translation⊢x Γ ∑ Γᵗ ∼ Γ, ⊢i Γᵗif then

13

Translation⊢x Γ ∑ Γᵗ ∼ Γ, ⊢i Γᵗif then

∀ Γᵗ ∼ Γ, ⊢i Γᵗ → ∑ (tᵗ ∼ t) (Aᵗ ∼ A), Γᵗ ⊢i tᵗ : AᵗΓ ⊢x t : Aif then

13

Translation⊢x Γ ∑ Γᵗ ∼ Γ, ⊢i Γᵗif then

∀ Γᵗ ∼ Γ, ⊢i Γᵗ → ∑ (tᵗ ∼ t) (Aᵗ ∼ A), Γᵗ ⊢i tᵗ : AᵗΓ ⊢x t : Aif then

13

∀ Γᵗ ∼ Γ, ⊢i Γᵗ → ∑ (tᵗ ∼ t) (Aᵗ ∼ A) (uᵗ ∼ u) (Aˢ ∼ A) p,Γ ⊢x t ≡ u : Aif then

Γᵗ ⊢i p : tᵗ Aᵗ=Aˢ uᵗ

Conclusion

ETT ITT + K + funext

Term

Typing derivation

+

Term

Typing derivation

+

Translation relation

+

Translation

Conclusion

ETT ITT + K + funext

Term

Typing derivation

+

Term

Typing derivation

+

Translation relation

+

Translation

HTS Two Level TTOR OR

Conclusion

Coq + K + funextETT ITT + K + funext

Term

Typing derivation+

Term

Typing derivation

+

Translation relation+

Term

Translation Reflection (TemplateCoq)

Coq

Untyped Term

Reflection (TemplateCoq)

HTS Two Level TTOR OR

Conclusion

https://github.com/TheoWinterhalter/ett-to-itt

Coq + K + funextETT ITT + K + funext

Term

Typing derivation+

Term

Typing derivation

+

Translation relation+

Term

Translation Reflection (TemplateCoq)

Coq

Untyped Term

Reflection (TemplateCoq)

HTS Two Level TTOR OR

top related