You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
copySlice, defined here, copies its src argument size times into the resulting SMT string. It can get even worse with nested CopySlices, where we end up getting exponential size. In particular, when exprToSMT is called on this expression...
...exprToSMT returns a 35-million-character-long value.
Ideally the prelude passed to the SMT solver would include a recursive copySlice function which handles the functionality that's now done in haskell, but I'm not sure how this would affect SMT performance. This would be ideal because src would only need to be typed out once in the SMT expression.
I can go into more detail, if needed, on how this expression came up in practice. Long story short, this expression was involved while testing a symbolic execution PR for echidna on the following contract:
copySlice
, defined here, copies itssrc
argumentsize
times into the resulting SMT string. It can get even worse with nestedCopySlice
s, where we end up getting exponential size. In particular, whenexprToSMT
is called on this expression......
exprToSMT
returns a 35-million-character-long value.Ideally the
prelude
passed to the SMT solver would include a recursivecopySlice
function which handles the functionality that's now done in haskell, but I'm not sure how this would affect SMT performance. This would be ideal becausesrc
would only need to be typed out once in the SMT expression.I can go into more detail, if needed, on how this expression came up in practice. Long story short, this expression was involved while testing a symbolic execution PR for echidna on the following contract:
The text was updated successfully, but these errors were encountered: