Skip to content

Conversation

@polgreen
Copy link
Contributor

Work in progress but please provide feedback!

Using the command dump_c, uclid will spit out a C file that can
be either compiled or fed to another verification tool.

At the moment supported verification commands are: unroll and induction
The syntax is currently CBMC specific, but will be adapted in future to work
for any SV comp tool.

The aim is that we can:

  • execute uclid models in C
  • compare uclid against other verification tools that compete in sv comp
  • try out existing program slicing and abstraction techniques on uclid models

polgreen added 5 commits June 16, 2020 14:45
Using the command dump_c, uclid will spit out a C file that can
be either compiled or fed to another verification tool.

At the moment supported veification commands are: unroll and induction
The syntax is currently CBMC specific, but will be adapted in future to work
for any SV comp tool
// These operators take bitvector operands and return bitvector results.
sealed abstract class BVArgOperator(val w : Int) extends Operator {
override def fixity = Operator.INFIX
def signed_operands = false
Copy link
Contributor

Choose a reason for hiding this comment

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

When is this actually used? And why is it plural?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

ah yeah, I put that there because eventually I'm going to have to deal with bitvector comparisons being either signed or unsigned. So, if the comparison is signed, the operands need to be made signed, and if the comparison is unsigned, the operands need to be made unsigned. But currently it doesn't do that and I was hoping to come up with a better way of dealing with the signed/unsigned-ness of operators but haven't yet.

Copy link
Contributor

Choose a reason for hiding this comment

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

If you want to avoid clutter in the Operator class, you can have a helper function that just does a match on the operators to say if they are signed

@polgreen polgreen marked this pull request as draft July 10, 2020 21:12
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.

2 participants