Update to latest version of Why3 caused some proof regressions.
Fix the proof by changing ghost code.
gcc/ada/
* libgnat/s-imagei.adb (Set_Digits): Add assertion.
* libgnat/s-imgboo.adb (Image_Boolean): Add assertions.
* libgnat/s-valueu.adb (Scan_Raw_Unsigned): Add assertion.
Prove_Uns_Of_Non_Positive_Value;
pragma Assert (Uns_Value rem 10 = Uns_Of_Non_Positive (Value rem 10));
pragma Assert (Uns_Value rem 10 = Uns (-(Value rem 10)));
+ pragma Assert
+ (Uns_Value = From_Big (Big (Uns_T) / Big_10 ** (Nb_Digits - J)));
Prev_Value := Uns_Value;
Prev_S := S;
Loop_Invariant => Ignore,
Assert => Ignore);
+with System.Val_Util;
+
package body System.Img_Bool
with SPARK_Mode
is
if V then
S (1 .. 4) := "TRUE";
P := 4;
+ pragma Assert
+ (System.Val_Util.First_Non_Space_Ghost (S, S'First, S'Last) = 1);
else
S (1 .. 5) := "FALSE";
P := 5;
+ pragma Assert
+ (System.Val_Util.First_Non_Space_Ghost (S, S'First, S'Last) = 1);
end if;
end Image_Boolean;
Scan_Exponent (Str, Ptr, Max, Expon);
+ pragma Assert (Ptr.all = Raw_Unsigned_Last_Ghost (Str, Ptr_Old, Max));
pragma Assert
(if Starts_As_Exponent_Format_Ghost (Str (First_Exp .. Max))
then Expon = Scan_Exponent_Ghost (Str (First_Exp .. Max)));