Skip to content

constructum/asm-symbolic-execution

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

221 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Summary

This is a prototype tool for symbolic execution of Abstract State Machines (ASM). It supports a subset of the AsmetaL ASM-based specification language.

This animation shows through a simple example (an ASM rule implementing a binary search) how the ASM symbolic execution works.

Papers

The following papers describe the principles on which the tool is based and an application to smart contract verification:

Installation

To run the tool, the .NET environment must be installed on the system.

In principle, the necessary dependencies (in particular, the Z3 SMT solver) should be imported automatically via .NET.

However, under Linux, an appropriate version of the Z3 shared library must be installed manually and the LD_LIBRARY_PATH environment variable must be set accordingly.

Examples

The examples mentioned in the 2024 paper can be found in the examples/ folder.

More recent examples, written in AsmetaL, can be found in the examples-asmeta/ folder.

Command line interface

(to be invoked from the project's root folder)

dotnet run [OPTION]...
Options:
  -str <strg>    load definitions specified in string <strg>
                   into the top-level environment
  -file <file>   load definitions contained in file <file>
                   into top-level environment

  -legacy        use legacy UASM-based language as input language
  -asmeta        use AsmetaL as input language
  -asmeta-dag    use AsmetaL with DAG-based symbolic execution (default)
  -init <state>  (AsmetaL only) start from initial state named <state>
  -invcheck <n>  (AsmetaL only) check invariants during symbolic execution
                   for at most <n> steps or indefinitely, if <n> not specified

  -symbolic      symbolic execution of 'Main' rule (default)
  -steps <n>     symbolic execution of <n> steps of 'Main' rule
                   starting from initial state (default: n = 1)

  -nonsymbolic   execute 'Main' rule non-symbolically

  -turbo2basic   turbo ASM to basic ASM transformation
                   (all non-static functions are uninterpreted)

  -nosmt         do not use SMT solver

  -license       display license information

About

Prototype ASM symbolic execution tool.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors