我在SPARK软件包中有一个程序,可以从无SPARK软件包中调用一些函数。
程序do_monitoring是 U_C1:常量浮点数:= Sim.Get_U_C1; I_L1:常数Float:= Sim ….
如果我被允许编辑 Sim 包,我可以说例如
Sim
package Sim with SPARK_Mode is function Get return Float with Annotate => (Gnatprove, Terminating); end Sim;
(那是使用AdaCore的spark2017版本),并跟进非SPARK机身
package body Sim is function Get return Float is (42.0); end Sim;
该报告显示Sim.Get已被跳过。
SPARK2014的后期版本将如何对此做出反应我不知道,因为其含义来自于 用户指南 就是它 Annotate 为证明者设定了一个目标,然而我们却不允许它进入身体 Sim 去检查。
Annotate
也许在参考手册中还有更多内容 - 访问adacore.com,选择Resources / Documentation / SPARK。