module M use import int.Int use import module ref.Ref (* Side effect in expressions (Bart Jacobs' tricky example) *) parameter b : ref int parameter b1 : ref int parameter b2 : ref int let f () = {} b := 1 - !b; !b { result = !b and !b = 1 - old !b } let k () = {} begin b := 0; b1 := (1 - (f ())) + (f ()); b2 := (f ()) * (1 - (f ())) end { !b1 = 0 and !b2 = 1 } end (* Local Variables: compile-command: "unset LANG; make -C ../../.. bench/programs/good/see" End: *)