我想找到一些可以应用于函数或函数指针的 ACSL 注释,以表明它具有引用透明的属性。以某种方式说“当给定相同的参数时,此函数将始终返回相同的值”。到目前为止,我还没有找到任何这样的方法。谁能给我指出一种表达方式?
也许某种方式来引用任意逻辑函数?如果我可以命名一个未知数logic boolean uknown_function(void* a, void* b) = /* this is unkown */;
,那么我可以将一个函数记录为具有\result
等于这个任意/未知逻辑函数的后置条件?
更大的上下文是尝试进行类型擦除比较。我想概括地表达“用户给了我void*
s 和 abool (*)(void const*, void const*)
来比较它们的概念,并且用户向我保证,所提供的函数确实是严格的偏序,无论这些指针指向什么。” 如果我有这个,那么我可以开始描述这些被排序的类型擦除对象的属性,例如。