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
These additional equality checks of types, or more generally part of the type index of symbolic terms like for instance natural numbers for the bitvector length, can block metalevel computation when running the symbolic executor on polymorphic functions, i.e. functions with some form of quantification at the metalevel. For instance, the verification of the to_bits function from the RISC-V case study, critically relies on the fact that the term equality in the unary op case does not use decidable equality on the metalevel bitvector length
The decidable equality check is correctly implemented for unary ops, i.e. we propagate the information that the result type of the two unary ops being compared is the same
In our function for testing for equality of two symbolic terms of the same type,
katamaran/theories/Syntax/Terms.v
Lines 296 to 322 in 26a30b5
katamaran/theories/Syntax/BinOps.v
Lines 145 to 147 in 26a30b5
katamaran/theories/Syntax/BinOps.v
Lines 156 to 157 in 26a30b5
These additional equality checks of types, or more generally part of the type index of symbolic terms like for instance natural numbers for the bitvector length, can block metalevel computation when running the symbolic executor on polymorphic functions, i.e. functions with some form of quantification at the metalevel. For instance, the verification of the
to_bits
function from the RISC-V case study, critically relies on the fact that the term equality in the unary op case does not use decidable equality on the metalevel bitvector lengthkatamaran/case_study/RiscvPmp/Machine.v
Lines 536 to 537 in 26a30b5
The decidable equality check is correctly implemented for unary ops, i.e. we propagate the information that the result type of the two unary ops being compared is the same
katamaran/theories/Syntax/UnOps.v
Lines 86 to 88 in 26a30b5
I propose to implement the same for binary ops.
However, this is more difficult for binary ops because of the green slime in the indices
katamaran/theories/Syntax/BinOps.v
Lines 81 to 82 in 26a30b5
Trying to implement it in the same way as for unary ops using the equations package fails with an error message that a covering cannot be found.
The text was updated successfully, but these errors were encountered: