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] VC not the same when verifying function in isolation or in complete compilation unit
- Subject: [Frama-c-discuss] VC not the same when verifying function in isolation or in complete compilation unit
- From: christophe.garion at isae-supaero.fr (Christophe Garion)
- Date: Thu, 07 Apr 2016 16:55:27 +0200
Hello, I am using Frama-C to verify a runtime written in C and I have encountered a strange (at least to me) behaviour for VC generation. I have tried to produce a minimal example that you will find attached. There are two functions, get_data and append_msg, that manipulate a struct representing a simple message. When using Alt-Ergo, the contract of get_data can be proved in isolation with frama-c -wp -wp-prover alt-ergo -wp-fct get_data msg_minimal.c but the postcondition of get_data cannot be proved when using the whole .c file with frama-c -wp -wp-prover alt-ergo msg_minimal.c Notice that the postcondition VC can be proved by CVC4 or Z3 in both cases. The VC produced by -wp-print are the same in both cases (see wp-print-complete.txt and wp-print-isolation.txt), but if I use Why3, the VC are different (see why-goal-complete.why and why-goal-isolation.why). The only difference between the two goals, besides variables permutation between i, i_1 and i2, is the last addition in the goal: in one case, it is i_1 + i_2, in another, it is i_2 + i_1. This causes Alt-Ergo not being able to prove the VC "from scratch", because the generated triggers for the corresponding axioms are not sufficient (see a discussion on alt-ergo-beginners mailing list with Mohamed Iguernlala). I do not understand why the VC produced for Why or Alt-Ergo are different when asking to verify the function in isolation or in complete file, am I missing something? Notice also that if I remove the first postcondition of append_msg, then the VC generated for get_data postcondition is the same in isolation or with complete compilation unit. Sorry if this has already been answered on the mailing list. Best regards, Christophe -- Christophe Garion ISAE-SUPAERO/DISC garion at isae-supaero.fr 10 avenue Edouard Belin Tél : +33 5 61 33 80 57 BP 54032 Fax : +33 5 61 33 83 45 31055 Toulouse Cedex 4 -------------- next part -------------- A non-text attachment was scrubbed... Name: msg_minimal.c Type: text/x-csrc Size: 1099 bytes Desc: not available URL: <http://lists.gforge.inria.fr/pipermail/frama-c-discuss/attachments/20160407/b0d49a5a/attachment.c> -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: wp-print-complete.txt URL: <http://lists.gforge.inria.fr/pipermail/frama-c-discuss/attachments/20160407/b0d49a5a/attachment.txt> -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: wp-print-isolation.txt URL: <http://lists.gforge.inria.fr/pipermail/frama-c-discuss/attachments/20160407/b0d49a5a/attachment-0001.txt> -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: why-goal-complete.why URL: <http://lists.gforge.inria.fr/pipermail/frama-c-discuss/attachments/20160407/b0d49a5a/attachment.ksh> -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: why-goal-isolation.why URL: <http://lists.gforge.inria.fr/pipermail/frama-c-discuss/attachments/20160407/b0d49a5a/attachment-0001.ksh>
- Follow-Ups:
- [Frama-c-discuss] VC not the same when verifying function in isolation or in complete compilation unit
- From: loic.correnson at cea.fr (Loïc Correnson)
- [Frama-c-discuss] VC not the same when verifying function in isolation or in complete compilation unit
- Prev by Date: [Frama-c-discuss] Single (Trivial?) Assertion Not Verified -- What's Wrong?
- Next by Date: [Frama-c-discuss] VC not the same when verifying function in isolation or in complete compilation unit
- Previous by thread: [Frama-c-discuss] Single (Trivial?) Assertion Not Verified -- What's Wrong?
- Next by thread: [Frama-c-discuss] VC not the same when verifying function in isolation or in complete compilation unit
- Index(es):