a==adropV0V1aaddaV0V1adropV0a+V1c1Ia<V1alengthV0Aa<=c0V1F
empty_shape
a==ainteradropV2V3V4ainteradropV2a+V3c1V4INamemaV2V3V4Ia<V3alengthV2Aa<=c0V3F
a==ainterV7adropV5V6ainterV7adropV5a+V6c1INamemaV5V6V7Ia<V6alengthV5Aa<=c0V6F
aincreasingaa
aincreasingab
a<=c0alengthaaAa<=c0c0
loop invariant init
a<=c0alengthabAa<=c0c0
a=a+c0acardinalainteradropaac0adropabc0accaaab
a<=c0ai
a<=aialengthaa
a<=c0aj
a<=ajalengthab
a=a+acacardinalainteradropaaaiadropabajaccaaab
a<aialengthaa
a<ajalengthab
a<ajalengthabAa<=c0aj
index in array bounds
a<aialengthaaAa<=c0ai
a<aaaaiaabaj
a=ai1a+aic1
a<a-a+a-alengthaaai1alengthabaja-a+a-alengthaaaialengthabajAa<=c0a-a+a-alengthaaaialengthabaj
loop variant decrease
a<=ai1alengthaaAa<=c0ai1
loop invariant preservation
a<=ajalengthabAa<=c0aj
a=a+acacardinalainteradropaaai1adropabajaccaaab
Na<aaaaiaabaj
a>aaaaiaabaj
a=aj1a+ajc1
a<a-a+a-alengthaaaialengthabaj1a-a+a-alengthaaaialengthabajAa<=c0a-a+a-alengthaaaialengthabaj
a<=aialengthaaAa<=c0ai
a<=aj1alengthabAa<=c0aj1
a=a+acacardinalainteradropaaaiadropabaj1accaaab
Na>aaaaiaabaj
a==ainteradropaaaiadropabajaaddaaaaiainteradropaaa+aic1adropaba+ajc1
assertion
Namemaaaaiadropaaa+aic1
a=ac1a+acc1
a<a-a+a-alengthaaai1alengthabaj1a-a+a-alengthaaaialengthabajAa<=c0a-a+a-alengthaaaialengthabaj
a=a+ac1acardinalainteradropaaai1adropabaj1accaaab
Na<ajalengthabAa<aialengthaa
a=acaccaaab
postcondition
ia=V10accV8V9iia=a+V15acardinalainteradropV8V13adropV9V14accV8V9Aa<=V14alengthV9Aa<=c0V14Aa<=V13alengthV8Aa<=c0V13Aa<a-a+a-alengthV8V13alengthV9V14a-a+a-alengthV8V12alengthV9V11Aa<=c0a-a+a-alengthV8V12alengthV9V11Ia=V15a+V10c1FIa=V14a+V11c1FIa=V13a+V12c1FANamemaV8V12adropV8a+V12c1Aa==ainteradropV8V12adropV9V11aaddaV8V12ainteradropV8a+V12c1adropV9a+V11c1a=a+V10acardinalainteradropV8V12adropV9V16accV8V9Aa<=V16alengthV9Aa<=c0V16Aa<=V12alengthV8Aa<=c0V12Aa<a-a+a-alengthV8V12alengthV9V16a-a+a-alengthV8V12alengthV9V11Aa<=c0a-a+a-alengthV8V12alengthV9V11Ia=V16a+V11c1Fa>aV8V12aV9V11Aa<V12alengthV8Aa<=c0V12Aa<V11alengthV9Aa<=c0V11a=a+V10acardinalainteradropV8V17adropV9V11accV8V9Aa<=V11alengthV9Aa<=c0V11Aa<=V17alengthV8Aa<=c0V17Aa<a-a+a-alengthV8V17alengthV9V11a-a+a-alengthV8V12alengthV9V11Aa<=c0a-a+a-alengthV8V12alengthV9V11Ia=V17a+V12c1Fa<aV8V12aV9V11Aa<V12alengthV8Aa<=c0V12Aa<V11alengthV9Aa<=c0V11a<V11alengthV9Aa<V12alengthV8Ia=a+V10acardinalainteradropV8V12adropV9V11accV8V9Aa<=V11alengthV9Aa<=c0V11Aa<=V12alengthV8A
VC for coincidence_count
a<V1alengthV0Aa<=c0V1Aa<=V2alengthV0Aa<=V3V2Aa<=c0V3Aa<a-V2V3a-V2V1Aa<=c0a-V2V1La+V1c1INa>=V1V2Ia<=V2alengthV0Aa<=V1V2Aa<=c0V1F
VC for bagofsub
ia=abagofsubV0V1V2aaddaV0V1abagofsubV0a+V1c1V2a=abagofsubV0V1V2aempty_baga>=V1V2Ia<=V2alengthV0Aa<=V1V2Aa<=c0V1F
a==ainteradropV3V4V5ainteradropV3a+V4c1V5INamemaV3V4V5Ia<V4alengthV3Aa<=c0V4F
a==ainterV8adropV6V7ainterV8adropV6a+V7c1INamemaV6V7V8Ia<V7alengthV6Aa<=c0V7F
NamemV11adropV9V10INamemV11adropV9a+V10c1ONa<V10a-alengthV9c1Aa<V11aV9V12Aa<V12alengthV9Aa<=c0V12AaincreasingV9Aa<a-alengthV9V12a-alengthV9V10Aa<=c0a-alengthV9V10La+V10c1Ia<V10a-alengthV9c1Ia<V11aV9V10Aa<V10alengthV9Aa<=c0V10AaincreasingV9F
VC for bagofincreasing
NamemV11adropV9V10Ia<V11aV9V10Ia<V10alengthV9Aa<=c0V10IaincreasingV9F
a=a+c0acardainteradropaac0adropabc0acardainterabagofaaabagofab
a=a+acacardainteradropaaaiadropabajacardainterabagofaaabagofab
a=a+acacardainteradropaaai1adropabajacardainterabagofaaabagofab
a=a+acacardainteradropaaaiadropabaj1acardainterabagofaaabagofab
a=a+ac1acardainteradropaaai1adropabaj1acardainterabagofaaabagofab
a=acacardainterabagofaaabagofab
ia=V14acardainterabagofV12abagofV13iia=a+V19acardainteradropV12V17adropV13V18acardainterabagofV12abagofV13Aa<=V18alengthV13Aa<=c0V18Aa<=V17alengthV12Aa<=c0V17Aa<a-a+a-alengthV12V17alengthV13V18a-a+a-alengthV12V16alengthV13V15Aa<=c0a-a+a-alengthV12V16alengthV13V15Ia=V19a+V14c1FIa=V18a+V15c1FIa=V17a+V16c1FAa==ainteradropV12V16adropV13V15aaddaV12V16ainteradropV12a+V16c1adropV13a+V15c1a=a+V14acardainteradropV12V16adropV13V20acardainterabagofV12abagofV13Aa<=V20alengthV13Aa<=c0V20Aa<=V16alengthV12Aa<=c0V16Aa<a-a+a-alengthV12V16alengthV13V20a-a+a-alengthV12V16alengthV13V15Aa<=c0a-a+a-alengthV12V16alengthV13V15Ia=V20a+V15c1Fa>aV12V16aV13V15Aa<V16alengthV12Aa<=c0V16Aa<V15alengthV13Aa<=c0V15a=a+V14acardainteradropV12V21adropV13V15acardainterabagofV12abagofV13Aa<=V15alengthV13Aa<=c0V15Aa<=V21alengthV12Aa<=c0V21Aa<a-a+a-alengthV12V21alengthV13V15a-a+a-alengthV12V16alengthV13V15Aa<=c0a-a+a-alengthV12V16alengthV13V15Ia=V21a+V16c1Fa<aV12V16aV13V15Aa<V16alengthV12Aa<=c0V16Aa<V15alengthV13Aa<=c0V15a<V15alengthV13Aa<V16alength

e46d203efedf478d2d6b7417b1afc8e6 1H0
6102dc9d582916d82e0179bcb00ce6e2 1H2H0
7c6713259b7dfe887ea51c979fffb7fe 1H3H2H0
bdc2724914c9e05d3389402d7a64f70e 46H45H3H2H0
aaaaf9b21960506cd5fa37453cff882c 7H6H5H4H3H2H0
d513b8255a37608e93639c0578f6debb 7H8H6H5H4H3H2H0
7e4cf4659eae91af0ab1c85d5c2a0f60 7H9H8H6H5H4H3H2H0
95824a7bb4a3ee2cb1e7ac865303fd87 18H17H16H15H14H13H12H11H10H5H4H3H2H0
9fb13a85f6eda35f75852ac1b6d34e68 18H19H16H15H14H13H12H11H10H5H4H3H2H0
251c09a6c3482051a8271709481abec9 23H22H21H20H16H15H14H13H12H11H10H5H4H3H2H0
3e174d9944d894ea6a7c74d8d5b9547d 25H24H21H20H16H15H14H13H12H11H10H5H4H3H2H0
a7d34e5f234ad476acb6409e82de7d6c 25H26H24H21H20H16H15H14H13H12H11H10H5H4H3H2H0
2316766cad90d0a1bdc76225b331e268 25H27H26H24H21H20H16H15H14H13H12H11H10H5H4H3H2H0
a3ef723c118b8f22d290161d436c312b 18H17H28H16H15H14H13H12H11H10H5H4H3H2H0
973e0abc560edf8ae4d6adf2ef84fcec 18H19H28H16H15H14H13H12H11H10H5H4H3H2H0
206af02b60e87850580e509822c3f5f0 23H31H30H29H28H16H15H14H13H12H11H10H5H4H3H2H0
53572966310ad24d66360be6a2f9159b 25H32H30H29H28H16H15H14H13H12H11H10H5H4H3H2H0
c8c2211b15aea8391c519154b9e8234c 25H33H32H30H29H28H16H15H14H13H12H11H10H5H4H3H2H0
a5d30301c5509f69e22f95c6fd9be3e9 25H34H33H32H30H29H28H16H15H14H13H12H11H10H5H4H3H2H0
208b1f9b789d91037ab0284542aacaa5 37H36H35H28H16H15H14H13H12H11H10H5H4H3H2H0
befcf79f86097bfa780092ad331bf03c 37H38H36H35H28H16H15H14H13H12H11H10H5H4H3H2H0
9edc4981b718f052094e0a4603071325 23H40H39H30H21H38H36H35H28H16H15H14H13H12H11H10H5H4H3H2H0
f009e7f5d8935aa7100a307831efed19 25H24H39H30H21H38H36H35H28H16H15H14H13H12H11H10H5H4H3H2H0
9c868a4e5846e78597a2b804e0f8a7af 25H33H24H39H30H21H38H36H35H28H16H15H14H13H12H11H10H5H4H3H2H0
a47374dca5516416a4a879544dcc42b6 25H41H33H24H39H30H21H38H36H35H28H16H15H14H13H12H11H10H5H4H3H2H0
06c8f523aefe44b8dac33a45cbec005c 44H43H42H14H13H12H11H10H5H4H3H2H0
72a08fee9373ef7286e4030a5be9035d 48H47
011a89bb99e61c9c6bebadf1ebc57dc3 1H50H49
0cc6ceb2ebdd50ab9f01a8d419bb5a1c 1H51H50H49
84c21d8dd11ab19eedca40503d2c8fd9 53H52H51H50H49
732f8603a97295a936207e9e13a4e335 46H61H54H51H50H49
eaea964b66849efeb87b9c6beee51ae3 7H6H5H4H54H51H50H49
19de8d999c0c9388f14d1d7943a77f1f 7H8H6H5H4H54H51H50H49
519a9e29666a1fd8b8978f3ebc101d09 7H55H8H6H5H4H54H51H50H49
9f0dcb043562cca14b684c34695e4329 18H17H16H15H56H13H12H11H10H5H4H54H51H50H49
f589419bfae216a1ce46243cc29c866b 18H19H16H15H56H13H12H11H10H5H4H54H51H50H49
edb6de9b0c802a3ad4a495259b7e4aa9 23H22H21H20H16H15H56H13H12H11H10H5H4H54H51H50H49
76ce7a3ba4605bfaeea8c54f53fef4c6 25H24H21H20H16H15H56H13H12H11H10H5H4H54H51H50H49
13452e6d80fd85301458a07bd4c4a3bb 25H26H24H21H20H16H15H56H13H12H11H10H5H4H54H51H50H49
ac8ebc84a34d75ffe68d0658121dc7cd 25H57H26H24H21H20H16H15H56H13H12H11H10H5H4H54H51H50H49
092bb118034bbd99b5f04b6a377adeab 18H17H28H16H15H56H13H12H11H10H5H4H54H51H50H49
3881db2ba9f1596d18ef740bdba15387 18H19H28H16H15H56H13H12H11H10H5H4H54H51H50H49
85e005446a2a4b03290d0338384acac3 23H31H30H29H28H16H15H56H13H12H11H10H5H4H54H51H50H49
cd9c33a261b8c63c0b2a579afdf48191 25H32H30H29H28H16H15H56H13H12H11H10H5H4H54H51H50H49
e1fd41c9b1d89115f442bc33970e9b5d 25H33H32H30H29H28H16H15H56H13H12H11H10H5H4H54H51H50H49
f34025c7b417ea6e212cbc9dc06ac2e2 25H58H33H32H30H29H28H16H15H56H13H12H11H10H5H4H54H51H50H49
de18e8e58b178364101cd3427e687dca 37H36H35H28H16H15H56H13H12H11H10H5H4H54H51H50H49
dd85114316640efe3a26537191620c39 23H40H39H30H21H36H35H28H16H15H56H13H12H11H10H5H4H54H51H50H49
b3afe95c314a1040aaba4f04e59c08ae 25H24H39H30H21H36H35H28H16H15H56H13H12H11H10H5H4H54H51H50H49
da282bb56860af2ff519a829bf1c4387 25H33H24H39H30H21H36H35H28H16H15H56H13H12H11H10H5H4H54H51H50H49
c6909c67ae5e22b325d5226bb2756a24 25H59H33H24H39H30H21H36H35H28H16H15H56H13H12H11H10H5H4H54H51H50H49
1154fcf92637f5e76177ae741c5ac985 44H60H42H56H13H12H11H10H5H4H54H51H50H49
