Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Extending Hindley-Milner Type Inference with Coercive Structural Subtyping
Dmitriy Traytel Stefan Berghofer Tobias Nipkow APLAS 2011
λ → ∀
=
Isabelle
β α
nat<:int
Extending Hindley-Milner Type Inference with Coercive Structural - - PowerPoint PPT Presentation
Why coercions? A naive algorithm Constraint-based algorithm Conclusion Extending Hindley-Milner Type Inference with Coercive Structural Subtyping Dmitriy Traytel Stefan Berghofer Tobias Nipkow APLAS 2011 Isabelle nat<:int =
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
λ → ∀
=
Isabelle
β α
nat<:int
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
x→∞
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
x→∞
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
x→∞
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Related work
Cardelli, Pratt & Tiuryn, Luo, Kießling, Frey, Benke, Barthe, Chen
Reynolds, Swamy, Hicks & Bierman, Nordlander, Shields & Peyton Jones . . .
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Related work
Cardelli, Pratt & Tiuryn, Luo, Kießling, Frey, Benke, Barthe, Chen
Reynolds, Swamy, Hicks & Bierman, Nordlander, Shields & Peyton Jones . . .
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Related work
Cardelli, Pratt & Tiuryn, Luo, Kießling, Frey, Benke, Barthe, Chen
Reynolds, Swamy, Hicks & Bierman, Nordlander, Shields & Peyton Jones . . .
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
This is “normal” behaviour of coercions. Coq Reference Manual
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Input term t, context Γ Constraint generation Γ ⊢ t : τ S Weak unification test Constraint simplification Build constraint graph Constraint resolution Unification Coercion generation and insertion θΓ ⊢ θt u : θτ Output term u, type θτ, context θΓ
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Input term t, context Γ Constraint generation Γ ⊢ t : τ S Weak unification test Constraint simplification Build constraint graph Constraint resolution Unification Coercion generation and insertion θΓ ⊢ θt u : θτ Output term u, type θτ, context θΓ
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Input term t, context Γ Constraint generation Γ ⊢ t : τ S Weak unification test Constraint simplification Build constraint graph Constraint resolution Unification Coercion generation and insertion θΓ ⊢ θt u : θτ Output term u, type θτ, context θΓ
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
.
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
.
.
.
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Input term t, context Γ Constraint generation Γ ⊢ t : τ S Weak unification test Constraint simplification Build constraint graph Constraint resolution Unification Coercion generation and insertion θΓ ⊢ θt u : θτ Output term u, type θτ, context θΓ
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
(β1 → α1) → (α2 → β2) → (α1 → α2) → (β1 → β2)
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
.
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
.
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
.
Constraint graph
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
.
Constraint graph
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Input term t, context Γ Constraint generation Γ ⊢ t : τ S Weak unification test Constraint simplification Build constraint graph Constraint resolution Unification Coercion generation and insertion θΓ ⊢ θt u : θτ Output term u, type θτ, context θΓ
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
variable predecessors base type predecessors base type successors variable successors
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Constraint graph Partial order on base types
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Constraint graph Partial order on base types
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Constraint graph Partial order on base types
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Constraint graph Partial order on base types
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Constraint graph Partial order on base types
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Constraint graph Partial order on base types
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Input term t, context Γ Constraint generation Γ ⊢ t : τ S Weak unification test Constraint simplification Build constraint graph Constraint resolution Unification Coercion generation and insertion θΓ ⊢ θt u : θτ Output term u, type θτ, context θΓ
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
then the algorithm will output a term u’
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
then the algorithm will output a term u’
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
Why coercions? A naive algorithm Constraint-based algorithm Conclusion
λ → ∀
=
Isabelle
β α
nat<:int
Backup slides
Backup slides
Backup slides
where s ≡ λx. if x > n ∧ sin x > r then x else x and u ≡ (Suc (f n), f r)
Backup slides
where s ≡ λx. if x > n ∧ sin x > r then x else x and u ≡ (Suc (f n), f r)
Backup slides
where s ≡ λx. if x > n ∧ sin x > r then x else x and u ≡ (Suc (f n), f r)