coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: mechvel AT scico.botik.ru
- To: Jason Gross <jasongross9 AT gmail.com>
- Cc: coq-club <coq-club AT inria.fr>, agda-list <agda AT lists.chalmers.se>, lean-user <lean-user AT googlegroups.com>, Coq Discourse <coq+miscellaneous AT discoursemail.com>
- Subject: Re: [Coq-Club] [Agda] Why dependent type theory?
- Date: Wed, 04 Mar 2020 01:42:50 +0300
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=mechvel AT scico.botik.ru; spf=Pass smtp.mailfrom=mechvel AT scico.botik.ru; spf=None smtp.helo=postmaster AT mail.botik.ru
- Ironport-phdr: 9a23:Kf9jSRbz4EbIAhjh9AjPdcH/LSx+4OfEezUN459isYplN5qZr8y7bnLW6fgltlLVR4KTs6sC17OK9fm4BydZv8jJmUtBWaIPfidNsd8RkQ0kDZzNImzAB9muURYHGt9fXkRu5XCxPBsdMs//Y1rPvi/6tmZKSV3wOgVvO+v6BJPZgdip2OCu4Z3TZBhDiCagbb9oIxi6sArcutMLjYd+K6s9xQbFr3pJdu9L2W5mOFWfkgrz6cu34JNt6Tlbteg7985HX6X6fqA4QqJdAT87LW0759DluAfaQweX6XQSTmsZkhxTAwjY9x76RYv+sjH7tuVmxiaXO9D9QK0uVjSj66drTwLoiDsCOjUk/mzbltB8gaRGqx+6uRdx35Dbb52UNPpmf6PSY9UaRXZaXs1MUyBNG56wY5cTA+YEO+tTsovzqEYUrRamCgajGOzhxDFIiHHowKM10eohHwLJ3QMuBN8OrHfZrNfpOKsOS+24zq/FxijDYfNM3jf97ZDFchU/rv6QXbJwb9TeyU00GgPeklqQqJDqPzSP2usWtGib8+tgVeG1h249tgF8pCWkyMkrionMnI0Vy1bE+D1lz4Y1P9K4TEt7bsC+EJtLrS2aLJV5T8U/SG9roCY30rkLtJ6hcCQX1pgqwwTTZ+GJfoWK+B7vSeecLDZgiH9heL+znQu+/Vakx+HmS8W53lRHojBYntTIq3wA0QHY5NKdRftn5Eih3C6C1wDN5eFAJkA5ja/bJIQgwr40jJYcqkPDHjP3mEX1lqOWbFgk9vCp6+ThfLrmuoeROot0hw3kL6gihMiyDf4lPgUAXWWX4/mw2bzi8EHhRbVFlPw2kq3XsJDAIsQbo7a0AwpL3Yk/6xa/ESmp0NADkHkcMF1FeQ6Ij4/zN17VJ/D4Efa/g1e2nDdx2vDKJqfhDYnVLnjfjLfheq5w5FJbyAoq1NxQ+5ZUCqwaL//oQU/wtNnYDgcjPACuwubnDs991oIEVm6VDK+ZKvCajVjdxOs0JO/ES5USoy21f/os/PnogmU+gkRMVaas1JoTLnu/G6I1DV+eZC/pj9wBD2oOlhE1TeftzleFTT9QIWyvDPF03S0yFI/zVdSLfYuqmrHUmX7jRsQLNFADMUiFFDLTT6vBW/oIb3vPcMpokzhCX7+9Soxnzwz87FarmYoiFfLd/2gjjbym0dF04+PJkhRrq25vBMWW1CeHSH11nSUSWm1vhfwtkQlG0l6GlJNArblAD9UKuaFSWQYxMtjWyPB7CJboR1CZcw==
On 2020-03-04 00:31, Jason Gross wrote:
Which bottlenecks are you referring to? Are they intrinsically tiedto dependent types, or they are related to the treatment of
propositions and equality in systems such as Coq?
The main bottleneck that I'm referring to here (though not the only
one of my thesis) is the one that is due to the fact that arbitrary
conversion problems can happen during typechecking. This is used to
great advantage in proof by reflection (where all of the work is done
in checking that a proof of "true = true" has the type "some-check =
true"). But it also causes performance issues if you're not careful.
To take a toy example, consider two different definitions of
factorial: n! = n * (n - 1)!, and n! = (n - 1)! * n. Suppose you have
two different ways of computing a vector (length-indexed list) of
permutations, one which defines the length in terms of the first
factorial, and the other one which defines the length in terms of the
second factorial. Suppose you now try to prove that the two methods
give the same result on any concrete list of length of length 10.
Just to check that this goal is valid, Coq is now trying to compute
10! as a natural number. This example is a bit contrived, but less
egregious versions of this issue abound, and when doing verified
engineering at scale, these issues can add up in hard-to-predict ways.
I have a real-world example where changing the input size just a
little bit caused `reflexivity` to take over 400 hours, rather than
just a couple of minutes.
On Tue, Mar 3, 2020, 16:00 Viktor Kunčak
<vkuncak AT gmail.com>
wrote:
I would be also curious to hear answers to this questions!
("Lots of people do it" seems like a very compelling answer.)
Which bottlenecks are you referring to? Are they intrinsically tied
to dependent types, or they are related to the treatment of
propositions and equality in systems such as Coq?
There is a problem of the type checking cost in Agda, and probably in Coq too.
I do not know of whether it is fundamental or technical. And I have not seen an answer to this question, so far. On practice, it looks like this:
Agda can type-check only a small part of the computer algebra library of methods (with full proofs). With implementing it further, with increasing the hierarchy level of parameterized modules, the type
check cost seems to grow exponentially in the level.
So, after implementing in Agda an average textbook on computer algebra (where is known a constructive proof for each statement), say, of 500 pages, it will not be type-checked in 100 years.
Probably, this is a difficult technical problem that will be practically solved during several years.
Regards,
-----
Sergei
There are type systems overlayed on top of initially untyped_______________________________________________
languages (e.g. the language of Alloy Analyzer) and there are
gradual types and designs like TypeScript for to initially untyped
programming languages. ACL2 theorem prover for pure LISP, SPASS
theorem prover for first-order logic, and "TLA+ model checking made
symbolic" model checker for TLA+ all include techniques to recover
types from an initially untyped language.
Best regards,
Viktor
On Tue, Mar 3, 2020 at 8:44 PM 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
Agda mailing list
Agda AT lists.chalmers.se
https://lists.chalmers.se/mailman/listinfo/agda
- [Coq-Club] Why dependent type theory?, Jason Gross, 03/03/2020
- Re: [Coq-Club] [lean-user] Why dependent type theory?, Colin Stebbins Gordon, 03/03/2020
- Re: [Coq-Club] Why dependent type theory?, Viktor Kunčak, 03/03/2020
- Re: [Coq-Club] Why dependent type theory?, Jason Gross, 03/03/2020
- Re: [Coq-Club] Why dependent type theory?, Patricia Peratto, 03/03/2020
- Re: [Coq-Club] [Agda] Why dependent type theory?, mechvel, 03/03/2020
- Re: [Coq-Club] [Agda] Why dependent type theory?, Jason Gross, 03/04/2020
- Re: [Coq-Club] [lean-user] Re: [Agda] Why dependent type theory?, mechvel, 03/04/2020
- Re: [Coq-Club] [Agda] [lean-user] Re: Why dependent type theory?, mechvel, 03/04/2020
- Re: [Coq-Club] [Agda] [lean-user] Re: Why dependent type theory?, mechvel, 03/06/2020
- Re: [Coq-Club] [Agda] [lean-user] Re: Why dependent type theory?, mechvel, 03/07/2020
- Re: [Coq-Club] [Agda] [lean-user] Re: Why dependent type theory?, mechvel, 03/04/2020
- Re: [Coq-Club] [lean-user] Re: [Agda] Why dependent type theory?, mechvel, 03/04/2020
- Re: [Coq-Club] [Agda] Why dependent type theory?, Ralf Jung, 03/04/2020
- Re: [Coq-Club] [Agda] Why dependent type theory?, mechvel, 03/04/2020
- Re: [Coq-Club] [Agda] Why dependent type theory?, Ulf Norell, 03/04/2020
- Re: [Coq-Club] [Agda] Why dependent type theory?, mechvel, 03/04/2020
- Re: [Coq-Club] [Agda] Why dependent type theory?, Jason Gross, 03/04/2020
- Re: [Coq-Club] Why dependent type theory?, Pierre Courtieu, 03/04/2020
- Re: [Coq-Club] Why dependent type theory?, Pierre-Marie Pédrot, 03/04/2020
- Re: [Coq-Club] Why dependent type theory?, Jason Gross, 03/03/2020
Archive powered by MHonArc 2.6.18.