// seq, set, multiset, map (finite) // iset, imap (potential infinite) method Main() { var m : map := map[20 := 2, 3 := 3, 1 := 7, 13 := 113]; var m2 : map := map[20 := 3, 3 := 3, 1 := 10]; print m + m2, "\n"; print m2 + m, "\n"; print m - m2.Keys, "\n"; print m2 - { 20 }, "\n"; assert m[20] == 2; assert m[1] == 7; assert 5 !in m; assert 3 in m; assert |m| == 4; var m' := m[3 := 7]; assert m'[3] == m'[1] == 7; print m'.Keys, "\n"; print m'.Values, "\n"; print m'.Items, "\n"; var mm := map x : int | 0 <= x <= 10 :: x * x; print mm, "\n"; }