coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Gabriel Scherer <gabriel.scherer AT gmail.com>
- To: Coq Club <coq-club AT inria.fr>
- Subject: Re: [Coq-Club] license: derivative status of proofs
- Date: Fri, 17 Jul 2020 10:26:12 +0200
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=gabriel.scherer AT gmail.com; spf=Pass smtp.mailfrom=gabriel.scherer AT gmail.com; spf=None smtp.helo=postmaster AT mail-qv1-f43.google.com
- Ironport-phdr: 9a23:97WwERUrMS5TSOn0jwejNaEiKIfV8LGtZVwlr6E/grcLSJyIuqrYbReBt8tkgFKBZ4jH8fUM07OQ7/m+Hzdeqs7Y+Fk5M7V0HycfjssXmwFySOWkMmbcaMDQUiohAc5ZX0Vk9XzoeWJcGcL5ekGA6ibqtW1aFRrwLxd6KfroEYDOkcu3y/qy+5rOaAlUmTaxe7x/IAi3oAnLuMQbgIRuJrosxhDUvnZGZuNayH9yK1mOhRj8/MCw/JBi8yRUpf0s8tNLXLv5caolU7FWFSwqPG8p6sLlsxnDVhaP6WAHUmoKiBpIAhPK4w/8U5zsryb1rOt92C2dPc3rUbA5XCmp4ql3RBP0jioMKiU0+3/LhMNukK1boQqhpx1hzI7SfIGVL+d1cqfEcd8HWWZNQsNdWipcCY2+coQPFfIMMulWr4b/p1UAoxiwCxSyCuzz0TJHnGP60Lcg3ug9DQ3L3gotFM8OvnTOq9X1Mb8fX+Gvw6bT1zXDbu1Z2TPg44bVbh8hoe+DXahufsrL1EIiEAzFgU+Lpoz/PjOayOANv3KA7+V8VeKglXQnpB9rojW0yccsj5PGhoMRylze6Sp5x4M1KMS+RUVmbtGqDIFeuDuGN4tqXMwiWWdotT47x7Aat5O2ficHxYonyRPQaPGLb4uF7xb9WeiePzp0mnZodr2iihu97EStyPDwW8q23VtOrCdIndfBu38R2xHS7MWMV/Vz/kCk2TmV1gDT7PlJIE41larYKp4h2qA/mYcSsUvZBCP2n1/2jKCOekUr/Oio9v7rYrL8pp+TMYJ/lwLwMrw2l8ChHeg1NhICUmub9OimyrHv4En0TK9Fg/A4lKTSrYrUKt4BpqGjBg9YyoYj5Ai7DzehyNkYmGMILFNBeB6elojpJUzCLOn2DfqwjVmgijhrx/fBPr3uBpXCMGLPn6vmfbZ480JcyQwzws5D559MFL0NPPb+VlXyudHYFBM1LRG4zuL9BNhy2I4SQWePDbWYMKPWv1+I/OUvI+yUaY8aojnyMOIl5//wgn89g1MdZrWm3ZsJZ3CiAPtmOV6UYXXpgtgbEGcKuhAyQ/DtiF2HSTJTfWq9X7og5jEnD4KrFZvMRoe0gLCYwCi7GoBWaXtdB1CXEXbocp2EVO0WZCKTJM9hiD0EWqK7R48vzxH9/DP9npFgN6L//jAS/cbo08Ew7OnOnzkz8yZ1BoKTyTfeYXtzmzYnTjUs3a176Xd2ylqZ3LIw1/NRH8ZS6vcPSQw6OITR1cR1DtnzXkTKedLfGwXuecmvHTxkFoF5+NQJeUsoXoz61kmSjRrvOKcckvmwPLJx96vd23brIMMkkiTJ0aAgix8tRc4dbDT71J46zBDaAsvyq2vcl6uucv5BjivE9WPG1HTX+U8EC0h/VqLKWX1ZbUzT/4yguhHyCoS2ALFiCTNvjNaYI/ITONLshFRCAvzkPYaGbg==
This is an interesting question, and I believe that the answer depends in large part on the proof and its degree of automation. Some proofs may be derivative works while some other would not. But for today's typical proof style, I would argue that yes, formal proofs are derivative work, and the formal proof of a GPL program should also be released under a GPL-compatible license.
## Proofs as derivative work
If we had a magical program verifier, a correctness proof could be as simple as (1) the correctness statement you want to prove, and (2) the invocation of the verifier tactic.
In this case the answer would depend entirely on the correctness statement: if it is just "does not crash", or a generic specification that applies to many programs ("is a sorting function"), this proof would be not be a derivative work of the program. If the toplevel correctness statement depends in a deep way on the internals of the function, and in particular in creative choices that were made during the design of this function, then you may have a derivative.
On the other hand, typical proofs these days are tightly coupled to the source code of the original program. They would not be valid anymore if we changed the source of the original program, especially if we changed the creative parts that carry copyright. For this reason, to me they clearly qualify as a derivative work.
## Citing some copyright law
Wikipedia ( https://en.wikipedia.org/wiki/Derivative_work ) cites this sentence from the US Copyright act:
A work consisting of editorial revisions, annotations, elaborations, or other modifications which, as a whole, represent an original work of authorship, is a “derivative work”.
Of course "formal proofs of program correctness" was not considered when writing these laws (or even software licenses), so we will not find specific wording for this, but I would consider "annotations" or "elaborations" of an original work to adequately-enough capture the relation between a program and its proof.
(It may be the case that reproducing a program for the purpose of a correctness proof would qualify as "Fair use" for US copyright law, which would free you from copyright-related demands of the original work. But this concept is not recognized internationally so I would not recommend relying on it.)
## (L)GPL licensing
To me it is very clear that if a source code is written with the GPL license (v2 or later), then under the terms of the GPL a corresponding correctness proof should also be distributed under a compatible license. I believe that the same requirement would in fact apply if the source code was distributed under the less demanding LGPL license.
The GPL (either v2, v2.1 or v3) and the LGPL are distinguished by how much "coupling" they require between the distributed program and derivative work to demand that the derivative be also distributed under the (L)GPL. For the GPL, basically any dependency on the GPL software specifically (as opposed to a dependency on a generic interface that has other non-GPL implementations) requires that the dependent work be GPL as well. The LGPL allows non-LGPL dependencies, as long as they ( https://www.gnu.org/licenses/lgpl-3.0.en.html )
(b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version.
It is clear to me that the degree of coupling between a source program/library and its correctness proof, with today's proof style, is much higher than this standard. Most interface-compatible changes (here by interface we mean the interface between the program/library and the rest of its software ecosystem, not between the program and the proof) will make the proof document invalid. So this suggests that even if the source program was LGPL, the proof should also be LGPL.
GPL is designed as a stronger license requiring less coupling, so (to me) clearly correctness proofs of GPL programs should also be GPL.
On Thu, Jul 16, 2020 at 3:37 AM Abhishek Anand <abhishek.anand.iitg AT gmail.com> wrote:
On Wed, Jul 15, 2020 at 1:45 PM Jim Fehrle <jim.fehrle AT gmail.com> wrote:Another approach would be to ask the owner of the C code whether they have any objection to your publishing the proof. Seems to me your proving it would make their code more valuable.The C code is available publically under GPLv2 license. The main question is whether the correctness proof (just the .v file(s) containing the specs and proofs, NOT the code or the .v file containing the code AST) can be released under a different license (possibly incompatible with GPLv2).
- Re: [Coq-Club] license: derivative status of proofs, (continued)
- Re: [Coq-Club] license: derivative status of proofs, Izzy Hasson, 07/15/2020
- Re: [Coq-Club] license: derivative status of proofs, Jim Fehrle, 07/15/2020
- Re: [Coq-Club] license: derivative status of proofs, Abhishek Anand, 07/16/2020
- Re: [Coq-Club] license: derivative status of proofs, jonikelee AT gmail.com, 07/16/2020
- Re: [Coq-Club] license: derivative status of proofs, Jim Fehrle, 07/16/2020
- Re: [Coq-Club] license: derivative status of proofs, Stefan Monnier, 07/16/2020
- Re: [Coq-Club] license: derivative status of proofs, jonikelee AT gmail.com, 07/16/2020
- Re: [Coq-Club] license: derivative status of proofs, Jim Fehrle, 07/16/2020
- Re: [Coq-Club] license: derivative status of proofs, Xuanrui Qi, 07/16/2020
- Re: [Coq-Club] license: derivative status of proofs, Kevin Sullivan, 07/16/2020
- Re: [Coq-Club] license: derivative status of proofs, Gabriel Scherer, 07/17/2020
- Re: [Coq-Club] license: derivative status of proofs, Kevin Sullivan, 07/15/2020
Archive powered by MHonArc 2.6.19+.