Bump F* to nightly 2026-09-25 - #327
Merged
Merged
Conversation
- Prove array_spec_upd_mask with explicit Seq.upd lemmas.
- Emit `reveal #nat (length_of x)` so the equality type is not inferred
as the refined `x:nat{SizeT.fits x}` (FStarLang/FStar#4586).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
ghost_fnptr/call_across_shapes fails with this nightly due to FStarLang/FStar#4587. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Includes the fix for FStarLang/FStar#4587; all tests pass. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
gebner
enabled auto-merge
September 25, 2026 15:12
Generated F* output diffEffect of this pull request on the F* code SummaryFull diff: full diff artifact Diffdiff --git base/array_deref/Func_deref_read.fst head/array_deref/Func_deref_read.fst
index 69c752a..830f0c7 100644
--- base/array_deref/Func_deref_read.fst
+++ head/array_deref/Func_deref_read.fst
@@ -5,10 +5,10 @@ open Pulse.Lib.C
divergent fn func_deref_read (var_p: (array Int32.t))
requires exists* (val_p_0: (full_array_spec Int32.t)). ((array_pts_to_full var_p 1.0R val_p_0))
- requires (with_pure (1 <= (reveal (length_of var_p))))
+ requires (with_pure (1 <= (reveal #nat (length_of var_p))))
returns return_1 : Int32.t
ensures exists* (val_p_0: (full_array_spec Int32.t)). ((array_pts_to_full var_p 1.0R val_p_0))
- ensures (with_pure ((reveal (length_of var_p)) = (old (reveal (length_of var_p)))))
+ ensures (with_pure ((reveal #nat (length_of var_p)) = (old (reveal #nat (length_of var_p)))))
ensures (with_pure (return_1 = ((array_read var_p 0sz))))
{
let mut var_p = var_p;
diff --git base/array_deref/Func_deref_read.fsti head/array_deref/Func_deref_read.fsti
index 6c10659..0402acc 100644
--- base/array_deref/Func_deref_read.fsti
+++ head/array_deref/Func_deref_read.fsti
@@ -5,8 +5,8 @@ open Pulse.Lib.C
divergent fn func_deref_read (var_p: (array Int32.t))
requires exists* (val_p_0: (full_array_spec Int32.t)). ((array_pts_to_full var_p 1.0R val_p_0))
-requires (with_pure (1 <= (reveal (length_of var_p))))
+requires (with_pure (1 <= (reveal #nat (length_of var_p))))
returns return_1 : Int32.t
ensures exists* (val_p_0: (full_array_spec Int32.t)). ((array_pts_to_full var_p 1.0R val_p_0))
-ensures (with_pure ((reveal (length_of var_p)) = (old (reveal (length_of var_p)))))
+ensures (with_pure ((reveal #nat (length_of var_p)) = (old (reveal #nat (length_of var_p)))))
ensures (with_pure (return_1 = ((array_read var_p 0sz))))
\ No newline at end of file
diff --git base/array_deref/Func_deref_write.fst head/array_deref/Func_deref_write.fst
index e0d2494..7adb86d 100644
--- base/array_deref/Func_deref_write.fst
+++ head/array_deref/Func_deref_write.fst
@@ -5,10 +5,10 @@ open Pulse.Lib.C
divergent fn func_deref_write (var_p: (array Int32.t)) (var_v: Int32.t)
requires exists* (val_p_0: (full_array_spec Int32.t)). ((array_pts_to_full var_p 1.0R val_p_0))
- requires (with_pure (1 <= (reveal (length_of var_p))))
+ requires (with_pure (1 <= (reveal #nat (length_of var_p))))
returns return_1 : unit
ensures exists* (val_p_0: (full_array_spec Int32.t)). ((array_pts_to_full var_p 1.0R val_p_0))
- ensures (with_pure ((reveal (length_of var_p)) = (old (reveal (length_of var_p)))))
+ ensures (with_pure ((reveal #nat (length_of var_p)) = (old (reveal #nat (length_of var_p)))))
ensures (with_pure (((array_read var_p 0sz)) = var_v))
{
let mut var_p = var_p;
diff --git base/array_deref/Func_deref_write.fsti head/array_deref/Func_deref_write.fsti
index d977130..4168491 100644
--- base/array_deref/Func_deref_write.fsti
+++ head/array_deref/Func_deref_write.fsti
@@ -5,8 +5,8 @@ open Pulse.Lib.C
divergent fn func_deref_write (var_p: (array Int32.t)) (var_v: Int32.t)
requires exists* (val_p_0: (full_array_spec Int32.t)). ((array_pts_to_full var_p 1.0R val_p_0))
-requires (with_pure (1 <= (reveal (length_of var_p))))
+requires (with_pure (1 <= (reveal #nat (length_of var_p))))
returns return_1 : unit
ensures exists* (val_p_0: (full_array_spec Int32.t)). ((array_pts_to_full var_p 1.0R val_p_0))
-ensures (with_pure ((reveal (length_of var_p)) = (old (reveal (length_of var_p)))))
+ensures (with_pure ((reveal #nat (length_of var_p)) = (old (reveal #nat (length_of var_p)))))
ensures (with_pure (((array_read var_p 0sz)) = var_v))
\ No newline at end of file
diff --git base/array_ptr_arith/Func_post_decr.fst head/array_ptr_arith/Func_post_decr.fst
index fbb3433..9b02b8f 100644
--- base/array_ptr_arith/Func_post_decr.fst
+++ head/array_ptr_arith/Func_post_decr.fst
@@ -7,13 +7,13 @@ divergent fn func_post_decr (var_a: (array Typedef_int32_t.ty_int32_t))
requires
exists* (val_a_0: (full_array_spec Typedef_int32_t.ty_int32_t)).
((array_pts_to_full var_a 1.0R val_a_0))
- requires (with_pure ((reveal (length_of var_a)) = 4))
+ requires (with_pure ((reveal #nat (length_of var_a)) = 4))
returns return_1 : Typedef_int32_t.ty_int32_t
ensures
exists* (val_a_0: (full_array_spec Typedef_int32_t.ty_int32_t)).
((array_pts_to_full var_a 1.0R val_a_0))
ensures ((Typedef_int32_t.ty_int32_t__pred return_1 1.0R))
- ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
+ ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
ensures (with_pure ((id #int (Int32.v return_1)) = 1))
{
let mut var_a = var_a;
diff --git base/array_ptr_arith/Func_post_decr.fsti head/array_ptr_arith/Func_post_decr.fsti
index dc3a763..1a0a138 100644
--- base/array_ptr_arith/Func_post_decr.fsti
+++ head/array_ptr_arith/Func_post_decr.fsti
@@ -7,11 +7,11 @@ divergent fn func_post_decr (var_a: (array Typedef_int32_t.ty_int32_t))
requires
exists* (val_a_0: (full_array_spec Typedef_int32_t.ty_int32_t)).
((array_pts_to_full var_a 1.0R val_a_0))
-requires (with_pure ((reveal (length_of var_a)) = 4))
+requires (with_pure ((reveal #nat (length_of var_a)) = 4))
returns return_1 : Typedef_int32_t.ty_int32_t
ensures
exists* (val_a_0: (full_array_spec Typedef_int32_t.ty_int32_t)).
((array_pts_to_full var_a 1.0R val_a_0))
ensures ((Typedef_int32_t.ty_int32_t__pred return_1 1.0R))
-ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
+ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
ensures (with_pure ((id #int (Int32.v return_1)) = 1))
\ No newline at end of file
diff --git base/array_ptr_arith/Func_post_incr.fst head/array_ptr_arith/Func_post_incr.fst
index 9618a8f..ce2ecb5 100644
--- base/array_ptr_arith/Func_post_incr.fst
+++ head/array_ptr_arith/Func_post_incr.fst
@@ -7,13 +7,13 @@ divergent fn func_post_incr (var_a: (array Typedef_int32_t.ty_int32_t))
requires
exists* (val_a_0: (full_array_spec Typedef_int32_t.ty_int32_t)).
((array_pts_to_full var_a 1.0R val_a_0))
- requires (with_pure ((reveal (length_of var_a)) = 4))
+ requires (with_pure ((reveal #nat (length_of var_a)) = 4))
returns return_1 : Typedef_int32_t.ty_int32_t
ensures
exists* (val_a_0: (full_array_spec Typedef_int32_t.ty_int32_t)).
((array_pts_to_full var_a 1.0R val_a_0))
ensures ((Typedef_int32_t.ty_int32_t__pred return_1 1.0R))
- ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
+ ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
ensures (with_pure ((id #int (Int32.v return_1)) = 1))
{
let mut var_a = var_a;
diff --git base/array_ptr_arith/Func_post_incr.fsti head/array_ptr_arith/Func_post_incr.fsti
index 6b8ae87..f1d4b98 100644
--- base/array_ptr_arith/Func_post_incr.fsti
+++ head/array_ptr_arith/Func_post_incr.fsti
@@ -7,11 +7,11 @@ divergent fn func_post_incr (var_a: (array Typedef_int32_t.ty_int32_t))
requires
exists* (val_a_0: (full_array_spec Typedef_int32_t.ty_int32_t)).
((array_pts_to_full var_a 1.0R val_a_0))
-requires (with_pure ((reveal (length_of var_a)) = 4))
+requires (with_pure ((reveal #nat (length_of var_a)) = 4))
returns return_1 : Typedef_int32_t.ty_int32_t
ensures
exists* (val_a_0: (full_array_spec Typedef_int32_t.ty_int32_t)).
((array_pts_to_full var_a 1.0R val_a_0))
ensures ((Typedef_int32_t.ty_int32_t__pred return_1 1.0R))
-ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
+ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
ensures (with_pure ((id #int (Int32.v return_1)) = 1))
\ No newline at end of file
diff --git base/array_ptr_arith/Func_pre_decr.fst head/array_ptr_arith/Func_pre_decr.fst
index 9375913..18ed67d 100644
--- base/array_ptr_arith/Func_pre_decr.fst
+++ head/array_ptr_arith/Func_pre_decr.fst
@@ -7,13 +7,13 @@ divergent fn func_pre_decr (var_a: (array Typedef_int32_t.ty_int32_t))
requires
exists* (val_a_0: (full_array_spec Typedef_int32_t.ty_int32_t)).
((array_pts_to_full var_a 1.0R val_a_0))
- requires (with_pure ((reveal (length_of var_a)) = 4))
+ requires (with_pure ((reveal #nat (length_of var_a)) = 4))
returns return_1 : Typedef_int32_t.ty_int32_t
ensures
exists* (val_a_0: (full_array_spec Typedef_int32_t.ty_int32_t)).
((array_pts_to_full var_a 1.0R val_a_0))
ensures ((Typedef_int32_t.ty_int32_t__pred return_1 1.0R))
- ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
+ ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
ensures (with_pure ((id #int (Int32.v return_1)) = 1))
{
let mut var_a = var_a;
diff --git base/array_ptr_arith/Func_pre_decr.fsti head/array_ptr_arith/Func_pre_decr.fsti
index 482755c..9824423 100644
--- base/array_ptr_arith/Func_pre_decr.fsti
+++ head/array_ptr_arith/Func_pre_decr.fsti
@@ -7,11 +7,11 @@ divergent fn func_pre_decr (var_a: (array Typedef_int32_t.ty_int32_t))
requires
exists* (val_a_0: (full_array_spec Typedef_int32_t.ty_int32_t)).
((array_pts_to_full var_a 1.0R val_a_0))
-requires (with_pure ((reveal (length_of var_a)) = 4))
+requires (with_pure ((reveal #nat (length_of var_a)) = 4))
returns return_1 : Typedef_int32_t.ty_int32_t
ensures
exists* (val_a_0: (full_array_spec Typedef_int32_t.ty_int32_t)).
((array_pts_to_full var_a 1.0R val_a_0))
ensures ((Typedef_int32_t.ty_int32_t__pred return_1 1.0R))
-ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
+ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
ensures (with_pure ((id #int (Int32.v return_1)) = 1))
\ No newline at end of file
diff --git base/array_ptr_arith/Func_pre_incr.fst head/array_ptr_arith/Func_pre_incr.fst
index 4f901db..fe9c46e 100644
--- base/array_ptr_arith/Func_pre_incr.fst
+++ head/array_ptr_arith/Func_pre_incr.fst
@@ -7,13 +7,13 @@ divergent fn func_pre_incr (var_a: (array Typedef_int32_t.ty_int32_t))
requires
exists* (val_a_0: (full_array_spec Typedef_int32_t.ty_int32_t)).
((array_pts_to_full var_a 1.0R val_a_0))
- requires (with_pure ((reveal (length_of var_a)) = 4))
+ requires (with_pure ((reveal #nat (length_of var_a)) = 4))
returns return_1 : Typedef_int32_t.ty_int32_t
ensures
exists* (val_a_0: (full_array_spec Typedef_int32_t.ty_int32_t)).
((array_pts_to_full var_a 1.0R val_a_0))
ensures ((Typedef_int32_t.ty_int32_t__pred return_1 1.0R))
- ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
+ ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
ensures (with_pure ((id #int (Int32.v return_1)) = 1))
{
let mut var_a = var_a;
diff --git base/array_ptr_arith/Func_pre_incr.fsti head/array_ptr_arith/Func_pre_incr.fsti
index eb92509..3c89ff4 100644
--- base/array_ptr_arith/Func_pre_incr.fsti
+++ head/array_ptr_arith/Func_pre_incr.fsti
@@ -7,11 +7,11 @@ divergent fn func_pre_incr (var_a: (array Typedef_int32_t.ty_int32_t))
requires
exists* (val_a_0: (full_array_spec Typedef_int32_t.ty_int32_t)).
((array_pts_to_full var_a 1.0R val_a_0))
-requires (with_pure ((reveal (length_of var_a)) = 4))
+requires (with_pure ((reveal #nat (length_of var_a)) = 4))
returns return_1 : Typedef_int32_t.ty_int32_t
ensures
exists* (val_a_0: (full_array_spec Typedef_int32_t.ty_int32_t)).
((array_pts_to_full var_a 1.0R val_a_0))
ensures ((Typedef_int32_t.ty_int32_t__pred return_1 1.0R))
-ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
+ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
ensures (with_pure ((id #int (Int32.v return_1)) = 1))
\ No newline at end of file
diff --git base/array_test/Func_foo.fst head/array_test/Func_foo.fst
index bb95d93..feb0c16 100644
--- base/array_test/Func_foo.fst
+++ head/array_test/Func_foo.fst
@@ -5,10 +5,10 @@ open Pulse.Lib.C
divergent fn func_foo (var_a: (array UInt32.t))
requires exists* (val_a_0: (full_array_spec UInt32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
- requires (with_pure ((reveal (length_of var_a)) = 2))
+ requires (with_pure ((reveal #nat (length_of var_a)) = 2))
returns return_1 : unit
ensures exists* (val_a_0: (full_array_spec UInt32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
- ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
+ ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
ensures (with_pure ((id #int (UInt32.v ((array_read var_a 0sz)))) = 42))
{
let mut var_a = var_a;
diff --git base/array_test/Func_foo.fsti head/array_test/Func_foo.fsti
index 6e653d1..5fb182e 100644
--- base/array_test/Func_foo.fsti
+++ head/array_test/Func_foo.fsti
@@ -5,8 +5,8 @@ open Pulse.Lib.C
divergent fn func_foo (var_a: (array UInt32.t))
requires exists* (val_a_0: (full_array_spec UInt32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
-requires (with_pure ((reveal (length_of var_a)) = 2))
+requires (with_pure ((reveal #nat (length_of var_a)) = 2))
returns return_1 : unit
ensures exists* (val_a_0: (full_array_spec UInt32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
-ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
+ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
ensures (with_pure ((id #int (UInt32.v ((array_read var_a 0sz)))) = 42))
\ No newline at end of file
diff --git base/array_test/Func_ptr_attr.fst head/array_test/Func_ptr_attr.fst
index a5c81a8..55a3aad 100644
--- base/array_test/Func_ptr_attr.fst
+++ head/array_test/Func_ptr_attr.fst
@@ -5,10 +5,10 @@ open Pulse.Lib.C
divergent fn func_ptr_attr (var_a: (array UInt32.t))
requires exists* (val_a_0: (full_array_spec UInt32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
- requires (with_pure ((reveal (length_of var_a)) = 2))
+ requires (with_pure ((reveal #nat (length_of var_a)) = 2))
returns return_1 : unit
ensures exists* (val_a_0: (full_array_spec UInt32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
- ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
+ ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
ensures (with_pure ((id #int (UInt32.v ((array_read var_a 0sz)))) = 42))
{
let mut var_a = var_a;
diff --git base/array_test/Func_ptr_attr.fsti head/array_test/Func_ptr_attr.fsti
index 956dd82..3023d34 100644
--- base/array_test/Func_ptr_attr.fsti
+++ head/array_test/Func_ptr_attr.fsti
@@ -5,8 +5,8 @@ open Pulse.Lib.C
divergent fn func_ptr_attr (var_a: (array UInt32.t))
requires exists* (val_a_0: (full_array_spec UInt32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
-requires (with_pure ((reveal (length_of var_a)) = 2))
+requires (with_pure ((reveal #nat (length_of var_a)) = 2))
returns return_1 : unit
ensures exists* (val_a_0: (full_array_spec UInt32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
-ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
+ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
ensures (with_pure ((id #int (UInt32.v ((array_read var_a 0sz)))) = 42))
\ No newline at end of file
diff --git base/array_test/Func_struct_arr.fst head/array_test/Func_struct_arr.fst
index 69546f8..6120e66 100644
--- base/array_test/Func_struct_arr.fst
+++ head/array_test/Func_struct_arr.fst
@@ -9,15 +9,18 @@ divergent fn func_struct_arr (var_a: Typedef_uptr_struct.ty_uptr_struct)
((Typedef_uptr_struct.ty_uptr_struct__pred var_a 1.0R val_a_0))
requires
(with_pure
- ((reveal (length_of (var_a).Struct_uptr_struct_anon_1.struct_uptr_struct_anon_1__x)) = 2))
+ ((reveal #nat (length_of (var_a).Struct_uptr_struct_anon_1.struct_uptr_struct_anon_1__x)) =
+ 2))
returns return_1 : unit
ensures
exists* (val_a_0: Struct_uptr_struct_anon_1.struct_uptr_struct_anon_1__spec).
((Typedef_uptr_struct.ty_uptr_struct__pred var_a 1.0R val_a_0))
ensures
(with_pure
- ((reveal (length_of (var_a).Struct_uptr_struct_anon_1.struct_uptr_struct_anon_1__x)) =
- (old (reveal (length_of (var_a).Struct_uptr_struct_anon_1.struct_uptr_struct_anon_1__x)))))
+ ((reveal #nat (length_of (var_a).Struct_uptr_struct_anon_1.struct_uptr_struct_anon_1__x)) =
+ (old
+ (reveal #nat
+ (length_of (var_a).Struct_uptr_struct_anon_1.struct_uptr_struct_anon_1__x)))))
ensures
(with_pure
((id
diff --git base/array_test/Func_struct_arr.fsti head/array_test/Func_struct_arr.fsti
index e7322eb..a6db380 100644
--- base/array_test/Func_struct_arr.fsti
+++ head/array_test/Func_struct_arr.fsti
@@ -9,15 +9,16 @@ requires
((Typedef_uptr_struct.ty_uptr_struct__pred var_a 1.0R val_a_0))
requires
(with_pure
- ((reveal (length_of (var_a).Struct_uptr_struct_anon_1.struct_uptr_struct_anon_1__x)) = 2))
+ ((reveal #nat (length_of (var_a).Struct_uptr_struct_anon_1.struct_uptr_struct_anon_1__x)) = 2))
returns return_1 : unit
ensures
exists* (val_a_0: Struct_uptr_struct_anon_1.struct_uptr_struct_anon_1__spec).
((Typedef_uptr_struct.ty_uptr_struct__pred var_a 1.0R val_a_0))
ensures
(with_pure
- ((reveal (length_of (var_a).Struct_uptr_struct_anon_1.struct_uptr_struct_anon_1__x)) =
- (old (reveal (length_of (var_a).Struct_uptr_struct_anon_1.struct_uptr_struct_anon_1__x)))))
+ ((reveal #nat (length_of (var_a).Struct_uptr_struct_anon_1.struct_uptr_struct_anon_1__x)) =
+ (old
+ (reveal #nat (length_of (var_a).Struct_uptr_struct_anon_1.struct_uptr_struct_anon_1__x)))))
ensures
(with_pure
((id
diff --git base/array_test/Func_tydef_array.fst head/array_test/Func_tydef_array.fst
index c7665e4..15cbeca 100644
--- base/array_test/Func_tydef_array.fst
+++ head/array_test/Func_tydef_array.fst
@@ -7,12 +7,12 @@ divergent fn func_tydef_array (var_a: Typedef_uptr.ty_uptr)
requires
exists* (val_a_0: (full_array_spec UInt32.t)).
((Typedef_uptr.ty_uptr__pred var_a 1.0R val_a_0))
- requires (with_pure ((reveal (length_of var_a)) = 2))
+ requires (with_pure ((reveal #nat (length_of var_a)) = 2))
returns return_1 : unit
ensures
exists* (val_a_0: (full_array_spec UInt32.t)).
((Typedef_uptr.ty_uptr__pred var_a 1.0R val_a_0))
- ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
+ ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
ensures (with_pure ((id #int (UInt32.v ((array_read var_a 0sz)))) = 42))
{
let mut var_a = var_a;
diff --git base/array_test/Func_tydef_array.fsti head/array_test/Func_tydef_array.fsti
index b3c7832..3bb89f4 100644
--- base/array_test/Func_tydef_array.fsti
+++ head/array_test/Func_tydef_array.fsti
@@ -7,10 +7,10 @@ divergent fn func_tydef_array (var_a: Typedef_uptr.ty_uptr)
requires
exists* (val_a_0: (full_array_spec UInt32.t)).
((Typedef_uptr.ty_uptr__pred var_a 1.0R val_a_0))
-requires (with_pure ((reveal (length_of var_a)) = 2))
+requires (with_pure ((reveal #nat (length_of var_a)) = 2))
returns return_1 : unit
ensures
exists* (val_a_0: (full_array_spec UInt32.t)).
((Typedef_uptr.ty_uptr__pred var_a 1.0R val_a_0))
-ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
+ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
ensures (with_pure ((id #int (UInt32.v ((array_read var_a 0sz)))) = 42))
\ No newline at end of file
diff --git base/array_test/Typedef_b32_struct.fst head/array_test/Typedef_b32_struct.fst
index a90d140..11b3898 100644
--- base/array_test/Typedef_b32_struct.fst
+++ head/array_test/Typedef_b32_struct.fst
@@ -11,7 +11,7 @@ let ty_b32_struct : Type = Struct_b32_struct_anon_1.struct_b32_struct_anon_1
(val_this_0: Struct_b32_struct_anon_1.struct_b32_struct_anon_1__spec) =
((Struct_b32_struct_anon_1.struct_b32_struct_anon_1__pred this p val_this_0) **
(with_pure
- ((reveal (length_of (this).Struct_b32_struct_anon_1.struct_b32_struct_anon_1__x)) = 32)))
+ ((reveal #nat (length_of (this).Struct_b32_struct_anon_1.struct_b32_struct_anon_1__x)) = 32)))
[@@pulse_eager_unfold] let predicate ty_b32_struct__uninit_pred
([@@@mkey] this: ty_b32_struct)
(val_this_0: (array_spec UInt8.t)) =
diff --git base/array_to_ref/Func_caller.fst head/array_to_ref/Func_caller.fst
index 25df099..766c3ad 100644
--- base/array_to_ref/Func_caller.fst
+++ head/array_to_ref/Func_caller.fst
@@ -5,7 +5,7 @@ open Pulse.Lib.C
divergent fn func_caller (var_a: (array Int32.t)) (var_i: SizeT.t)
requires exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
- requires (with_pure ((SizeT.v var_i) < (reveal (length_of var_a))))
+ requires (with_pure ((SizeT.v var_i) < (reveal #nat (length_of var_a))))
returns return_1 : unit
ensures exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
{
diff --git base/array_to_ref/Func_caller.fsti head/array_to_ref/Func_caller.fsti
index 995fe6f..1289adf 100644
--- base/array_to_ref/Func_caller.fsti
+++ head/array_to_ref/Func_caller.fsti
@@ -5,6 +5,6 @@ open Pulse.Lib.C
divergent fn func_caller (var_a: (array Int32.t)) (var_i: SizeT.t)
requires exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
-requires (with_pure ((SizeT.v var_i) < (reveal (length_of var_a))))
+requires (with_pure ((SizeT.v var_i) < (reveal #nat (length_of var_a))))
returns return_1 : unit
ensures exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
\ No newline at end of file
diff --git base/array_to_ref/Func_caller_out.fst head/array_to_ref/Func_caller_out.fst
index b5b50f3..7d5b23f 100644
--- base/array_to_ref/Func_caller_out.fst
+++ head/array_to_ref/Func_caller_out.fst
@@ -5,7 +5,7 @@ open Pulse.Lib.C
divergent fn func_caller_out (var_a: (array Int32.t)) (var_i: SizeT.t)
requires exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
- requires (with_pure ((SizeT.v var_i) < (reveal (length_of var_a))))
+ requires (with_pure ((SizeT.v var_i) < (reveal #nat (length_of var_a))))
returns return_1 : unit
ensures exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
{
diff --git base/array_to_ref/Func_caller_out.fsti head/array_to_ref/Func_caller_out.fsti
index a9df0f0..064df63 100644
--- base/array_to_ref/Func_caller_out.fsti
+++ head/array_to_ref/Func_caller_out.fsti
@@ -5,6 +5,6 @@ open Pulse.Lib.C
divergent fn func_caller_out (var_a: (array Int32.t)) (var_i: SizeT.t)
requires exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
-requires (with_pure ((SizeT.v var_i) < (reveal (length_of var_a))))
+requires (with_pure ((SizeT.v var_i) < (reveal #nat (length_of var_a))))
returns return_1 : unit
ensures exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
\ No newline at end of file
diff --git base/array_to_ref/Func_fill_first.fst head/array_to_ref/Func_fill_first.fst
index c1735bf..7afd4f1 100644
--- base/array_to_ref/Func_fill_first.fst
+++ head/array_to_ref/Func_fill_first.fst
@@ -5,7 +5,7 @@ open Pulse.Lib.C
divergent fn func_fill_first (var_a: (array Int32.t))
requires exists* ('val_a_0: (array_spec Int32.t)). ((array_pts_to_uninit var_a 'val_a_0))
- requires (with_pure ((reveal (length_of var_a)) = 1))
+ requires (with_pure ((reveal #nat (length_of var_a)) = 1))
returns return_1 : unit
ensures exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
{
diff --git base/array_to_ref/Func_fill_first.fsti head/array_to_ref/Func_fill_first.fsti
index 943cfc0..eab8b67 100644
--- base/array_to_ref/Func_fill_first.fsti
+++ head/array_to_ref/Func_fill_first.fsti
@@ -5,6 +5,6 @@ open Pulse.Lib.C
divergent fn func_fill_first (var_a: (array Int32.t))
requires exists* ('val_a_0: (array_spec Int32.t)). ((array_pts_to_uninit var_a 'val_a_0))
-requires (with_pure ((reveal (length_of var_a)) = 1))
+requires (with_pure ((reveal #nat (length_of var_a)) = 1))
returns return_1 : unit
ensures exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
\ No newline at end of file
diff --git base/array_typedef_pointer/Func_get_entry.fst head/array_typedef_pointer/Func_get_entry.fst
index d6fbf3b..134132c 100644
--- base/array_typedef_pointer/Func_get_entry.fst
+++ head/array_typedef_pointer/Func_get_entry.fst
@@ -14,7 +14,7 @@ divergent fn func_get_entry
requires ((Typedef_uint32_t.ty_uint32_t__pred var_idx 1.0R))
requires
(with_pure
- (((reveal (length_of var_table)) = (id #int (UInt32.v var_count))) &&
+ (((reveal #nat (length_of var_table)) = (id #int (UInt32.v var_count))) &&
(var_idx `UInt32.lt` var_count)))
returns return_1 : (array Typedef_E.ty_e)
ensures
diff --git base/array_typedef_pointer/Func_get_entry.fsti head/array_typedef_pointer/Func_get_entry.fsti
index 1f35286..58b2afd 100644
--- base/array_typedef_pointer/Func_get_entry.fsti
+++ head/array_typedef_pointer/Func_get_entry.fsti
@@ -14,7 +14,7 @@ requires ((Typedef_uint32_t.ty_uint32_t__pred var_count 1.0R))
requires ((Typedef_uint32_t.ty_uint32_t__pred var_idx 1.0R))
requires
(with_pure
- (((reveal (length_of var_table)) = (id #int (UInt32.v var_count))) &&
+ (((reveal #nat (length_of var_table)) = (id #int (UInt32.v var_count))) &&
(var_idx `UInt32.lt` var_count)))
returns return_1 : (array Typedef_E.ty_e)
ensures
diff --git base/array_typedef_pointer/Func_read_first.fst head/array_typedef_pointer/Func_read_first.fst
index 7d569aa..910582b 100644
--- base/array_typedef_pointer/Func_read_first.fst
+++ head/array_typedef_pointer/Func_read_first.fst
@@ -7,7 +7,7 @@ divergent fn func_read_first (var_table: (array Typedef_E.ty_e))
requires
exists* (val_table_0: (full_array_spec Typedef_E.ty_e)).
((array_pts_to_full var_table 1.0R val_table_0))
- requires (with_pure (0 < (reveal (length_of var_table))))
+ requires (with_pure (0 < (reveal #nat (length_of var_table))))
returns return_1 : Typedef_uint16_t.ty_uint16_t
ensures
exists* (val_table_0: (full_array_spec Typedef_E.ty_e)).
diff --git base/array_typedef_pointer/Func_read_first.fsti head/array_typedef_pointer/Func_read_first.fsti
index 785dabc..26c2dea 100644
--- base/array_typedef_pointer/Func_read_first.fsti
+++ head/array_typedef_pointer/Func_read_first.fsti
@@ -7,7 +7,7 @@ divergent fn func_read_first (var_table: (array Typedef_E.ty_e))
requires
exists* (val_table_0: (full_array_spec Typedef_E.ty_e)).
((array_pts_to_full var_table 1.0R val_table_0))
-requires (with_pure (0 < (reveal (length_of var_table))))
+requires (with_pure (0 < (reveal #nat (length_of var_table))))
returns return_1 : Typedef_uint16_t.ty_uint16_t
ensures
exists* (val_table_0: (full_array_spec Typedef_E.ty_e)).
diff --git base/array_update/Func_set_both.fst head/array_update/Func_set_both.fst
index 87a04db..0f6e2fc 100644
--- base/array_update/Func_set_both.fst
+++ head/array_update/Func_set_both.fst
@@ -11,12 +11,12 @@ divergent fn func_set_both
requires
exists* (val_pts_0: (full_array_spec Struct_point.struct_point)).
((array_pts_to_full var_pts 1.0R val_pts_0))
- requires (with_pure ((SizeT.v var_i) < (reveal (length_of var_pts))))
+ requires (with_pure ((SizeT.v var_i) < (reveal #nat (length_of var_pts))))
returns return_1 : unit
ensures
exists* (val_pts_0: (full_array_spec Struct_point.struct_point)).
((array_pts_to_full var_pts 1.0R val_pts_0))
- ensures (with_pure ((reveal (length_of var_pts)) = (old (reveal (length_of var_pts)))))
+ ensures (with_pure ((reveal #nat (length_of var_pts)) = (old (reveal #nat (length_of var_pts)))))
ensures (with_pure ((((array_read var_pts var_i))).Struct_point.struct_point__x = var_vx))
ensures (with_pure ((((array_read var_pts var_i))).Struct_point.struct_point__y = var_vy))
{
diff --git base/array_update/Func_set_both.fsti head/array_update/Func_set_both.fsti
index 058d763..cbb2fc1 100644
--- base/array_update/Func_set_both.fsti
+++ head/array_update/Func_set_both.fsti
@@ -11,11 +11,11 @@ divergent fn func_set_both
requires
exists* (val_pts_0: (full_array_spec Struct_point.struct_point)).
((array_pts_to_full var_pts 1.0R val_pts_0))
-requires (with_pure ((SizeT.v var_i) < (reveal (length_of var_pts))))
+requires (with_pure ((SizeT.v var_i) < (reveal #nat (length_of var_pts))))
returns return_1 : unit
ensures
exists* (val_pts_0: (full_array_spec Struct_point.struct_point)).
((array_pts_to_full var_pts 1.0R val_pts_0))
-ensures (with_pure ((reveal (length_of var_pts)) = (old (reveal (length_of var_pts)))))
+ensures (with_pure ((reveal #nat (length_of var_pts)) = (old (reveal #nat (length_of var_pts)))))
ensures (with_pure ((((array_read var_pts var_i))).Struct_point.struct_point__x = var_vx))
ensures (with_pure ((((array_read var_pts var_i))).Struct_point.struct_point__y = var_vy))
\ No newline at end of file
diff --git base/array_update/Func_set_elem_fields.fst head/array_update/Func_set_elem_fields.fst
index 5bd29c4..eb8a9ca 100644
--- base/array_update/Func_set_elem_fields.fst
+++ head/array_update/Func_set_elem_fields.fst
@@ -14,7 +14,8 @@ divergent fn func_set_elem_fields
requires ((Typedef_uint32_t.ty_uint32_t__pred var_i 1.0R))
requires ((Typedef_uint64_t.ty_uint64_t__pred var_v 1.0R))
requires ((Typedef_uint64_t.ty_uint64_t__pred var_t 1.0R))
- requires (with_pure ((SizeT.v (SizeT.uint_to_t (UInt32.v var_i))) < (reveal (length_of var_a))))
+ requires
+ (with_pure ((SizeT.v (SizeT.uint_to_t (UInt32.v var_i))) < (reveal #nat (length_of var_a))))
returns return_1 : unit
ensures
exists* (val_a_0: (full_array_spec Struct_entry.struct_entry)).
@@ -22,7 +23,7 @@ divergent fn func_set_elem_fields
ensures ((Typedef_uint32_t.ty_uint32_t__pred var_i 1.0R))
ensures ((Typedef_uint64_t.ty_uint64_t__pred var_v 1.0R))
ensures ((Typedef_uint64_t.ty_uint64_t__pred var_t 1.0R))
- ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
+ ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
ensures
(with_pure
(((((array_read var_a (SizeT.uint_to_t (UInt32.v var_i))))).Struct_entry.struct_entry__value =
diff --git base/array_update/Func_set_elem_fields.fsti head/array_update/Func_set_elem_fields.fsti
index f2f0269..c04ea31 100644
--- base/array_update/Func_set_elem_fields.fsti
+++ head/array_update/Func_set_elem_fields.fsti
@@ -14,7 +14,8 @@ requires
requires ((Typedef_uint32_t.ty_uint32_t__pred var_i 1.0R))
requires ((Typedef_uint64_t.ty_uint64_t__pred var_v 1.0R))
requires ((Typedef_uint64_t.ty_uint64_t__pred var_t 1.0R))
-requires (with_pure ((SizeT.v (SizeT.uint_to_t (UInt32.v var_i))) < (reveal (length_of var_a))))
+requires
+ (with_pure ((SizeT.v (SizeT.uint_to_t (UInt32.v var_i))) < (reveal #nat (length_of var_a))))
returns return_1 : unit
ensures
exists* (val_a_0: (full_array_spec Struct_entry.struct_entry)).
@@ -22,7 +23,7 @@ ensures
ensures ((Typedef_uint32_t.ty_uint32_t__pred var_i 1.0R))
ensures ((Typedef_uint64_t.ty_uint64_t__pred var_v 1.0R))
ensures ((Typedef_uint64_t.ty_uint64_t__pred var_t 1.0R))
-ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
+ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
ensures
(with_pure
(((((array_read var_a (SizeT.uint_to_t (UInt32.v var_i))))).Struct_entry.struct_entry__value =
diff --git base/array_update/Func_set_x.fst head/array_update/Func_set_x.fst
index f070a53..f0a4d5c 100644
--- base/array_update/Func_set_x.fst
+++ head/array_update/Func_set_x.fst
@@ -10,12 +10,12 @@ divergent fn func_set_x
requires
exists* (val_pts_0: (full_array_spec Struct_point.struct_point)).
((array_pts_to_full var_pts 1.0R val_pts_0))
- requires (with_pure ((SizeT.v var_i) < (reveal (length_of var_pts))))
+ requires (with_pure ((SizeT.v var_i) < (reveal #nat (length_of var_pts))))
returns return_1 : unit
ensures
exists* (val_pts_0: (full_array_spec Struct_point.struct_point)).
((array_pts_to_full var_pts 1.0R val_pts_0))
- ensures (with_pure ((reveal (length_of var_pts)) = (old (reveal (length_of var_pts)))))
+ ensures (with_pure ((reveal #nat (length_of var_pts)) = (old (reveal #nat (length_of var_pts)))))
ensures (with_pure ((((array_read var_pts var_i))).Struct_point.struct_point__x = var_val))
{
let mut var_pts = var_pts;
diff --git base/array_update/Func_set_x.fsti head/array_update/Func_set_x.fsti
index c6ea73b..723542d 100644
--- base/array_update/Func_set_x.fsti
+++ head/array_update/Func_set_x.fsti
@@ -10,10 +10,10 @@ divergent fn func_set_x
requires
exists* (val_pts_0: (full_array_spec Struct_point.struct_point)).
((array_pts_to_full var_pts 1.0R val_pts_0))
-requires (with_pure ((SizeT.v var_i) < (reveal (length_of var_pts))))
+requires (with_pure ((SizeT.v var_i) < (reveal #nat (length_of var_pts))))
returns return_1 : unit
ensures
exists* (val_pts_0: (full_array_spec Struct_point.struct_point)).
((array_pts_to_full var_pts 1.0R val_pts_0))
-ensures (with_pure ((reveal (length_of var_pts)) = (old (reveal (length_of var_pts)))))
+ensures (with_pure ((reveal #nat (length_of var_pts)) = (old (reveal #nat (length_of var_pts)))))
ensures (with_pure ((((array_read var_pts var_i))).Struct_point.struct_point__x = var_val))
\ No newline at end of file
diff --git base/array_update/Func_set_x_alt.fst head/array_update/Func_set_x_alt.fst
index f801e2d..f945100 100644
--- base/array_update/Func_set_x_alt.fst
+++ head/array_update/Func_set_x_alt.fst
@@ -7,7 +7,7 @@ divergent fn func_set_x_alt (var_arr: (array Struct_point.struct_point))
requires
exists* (val_arr_0: (full_array_spec Struct_point.struct_point)).
((array_pts_to_full var_arr 1.0R val_arr_0))
- requires (with_pure ((reveal (length_of var_arr)) = 2))
+ requires (with_pure ((reveal #nat (length_of var_arr)) = 2))
returns return_1 : unit
ensures
exists* (val_arr_0: (full_array_spec Struct_point.struct_point)).
diff --git base/array_update/Func_set_x_alt.fsti head/array_update/Func_set_x_alt.fsti
index 667bb14..2825209 100644
--- base/array_update/Func_set_x_alt.fsti
+++ head/array_update/Func_set_x_alt.fsti
@@ -7,7 +7,7 @@ divergent fn func_set_x_alt (var_arr: (array Struct_point.struct_point))
requires
exists* (val_arr_0: (full_array_spec Struct_point.struct_point)).
((array_pts_to_full var_arr 1.0R val_arr_0))
-requires (with_pure ((reveal (length_of var_arr)) = 2))
+requires (with_pure ((reveal #nat (length_of var_arr)) = 2))
returns return_1 : unit
ensures
exists* (val_arr_0: (full_array_spec Struct_point.struct_point)).
diff --git base/array_update/Func_set_y.fst head/array_update/Func_set_y.fst
index e9fb3b2..5dbdfde 100644
--- base/array_update/Func_set_y.fst
+++ head/array_update/Func_set_y.fst
@@ -10,12 +10,12 @@ divergent fn func_set_y
requires
exists* (val_pts_0: (full_array_spec Struct_point.struct_point)).
((array_pts_to_full var_pts 1.0R val_pts_0))
- requires (with_pure ((SizeT.v var_i) < (reveal (length_of var_pts))))
+ requires (with_pure ((SizeT.v var_i) < (reveal #nat (length_of var_pts))))
returns return_1 : unit
ensures
exists* (val_pts_0: (full_array_spec Struct_point.struct_point)).
((array_pts_to_full var_pts 1.0R val_pts_0))
- ensures (with_pure ((reveal (length_of var_pts)) = (old (reveal (length_of var_pts)))))
+ ensures (with_pure ((reveal #nat (length_of var_pts)) = (old (reveal #nat (length_of var_pts)))))
ensures (with_pure ((((array_read var_pts var_i))).Struct_point.struct_point__y = var_val))
{
let mut var_pts = var_pts;
diff --git base/array_update/Func_set_y.fsti head/array_update/Func_set_y.fsti
index e952d1e..c953b6b 100644
--- base/array_update/Func_set_y.fsti
+++ head/array_update/Func_set_y.fsti
@@ -10,10 +10,10 @@ divergent fn func_set_y
requires
exists* (val_pts_0: (full_array_spec Struct_point.struct_point)).
((array_pts_to_full var_pts 1.0R val_pts_0))
-requires (with_pure ((SizeT.v var_i) < (reveal (length_of var_pts))))
+requires (with_pure ((SizeT.v var_i) < (reveal #nat (length_of var_pts))))
returns return_1 : unit
ensures
exists* (val_pts_0: (full_array_spec Struct_point.struct_point)).
((array_pts_to_full var_pts 1.0R val_pts_0))
-ensures (with_pure ((reveal (length_of var_pts)) = (old (reveal (length_of var_pts)))))
+ensures (with_pure ((reveal #nat (length_of var_pts)) = (old (reveal #nat (length_of var_pts)))))
ensures (with_pure ((((array_read var_pts var_i))).Struct_point.struct_point__y = var_val))
\ No newline at end of file
diff --git base/arrayptr_compare/Func_less.fst head/arrayptr_compare/Func_less.fst
index eb1522e..ca2e2a7 100644
--- base/arrayptr_compare/Func_less.fst
+++ head/arrayptr_compare/Func_less.fst
@@ -5,7 +5,7 @@ open Pulse.Lib.C
divergent fn func_less (var_a: (array Int32.t))
requires exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
- requires (with_pure ((reveal (length_of var_a)) = 10))
+ requires (with_pure ((reveal #nat (length_of var_a)) = 10))
returns return_1 : Int32.t
ensures exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
ensures (with_pure ((id #int (Int32.v return_1)) = 1))
diff --git base/arrayptr_compare/Func_less.fsti head/arrayptr_compare/Func_less.fsti
index ccefb77..692e893 100644
--- base/arrayptr_compare/Func_less.fsti
+++ head/arrayptr_compare/Func_less.fsti
@@ -5,7 +5,7 @@ open Pulse.Lib.C
divergent fn func_less (var_a: (array Int32.t))
requires exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
-requires (with_pure ((reveal (length_of var_a)) = 10))
+requires (with_pure ((reveal #nat (length_of var_a)) = 10))
returns return_1 : Int32.t
ensures exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
ensures (with_pure ((id #int (Int32.v return_1)) = 1))
\ No newline at end of file
diff --git base/arrayptr_diff/Func_same_object_diff.fst head/arrayptr_diff/Func_same_object_diff.fst
index c0504d1..0dd22c9 100644
--- base/arrayptr_diff/Func_same_object_diff.fst
+++ head/arrayptr_diff/Func_same_object_diff.fst
@@ -5,7 +5,7 @@ open Pulse.Lib.C
divergent fn func_same_object_diff (var_a: (array Int32.t))
requires exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
- requires (with_pure ((reveal (length_of var_a)) = 10))
+ requires (with_pure ((reveal #nat (length_of var_a)) = 10))
returns return_1 : Typedef_ptrdiff_t.ty_ptrdiff_t
ensures exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
ensures ((Typedef_ptrdiff_t.ty_ptrdiff_t__pred return_1 1.0R))
diff --git base/arrayptr_diff/Func_same_object_diff.fsti head/arrayptr_diff/Func_same_object_diff.fsti
index 9fcca70..646263f 100644
--- base/arrayptr_diff/Func_same_object_diff.fsti
+++ head/arrayptr_diff/Func_same_object_diff.fsti
@@ -5,7 +5,7 @@ open Pulse.Lib.C
divergent fn func_same_object_diff (var_a: (array Int32.t))
requires exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
-requires (with_pure ((reveal (length_of var_a)) = 10))
+requires (with_pure ((reveal #nat (length_of var_a)) = 10))
returns return_1 : Typedef_ptrdiff_t.ty_ptrdiff_t
ensures exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
ensures ((Typedef_ptrdiff_t.ty_ptrdiff_t__pred return_1 1.0R))
\ No newline at end of file
diff --git base/arrayptr_ref/Func_assign_cell_address_to_ref.fst head/arrayptr_ref/Func_assign_cell_address_to_ref.fst
index 1dea4a2..b7a0692 100644
--- base/arrayptr_ref/Func_assign_cell_address_to_ref.fst
+++ head/arrayptr_ref/Func_assign_cell_address_to_ref.fst
@@ -7,7 +7,7 @@ divergent fn func_assign_cell_address_to_ref (var_a: (array Typedef_SUBRANGE.ty_
requires
exists* ('val_a_0: (array_spec Typedef_SUBRANGE.ty_subrange)).
((array_pts_to_uninit var_a 'val_a_0))
- requires (with_pure ((reveal (length_of var_a)) = 1))
+ requires (with_pure ((reveal #nat (length_of var_a)) = 1))
returns return_1 : unit
ensures
exists* (val_a_0: (full_array_spec Typedef_SUBRANGE.ty_subrange)).
diff --git base/arrayptr_ref/Func_assign_cell_address_to_ref.fsti head/arrayptr_ref/Func_assign_cell_address_to_ref.fsti
index d2e8728..5db8310 100644
--- base/arrayptr_ref/Func_assign_cell_address_to_ref.fsti
+++ head/arrayptr_ref/Func_assign_cell_address_to_ref.fsti
@@ -7,7 +7,7 @@ divergent fn func_assign_cell_address_to_ref (var_a: (array Typedef_SUBRANGE.ty_
requires
exists* ('val_a_0: (array_spec Typedef_SUBRANGE.ty_subrange)).
((array_pts_to_uninit var_a 'val_a_0))
-requires (with_pure ((reveal (length_of var_a)) = 1))
+requires (with_pure ((reveal #nat (length_of var_a)) = 1))
returns return_1 : unit
ensures
exists* (val_a_0: (full_array_spec Typedef_SUBRANGE.ty_subrange)).
diff --git base/arrayptr_ref/Func_consume_returned_arrayptr_as_ref.fst head/arrayptr_ref/Func_consume_returned_arrayptr_as_ref.fst
index 9717eb2..ab053b6 100644
--- base/arrayptr_ref/Func_consume_returned_arrayptr_as_ref.fst
+++ head/arrayptr_ref/Func_consume_returned_arrayptr_as_ref.fst
@@ -7,7 +7,7 @@ divergent fn func_consume_returned_arrayptr_as_ref (var_a: (array Typedef_SUBRAN
requires
exists* ('val_a_0: (array_spec Typedef_SUBRANGE.ty_subrange)).
((array_pts_to_uninit var_a 'val_a_0))
- requires (with_pure ((reveal (length_of var_a)) = 1))
+ requires (with_pure ((reveal #nat (length_of var_a)) = 1))
returns return_1 : unit
ensures
exists* (val_a_0: (full_array_spec Typedef_SUBRANGE.ty_subrange)).
diff --git base/arrayptr_ref/Func_consume_returned_arrayptr_as_ref.fsti head/arrayptr_ref/Func_consume_returned_arrayptr_as_ref.fsti
index 85ba07b..58b1192 100644
--- base/arrayptr_ref/Func_consume_returned_arrayptr_as_ref.fsti
+++ head/arrayptr_ref/Func_consume_returned_arrayptr_as_ref.fsti
@@ -7,7 +7,7 @@ divergent fn func_consume_returned_arrayptr_as_ref (var_a: (array Typedef_SUBRAN
requires
exists* ('val_a_0: (array_spec Typedef_SUBRANGE.ty_subrange)).
((array_pts_to_uninit var_a 'val_a_0))
-requires (with_pure ((reveal (length_of var_a)) = 1))
+requires (with_pure ((reveal #nat (length_of var_a)) = 1))
returns return_1 : unit
ensures
exists* (val_a_0: (full_array_spec Typedef_SUBRANGE.ty_subrange)).
diff --git base/arrayptr_ref/Func_pass_arrayptr_as_ref.fst head/arrayptr_ref/Func_pass_arrayptr_as_ref.fst
index 0311e53..9b535d2 100644
--- base/arrayptr_ref/Func_pass_arrayptr_as_ref.fst
+++ head/arrayptr_ref/Func_pass_arrayptr_as_ref.fst
@@ -5,7 +5,7 @@ open Pulse.Lib.C
divergent fn func_pass_arrayptr_as_ref (var_a: (array Int32.t))
requires exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
- requires (with_pure ((reveal (length_of var_a)) = 3))
+ requires (with_pure ((reveal #nat (length_of var_a)) = 3))
returns return_1 : unit
ensures exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
{
diff --git base/arrayptr_ref/Func_pass_arrayptr_as_ref.fsti head/arrayptr_ref/Func_pass_arrayptr_as_ref.fsti
index 3962130..83b3db4 100644
--- base/arrayptr_ref/Func_pass_arrayptr_as_ref.fsti
+++ head/arrayptr_ref/Func_pass_arrayptr_as_ref.fsti
@@ -5,6 +5,6 @@ open Pulse.Lib.C
divergent fn func_pass_arrayptr_as_ref (var_a: (array Int32.t))
requires exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
-requires (with_pure ((reveal (length_of var_a)) = 3))
+requires (with_pure ((reveal #nat (length_of var_a)) = 3))
returns return_1 : unit
ensures exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
\ No newline at end of file
diff --git base/arrayptrs/Func_use_binary_search.fst head/arrayptrs/Func_use_binary_search.fst
index 92f6f1c..81130ac 100644
--- base/arrayptrs/Func_use_binary_search.fst
+++ head/arrayptrs/Func_use_binary_search.fst
@@ -9,7 +9,8 @@ divergent fn func_use_binary_search
(var_length: SizeT.t)
requires
(with_pure
- (((SizeT.v var_length) = (reveal (length_of var_arr))) && ((SizeT.v var_length) <= 10000)))
+ (((SizeT.v var_length) = (reveal #nat (length_of var_arr))) &&
+ ((SizeT.v var_length) <= 10000)))
preserves (array_pts_to_full var_arr 'p_arr_0 'val_arr_0)
returns return_1 : unit
{
diff --git base/arrayptrs/Func_use_binary_search.fsti head/arrayptrs/Func_use_binary_search.fsti
index 79f39b9..738df48 100644
--- base/arrayptrs/Func_use_binary_search.fsti
+++ head/arrayptrs/Func_use_binary_search.fsti
@@ -9,6 +9,6 @@ divergent fn func_use_binary_search
(var_length: SizeT.t)
requires
(with_pure
- (((SizeT.v var_length) = (reveal (length_of var_arr))) && ((SizeT.v var_length) <= 10000)))
+ (((SizeT.v var_length) = (reveal #nat (length_of var_arr))) && ((SizeT.v var_length) <= 10000)))
preserves (array_pts_to_full var_arr 'p_arr_0 'val_arr_0)
returns return_1 : unit
\ No newline at end of file
diff --git base/arrayptrs/Func_write_via_ptr.fst head/arrayptrs/Func_write_via_ptr.fst
index 150785e..6ee64db 100644
--- base/arrayptrs/Func_write_via_ptr.fst
+++ head/arrayptrs/Func_write_via_ptr.fst
@@ -5,10 +5,10 @@ open Pulse.Lib.C
divergent fn func_write_via_ptr (var_a: (array Int32.t))
requires exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
- requires (with_pure ((reveal (length_of var_a)) = 10))
+ requires (with_pure ((reveal #nat (length_of var_a)) = 10))
returns return_1 : unit
ensures exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
- ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
+ ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
{
let mut var_a = var_a;
let mut var_p : (array Int32.t);
diff --git base/arrayptrs/Func_write_via_ptr.fsti head/arrayptrs/Func_write_via_ptr.fsti
index 5602460..ce421d6 100644
--- base/arrayptrs/Func_write_via_ptr.fsti
+++ head/arrayptrs/Func_write_via_ptr.fsti
@@ -5,7 +5,7 @@ open Pulse.Lib.C
divergent fn func_write_via_ptr (var_a: (array Int32.t))
requires exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
-requires (with_pure ((reveal (length_of var_a)) = 10))
+requires (with_pure ((reveal #nat (length_of var_a)) = 10))
returns return_1 : unit
ensures exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
-ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
\ No newline at end of file
+ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
\ No newline at end of file
diff --git base/calloc_alloc_size/Func_test_calloc_count_mul_size.fst head/calloc_alloc_size/Func_test_calloc_count_mul_size.fst
index 96c3908..46db6e5 100644
--- base/calloc_alloc_size/Func_test_calloc_count_mul_size.fst
+++ head/calloc_alloc_size/Func_test_calloc_count_mul_size.fst
@@ -11,7 +11,7 @@ divergent fn func_test_calloc_count_mul_size ()
(Pulse.Lib.C.Array.calloc_array
#Int32.t
(SizeT.uint_to_t (UInt64.v (id #UInt64.t (Int.Cast.int32_to_uint64 3l)))));
- assert (with_pure ((reveal (length_of (!var_array))) = 3));
+ assert (with_pure ((reveal #nat (length_of (!var_array))) = 3));
assert (with_pure ((id #int (Int32.v ((array_read (!var_array) 0sz)))) = 0));
(array_write (!var_array) 0sz 67l);
(Pulse.Lib.C.Array.free_array (!var_array));
diff --git base/calloc_alloc_size/Func_test_calloc_count_size_mul.fst head/calloc_alloc_size/Func_test_calloc_count_size_mul.fst
index 367339b..bed3f0d 100644
--- base/calloc_alloc_size/Func_test_calloc_count_size_mul.fst
+++ head/calloc_alloc_size/Func_test_calloc_count_size_mul.fst
@@ -11,7 +11,7 @@ divergent fn func_test_calloc_count_size_mul ()
(Pulse.Lib.C.Array.calloc_array
#Int32.t
(SizeT.uint_to_t (UInt64.v (id #UInt64.t (Int.Cast.int32_to_uint64 4l)))));
- assert (with_pure ((reveal (length_of (!var_array))) = 4));
+ assert (with_pure ((reveal #nat (length_of (!var_array))) = 4));
assert (with_pure ((id #int (Int32.v ((array_read (!var_array) 0sz)))) = 0));
(Pulse.Lib.C.Array.free_array (!var_array));
}
\ No newline at end of file
diff --git base/compare_elements/Func_compare_elems.fst head/compare_elements/Func_compare_elems.fst
index 20560d4..c659772 100644
--- base/compare_elements/Func_compare_elems.fst
+++ head/compare_elements/Func_compare_elems.fst
@@ -8,13 +8,13 @@ divergent fn func_compare_elems (var_a: (array Int32.t)) (var_b: (array Int32.t)
requires exists* (val_b_0: (full_array_spec Int32.t)). ((array_pts_to_full var_b 1.0R val_b_0))
requires
(with_pure
- (((reveal (length_of var_a)) = (SizeT.v var_len)) &&
- ((reveal (length_of var_b)) = (SizeT.v var_len))))
+ (((reveal #nat (length_of var_a)) = (SizeT.v var_len)) &&
+ ((reveal #nat (length_of var_b)) = (SizeT.v var_len))))
returns return_1 : bool
ensures exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
ensures exists* (val_b_0: (full_array_spec Int32.t)). ((array_pts_to_full var_b 1.0R val_b_0))
- ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
- ensures (with_pure ((reveal (length_of var_b)) = (old (reveal (length_of var_b)))))
+ ensures (with_pure ((reveal #nat (length_of var_a)) = (old (reveal #nat (length_of var_a)))))
+ ensures (with_pure ((reveal #nat (length_of var_b)) = (old (reveal #nat (length_of var_b)))))
ensures
(with_pure
(return_1 =
diff --git base/compare_elements/Func_compare_elems.fsti head/compare_elements/Func_compare_elems.fsti
index 1e6ae76..06a3e3a 100644
--- base/compare_elements/Func_compare_elems.fsti
+++ head/compare_elements/Func_compare_elems.fsti
@@ -8,13 +8,13 @@ requires exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a
requires exists* (val_b_0: (full_array_spec Int32.t)). ((array_pts_to_full var_b 1.0R val_b_0))
requires
(with_pure
- (((reveal (length_of var_a)) = (SizeT.v var_len)) &&
- ((reveal (length_of var_b)) = (SizeT.v var_len))))
+ (((reveal #nat (length_of var_a)) = (SizeT.v var_len)) &&
+ ((reveal #nat (length_of var_b)) = (SizeT.v var_len))))
returns return_1 : bool
ensures exists* (val_a_0: (full_array_spec Int32.t)). ((array_pts_to_full var_a 1.0R val_a_0))
ensures exists* (val_b_0: (full_array_spec Int32.t)). ((array_pts_to_full var_b 1.0R val_b_0))
-ensures (with_pure ((reveal (length_of var_a)) = (old (reveal (length_of var_a)))))
-ensures (with_pure ((reveal (length_of var_b)) = (old (reveal (length_of var_b)))))
Diff truncated; see the links above for the full version. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps the pinned F* nightly from 2026-09-15 to 2026-09-25.
The nightlies after FStarLang/FStar#4515 (
_revise_primitive_effects) needed two fixes in PAL:Pulse.Lib.C.Array.array_spec_upd_maskno longer verifies automatically. It now uses explicitSeq.lemma_index_upd1/upd2.=againstSizeT.vnow infers the refinedx:nat{SizeT.fits x}as the equality type, which brokearrayptrsandcompare_elements(Regression:f () = (y <: _)infers the refinement from f's Pure postcondition, rejecting y FStar#4586). As a workaround, the emitter now producesreveal #nat (length_of x), and the docs are updated to match.A third regression, in
ghost_fnptr(FStarLang/FStar#4587), is fixed upstream as of the 2026-09-25 nightly.make test -j8passes locally with nightly-2026-09-25.