Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@makaimann
Copy link
Collaborator

No description provided.

Makai Mann added 30 commits August 3, 2020 18:31
@makaimann makaimann changed the base branch from master to hwmcc2020 September 1, 2020 22:57
@makaimann makaimann marked this pull request as ready for review September 1, 2020 22:59
Copy link
Collaborator

@ahmed-irfan ahmed-irfan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gave a pass.
Please see the comments

ProphecyModifier pm_;

size_t num_added_axioms_ =
0; ///< set by refine to the number of added axioms
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do the assignment in the initialize method

abs_rts.set_init(abs_init);
abs_rts.set_trans(abs_trans);

// TODO: remove these debug prints
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we remove it now or do you want to do it later in a separate PR?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's just do it now, thanks!

pono.cpp Outdated
logger.set_verbosity(pono_options.verbosity_);

try {
// TEMP comment this out for development
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

anything to be done here?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, thanks. It does make sense to catch any exceptions, right? Or do you think it's better to let them go uncaught?

return ProverResult::FALSE;
}
reached_k_++;
} while (num_added_axioms_);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

when will it exit from the loop? (only in the case of !refine())

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Either for !refine() or when no axioms were added (e.g. num_added_axioms_ == 0). So it tries to refine bmc until no new axioms were found, or there's a concrete counterexample.

ProverResult CegProphecyArrays::prove()
{
ProverResult res = ProverResult::FALSE;
while (res == ProverResult::FALSE) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why are we refining before checking the abstract property?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahh it's just a heuristic -- we used that in the prototype as well. It adds a few axioms first before trying to prove it. If the property doesn't require any axioms, then it will refine quickly anyway and get to the underlying model checker.

}

ProverResult CegProphecyArrays::prove()
{
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also, maybe use check_until with INT_MAX

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense! That means it will call check_until(INT_MAX) for the underlying model checker instead of prove. So far that means exactly the same thing, but I wasn't sure it would stay that way. I'll make the change, but just thought I'd point that out.

@makaimann
Copy link
Collaborator Author

Thanks for the review @ahmed-irfan! I know it was a lot. I addressed some your comments in the latest commit and commented about the rest. Let me know your thoughts when you get a chance.

@makaimann makaimann changed the base branch from hwmcc2020 to master September 29, 2020 18:44
Copy link
Collaborator

@ahmed-irfan ahmed-irfan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the great work.

Overall LGTM.
One minor request to add an example of non-consecutive axiom instantiation. (see the comment)

@ahmed-irfan
Copy link
Collaborator

@makaimann need to resolve conflicts

@makaimann makaimann merged commit 3360bce into master Sep 29, 2020
@ahmed-irfan ahmed-irfan deleted the prophic3 branch September 29, 2020 23:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants