Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Why dependent type theory?

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Why dependent type theory?


Chronological Thread 
  • From: Talia Ringer <tringer AT cs.washington.edu>
  • To: Coq-Club <coq-club AT inria.fr>
  • Subject: Re: [Coq-Club] Why dependent type theory?
  • Date: Wed, 4 Mar 2020 23:20:19 -0800
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=tringer AT cs.washington.edu; spf=Pass smtp.mailfrom=tringer AT cs.washington.edu; spf=None smtp.helo=postmaster AT mail-wr1-f44.google.com
  • Ironport-phdr: 9a23:uKhR+xHNQ97ST43KR0YKv51GYnF86YWxBRYc798ds5kLTJ78os+wAkXT6L1XgUPTWs2DsrQY0raQ6vixEjVYvN6oizMrTt9lb1c9k8IYnggtUoauKHbQC7rUVRE8B9lIT1R//nu2YgB/Ecf6YEDO8DXptWZBUhrwOhBoKevrB4Xck9q41/yo+53Ufg5EmCexbal9IRmrogjdrNQajZdmJ6o+1xfFvntFcPlKyG11Il6egxnz6sCs8ZB57i9eoegh98lOUaX7e6Q3U7lVByk4Pm42+cPmqwDNQROA6XUAXGoWlAFIAxXe4xHhQpjxqCr6ufFj1yScIMb7UKo7WTWm76dsVR/olCIKPCM3/W3LlsB9ir9QrRS8rBJ93oHUepmYO/Vwfqzffd0US2lPUNtPWSNdGY6zdZcDAvAbMOpEs4XwpV0Dpga+Cwm2A+PvzydFiGHs0q0+0uQuCxzN0hAhH9IIv3Tbss/1P7oVXOCp1qnIzDPDb/xI1jfn84XHbgshreuCXL1qasrRyUgvFwXKjlWMrozlOSmZ2foQvGiG9udtU/+khW0/qwxpvDSj2sMhhpPKi48V0FzI6zt1zJsvKdC3R0N2Z8OvHoFKuCGALYR2R9svQ2F2tyY+zb0LoZu7czILyJQj3hLeZeaHf5WR7hLtW+ucLi10hH1ieLK4iBay9VavxvfgWcmz1VZGtitFkt/SuXARzxHf9NSLR/9n8kqi2TuDzR7f5v9ZLUwumqfWJIYtwrsqmZoStUTDEDX2mELzjKKOakUk4Omo6+LoYrr4vJ+RLJN7ihrkPqUggMO/GuQ4MgkIX2iU5eS807vj8VfnT7pXk/06irPZv4zCJcQHuq65BBdY3Zok6xamFjupzNAYnWQcI19eYxKGj43pO0nUL/ziDPe/hU6skDZxyPzcML3hGMaFEn+Wu7D4OJ159kQUnAE01JVU449eIrAHOvP6HEHr4o/2FBg8ZjC9x+fuQO980IwTQyrbHrWYNqzfq3eD/aQwKvKMZYkapDH7bfUp+qi93jcChVYBcPzxjtMsY3eiE6E+ehTLUT/Xmt4EVFwykE87Re3uhkeFVGcCNX2pGb01/TE6Do26CoGFS4yw0uXYgHWLW6ZOb2UDMWiiVG/yftzVCfwXLj2bOc9glDMYUr7nRoM8h0n36V3KjoF/J++RwRU28JLu0N8vur/WnBA2sCNuVoGTjz3LQGZzkWcFATQx2fInrA==

Interesting thread so far. I have few thoughts on performance, unsurprisingly. Just many thoughts on why I like dependent types (practically) and how much suffering is essential (much less than the status quo).

With dependent types, you can rule out entire classes of programs you don't want at compile-time, and get a nice specification for the user. So your user can know off the bat what weird edge cases your program disallows, and furthermore the user will not even be allowed to call the program with one of those edge cases. From that perspective, I expect that once we make these a bit easier to use, they will be a lot more common as a normal programming language feature.

Many of the pain points for using dependent types (especially the pain points for using indexed inductive types) are not at all fundamental and I am confident this will change in the near future. Indexed inductive types give some of the neatest specifications. And proof assistants are useful not just for proving things, but of course also for the inherent value that the specification that you've proven provides to the user.

There will always be some necessary suffering. When you have a dependent type, all of your programs are not just programs but also proofs of some invariant on the program. And all of your proofs about those programs also carry proofs about your invariant proofs, hence everyone's favorite axioms for dealing with equalities of equalities. But that should be the only necessary suffering.

If you look at really experienced programmers using dependent types, I find that often what they are doing (probably subconsciously) is constructing all of their dependently typed programs in such a way that the proofs relating those programs later on will go through trivially, for example by reflexivity. It would be fun to see if there is a way to partially automate this without relying on any axioms.

Talia




On Tue, Mar 3, 2020 at 11:44 AM Jason Gross <jasongross9 AT gmail.com> wrote:
I'm in the process of writing my thesis on proof assistant performance bottlenecks (with a focus on Coq), and there's a large class of performance bottlenecks that come from (mis)using the power of dependent types.  So in writing the introduction, I want to provide some justification for the design decision of using dependent types, rather than, say, set theory or classical logic (as in, e.g., Isabelle/HOL).  And the only reasons I can come up with are "it's fun" and "lots of people do it"

So I'm asking these mailing lists: why do we base proof assistants on dependent type theory?  What are the trade-offs involved?
I'm interested both in explanations and arguments given on list, as well as in references to papers that discuss these sorts of choices.

Thanks,
Jason



Archive powered by MHonArc 2.6.18.

Top of Page