AFP entry Neural_Networks
Lawrence Paulson
lp15 at cam.ac.uk
Thu Nov 20 12:35:57 CET 2025
I find it surprising that the meaning of a specific bit pattern as a real number according to an established floating-point standard can change from year to year. How do we know it won't change again?
Larry
> On 19 Nov 2025, at 22:37, Achim D. Brucker <adbrucker at 0x5f.org> wrote:
>
> Hi,
> I did a first investigation. Overall, this part of the theory is intended to serve as regression test. Thus, it worked as it should: acting as early warning for subtle changes that otherwise would go undetected, potentially creating "bit rot".
>
> The change is actually due to a difference in Poly/ML used in Isabelle 2025 vs the current development version (and, 2025-1, for that matter). Namely:
>
> ML\<open>
> PackReal32Little.fromBytes (Word8Vector.fromList [0wxC5, 0wx10, 0wxE8, 0wx3B])
> \<close>
>
> returns a different value, namely:
>
> * Isabelle 2025: val it = 0.007082077209: PackReal32Little.real
> * Isabelle development/2025-1: val it = 0.007082077: PackReal32Little.real
>
> As the rule-of-thumb regarding the precision of 32 IEEE-745 floating point numbers is around 7-8 decimal digits, the new behaviour is OK. Hence, the fix to get the AFP entry working again is to update the theories to reflect the new values.
> We will take care of this tomorrow.
>
> Best,
> Achim (and Amy)
>
>
> On 19/11/2025 16:25, Lawrence Paulson via isabelle-dev wrote:
>> Neural_Networks is badly broken. I took a look and the failure is in a proof that tests whether a certain generated construction is equal to an explicit construction. They are supposed to be literally identical and are not. I think we should get back to the authors to find out why it failed and how it can be made robust.
>>
>> Larry
>
More information about the isabelle-dev
mailing list