a=acontentsacreateV0aconstV0F
a=aV1V2aacontentsV1V2F
a=acontentsaV3V4V5aacontentsV3V4V5F
a<=anasizeAa<=c0an
a<=c0aaamV6V7Ia<V7anAa<=c0V7Ia<V6anAa<=c0V6F
a=asumV8V9V10c0Ia<=V10V9F
a=asumV11V12V13a+afV11V12asumV11a+V12c1V13Ia<V12V13F
a=asumV14V15V16a+asumV14V15a-V16c1afV14a-V16c1Ia<V15V16F
a=asumV17V18V20a+asumV17V18V19asumV17V19V20Ia<=V19V20Aa<=V18V19F
a=asumV21V23V24asumV22V23V24Ia=afV21V25afV22V25Ia<V25V24Aa<=V23V25FF
a=asumasetV28V26V27V26ana+aaamV26V27asumV28a+V26c1anFFIa<V26anF
empty_shape
ainvV29AapostaTuple2V30V31aTuple2c0V32Ia=acontentsV32aconstc0Lacreatec0Ia=V30anIainvV29AapreaTuple2V30V31FF
postcondition
a>=c-1asumV34V30anIa<agetV34V30c0IamemagetV34V30V31IamemagetV34V35V31Ia<V35anAa<=V30V35FIasolutionV34V30FAa=c-1asumacontentsV32V30anAamemaV32V36V31Ia<V36anAa<=V30V36FAasolutionacontentsV32V30Aa<=c0c-1ONamemV37V31Ia<V37c0Aa<=c0V37FAtAainvV29Ia<=c0a+V33c1La-anc1Ia=acontentsV32aconstc0Lacreatec0INa=V30anIainvV29AapreaTuple2V30V31FF
loop invariant init
a<a+a-a*c2ana*c2V39c1a-a*c2ana*c2V30Aa<=c0a-a*c2ana*c2V30La+V30c1IamemV40V31ANa=V40V37qamemV40V38FLaremoveV37V31IamemV37V31Ia>=V35asumV41V30anIa<agetV41V30V37IamemagetV41V30V31IamemagetV41V42V31Ia<V42anAa<=V30V42FIasolutionV41V30FAa=V35asumacontentsV34V30anAamemaV34V43V31Ia<V43anAa<=V30V43FAasolutionacontentsV34V30Aa<=c0V35ONamemV44V31Ia<V44V37Aa<=c0V44FAa=V35c-1AainvV36Aa<=V37V33Aa<=c0V37FFIa<=c0a+V33c1La-anc1Ia=acontentsV32aconstc0Lacreatec0INa=V30anIainvV29AapreaTuple2V30V31FF
variant decrease
ainvV36AapreaTuple2V39V38La+V30c1IamemV40V31ANa=V40V37qamemV40V38FLaremoveV37V31IamemV37V31Ia>=V35asumV41V30anIa<agetV41V30V37IamemagetV41V30V31IamemagetV41V42V31Ia<V42anAa<=V30V42FIasolutionV41V30FAa=V35asumacontentsV34V30anAamemaV34V43V31Ia<V43anAa<=V30V43FAasolutionacontentsV34V30Aa<=c0V35ONamemV44V31Ia<V44V37Aa<=c0V44FAa=V35c-1AainvV36Aa<=V37V33Aa<=c0V37FFIa<=c0a+V33c1La-anc1Ia=acontentsV32aconstc0Lacreatec0INa=V30anIainvV29AapreaTuple2V30V31FF
precondition
apreaTuple2aiac
ainvatable
Na=aian
a=acontentsacreatec0aconstc0
a<=c0a+a-anc1c1
a<=c0aj
a<=aja-anc1
ainvatable1
a>=arasumV29aianIa<agetV29aiajIamemagetV29aiacIamemagetV29V30acIa<V30anAa<=aiV30FIasolutionV29aiFAa=arasumacontentsasolaianAamemaasolV31acIa<V31anAa<=aiV31FAasolutionacontentsasolaiAa<=c0arONamemV32acIa<V32ajAa<=c0V32FAa=arc-1
amemajac
amemV33acANa=V33ajqamemV33aremoveajacF
apostaTuple2a+aic1aremoveajacaTuple2ar'asol'
ainvatable2
a=aamaiaacontentsamai
a=aaamaiajaacontentsaamaiaj
a>axar
a=ar1ax
a=acontentsaasol'aiajaacontentsasol'aiaj
a=asol1aasol'aiaj
VC for maximum
a=aV0V1aacontentsV0V1F
a=acontentsaV2V3V4aacontentsV2V3V4F
a=asumV5V6V7a+afV5V6asumV5a+V6c1V7Ia<V6V7F
a=asumasetV10V8V9V8ana+aaamV8V9asumV10a+V8c1anFFIa<V8anF
a>=arasumV11aianIa<agetV11aiajIamemagetV11aiacIamemagetV11V12acIa<V12anAa<=aiV12FIasolutionV11aiFAa=arasumacontentsasolaianAamemaasolV13acIa<V13anAa<=aiV13FAasolutionacontentsasolaiAa<=c0arONamemV14acIa<V14ajAa<=c0V14FAa=arc-1
a>=ar1asumV15aianIa<agetV15aia+ajc1IamemagetV15aiacIamemagetV15V16acIa<V16anAa<=aiV16FIasolutionV15aiFAa=ar1asumacontentsasol1aianAamemaasol1V17acIa<V17anAa<=aiV17FAasolutionacontentsasol1aiAa<=c0ar1ONamemV18acIa<V18a+ajc1Aa<=c0V18FAa=ar1c-1
a>=ar1asumV34aianIa<agetV34aia+ajc1IamemagetV34aiacIamemagetV34V35acIa<V35anAa<=aiV35FIasolutionV34aiFAa=ar1asumacontentsasol1aianAamemaasol1V36acIa<V36anAa<=aiV36FAasolutionacontentsasol1aiAa<=c0ar1ONamemV37acIa<V37a+ajc1Aa<=c0V37FAa=ar1c-1
a>=V47asumV50V30anIa<agetV50V30a+V37c1IamemagetV50V30V31IamemagetV50V51V31Ia<V51anAa<=V30V51FIasolutionV50V30FAa=V47asumacontentsV49V30anAamemaV49V52V31Ia<V52anAa<=V30V52FAasolutionacontentsV49V30Aa<=c0V47ONamemV53V31Ia<V53a+V37c1Aa<=c0V53FAa=V47c-1AainvV40Ia=V49V48FIa=acontentsV48aacontentsV42V30V37LaV42V30V37Ia=V47V46FIa>V46V35La+V45V41Ia=V45aacontentsV44V37LaV44V37Ia=V44aacontentsV43V30LaV43V30LamIainvV40AapostaTuple2V39V38aTuple2V41V42FFLa+V30c1IamemV54V31ANa=V54V37qamemV54V38FLaremoveV37V31IamemV37V31Ia>=V35asumV55V30anIa<agetV55V30V37IamemagetV55V30V31IamemagetV55V56V31Ia<V56anAa<=V30V56FIasolutionV55V30FAa=V35asumacontentsV34V30anAamemaV34V57V31Ia<V57anAa<=V30V57FAasolutionacontentsV34V30Aa<=c0V35ONamemV58V31Ia<V58V37Aa<=c0V58FAa=V35c-1AainvV36Aa<=V37V33Aa<=c0V37FFIa<=c0a+V33c1La-anc1Ia=acontentsV32aconstc0Lacreatec0INa=V30anIainvV29AapreaTuple2V30V31FF
loop invariant preservation
Na>axar
a<=c0ar
right case
asolutionacontentsasolai
a<=aiak
a<akan
amemaasolakac
a=arasumacontentsasolaian
asolutionasai
amemagetasV34acIa<V34anAa<=aiV34F
amemagetasaiac
a<agetasaia+ajc1
a>=arasumasaian
a>=arasumV34aianIa<agetV34aia+ajc1IamemagetV34aiacIamemagetV34V35acIa<V35anAa<=aiV35FIasolutionV34aiFAa=arasumacontentsasolaianAamemaasolV36acIa<V36anAa<=aiV36FAasolutionacontentsasolaiAa<=c0ar
a>=arasumV34aianIa<agetV34aia+ajc1IamemagetV34aiacIamemagetV34V35acIa<V35anAa<=aiV35FIasolutionV34aiFAa=arasumacontentsasolaianAamemaasolV36acIa<V36anAa<=aiV36FAasolutionacontentsasolaiAa<=c0arONamemV37acIa<V37a+ajc1Aa<=c0V37FAa=arc-1
a>=V35asumV47V30anIa<agetV47V30a+V37c1IamemagetV47V30V31IamemagetV47V48V31Ia<V48anAa<=V30V48FIasolutionV47V30FAa=V35asumacontentsV34V30anAamemaV34V49V31Ia<V49anAa<=V30V49FAasolutionacontentsV34V30Aa<=c0V35ONamemV50V31Ia<V50a+V37c1Aa<=c0V50FAa=V35c-1AainvV40INa>V46V35La+V45V41Ia=V45aacontentsV44V37LaV44V37Ia=V44aacontentsV43V30LaV43V30LamIainvV40AapostaTuple2V39V38aTuple2V41V42FFLa+V30c1IamemV51V31ANa=V51V37qamemV51V38FLaremoveV37V31IamemV37V31Ia>=V35asumV52V30anIa<agetV52V30V37IamemagetV52V30V31IamemagetV52V53V31Ia<V53anAa<=V30V53FIasolutionV52V30FAa=V35asumacontentsV34V30anAamemaV34V54V31Ia<V54anAa<=V30V54FAasolutionacontentsV34V30Aa<=c0V35ONamemV55V31Ia<V55V37Aa<=c0V55FAa=V35c-1AainvV36Aa<=V37V33Aa<=c0V37FFIa<=c0a+V33c1La-anc1Ia=acontentsV32aconstc0Lacreatec0INa=V30anIainvV29AapreaTuple2V30V31FF
Namemajac
a>=arasumV33aianIa<agetV33aia+ajc1IamemagetV33aiacIamemagetV33V34acIa<V34anAa<=aiV34FIasolutionV33aiFAa=arasumacontentsasolaianAamemaasolV35acIa<V35anAa<=aiV35FAasolutionacontentsasolaiAa<=c0arONamemV36acIa<V36a+ajc1Aa<=c0V36FAa=arc-1
a>=V35asumV38V30anIa<agetV38V30a+V37c1IamemagetV38V30V31IamemagetV38V39V31Ia<V39anAa<=V30V39FIasolutionV38V30FAa=V35asumacontentsV34V30anAamemaV34V40V31Ia<V40anAa<=V30V40FAasolutionacontentsV34V30Aa<=c0V35ONamemV41V31Ia<V41a+V37c1Aa<=c0V41FAa=V35c-1AainvV36INamemV37V31Ia>=V35asumV42V30anIa<agetV42V30V37IamemagetV42V30V31IamemagetV42V43V31Ia<V43anAa<=V30V43FIasolutionV42V30FAa=V35asumacontentsV34V30anAamemaV34V44V31Ia<V44anAa<=V30V44FAasolutionacontentsV34V30Aa<=c0V35ONamemV45V31Ia<V45V37Aa<=c0V45FAa=V35c-1AainvV36Aa<=V37V33Aa<=c0V37FFIa<=c0a+V33c1La-anc1Ia=acontentsV32aconstc0Lacreatec0INa=V30anIainvV29AapreaTuple2V30V31FF
a<=c0V35Ia>=V35asumV37V30anIa<agetV37V30a+V33c1IamemagetV37V30V31IamemagetV37V38V31Ia<V38anAa<=V30V38FIasolutionV37V30FAa=V35asumacontentsV34V30anAamemaV34V39V31Ia<V39anAa<=V30V39FAasolutionacontentsV34V30Aa<=c0V35ONamemV40V31Ia<V40a+V33c1Aa<=c0V40FAa=V35c-1AainvV36FIa<=c0a+V33c1La-anc1Ia=acontentsV32aconstc0Lacreatec0INa=V30anIainvV29AapreaTuple2V30V31FF
assertion
ainvV36AapostaTuple2V30V31aTuple2V35V34Ia<=c0V35Ia>=V35asumV37V30anIa<agetV37V30a+V33c1IamemagetV37V30V31IamemagetV37V38V31Ia<V38anAa<=V30V38FIasolutionV37V30FAa=V35asumacontentsV34V30anAamemaV34V39V31Ia<V39anAa<=V30V39FAasolutionacontentsV34V30Aa<=c0V35ONamemV40V31Ia<V40a+V33c1Aa<=c0V40FAa=V35c-1AainvV36FIa<=c0a+V33c1La-anc1Ia=acontentsV32aconstc0Lacreatec0INa=V30anIainvV29AapreaTuple2V30V31FF
ainvV29AapostaTuple2V30V31aTuple2c-1V32Aa<=c0c-1Ia>c0a+V33c1La-anc1Ia=acontentsV32aconstc0Lacreatec0INa=V30anIainvV29AapreaTuple2V30V31FF
out of loop bounds
iainvV29AapostaTuple2V30V31aTuple2c-1V32Aa<=c0c-1Ia>c0a+V33c1AainvV36AapostaTuple2V30V31aTuple2V35V34Aa<=c0V35Ia>=V35asumV37V30anIa<agetV37V30a+V33c1IamemagetV37V30V31IamemagetV37V38V31Ia<V38anAa<=V30V38FIasolutionV37V30FAa=V35asumacontentsV34V30anAamemaV34V39V31Ia<V39anAa<=V30V39FAasolutionacontentsV34V30Aa<=c0V35ONamemV40V31Ia<V40a+V33c1Aa<=c0V40FAa=V35c-1AainvV36Aia>=V35asumV42V30anIa<agetV42V30a+V41c1IamemagetV42V30V31IamemagetV42V43V31Ia<V43anAa<=V30V43FIasolutionV42V30FAa=V35asumacontentsV34V30anAamemaV34V44V31Ia<V44anAa<=V30V44FAasolutionacontentsV34V30Aa<=c0V35ONamemV45V31Ia<V45a+V41c1Aa<=c0V45FAa=V35c-1AainvV36ia>=V35asumV55V30anIa<agetV55V30a+V41c1IamemagetV55V30V31IamemagetV55V56V31Ia<V56anAa<=V30V56FIasolutionV55V30FAa=V35asumacontentsV34V30anAamemaV34V57V31Ia<V57anAa<=V30V57FAasolutionacontentsV34V30Aa<=c0V35ONamemV58V31Ia<V58a+V41c1Aa<=c0V58FAa=V35c-1AainvV48a>=V59asumV62V30anIa<agetV62V30a+V41c1IamemagetV62V30V31IamemagetV62V63V31Ia<V63anAa<=V30V63FIasolutionV62V30FAa=V59asumacontentsV61V30anAa
ainvV38AapostaTuple2V30V31V36Ia=aV38V39aV33V39INa=V39V37FAa=aV38V37aSomeV36FLaTuple2V30V31IainvV33AapostaTuple2V30V31V36LaTuple2V34V35FFAainvV29AapreaTuple2V30V31Aa<a-a*c2ana*c2V30a+a-a*c2ana*c2V30c1Aa<=c0a+a-a*c2ana*c2V30c1Ia=aV29V32aNoneAainvV29AapostaTuple2V30V31V42Ia=aV29V32aSomeV42LaTuple2V40V41FLaTuple2V30V31IainvV29AapreaTuple2V30V31FF
VC for memo
a>=V35asumV36c0anIapermutationV36FAa=V35asumV37c0anAapermutationV37EIa=V35V33FIainvV32AapostaTuple2c0V31aTuple2V33V34FFAainvV29AapreaTuple2c0V31Ia<V38V30Aa<=c0V38qamemV38V31FLabelowV30Aa<=V30asizeAa<=c0V30LanAainvV29Ia=aV29V39aNoneFF
VC for maxmat

89901d51ac4bbad2cb33c3ae2cbc6aab 11H10H9H8H7H6H5H4H3H2H1H0
8bf048032a8ea41eb8588e725bf9a45e 39H73H10H9H8H7H6H5H4H3H2H1H0
3d051d19f1aa408747679122ae086af9 13H12H10H9H8H7H6H5H4H3H2H1H0
4bb3f76e8f6be9bd8adf99d75c23f397 15H14H10H9H8H7H6H5H4H3H2H1H0
712213e3b49c6a50d15116bd940615b7 17H16H10H9H8H7H6H5H4H3H2H1H0
12b152dbb12096a96ce280f32449b7cf 19H18H10H9H8H7H6H5H4H3H2H1H0
9d834d9666fca20aad238a0be96abcbf 48H47H10H9H8H7H6H5H4H3H2H1H0
129d4419b92bd5ac4aee562d30853288 39H32H38H37H36H35H34H33H32H31H30H29H28H27H26H25H24H23H22H21H20H10H9H8H7H6H5H4H3H2H1H0
7e7e3198075e73bbc59653cbbe6bd01c 39H46H38H37H36H35H34H33H32H31H30H29H28H27H26H25H24H23H22H21H20H10H9H8H7H6H5H4H3H2H1H0
59ca98c9105c039587a4f91256cb9978 39H45H38H36H35H21H31H29H44H26H22H20H43H42H41H40
c57dd805e14579321e1ae2f6c5921d1c 48H64H10H9H8H7H6H5H4H3H2H1H0
3ed56be56707ba40521846433f2ad702 39H32H49H34H33H32H31H30H29H28H27H26H25H24H23H22H21H20H10H9H8H7H6H5H4H3H2H1H0
97565e9e7f6ff66dc2f83fc86d103fc3 39H63H49H34H33H32H31H30H29H28H27H26H25H24H23H22H21H20H10H9H8H7H6H5H4H3H2H1H0
c94e7a7ae89572324fd73c7ecab346d1 51H62H49H34H33H32H31H30H29H28H27H26H25H24H23H22H21H20H10H9H8H7H6H5H4H3H2H1H0
cacf0313cc07b5d0a61fe7fd0c116fcb 51H50H49H34H33H32H31H30H29H28H27H26H25H24H23H22H21H20H10H9H8H7H6H5H4H3H2H1H0
966453a0c2cf046905ba8d2264a66be7 51H52H49H34H33H32H31H30H29H28H27H26H25H24H23H22H21H20H10H9H8H7H6H5H4H3H2H1H0
7b62f3a72882b7d12d5f1acc90c51108 51H55H54H53H49H34H33H32H31H30H29H28H27H26H25H24H23H22H21H20H10H9H8H7H6H5H4H3H2H1H0
5c16dab620e6edb25d3f7ed4900bf6ff 51H56H49H34H33H32H31H30H29H28H27H26H25H24H23H22H21H20H10H9H8H7H6H5H4H3H2H1H0
944a7ca0e6bd442d2e9dafdb45def69c 51H61H60H59H58H57H49H34H33H32H31H30H29H28H27H26H25H24H23H22H21H20H10H9H8H7H6H5H4H3H2H1H0
1480b225a0a39c1602f5e28dbe0007e9 48H67H10H9H8H7H6H5H4H3H2H1H0
1c87fb8388a5ceafcc52a1766b850ca8 39H27H65H28H27H26H25H24H23H22H21H20H10H9H8H7H6H5H4H3H2H1H0
1c87fb8388a5ceafcc52a1766b850ca8 39H27H65H28H27H26H25H24H23H22H21H20H10H9H8H7H6H5H4H3H2H1H0
1c87fb8388a5ceafcc52a1766b850ca8 39H27H65H28H27H26H25H24H23H22H21H20H10H9H8H7H6H5H4H3H2H1H0
003aa3200afaf37f5381a8ebddfa66ea 39H66H65H28H27H26H25H24H23H22H21H20H10H9H8H7H6H5H4H3H2H1H0
2f33f234330e12536ccd58535da839ca 69H68H10H9H8H7H6H5H4H3H2H1H0
0c2d37482431c3f99264dc4c4029d203 13H70H10H9H8H7H6H5H4H3H2H1H0
eebd24b79f9e8d6f55f03109b0a7ce8b 72H71H10H9H8H7H6H5H4H3H2H1H0
028229e94b0f228f9b35cfdbccee95d6 75H74H10H9H8H7H6H5H4H3H2H1H0
b5962389af15b6e6fdd2c623b302c2fc 77H76H10H9H8H7H6H5H4H3H2H1H0
