Skip to content

Commit 8d68f6d

Browse files
Set final status of UNKNOWN properties
1 parent 593adac commit 8d68f6d

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

src/goto-checker/bmc_util.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,22 @@ void update_properties_status_not_checked(
277277
}
278278
}
279279

280+
void update_properties_status_unknown(
281+
propertiest &properties,
282+
std::unordered_set<irep_idt> &updated_properties)
283+
{
284+
for(auto &property_pair : properties)
285+
{
286+
if(property_pair.second.status == property_statust::UNKNOWN)
287+
{
288+
// This could have any status except NOT_CHECKED.
289+
// We consider them PASS because we do verification modulo bounds.
290+
property_pair.second.status = property_statust::PASS;
291+
updated_properties.insert(property_pair.first);
292+
}
293+
}
294+
}
295+
280296
void output_coverage_report(
281297
const std::string &cov_out,
282298
const abstract_goto_modelt &goto_model,

src/goto-checker/bmc_util.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,16 @@ void update_properties_status_not_checked(
117117
propertiest &properties,
118118
std::unordered_set<irep_idt> &updated_properties);
119119

120+
/// Sets property status for UNKNOWN properties.
121+
/// \param [inout] properties: The status is updated in this data structure
122+
/// \param [inout] updated_properties: The set of property IDs of
123+
/// updated properties
124+
/// Note: we currently declare everything PASS that is UNKNOWN at the
125+
/// end of the model checking algorithm.
126+
void update_properties_status_unknown(
127+
propertiest &properties,
128+
std::unordered_set<irep_idt> &updated_properties);
129+
120130
// clang-format off
121131
#define OPT_BMC \
122132
"(program-only)" \

0 commit comments

Comments
 (0)