2019
DOI: 10.1007/978-3-030-17184-1_3
|View full text |Cite
|
Sign up to set email alerts
|

Semi-automated Reasoning About Non-determinism in C Expressions

Abstract: Research into C verification often ignores that the C standard leaves the evaluation order of expressions unspecified, and assigns undefined behavior to write-write or read-write conflicts in subexpressionsso called "sequence point violations". These aspects should be accounted for in verification because C compilers exploit them.We present a verification condition generator (vcgen) that enables one to semi-automatically prove the absence of undefined behavior in a given C program for any evaluation order. The… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1

Citation Types

0
3
0

Year Published

2019
2019
2024
2024

Publication Types

Select...
2
2
2

Relationship

1
5

Authors

Journals

citations
Cited by 6 publications
(3 citation statements)
references
References 50 publications
0
3
0
Order By: Relevance
“…They either fix an evaluation order and can (wrongly) prove a stronger result, i.e., that the result is always the nth Fibonacci number (Frama-C, RV-match), do not support specification of global invariants of ACSL (Frama-C) or do not support verification at all(Cerberus). We do not compare our approach explicitly with the theory presented by Frumin et al [17], which does treat underspecification correctly, but not for C and requires manual translation and manual specification of the translated program in the target formalism and an interactive proof.…”
Section: Case Studymentioning
confidence: 99%
See 1 more Smart Citation
“…They either fix an evaluation order and can (wrongly) prove a stronger result, i.e., that the result is always the nth Fibonacci number (Frama-C, RV-match), do not support specification of global invariants of ACSL (Frama-C) or do not support verification at all(Cerberus). We do not compare our approach explicitly with the theory presented by Frumin et al [17], which does treat underspecification correctly, but not for C and requires manual translation and manual specification of the translated program in the target formalism and an interactive proof.…”
Section: Case Studymentioning
confidence: 99%
“…Cerberus [4,33] is an analysis tool for undefined and underspecified behavior; however, it cannot utilize any specifications and its treatment of unspecified evaluation order of side effects does not match the C standard, as demonstrated in [37]. The separation logic system of Frumin et al [17], based on small-step semantics in Coq [30] correctly treats underspecification. They give a formal system to verify a program in their toy language λ MC and check effects of underspecified behavior with a modified separation logic.…”
Section: Introductionmentioning
confidence: 99%
“…Cerberus [4,35] is an analysis tool for undefined and underspecified behavior; however, it cannot utilize any specifications and its treatment of unspecified evaluation order of side effects does not match the C standard, as demonstrated in [39]. The separation logic system of Frumin et al [20], based on small-step semantics in Coq [33] correctly treats underspecification. They give a formal system to verify a program in their toy language λMC and check effects of underspecified behavior with a modified separation logic.…”
Section: Introductionmentioning
confidence: 99%