Frama-C-discuss mailing list archives
This page gathers the archives of the old Frama-C-discuss archives, that was hosted by Inria's gforge before its demise at the end of 2020. To search for mails newer than September 2020, please visit the page of the new mailing list on Renater.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Frama-c-discuss] JessieIntegerModel question
- Subject: [Frama-c-discuss] JessieIntegerModel question
- From: pascal.cuoq at gmail.com (Pascal Cuoq)
- Date: Thu, 7 Nov 2013 22:54:57 +0100
- In-reply-to: <527C0595.5040000@cs.utah.edu>
- References: <527C0595.5040000@cs.utah.edu>
On Thu, Nov 7, 2013 at 10:26 PM, John Regehr <regehr at cs.utah.edu> wrote: > > If I understand correctly, Jessie's three integer models are: > > - math -- infinite range > - modulo -- both signed and unsigned behave as if two's complement > - strict -- no overflow permitted > > The problem is that none of these is a match for C. In C, unsigned integers > follow the modulo rules and signed integers follow the strict rules. Is > there a way to get the C integer model in Jessie? Otherwise it seems like > I might be stuck with some strange tradeoffs. I second the wish for a C mode ?as a user. However, here is what I think a hypothetical weakest precondition plug-in implementor might say: ?math? is not sound for any serious definition of sound. Instead of weakening the definition of ?sound? to the point of ridiculousness ( http://soundiness.org/documents/InDefenseOfUnsoundness.pdf ?damn, another blog post to write), we can choose the honorable path and forget that ?math? even exists. ?modulo? inserts modulo operations everywhere, making proof obligations impossibly hard for existing automatic provers. That it is unusable in practice might actually be good news, as it too is ?as you rightly point out? unsound with respect to the C standard (although it may be sound with respect to a specific compiler, perhaps used with specific options). If a function happens to be verifiable with ?strict?, that is, if for the inputs it expects, it never relies on the wrap-around behavior of unsigned overflow, then it should be verified with ?strict?. With respect to the ?C? mode that regretfully does not exist, this only adds additional proof obligations, which should individually be easy to prove, instead of sprinkling existing proof obligations with modulo operations that make them extremely difficult to tackle for existing automatic provers. Any function verified with ?strict? works when executed in C. The only issue is that some functions that work according to the C standard cannot be verified with ?strict?, because they rely on unsigned overflow behavior. Something that would be better than ?modulo?, and better than the ?C? mode you request, is a mode similar to ?strict? but that would let the operator specify only the few unsigned operations that are supposed to wrap around, and would only insert modulo operations for these ones. The other overflows, that wouldn't harm according to the standard, would still be assumed not to happen (no modulo inserted) and proved not to happen (but as long as it is true that they do not happen, why not prove it as a useful intermediate lemma?). This would likely work quite well in practice. Perhaps real implementors of weakest precondition Frama-C plug-ins will want to differ. This is only the opinion of a hypothetical character. Pascal -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.gforge.inria.fr/pipermail/frama-c-discuss/attachments/20131107/59f06733/attachment.html>
- Follow-Ups:
- [Frama-c-discuss] JessieIntegerModel question
- From: regehr at cs.utah.edu (John Regehr)
- [Frama-c-discuss] JessieIntegerModel question
- From: dcok at grammatech.com (David Cok)
- [Frama-c-discuss] JessieIntegerModel question
- References:
- [Frama-c-discuss] JessieIntegerModel question
- From: regehr at cs.utah.edu (John Regehr)
- [Frama-c-discuss] JessieIntegerModel question
- Prev by Date: [Frama-c-discuss] JessieIntegerModel question
- Next by Date: [Frama-c-discuss] JessieIntegerModel question
- Previous by thread: [Frama-c-discuss] JessieIntegerModel question
- Next by thread: [Frama-c-discuss] JessieIntegerModel question
- Index(es):