Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
167 commits
Select commit Hold shift + click to select a range
33ce4aa
supersquash
Jun 11, 2025
63c6ced
slogging away on rotted lemma_to_seq_to_set_id
Jun 18, 2025
08d3442
set_lib sorted
Jun 18, 2025
a126a38
lemma_set_filter_finite
Jun 20, 2025
96ad7a3
semantic fixups
Jun 20, 2025
ac8ef78
restore run_configuration_all.toml
Jun 20, 2025
5cc4607
vargo fmt
Jun 20, 2025
2c856f4
correct builtin reference
Jun 20, 2025
f8d1497
replace an admit with a proof
Jun 20, 2025
b5763a4
fix standalone vstd build
Jun 20, 2025
9aa1509
vargo fmt
Jun 20, 2025
c83e4e5
fix refs that break in test
Jun 21, 2025
df7c330
verusfmt
Jun 21, 2025
814debf
deprecate set_int_range for Set::int_range
Jun 21, 2025
ed779b7
better error messages with structs instead of const bool
Jun 24, 2025
d4b41a3
fmt
Jun 24, 2025
c9a4352
Set::nat_range
Jun 24, 2025
fcde283
end mk_map. fix a bunch of tests
Jun 24, 2025
df30976
fmt, clean up mk_map leftovers
Jun 24, 2025
c245794
update decreases tests to check both names for finite, infinite maps
Jun 26, 2025
767dc04
expose rustc_diagnostic_items
Jun 27, 2025
77a8de5
fix invariants, multiset tests
Jun 28, 2025
77510ab
fix tests/sets
Jun 28, 2025
2ed9412
fix summer_school tests; add automation for to_infinite ensures
Jun 28, 2025
a032180
fmt
Jun 28, 2025
fffc7df
draft of doc fixes
Jul 14, 2025
e6d9bfb
doc suggestions from bryan; fix assumes in set.rs
Jul 15, 2025
0356514
minimize lemma_fold_graph_insert_elim_aux
Jul 15, 2025
3959111
correct typos in lib_exmaples
Jul 15, 2025
eba9430
fmt
Jul 15, 2025
eda712e
correct vstd.rs merge
Jul 15, 2025
f2e3d66
apply some comments from parno
Jul 15, 2025
2632324
apply parno comments
Jul 15, 2025
eaf41a1
fmt
Jul 15, 2025
d40ccdb
grammar
Jul 15, 2025
82317ae
rename lemmas that aren't axioms anymore
Jul 15, 2025
7bf0467
correct comments
Jul 16, 2025
dccabbc
generic flatten
Jul 16, 2025
71c0aa5
progress on flatten
Jul 17, 2025
bb78335
progress on flatten proofs
Jul 17, 2025
d497a06
tighten up filter_map_congruence
Jul 17, 2025
f5010fe
fix last assume in flatten proof
Jul 17, 2025
e92164f
kill a couple no-op lemmas
Jul 17, 2025
5fcdd92
kill another couple no-op lemma
Jul 17, 2025
b2e40c7
sort out some TODOs in set.rs
Jul 17, 2025
a6f6fce
kill no-op lemma in set_lib
Jul 17, 2025
85d4e4f
kill no-op lemma in set_lib
Jul 17, 2025
15dd3e2
fmt
Jul 17, 2025
1e1710c
delete dead comment
Jul 18, 2025
50233aa
fix Set ctor in tests/raw_ptrs/allocate_in_bounds
Jul 18, 2025
f81322d
incorporate Chris' generalized Set::range
Jul 18, 2025
60badca
fmt
Jul 18, 2025
1319eac
shift tests and examples to Set::range
Jul 18, 2025
b582368
remove extn tilde -- why did this break in CI?
Jul 18, 2025
1d1cbb9
update token stufen changes
Sep 11, 2025
8574234
fmt
Sep 11, 2025
b35d3e6
update token stufen changes
Sep 12, 2025
6729e90
Fix old references to Set to point to GSet
Sep 17, 2025
5238a53
add lemmas to ease porting to ISet
Sep 17, 2025
99d8dbc
fmt
Sep 17, 2025
c29c940
add lemma_set_disjoint_lens_finite
Sep 22, 2025
c4e4de7
fmt
Sep 22, 2025
416713f
duplicate ensures trigger to attempt to address test flake
Sep 22, 2025
d58cd2e
Chris' set and set_lib additions
Oct 8, 2025
2c1a8c2
add a broadcast
Oct 8, 2025
0712029
fmt
Oct 8, 2025
f7105ca
sharded state machines support iset,imap,set,map separately
Oct 15, 2025
4fd4700
add infinite/finite variants of PersistentMap, PersistentSet, StorageMap
Oct 15, 2025
5933bdf
fmt
Oct 15, 2025
a1f39e4
missing imap/iset variant code
Oct 15, 2025
dc07ca5
missing pieces for ISet, PersistentISet and friends
Oct 15, 2025
6089f55
fmt
Oct 15, 2025
c7ab90e
fix more infinite/finite discrepancies in state machines
Oct 16, 2025
da1784f
fmt
Oct 16, 2025
10cec0b
work-in-progress snapshot of GSet refactor
jonhnet Feb 21, 2026
3ca3855
wip: set/iset modules fully verified, 5 fold errors remain in gset
jonhnet Feb 22, 2026
fae446d
wip: mechanical newtype wrapper fixes for Set/ISet consumers
jonhnet Feb 22, 2026
ee16fee
progress
jonhnet Feb 22, 2026
0bc2ace
Finish set_lib verification cleanup and remove filter_map assume
jonhnet Feb 22, 2026
bab234c
Extract generic map internals into new gmap module
jonhnet Feb 22, 2026
1475220
Route internal generic map uses through gmap module
jonhnet Feb 22, 2026
4a19400
Point map axiom broadcasts to gmap module
jonhnet Feb 22, 2026
c9e2b9d
Update recursion tests to import GMap from gmap
jonhnet Feb 22, 2026
60f40fd
Make map module a GMap-free public facade
jonhnet Feb 22, 2026
2b77411
Make gmap internal and migrate recursion tests to Map/IMap
jonhnet Feb 22, 2026
672b06e
tokens: split MapToken/IMapToken wrappers from private GMapToken core
jonhnet Feb 22, 2026
72d5af1
set/iset: route mk_map through Map/IMap wrappers
jonhnet Feb 22, 2026
c9676a5
map facade: hide internal macro plumbing re-exports
jonhnet Feb 22, 2026
b3f708a
map facade: hide low-level GMap-centric re-exports
jonhnet Feb 22, 2026
b497f4c
route map broadcasts through map facade instead of gmap module
jonhnet Feb 22, 2026
f769056
introduce map::GenericMap alias for internal generic map uses
jonhnet Feb 22, 2026
af2d291
map_lib: use GenericMap alias except explicit gmap lemma-owner paths
jonhnet Feb 22, 2026
9077aef
map_lib: replace gmap owner-path uses with local generic forwarding l…
jonhnet Feb 22, 2026
6de3eb8
set: document GenericMap return as temporary Verus limitation workaround
jonhnet Feb 22, 2026
8b9aa40
map facade: make GenericMap alias crate-private
jonhnet Feb 23, 2026
f4e0910
set: hide deprecated generic mk_map from docs
jonhnet Feb 23, 2026
e009530
tokens: split SetToken/ISetToken wrappers from private GSetToken core
jonhnet Feb 23, 2026
6e38a13
map facade: define canonical Map/IMap aliases in map.rs
jonhnet Feb 23, 2026
c324587
gmap: reduce Map/IMap aliases to crate visibility
jonhnet Feb 23, 2026
144d03f
map: own public group_map_axioms; keep gmap group crate-private
jonhnet Feb 23, 2026
129de3a
vstd: hide gset module in docs to emphasize Set/ISet surface
jonhnet Feb 23, 2026
a6fbb4d
veritas: support local runs and podman; align page-table config flags
jonhnet Feb 23, 2026
6529894
hide GSet type
jonhnet Feb 25, 2026
33b80a9
hide GSet surface
jonhnet Feb 26, 2026
ee7e745
prove map token updates; add imap union/ext lemmas
jonhnet Feb 28, 2026
6bcd563
reduce seq token debt; align split precondition with view dom
jonhnet Feb 28, 2026
3376c71
prove GhostSubseq::update; leave only split subset assumption
jonhnet Feb 28, 2026
7c17c20
push map changes through tokens and other modules
jonhnet Mar 1, 2026
89fc1f6
Fix internal GSet path and add local Veritas config
jonhnet Mar 1, 2026
b2ff62c
Restore Map wrapper APIs used by std specs
jonhnet Mar 1, 2026
e3adb77
Restore internal map automation in hash map proofs
jonhnet Mar 1, 2026
2ab8144
Fix std/alloc vstd proof regressions in hash and pptr
jonhnet Mar 2, 2026
4356d3a
last work unit
jonhnet May 6, 2026
64a4e04
Merge remote-tracking branch 'upstream/jonh/sets-typed-finite' into s…
jaylorch May 13, 2026
a604a0a
Post-merge recovery part 1
jaylorch May 13, 2026
83be055
Add reach_type
jaylorch May 14, 2026
735eb36
Partial progress
jaylorch May 15, 2026
fe9a85d
More progress
jaylorch May 16, 2026
aa1e4dc
Fix most compilation errors
jaylorch May 18, 2026
d27fa68
Move relations into set_lib/iset_lib
jaylorch May 18, 2026
e3a2a8a
Fix relations move
jaylorch May 18, 2026
4f21144
Fix more compilation errors
jaylorch May 19, 2026
2a87d96
Fix remaining compilation errors
jaylorch May 19, 2026
9525e59
Working on verification
jaylorch May 19, 2026
b790745
Merge
jaylorch May 19, 2026
76ccd40
Fix some proofs
jaylorch May 19, 2026
8f076ba
Fix set/iset/seq proofs
jaylorch May 20, 2026
bd98667
Fix map/map_lib proofs
jaylorch May 20, 2026
114b8d1
Fix some resource proofs
jaylorch May 21, 2026
6644104
Fix some resource proofs
jaylorch May 21, 2026
08dda54
Fix remaining proof errors
jaylorch May 21, 2026
a7b3d8e
Add diagnostic items for ISet functions
jaylorch May 21, 2026
dba2c6d
Fix some tests
jaylorch May 21, 2026
3114d61
Support both finite and infinite sets/maps in state machine tokens
jaylorch May 21, 2026
92adcdb
Fix btree test
jaylorch May 21, 2026
feabd8d
Get rid of unnecessary _inner functions
jaylorch May 21, 2026
9cee3aa
Fix postcondition on lemma_set_new_assuming_finite
jaylorch May 21, 2026
a4544c5
Fix proof bugs hidden by removed wrong new_assuming_finite axiom
jaylorch May 21, 2026
e073656
Fix examples
jaylorch May 22, 2026
e40419a
Make test_hash_set_iter work
jaylorch May 22, 2026
fe54fc9
Make mut_refs_old test work by removing references to GSet
jaylorch May 22, 2026
4d017c7
Fix seqs test
jaylorch May 22, 2026
3864581
Fix postcondition of full_set_properties
jaylorch May 22, 2026
1c6a524
Fix persistent_map_codegen test
jaylorch May 22, 2026
1caad64
Use ISet instead of Set for invariant set
jaylorch May 22, 2026
50b3468
Better trigger for lemma_set_new
jaylorch May 22, 2026
e4149dc
More robust hash test
jaylorch May 22, 2026
a36374e
Define Seq::to_iset as self.to_set().to_iset()
jaylorch May 22, 2026
32e2b60
Make Set::contains equivalent to self.to_iset().contains()
jaylorch May 23, 2026
dedcbaf
Make Set external_body to allow recursive data types
jaylorch May 23, 2026
8f74263
Update summer_school test
jaylorch May 23, 2026
89252c1
Merge remote-tracking branch 'upstream/main' into sets-typed-finite
jaylorch May 23, 2026
763e450
Merge fix
jaylorch May 24, 2026
49cb48a
Remove Set::mk_map and now-unnecessary associated axioms
jaylorch May 24, 2026
963d079
Simplify set_lib leveraging iset_lib duplication
jaylorch May 24, 2026
a6dcc5d
Simplify set_lib leveraging iset_lib duplication
jaylorch May 24, 2026
372c23b
Add comments describing new set functions
jaylorch May 25, 2026
ff19d74
verusfmt
jaylorch May 25, 2026
d6cbd5f
Merge remote-tracking branch 'upstream/main' into sets-typed-finite
jaylorch May 25, 2026
8058b21
Fix verusfmt-induced verusfmt error
jaylorch May 25, 2026
af9f13d
Fix clippy issues
jaylorch May 25, 2026
c0223a4
Update guide
jaylorch May 25, 2026
85c0d11
Fix warnings when building vstd documentation
jaylorch May 25, 2026
ed28e12
Tweak guide
jaylorch May 25, 2026
1f84889
Add tests for recursive set constructions
jaylorch May 25, 2026
93bb85a
Allow Map to make recursive types
jaylorch May 25, 2026
c99f839
Fix failing tests
jaylorch May 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions examples/doubly_linked.rs
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,7 @@ mod doubly_linked_list {
}
self.ghost_state.borrow_mut().points_to_map.tracked_map_keys_in_place(
Map::<nat, nat>::new(
|j: nat| 1 <= j && j <= old(self).view().len(),
Set::range(1, old(self)@.len() + 1),
|j: nat| (j - 1) as nat,
),
);
Expand Down Expand Up @@ -406,7 +406,7 @@ mod doubly_linked_list {
};
self.ghost_state.borrow_mut().points_to_map.tracked_map_keys_in_place(
Map::<nat, nat>::new(
|j: nat| 0 <= j && j < old(self).view().len() - 1,
Set::range(0, (old(self)@.len() - 1) as nat),
|j: nat| (j + 1) as nat,
),
);
Expand Down
4 changes: 2 additions & 2 deletions examples/doubly_linked_xor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -354,7 +354,7 @@ impl<V> DListXor<V> {
}
(self.perms.borrow_mut()).tracked_map_keys_in_place(
Map::<nat, nat>::new(
|j: nat| 0 <= j < old(self)@.len() - 1,
Set::range(0, (old(self)@.len() - 1) as nat),
|j: nat| (j + 1) as nat,
),
);
Expand Down Expand Up @@ -423,7 +423,7 @@ impl<V> DListXor<V> {
}
self.perms.borrow_mut().tracked_map_keys_in_place(
Map::<nat, nat>::new(
|j: nat| 1 <= j <= old(self)@.len(),
Set::range(1, old(self)@.len() + 1),
|j: nat| (j - 1) as nat,
),
);
Expand Down
14 changes: 7 additions & 7 deletions examples/extensionality.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

use verus_builtin::*;
use verus_builtin_macros::*;
use vstd::{map::*, seq::*, seq_lib::*, set::*, set_lib::*};
use vstd::{imap::*, imap_lib::*, iset::*, iset_lib::*, map::*, seq::*, seq_lib::*, set::*, set_lib::*};

verus! {

Expand Down Expand Up @@ -84,9 +84,9 @@ proof fn assert_maps_equal_with_proof(m: Map<int, int>, q: Map<int, int>)
}

proof fn assert_maps_equal_with_proof2() {
let m = Map::<u64, u64>::total(|t: u64| t & 184);
let q = Map::<u64, u64>::new(|t: u64| t ^ t == 0, |t: u64| 184 & t);
assert_maps_equal!(m, q, t => {
let m = IMap::<u64, u64>::total(|t: u64| t & 184);
let q = IMap::<u64, u64>::new(|t: u64| t ^ t == 0, |t: u64| 184 & t);
assert_imaps_equal!(m, q, t => {
// show that the `q` map is total:
assert_bit_vector(t ^ t == 0);

Expand All @@ -106,9 +106,9 @@ proof fn test_set(s: Set<int>, t: Set<int>) {
}

proof fn assert_sets_equal_with_proof() {
let s = Set::<u64>::new(|i: u64| i ^ 25 < 100);
let t = Set::<u64>::new(|i: u64| 25 ^ i < 100);
assert_sets_equal!(s, t, i => {
let s = ISet::<u64>::new(|i: u64| i ^ 25 < 100);
let t = ISet::<u64>::new(|i: u64| 25 ^ i < 100);
assert_isets_equal!(s, t, i => {
assert_bit_vector(i ^ 25 == 25 ^ i);
});
assert(s == t);
Expand Down
30 changes: 18 additions & 12 deletions examples/guide/lib_examples.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@ proof fn test_seq1() {

proof fn test_set1() {
let s: Set<int> = set![0, 10, 20, 30, 40];
assert(s.contains(20));
assert(s.contains(30));
assert(!s.contains(60));

let s: ISet<int> = iset![0, 10, 20, 30, 40];
assert(s.finite());
assert(s.contains(20));
assert(s.contains(30));
Expand Down Expand Up @@ -52,26 +57,35 @@ proof fn test_seq2() {
}

proof fn test_set2() {
let s: Set<int> = Set::new(|i: int| 0 <= i <= 40 && i % 10 == 0);
let s_finite: Set<int> = Set::range(0, 41).filter(|i: int| i % 10 == 0);
assert(s_finite.contains(20));
assert(s_finite.contains(30));
assert(!s_finite.contains(60));

let s: ISet<int> = ISet::new(|i: int| 0 <= i <= 40 && i % 10 == 0);
assert(s.contains(20));
assert(s.contains(30));
assert(!s.contains(60));

let s_infinite: Set<int> = Set::new(|i: int| i % 10 == 0);
let s_infinite: ISet<int> = ISet::new(|i: int| i % 10 == 0);
assert(s_infinite.contains(20));
assert(s_infinite.contains(30));
assert(!s_infinite.contains(35));
}

proof fn test_map2() {
let m: Map<int, int> = Map::new(|i: int| 0 <= i <= 40 && i % 10 == 0, |i: int| 10 * i);
let m: IMap<int, int> = IMap::new(|i: int| 0 <= i <= 40 && i % 10 == 0, |i: int| 10 * i);
assert(m[20] == 200);
assert(m[30] == 300);

let m_infinite: Map<int, int> = Map::new(|i: int| i % 10 == 0, |i: int| 10 * i);
let m_infinite: IMap<int, int> = IMap::new(|i: int| i % 10 == 0, |i: int| 10 * i);
assert(m_infinite[20] == 200);
assert(m_infinite[30] == 300);
assert(m_infinite[90] == 900);

let m_finite: Map<int, int> = Map::new(Set::range(0, 41), |i: int| 10 * i);
assert(m_finite[20] == 200);
assert(m_finite[30] == 300);
}
// ANCHOR_END: new

Expand Down Expand Up @@ -130,8 +144,6 @@ proof fn test_eq2() {
/*
// ANCHOR: lemma_len_intersect_fail
pub proof fn lemma_len_intersect<A>(s1: Set<A>, s2: Set<A>)
requires
s1.finite(),
ensures
s1.intersect(s2).len() <= s1.len(),
decreases
Expand All @@ -149,8 +161,6 @@ pub proof fn lemma_len_intersect<A>(s1: Set<A>, s2: Set<A>)

// ANCHOR: lemma_len_intersect_sketch
pub proof fn lemma_len_intersect<A>(s1: Set<A>, s2: Set<A>)
requires
s1.finite(),
ensures
s1.intersect(s2).len() <= s1.len(),
decreases
Expand Down Expand Up @@ -187,8 +197,6 @@ pub proof fn lemma_len_intersect<A>(s1: Set<A>, s2: Set<A>)

// ANCHOR: lemma_len_intersect
pub proof fn lemma_len_intersect<A>(s1: Set<A>, s2: Set<A>)
requires
s1.finite(),
ensures
s1.intersect(s2).len() <= s1.len(),
decreases
Expand All @@ -207,8 +215,6 @@ pub proof fn lemma_len_intersect<A>(s1: Set<A>, s2: Set<A>)

// ANCHOR: lemma_len_intersect_commented
pub proof fn lemma_len_intersect<A>(s1: Set<A>, s2: Set<A>)
requires
s1.finite(),
ensures
s1.intersect(s2).len() <= s1.len(),
decreases s1.len(),
Expand Down
8 changes: 4 additions & 4 deletions examples/state_machines/dist_rwlock.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
use verus_builtin::*;
use verus_builtin_macros::*;
use vstd::atomic_ghost::*;
use vstd::map::*;
use vstd::imap::*;
use vstd::multiset::*;
use vstd::prelude::*;

Expand All @@ -23,8 +23,8 @@ tokenized_state_machine!{
#[sharding(variable)]
pub exc_locked: bool,

#[sharding(map)]
pub ref_counts: Map<int, int>,
#[sharding(imap)]
pub ref_counts: IMap<int, int>,

#[sharding(option)]
pub exc_pending: Option<int>,
Expand All @@ -45,7 +45,7 @@ tokenized_state_machine!{
init rc_width = rc_width;
init storage = Option::Some(init_t);
init exc_locked = false;
init ref_counts = Map::new(
init ref_counts = IMap::new(
|i| 0 <= i < rc_width,
|i| 0,
);
Expand Down
24 changes: 12 additions & 12 deletions examples/state_machines/flat_combine.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,20 +46,20 @@ tokenized_state_machine! {
#[sharding(constant)]
pub num_clients: nat,

#[sharding(map)]
pub clients: Map<nat, Client>,
#[sharding(imap)]
pub clients: IMap<nat, Client>,

#[sharding(map)]
pub slots: Map<nat, bool>,
#[sharding(imap)]
pub slots: IMap<nat, bool>,

#[sharding(variable)]
pub combiner: Combiner,

#[sharding(storage_map)]
pub requests: Map<nat, Request>,
#[sharding(storage_imap)]
pub requests: IMap<nat, Request>,

#[sharding(storage_map)]
pub responses: Map<nat, Response>,
#[sharding(storage_imap)]
pub responses: IMap<nat, Response>,
}

pub open spec fn valid_idx(self, i: nat) -> bool {
Expand Down Expand Up @@ -169,15 +169,15 @@ tokenized_state_machine! {
init!{
initialize(num_clients: nat) {
init num_clients = num_clients;
init clients = Map::new(
init clients = IMap::new(
|i: nat| 0 <= i && i < num_clients,
|i: nat| Client::Idle);
init slots = Map::new(
init slots = IMap::new(
|i: nat| 0 <= i && i < num_clients,
|i: nat| false);
init combiner = Combiner::Collecting { elems: Seq::empty() };
init requests = Map::empty();
init responses = Map::empty();
init requests = IMap::empty();
init responses = IMap::empty();
}
}

Expand Down
6 changes: 3 additions & 3 deletions examples/state_machines/interner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,14 @@ tokenized_state_machine! {InternSystem<T> {
#[sharding(variable)]
pub auth: Seq<T>,

#[sharding(persistent_map)]
pub frag: Map<int, T>,
#[sharding(persistent_imap)]
pub frag: IMap<int, T>,
}

init!{
empty() {
init auth = Seq::empty();
init frag = Map::empty();
init frag = IMap::empty();
}
}

Expand Down
20 changes: 10 additions & 10 deletions examples/state_machines/maps.rs
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
// rust_verify/tests/example.rs
#[allow(unused_imports)]
use verus_builtin::*;
use vstd::map::*;
use vstd::imap::*;
use vstd::{pervasive::*, *};

use verus_state_machines_macros::tokenized_state_machine;

tokenized_state_machine!(
X {
fields {
#[sharding(map)]
pub bool_map: Map<int, bool>,
#[sharding(imap)]
pub bool_map: IMap<int, bool>,

}

init!{
initialize(cond: bool) {
init bool_map = Map::empty().insert(5, true);
init bool_map = IMap::empty().insert(5, true);
}
}

Expand Down Expand Up @@ -52,11 +52,11 @@ tokenized_state_machine!(
#[sharding(variable)]
pub m: int,

#[sharding(map)]
pub map: Map<int, bool>,
#[sharding(imap)]
pub map: IMap<int, bool>,

#[sharding(storage_map)]
pub storage_map: Map<int, bool>,
#[sharding(storage_imap)]
pub storage_map: IMap<int, bool>,
}

#[invariant]
Expand All @@ -80,8 +80,8 @@ tokenized_state_machine!(
init!{
initialize(cond: bool) {
init m = 0;
init storage_map = Map::empty();
init map = Map::empty();
init storage_map = IMap::empty();
init map = IMap::empty();
}
}

Expand Down
Loading