This extends #1254 to support imaxabs on the intmax_t type, which some Juliet tasks in SV-COMP use.
Changes
Actually verifying those Juliet tasks required a bit more changes:
The type (and thus ikind) of intmax_t is looked up from the typedef in the program. So this can bypass #54.
ana.float.evaluate_math_functions is enabled in svcomp24 and svcomp confs. We used the C stubs to evaluate sqrt and friends in SV-COMP 2024, but #1277 added this option, which is off by default. So right now we couldn't even solve the similar tasks on smaller types that we could verify at SV-COMP 2024. I don't know if this will be a problem for soundness in SV-COMP. If so, then we'll need some non-stub implementation of floating point sqrt to solve these tasks, of which there is a lot of.
Casts around the refinement are somehow different in these tasks, which required handling of float-integer casts in BaseInvariant. I don't know if this is correct because previously only various float-float casts were supported and everything else was considered "incompatible types". It's not clear whether these are supposed to be impossible in the AST according to the standard or just were unsupported in the initial implementation.
This extends #1254 to support
imaxabs
on theintmax_t
type, which some Juliet tasks in SV-COMP use.Changes
Actually verifying those Juliet tasks required a bit more changes:
intmax_t
is looked up from thetypedef
in the program. So this can bypass #54.ana.float.evaluate_math_functions
is enabled in svcomp24 and svcomp confs. We used the C stubs to evaluatesqrt
and friends in SV-COMP 2024, but #1277 added this option, which is off by default. So right now we couldn't even solve the similar tasks on smaller types that we could verify at SV-COMP 2024. I don't know if this will be a problem for soundness in SV-COMP. If so, then we'll need some non-stub implementation of floating pointsqrt
to solve these tasks, of which there is a lot of.BaseInvariant
. I don't know if this is correct because previously only various float-float casts were supported and everything else was considered "incompatible types". It's not clear whether these are supposed to be impossible in the AST according to the standard or just were unsupported in the initial implementation.TODO