runtimeverification / michelson-semantics

A K semantics of Tezos' Michelson language.
Other
17 stars 6 forks source link

Add multitest format #178

Closed sskeirik closed 3 years ago

sskeirik commented 3 years ago

Fixes: runtimeverification/firefly-michelson#6

ehildenb commented 3 years ago

Things to check for the super-long build time:

ehildenb commented 3 years ago

You can use configuration fragments instead for storing state, which you can see an example of in KEVM:

    syntax InternalOp ::= "#pushCallStack"
 // --------------------------------------
    rule <k> #pushCallStack => . ... </k>
         <callStack> (.List => ListItem(<callState> CALLSTATE </callState>)) ... </callStack>
         <callState> CALLSTATE </callState>

    syntax InternalOp ::= "#popCallStack"
 // -------------------------------------
    rule <k> #popCallStack => . ... </k>
         <callStack>  (ListItem(<callState> CALLSTATE </callState>) => .List) ... </callStack>
         <callState> _ => CALLSTATE </callState>

    syntax InternalOp ::= "#dropCallStack"
 // --------------------------------------
    rule <k> #dropCallStack => . ... </k>
         <callStack> (ListItem(_) => .List) ... </callStack>

Example from KEVM: https://github.com/kframework/evm-semantics/blob/master/evm.md#the-callstack