规格:
包含SPARK_Mode的PolyPack包类型Vector是Integer的数组(自然范围<>);function RuleHorner(X:Integer; A:Vector)返回Integer同Pre => A’Length> …
分析是正确的。 Vector类型的元素类型是Integer。当X = 2,Y = -2,并且A(A'Last-I)小于Integer'First + 4时,将发生下溢。您认为这应该如何在您的计划中处理?循环不变量在此处不起作用,因为您无法证明不会发生上溢或下溢。 有没有办法可以设计Vector中使用的类型和/或子类型,以及变量X和Y,以防止Y溢出或下溢?
我也很好奇你为什么要忽略Vector中的最后一个值。你想要反过来穿过阵列吗?如果是这样,只需使用以下for循环语法:
for I in reverse A'Range loop