1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
###################################################
# ...[expr] += ... #
###################################################
def side_effect1(tab):
#@ ensures result == 0
#@ ensures len(tab) == len(old(tab)) + 1
tab.append(1)
return 0
a = [0]
tab = []
a[side_effect1(tab)] += 1
#@ assert a[0] == 1
#@ assert len(tab) == 1
###################################################
# expr[...] += ... #
###################################################
def side_effect2(tab):
#@ ensures result[0] == 0
#@ ensures len(result) == 1
#@ ensures len(tab) == len(old(tab)) + 1
tab.append(1)
return [0]
tab.clear()
side_effect2(tab)[0] += 1
#@ assert len(tab) == 1
###################################################
# expr[:] #
###################################################
def side_effect3(tab):
#@ ensures len(result) == 3
#@ ensures len(tab) == len(old(tab)) + 1
tab.append(1)
return [0, 1, 2]
tab.clear()
side_effect3(tab)[:]
#@ assert len(tab) == 1
|