a>=anc0
array creation size
a=aausedV0aFalseIa<V0anAa<=c0V0F
a=alengthausedan
a<=c0a+a-anc1c1
a<=c0ax
a<axan
a=aausedaxaTrue
a=aaaa@ea=a@V1V2V2FaxaxAa<a@ea=a@V3V4V4FaxanAa<=c0a@ea=a@V5V6V6FaxAamemaxaa
loop invariant init
a=aaaa@ea=a@V2V3V3FV1V1Aa<a@ea=a@V4V5V5FV1anAa<=c0a@ea=a@V6V7V7FV1AamemV1aaIa=aausedV1aTrueIa<V1anAa<=c0V1F
a<=c0aj
a<ajc0
a<=c0aaaaj
a<aaaajan
a=aaaa@ea=a@V8V9V9FaaaajaaaajAa<a@ea=a@V10V11V11FaaaajanAa<=c0a@ea=a@V12V13V13FaaaajAa=aausedaaaajaTrue
a=alengthaused1alengthaused
a<=c0ai
a<=aia-anc1
a=aaaa@aidxV1V1Aa<a@aidxV1anAa<=c0a@aidxV1AamemV1aaIa=aaused1V1aTrueIa<V1anAa<=c0V1F
a=aaaa@aidxaaaV2aaaV2Aa<a@aidxaaaV2anAa<=c0a@aidxaaaV2Aa=aaused1aaaV2aTrueIa<aaaV2anAa<=c0aaaV2Ia<V2aiAa<=c0V2F
a<aialengthaaAa<=c0ai
index in array bounds
a<axalengthaused1Aa<=c0ax
a=alengthaused2alengthaused1
a=aeltsaused2asetaeltsaused1axaTrue
a=aused2aaused1axaTrue
a=aidx1asetaidxaxai
a<=c0ax1
a<ax1an
a=aaused2ax1aTrue
a=aaaa@aidx1ax1ax1Aa<a@aidx1ax1anAa<=c0a@aidx1ax1Aamemax1aa
loop invariant preservation
a=aaaa@aidx1V3V3Aa<a@aidx1V3anAa<=c0a@aidx1V3AamemV3aaIa=aaused2V3aTrueIa<V3anAa<=c0V3F
a<aja+aic1
a=aaaa@aidx1aaaajaaaajAa<a@aidx1aaaajanAa<=c0a@aidx1aaaajAa=aaused2aaaajaTrue
Na<axanAa<=c0ax
a=aaused1ax1aTrue
a=aaaa@aidxax1ax1Aa<a@aidxax1anAa<=c0a@aidxax1Aamemax1aa
a=aaaa@aidxV3V3Aa<a@aidxV3anAa<=c0a@aidxV3AamemV3aaIa=aaused1V3aTrueIa<V3anAa<=c0V3F
a=aaaa@aidxaaaajaaaajAa<a@aidxaaaajanAa<=c0a@aidxaaaajAa=aaused1aaaajaTrue
a=aaaa@aidxaaaV2aaaV2Aa<a@aidxaaaV2anAa<=c0a@aidxaaaV2Aa=aaused1aaaV2aTrueIa<aaaV2anAa<=c0aaaV2Ia<V2a+a-anc1c1Aa<=c0V2F
a<=c0anAa<=c0c0
a<a@aidxajanAa<=c0a@aidxajAa=aaused1ajaTrue
a<a@aidxV3anAa<=c0a@aidxV3Aa=aaused1V3aTrueIa<V3c0Aa<=c0V3F
iNa=aaaV4anIa<V4c0Aa<=c0V4Fa=aaac-1anAa<c-1anAa<=c0c-1a>=c-1c0
a<=c0ar
a<=aran
a<a@aidxV3anAa<=c0a@aidxV3Aa=aaused1V3aTrueIa<V3arAa<=c0V3F
iNa=aaaV4anIa<V4arAa<=c0V4Fa=aaaaposnanAa<aposnanAa<=c0aposna>=aposnc0
a<aran
a<aralengthaused1Aa<=c0ar
a=iaFalseaaused1ara<aranaTrue
a<aralengthaaAa<=c0ar
a=aaaaran
a=aposn1ar
a=ar1a+arc1
a<a-anar1a-anarAa<=c0a-anar
loop variant decrease
a<=ar1anAa<=c0ar1
a<ajar1
a<a@aidxV5anAa<=c0a@aidxV5Aa=aaused1V5aTrueIa<V5ar1Aa<=c0V5F
iNa=aaaV6anIa<V6ar1Aa<=c0V6Fa=aaaaposn1anAa<aposn1anAa<=c0aposn1a>=aposn1c0
Na=aaaaran
iNa=aaaV6anIa<V6ar1Aa<=c0V6Fa=aaaaposnanAa<aposnanAa<=c0aposna>=aposnc0
Na=iaFalseaaused1ara<aranaTrue
a=aran
a>=aposnc0
a<ana+anc1Aa<=c0an
precondition
a<aia+anc1
a<a@asetaidxanaposnaianAa<=c0a@asetaidxanaposnai
a=a@V5V6a@V5V7Aa<V7a+anc1Aa<V6V7Aa<=c0V6ELasetaidxanaposnONa>=aposnc0Aa=aran
a<=aralengthaaAa<=c0ar
postcondition
Namemaraa
a<axar
amemaxaa
a>c0a+a-anc1c1
iamemV3aaIa<V3V2Aa<=c0V3FANamemV2aaAa<=V2alengthaaAa<=c0V2Ia=a@V4V5a@V4V6Aa<V6a+anc1Aa<V5V6Aa<=c0V5ELasetea=a@V7V8V8FanV1ONa>=V1c0Aa=V2anAa<a@V9V11anAa<=c0a@V9V11Ia<V11V10Aa<=c0V11FAa<anV10Aa<=c0anLa+anc1Lasetea=a@V12V13V13FanV1Ia>=V1c0Aa=V2aniiNa=aaaV15anIa<V15V14Aa<=c0V15Fa=aaaV1anAa<V1anAa<=c0V1a>=V1c0Aa<a@ea=a@V17V18V18FV16anAa<=c0a@ea=a@V19V20V20FV16Aa=aausedV16aTrueIa<V16V14Aa<=c0V16FAa<=V14anAa<=c0V14Aa<a-anV14a-anV2Aa<=c0a-anV2Ia=V14a+V2c1FiNa=aaaV23anIa<V23V22Aa<=c0V23Fa=aaaV21anAa<V21anAa<=c0V21a>=V21c0Aa<a@ea=a@V25V26V26FV24anAa<=c0a@ea=a@V27V28V28FV24Aa=aausedV24aTrueIa<V24V22Aa<=c0V24FAa<=V22anAa<=c0V22Aa<a-anV22a-anV2Aa<=c0a-anV2Ia=V22a+V2c1FIa=V21V2Fa=aaaV2anAa<V2alengthaaAa<=c0V2a=iaFalseaausedV2a<V2anaTrueAa<V2alengthausedAa<=c0V2Ia<V2anIiNa=aaaV29anIa<V29V2Aa<=c0V29Fa=aaaV1anAa<V1anAa<=c0V1a>=V1c0Aa<a@ea=a@V31V32V32FV30anAa<=c0a@ea=a@V33V34V34FV30Aa=aausedV30aTrueIa<V30V2Aa<=c0V30FAa<=V2anAa<=c0V2FAiNa=aaaV35anIa<V35c0Aa<=c0V35Fa=aaac-1anAa<c-1anAa<=c0c-1a>=c-1c0Aa<a@ea=a@V37V38V38FV36anAa<=
out of loop bounds
iamemV6V0Ia<V6V5Aa<=c0V6FANamemV5V0Aa<=V5alengthV0Aa<=c0V5Ia=a@V7V8a@V7V9Aa<V9a+V1c1Aa<V8V9Aa<=c0V8ELasetea=a@V10V11V11FV1V4ONa>=V4c0Aa=V5V1Aa<a@V12V14V1Aa<=c0a@V12V14Ia<V14V13Aa<=c0V14FAa<V1V13Aa<=c0V1La+V1c1Lasetea=a@V15V16V16FV1V4Ia>=V4c0Aa=V5V1iiNa=aV0V18V1Ia<V18V17Aa<=c0V18Fa=aV0V4V1Aa<V4V1Aa<=c0V4a>=V4c0Aa<a@ea=a@V20V21V21FV19V1Aa<=c0a@ea=a@V22V23V23FV19Aa=aV2V19aTrueIa<V19V17Aa<=c0V19FAa<=V17V1Aa<=c0V17Aa<a-V1V17a-V1V5Aa<=c0a-V1V5Ia=V17a+V5c1FiNa=aV0V26V1Ia<V26V25Aa<=c0V26Fa=aV0V24V1Aa<V24V1Aa<=c0V24a>=V24c0Aa<a@ea=a@V28V29V29FV27V1Aa<=c0a@ea=a@V30V31V31FV27Aa=aV2V27aTrueIa<V27V25Aa<=c0V27FAa<=V25V1Aa<=c0V25Aa<a-V1V25a-V1V5Aa<=c0a-V1V5Ia=V25a+V5c1FIa=V24V5Fa=aV0V5V1Aa<V5alengthV0Aa<=c0V5a=iaFalseaV2V5a<V5V1aTrueAa<V5alengthV2Aa<=c0V5Ia<V5V1IiNa=aV0V32V1Ia<V32V5Aa<=c0V32Fa=aV0V4V1Aa<V4V1Aa<=c0V4a>=V4c0Aa<a@ea=a@V34V35V35FV33V1Aa<=c0a@ea=a@V36V37V37FV33Aa=aV2V33aTrueIa<V33V5Aa<=c0V33FAa<=V5V1Aa<=c0V5FAiNa=aV0V38V1Ia<V38c0Aa<=c0V38Fa=aV0c-1V1Aa<c-1V1Aa<=c0c-1a>=c-1c0Aa<a@ea=a@V40V41V41FV39V1Aa<=c0a@ea=a@V
VC for mex
amemaxaaqamemaxaa
a<=c0c0
a<=c0an
amemV0aaIamemV0aaF
amemV1aaIamemV1aaF
a=aaaaaaajaaaaj
amemV0aaqamemV0aaF
a=alengthaaalengthaa1
a<=aian
amemV0aa1qamemV0aaF
a=aaaaaaV1aaaV1Ia<aaaV1anAa<=c0aaaV1Ia<V1aiAa<=c0V1F
a<aian
a>=axanINa<axc0
a=ai1a+aic1
a<a-ananumofaplacedaac0ana-ananumofaplacedaac0anAa<=c0a-ananumofaplacedaac0anAa=a-anaia-anai1Oa<a-anai1a-anaiAa<=c0a-anai
a<=ai1anAa<=c0ai1
amemax1aa1qamemax1aa
amemV2aa1qamemV2aaF
a<ajai1
NNNa<axc0
Na>=axan
a<axai
a<axalengthaaAa<=c0axAa<aialengthaaAa<=c0ai
a=alengthaa2alengthaa
aexchangeaaaa2aiax
a<a-ananumofaplacedaa2c0ana-ananumofaplacedaac0anAa<=c0a-ananumofaplacedaac0anAa=a-anaia-anai1Oa<a-anai1a-anaiAa<=c0a-anai
amemax1aa1qamemax1aa2
amemV0aa1IamemV0aaF
amemV1aaIamemV1aa1F
a=aaaaaaV2aaaV2Ia<aaaV2anAa<=c0aaaV2Ia<V2aiAa<=c0V2F
a<=c0ai1
a<=ai1an
amemV3aa1IamemV3aa2F
amemV4aa2IamemV4aa1F
a<=c0aaa2aj
a<aaa2ajan
a=aaa2aaa2ajaaa2aj
amemV2aa1qamemV2aa2F
Na<axai
a<axalengthaaAa<=c0ax
a=aaaaxax
Na=aaaaxax
a<a-ananumofaplacedaa2c0ana-ananumofaplacedaac0anAa<=c0a-ananumofaplacedaac0anAtOa<a-anaia-anaiAa<=c0a-anai
a<=aianAa<=c0ai
a<ajai
Na<aian
a<ajan
assertion
a=aaaV3V3Ia<V3anAa<=c0V3Laaa1V2Ia<V2anAa<=c0V2F
a=aaaajaj
a<=ai1a-anc1
a=aaaV4V4Ia<V4ai1Aa<=c0V4F
a<ai1alengthaaAa<=c0ai1
Na=aaaai1ai1
a<=ai1alengthaaAa<=c0ai1
Namemai1aa1
a<axai1
asserted formula
amemaxaa1
NNa=aaaai1ai1
a<aja+ai1c1
a=aaaV4V4Ia<V4a+a-anc1c1Aa<=c0V4F
a<=analengthaaAa<=c0an
Namemanaa1
amemV4aa1Ia<V4anAa<=c0V4FANamemanaa1Aa<=analengthaaAa<=c0an
iamemV5V0Ia<V5V1Aa<=c0V5FANamemV1V0Aa<=V1alengthV3Aa<=c0V1Ia>c0a+V4c1AamemV6V0Ia<V6V1Aa<=c0V6FANamemV1V0Aa<=V1alengthV3Aa<=c0V1Ia=aV3V7V7Ia<V7a+V4c1Aa<=c0V7FAia=aV3V9V9Ia<V9a+V8c1Aa<=c0V9FamemV10V0Ia<V10V8Aa<=c0V10FANamemV8V0Aa<=V8alengthV3Aa<=c0V8Na=aV3V8V8Aa<V8alengthV3Aa<=c0V8Ia=aV3V11V11Ia<V11V8Aa<=c0V11FAa<=V8V4Aa<=c0V8FAa=aV3V12V12Ia<V12c0Aa<=c0V12FIa<=c0a+V4c1La-V1c1Aa=aV3V14V14Ia<V14V1Aa<=c0V14LaV0V13Ia<V13V1Aa<=c0V13Fiiia=aV16aV16V17aV16V17Ia<aV16V17V1Aa<=c0aV16V17Ia<V17V2Aa<=c0V17FAamemV18V0qamemV18V16FAa<=V2V1Aa<=c0V2Aa<a-V1anumofaplacedV16c0V1a-V1anumofaplacedV3c0V1Aa<=c0a-V1anumofaplacedV3c0V1AtOa<a-V1V2a-V1V2Aa<=c0a-V1V2IaexchangeV3V16V2V15Ia=alengthV16alengthV3FAa<V15alengthV3Aa<=c0V15Aa<V2alengthV3Aa<=c0V2a=aV3aV3V20aV3V20Ia<aV3V20V1Aa<=c0aV3V20Ia<V20V19Aa<=c0V20FAamemV21V0qamemV21V3FAa<=V19V1Aa<=c0V19Aa<a-V1anumofaplacedV3c0V1a-V1anumofaplacedV3c0V1Aa<=c0a-V1anumofaplacedV3c0V1Aa=a-V1V2a-V1V19Oa<a-V1V19a-V1V2Aa<=c0a-V1V2Ia=V19a+V2c1Fa=aV3V15V15Aa<V15alengthV3Aa<=c0V15a=aV22aV22V24aV22V24Ia<aV

75a6e7a1dcc5674aa36dcf9269b87be6 82H81
76960e84e153a297db7bac4ab831e158 1H0
ee40afe5d1a375956a40f2ea39a0d752 9H8H7H6H5H4H3H2
1df28f50ae913dd969efce23b502e5a1 9H15H14H13H12H11H10H4H3H2
ef353b5f78cc17b787beb3ed0dc12d08 22H21H20H19H18H17H16H4H3H2
58973d606790fbf93563f544f7216c8f 22H23H6H5H20H19H18H17H16H4H3H2
d4ff8e181e3b9bb1410cf2b6ba19dbf2 32H31H30H29H28H27H26H25H24H6H5H20H19H18H17H16H4H3H2
7effbf70e1dc360eb70820612c9dd05b 32H35H14H13H34H11H33H27H26H25H24H6H5H20H19H18H17H16H4H3H2
be79a29a38ef136aeefe86d6d9cd4d80 32H38H37H29H28H36H20H19H18H17H16H4H3H2
b2c066468197849d167c42d640d1bfb5 32H40H14H13H34H11H39H36H20H19H18H17H16H4H3H2
21c6977cb11887a42a3ac48c20b460ca 9H42H41H19H16H4H3H2
7cfb254a0f77b313bdb45406f33c0312 9H43H12H11H42H41H19H16H4H3H2
a2aa636785a522540a37400c37693f4e 9H45H44H42H41H19H16H4H3H2
b9cb61e0b5f4ab5eab75eac28070ab31 22H51H50H49H48H47H46H41H19H16H4H3H2
e6b5d46c832d8a30128a325f73a2a7f3 22H53H52H49H48H47H46H41H19H16H4H3H2
594d383968437c9a9e8876491c81dd85 58H57H56H55H54H52H49H48H47H46H41H19H16H4H3H2
0c0483021829aff73680ee16af75d88f 32H59H56H55H54H52H49H48H47H46H41H19H16H4H3H2
cd316f812f0ac2036587ea719a74c35f 32H43H60H11H59H56H55H54H52H49H48H47H46H41H19H16H4H3H2
f43778cda6c1f8a5fcf7aac43f151e62 32H62H61H59H56H55H54H52H49H48H47H46H41H19H16H4H3H2
b09feb8017960833be0680e69d69a820 58H57H56H63H52H49H48H47H46H41H19H16H4H3H2
dc8c33623dcb9f5cc99233640bbd8013 32H59H56H63H52H49H48H47H46H41H19H16H4H3H2
2c00d756e4c4621604de94d34cabfe6e 32H43H60H11H59H56H63H52H49H48H47H46H41H19H16H4H3H2
9a7a4e3dd9053e6c89e63d709e20a783 32H64H61H59H56H63H52H49H48H47H46H41H19H16H4H3H2
60269172652172dc271257f05d74ea4c 69H68H67H66H65H49H48H47H46H41H19H16H4H3H2
424d5ff93380faa77b012b7cb971c3bb 69H71H70H17H68H67H66H65H49H48H47H46H41H19H16H4H3H2
954d58b4bdae3bf2a26af6eb4ea5c988 74H73H72H65H49H48H47H46H41H19H16H4H3H2
b35a65fd29664172c14b99ae67fba0bd 74H75H73H72H65H49H48H47H46H41H19H16H4H3H2
63319f6aa7afe07031351d0b75ed4b23 74H77H76H5H75H73H72H65H49H48H47H46H41H19H16H4H3H2
2c0f57bc59cfacf9525b2c0d86e955be 80H79H78H3H2
8205ecd68f2dcf75235bc856c149248a 82H148
a643e75e6739ee7ae711897a88346357 9H42
58483b78e260c1a255eace698985f4bb 9H83H42
d65d2a34da276304fcf63156e664a226 9H88H14H13H12H11H89H42
0a0adcb60ae523c2cb70a0673d2cada5 9H88H14H13H12H11H87H86H85H84
61924cc27e0e68402bc6c24d4ca71844 22H21H94H93H92H91H17H90
731fc444bc2a36070ca3755c1a35b7a5 58H97H96H95H94H93H92H91H17H90
7af780a409e1e07b1c42cec26ea03b46 32H98H96H95H94H93H92H91H17H90
a02de70e1994e206592fd1e495f2ff6e 32H99H98H96H95H94H93H92H91H17H90
b7ec9c76119a7325d372c0000c5586b7 32H88H14H13H101H11H100H98H96H95H94H93H92H91H17H90
9f33b741be1d1bcd0d14c0994b0973c0 69H105H104H103H102H94H93H92H91H17H90
358d61ed7b51bd15061b5b5142771158 58H108H96H107H106H104H103H102H94H93H92H91H17H90
a94e1e8802d2e65715bce530651f861c 32H98H96H107H106H104H103H102H94H93H92H91H17H90
74c06c7f54162966fba0d3a7367b5a6c 32H109H98H96H107H106H104H103H102H94H93H92H91H17H90
07fd36113c62c9d6528b8d922d2e52c5 32H119H118H117H101H11H120H98H96H107H106H104H103H102H94H93H92H91H17H90
cb1c52632fcdc53f81df284bde206cc7 32H119H118H117H101H11H116H115H114H113H96H107H106H104H103H102H94H112H111H110H91H17H90
6a6aaa4c2a787cd5a377a6660f653a0d 22H122H121H103H102H94H93H92H91H17H90
6bbd89890325448407e010e8f3b035d2 58H97H96H123H121H103H102H94H93H92H91H17H90
20397dc79b24be85ed8b3d68bd708349 32H98H96H123H121H103H102H94H93H92H91H17H90
8bdf287b84ca3be4498f8d26d0b1e2e4 32H99H98H96H123H121H103H102H94H93H92H91H17H90
99c9897cf8ca436658661b742c4a7255 32H88H14H13H101H11H100H98H96H123H121H103H102H94H93H92H91H17H90
60635715bc9f657b28af887076089737 69H105H124H121H103H102H94H93H92H91H17H90
f812fc13dc8b2231e9df284f7f83aaaf 58H125H107H106H124H121H103H102H94H93H92H91H17H90
6fd3ffc7c432eebc5d260f6d26e821f4 32H126H107H106H124H121H103H102H94H93H92H91H17H90
5bff346fa1d7afceb57d933134519d4a 32H109H126H107H106H124H121H103H102H94H93H92H91H17H90
e71f713d673a599f8471c7a6046ac03b 32H119H118H117H127H11H120H126H107H106H124H121H103H102H94H93H92H91H17H90
d3b50f72f56d256560a6de5870ff6362 130H123H6H5H129H11H128H93H92H91H17H90
ce3f4d8862112cb6fe4fd8fe15f1f01b 9H132H12H11H4H131H128H93H92H91H17H90
72305a1bf0c6d588878ae51ca720691b 22H135H134H133H113H4H131H128H93H92H91H17H90
399c1a4e7c8a123664b1e827ffbb6747 74H137H136H134H133H113H4H131H128H93H92H91H17H90
b344cfa802af644ea30c83454da28f92 74H138H137H136H134H133H113H4H131H128H93H92H91H17H90
868ddeb7749471f23318b7983c5274da 74H141H139H5H138H137H136H134H133H113H4H131H128H93H92H91H17H90
7991cef7035ca382b7a5e3e251837d2a 140H77H139H5H138H137H136H134H133H113H4H131H128H93H92H91H17H90
c3c8724c3e4aa23476fc626818a462ee 140H123H139H5H138H137H136H134H133H113H4H131H128H93H92H91H17H90
5d0997797380cf5054f15d35615a8f22 140H77H123H139H5H138H137H136H134H133H113H4H131H128H93H92H91H17H90
84aad10118d78d1e0fe5eafad188c2e6 74H141H77H139H5H138H137H136H134H133H113H4H131H128H93H92H91H17H90
248d497771acf5d96b36f953a8c40af2 32H132H143H11H142H134H133H113H4H131H128H93H92H91H17H90
861932d6aa4dbb60b89575d108e6e012 74H145H144H4H131H128H93H92H91H17H90
c1d135f56b3bdbd2e78325098c1967e2 74H146H145H144H4H131H128H93H92H91H17H90
db528d54c2d7f33458a37994304c6dd2 74H141H6H5H146H145H144H4H131H128H93H92H91H17H90
11f4d523626cc28b86cac86ea136b308 140H77H6H5H146H145H144H4H131H128H93H92H91H17H90
592a891aada5a813359e50af44d169a4 140H123H6H5H146H145H144H4H131H128H93H92H91H17H90
1c9f4941067b43992ca29f1c6d99a582 140H77H123H6H5H146H145H144H4H131H128H93H92H91H17H90
3721685529e0ebd6414f6ad4c3c1a27d 74H141H77H6H5H146H145H144H4H131H128H93H92H91H17H90
eaa63ce67370954f38ca674b87f09138 80H147H78H131H128H93H92H91H17H90
