You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
My question is: why does it make sense to project field element 0 out of something that has an arrow type?
Indeed that makes no sense. The truth is that this is not an arrow type, this is a closure type, but we've been pretending the two are the same for a while. This is part of #194.
In Eurydice, I am traversing the Charon representation of the following function: https://github.com/cryspen/libcrux/blob/franziskus/mldsa-c-ci/libcrux-ml-dsa/src/simd/avx2.rs#L140-L142
To observe this, run
./boring.sh
in thelibcrux-ml-dsa
subdirectory, on an x64 machine (this code is disabled on arm64).This is the representation:
When I translate
v@5 := &*((*(state^1)).0);
, I callexpression_of_place
which prints out both the sub-place and the path element, at this location: https://github.com/AeneasVerif/eurydice/blob/main/lib/AstOfLlbc.ml#L557 using the following debug printing (in my local copy):My understanding is that the sub-place, e.g., has type "tuple", and the path element is valid for that type, e.g.
.0
or.1
.However, this is the debug output that I get:
My question is: why does it make sense to project field element 0 out of something that has an arrow type?
Note that I am only recursing on sub-places constructed by charon, so I don't think I'm rebuilding incorrect type information anywhere.
The text was updated successfully, but these errors were encountered: