Presentation is loading. Please wait.

Presentation is loading. Please wait.

What should a general purpose language for Dependently-Typed Programming look like?

Similar presentations


Presentation on theme: "What should a general purpose language for Dependently-Typed Programming look like?"— Presentation transcript:

1 What should a general purpose language for Dependently-Typed Programming look like?

2 Discussion Topics General framework Indexed or full dependent types? Staging? Soundness? Examples? What application areas? Reason about effects? What logic? Automation? (what sort?) IDE integration? Is this the right question? Are other approaches better? Coq Esc/Haskell, Spec#, etc.

3 Participants Stephanie Weirich Emir Pasalic Edwin Brady Tim Sheard Ralf Laemmel John O’Leary Manuel Fahndrich (with cameos by Walid Taha and Oleg Kiselyov)

4 Indexed vs. Full Dependent types Split based on base language FP = same/sub-language C#/Java/C++ = too different from logic Different vs. sublanguage if indexed language is sublanguage of computation language, semantics must coincide Types pick out sub-language effect type system indexed monad (monad encapsulates effects, index describes effects)

5 Staging? It’s orthogonal Relation to phase-distinction? Do we want to control what is compile- time, what is runtime? Disagreement here, not a lot of specific experience

6 Examples Typed-object languages Datastructures (balanced trees, binomial heaps, etc.) Correctness of insertion sort Correctness of lex/yacc (Pottier) Defunctionalization FRP (Nilsson) Pugs (Perl 6 implementation) N-way maps Generic programming (Reflection) Correctness of CPS conversion Static resource estimation

7 Future examples? Hardware Ripple-carry adder (applications in hardware verification) Wired circuit generator (Sheeran) Formalize “From System F to TAL” Network protocols - Session types Self-describing databases Capturing the ordering of lock acquisition Provably correct refactoring More sophisticated typed object languages

8 Automation As much as possible please. How to convince programmers to do proofs? Pluggable decision procedures Omega, SAT, Ring, Uninterpreted functions Cooperative decision procedures Semi-automatic proving (tactics) What sort of help with failed proofs? Incremental proof generation Interaction between static and dynamic checking


Download ppt "What should a general purpose language for Dependently-Typed Programming look like?"

Similar presentations


Ads by Google