a<=c0ai
a<aialengthaa
Na=c2c0
check division by zero
a<=c0a+a-adiva-anaic2c1c1
a<=c0aj
a<ajai
t
loop invariant init
tIa<V0aiAa<=c0V0F
a<=aiaj
a<aja+aic0
a=aaaajaaaa-a-anc1a-ajai
a=aaaV1aaaa-a-anc1a-V1aiIa<V1a+aic0Aa<=aiV1F
a<=a+aic0aj
a<aja-anc0
tIa<V2a-anc0Aa<=a+aic0V2F
a<=a-anc0aj
a<ajan
a=aaaV3aaaa-a-anc1a-V3aiIa<V3anAa<=a-anc0V3F
apermut_allaaaa
a=alengthaa1alengthaa
a<=c0ak
a<=aka-adiva-anaic2c1
a=aaa1V0aaaV0Ia<V0aiAa<=c0V0F
a=aaa1V1aaaa-a-anc1a-V1aiIa<V1a+aiakAa<=aiV1F
a=aaa1V2aaaV2Ia<V2a-anakAa<=a+aiakV2F
a=aaa1V3aaaa-a-anc1a-V3aiIa<V3anAa<=a-anakV3F
apermut_allaaaa1
a<a-a-anc1akalengthaa1Aa<=c0a-a-anc1akAa<a+aiakalengthaa1Aa<=c0a+aiak
precondition
a=alengthaa2alengthaa1
aexchangeaa1aa2a+aiaka-a-anc1ak
a=aaa2ajaaaaj
loop invariant preservation
a=aaa2V4aaaV4Ia<V4aiAa<=c0V4F
a<aja+aia+akc1
a=aaa2ajaaaa-a-anc1a-ajai
a=aaa2V5aaaa-a-anc1a-V5aiIa<V5a+aia+akc1Aa<=aiV5F
a<=a+aia+akc1aj
a<aja-ana+akc1
a=aaa2V6aaaV6Ia<V6a-ana+akc1Aa<=a+aia+akc1V6F
a<=a-ana+akc1aj
a=aaa2V7aaaa-a-anc1a-V7aiIa<V7anAa<=a-ana+akc1V7F
apermut_allaaaa2
a=aaa1V1aaaa-a-anc1a-V1aiIa<V1a+aia+a-adiva-anaic2c1c1Aa<=aiV1F
a=aaa1V2aaaV2Ia<V2a-ana+a-adiva-anaic2c1c1Aa<=a+aia+a-adiva-anaic2c1c1V2F
a=aaa1V3aaaa-a-anc1a-V3aiIa<V3anAa<=a-ana+a-adiva-anaic2c1c1V3F
a=aaa1ajaaaaj
postcondition
a=aaa1V4aaaV4Ia<V4aiAa<=c0V4F
a<ajalengthaa1
a=aaa1ajaaaa-a-alengthaa1c1a-ajai
a=aaa1V5aaaa-a-alengthaa1c1a-V5aiIa<V5alengthaa1Aa<=aiV5F
a>c0a+a-adiva-anaic2c1c1
apermut_allaaaaAa=aaaV0aaaa-a-alengthaac1a-V0aiIa<V0alengthaaAa<=aiV0FAtIa<V1aiAa<=c0V1F
out of loop bounds
apermut_allV0V0Aa=aV0V4aV0a-a-alengthV0c1a-V4V1Ia<V4alengthV0Aa<=V1V4FAtIa<V5V1Aa<=c0V5FIa>c0a+V3c1Aapermut_allV0V6Aa=aV6V7aV0a-a-alengthV6c1a-V7V1Ia<V7alengthV6Aa<=V1V7FAa=aV6V8aV0V8Ia<V8V1Aa<=c0V8FIapermut_allV0V6Aa=aV6V9aV0a-a-V2c1a-V9V1Ia<V9V2Aa<=a-V2a+V3c1V9FAa=aV6V10aV0V10Ia<V10a-V2a+V3c1Aa<=a+V1a+V3c1V10FAa=aV6V11aV0a-a-V2c1a-V11V1Ia<V11a+V1a+V3c1Aa<=V1V11FAa=aV6V12aV0V12Ia<V12V1Aa<=c0V12FAapermut_allV0V16Aa=aV16V17aV0a-a-V2c1a-V17V1Ia<V17V2Aa<=a-V2a+V13c1V17FAa=aV16V18aV0V18Ia<V18a-V2a+V13c1Aa<=a+V1a+V13c1V18FAa=aV16V19aV0a-a-V2c1a-V19V1Ia<V19a+V1a+V13c1Aa<=V1V19FAa=aV16V20aV0V20Ia<V20V1Aa<=c0V20FIaexchangeV6V16V15V14Ia=alengthV16alengthV6FAa<V14alengthV6Aa<=c0V14Aa<V15alengthV6Aa<=c0V15La+V1V13La-a-V2c1V13Iapermut_allV0V6Aa=aV6V21aV0a-a-V2c1a-V21V1Ia<V21V2Aa<=a-V2V13V21FAa=aV6V22aV0V22Ia<V22a-V2V13Aa<=a+V1V13V22FAa=aV6V23aV0a-a-V2c1a-V23V1Ia<V23a+V1V13Aa<=V1V23FAa=aV6V24aV0V24Ia<V24V1Aa<=c0V24FAa<=V13V3Aa<=c0V13FIa=alengthV6alengthV0FAapermut_allV0V0Aa=aV0V25aV0a-a-V2c1a-V25V1Ia<V25V2Aa<=a-V2c0V25FAt
VC for flip
a<=c0a+a-alengthaac2c1
asortedaac0
a<=c0aj1
a<aj1c0
a<=c0aj2
a<aj2alengthaa
a>=aaaaj1aaaaj2
a>=aaaV0aaaV1Ia<V1alengthaaAa<=c0V1Aa<V0c0Aa<=c0V0F
a<=aia-alengthaac2
asortedaa1ai
a>=aaa1V0aaa1V1Ia<V1alengthaa1Aa<=aiV1Aa<V0aiAa<=c0V0F
a<=a+aic1a+a-alengthaa1c1c1
a<aialengthaa1Aa<=aiai
a<aja+aic1
a<=aaa1ajaaa1ai
a<=a+aic1ak
a<=aka-alengthaa1c1
a<=aiam
a<amalengthaa1
a<=aaa1V2aaa1amIa<V2akAa<=aiV2F
a<amalengthaa1Aa<=c0am
index in array bounds
a<akalengthaa1Aa<=c0ak
a>aaa1akaaa1am
a=am1ak
a<am1alengthaa1Aa<=aiam1
a<aja+akc1
a<=aaa1ajaaa1am1
Na>aaa1akaaa1am
a<amalengthaa1Aa<=aiam
a<=aaa1ajaaa1am
a<=aaa1V2aaa1amIa<V2a+a-alengthaa1c1c1Aa<=aiV2F
a=amai
asortedaa1a+aic1
a<aj1a+aic1
a<=a+aic1aj2
a<aj2alengthaa1
a>=aaa1aj1aaa1aj2
a>=aaa1V3aaa1V4Ia<V4alengthaa1Aa<=a+aic1V4Aa<V3a+aic1Aa<=c0V3F
Na=amai
a<ama-alengthaa1c1
a=aaa2V3aaa1V3Ia<V3amAa<=c0V3F
a=aaa2V4aaa1a-a-alengthaa2c1a-V4amIa<V4alengthaa2Aa<=amV4F
apermut_allaa1aa2
a<aialengthaa2Aa<=c0ai
a=alengthaa3alengthaa2
a=aaa3V5aaa2V5Ia<V5aiAa<=c0V5F
a=aaa3V6aaa2a-a-alengthaa3c1a-V6aiIa<V6alengthaa3Aa<=aiV6F
apermut_allaa2aa3
asortedaa3a+aic1
a<aj2alengthaa3
a>=aaa3aj1aaa3aj2
a>=aaa3V7aaa3V8Ia<V8alengthaa3Aa<=a+aic1V8Aa<V7a+aic1Aa<=c0V7F
apermut_allaaaa3
Na<ama-alengthaa1c1
a<aialengthaa1Aa<=c0ai
a=aaa2V3aaa1V3Ia<V3aiAa<=c0V3F
a=aaa2V4aaa1a-a-alengthaa2c1a-V4aiIa<V4alengthaa2Aa<=aiV4F
asortedaa2a+aic1
a<aj2alengthaa2
a>=aaa2aj1aaa2aj2
a>=aaa2V5aaa2V6Ia<V6alengthaa2Aa<=a+aic1V6Aa<V5a+aic1Aa<=c0V5F
a>a+aic1a+a-alengthaa1c1c1
iiapermut_allaaV2Aa>=aV2V3aV2V4Ia<V4alengthV2Aa<=a+aic1V4Aa<V3a+aic1Aa<=c0V3FAasortedV2a+aic1Iapermut_allaa1V2Aa=aV2V5aaa1a-a-alengthV2c1a-V5aiIa<V5alengthV2Aa<=aiV5FAa=aV2V6aaa1V6Ia<V6aiAa<=c0V6FIa=alengthV2alengthaa1FAa<aialengthaa1Aa<=c0aiapermut_allaaV8Aa>=aV8V9aV8V10Ia<V10alengthV8Aa<=a+aic1V10Aa<V9a+aic1Aa<=c0V9FAasortedV8a+aic1Iapermut_allV7V8Aa=aV8V11aV7a-a-alengthV8c1a-V11aiIa<V11alengthV8Aa<=aiV11FAa=aV8V12aV7V12Ia<V12aiAa<=c0V12FIa=alengthV8alengthV7FAa<aialengthV7Aa<=c0aiIapermut_allaa1V7Aa=aV7V13aaa1a-a-alengthV7c1a-V13aiIa<V13alengthV7Aa<=aiV13FAa=aV7V14aaa1V14Ia<V14aiAa<=c0V14FIa=alengthV7alengthaa1FAa<aialengthaa1Aa<=c0aia<aia-alengthaa1c1apermut_allaaaa1Aa>=aaa1V15aaa1V16Ia<V16alengthaa1Aa<=a+aic1V16Aa<V15a+aic1Aa<=c0V15FAasortedaa1a+aic1t
asortedaa1a+a-alengthaac2c1
a>=aaa1V0aaa1V1Ia<V1alengthaa1Aa<=a+a-alengthaac2c1V1Aa<V0a+a-alengthaac2c1Aa<=c0V0F
asortedaa1alengthaa1
a>c0a+a-alengthaac2c1
apermut_allaaaaAasortedaaalengthaa
apermut_allV0V0AasortedV0alengthV0Ia>c0a+V1c1Aapermut_allV0V2AasortedV2alengthV2Iapermut_allV0V2Aa>=aV2V3aV2V4Ia<V4alengthV2Aa<=a+V1c1V4Aa<V3a+V1c1Aa<=c0V3FAasortedV2a+V1c1Aiiapermut_allV0V8Aa>=aV8V9aV8V10Ia<V10alengthV8Aa<=a+V5c1V10Aa<V9a+V5c1Aa<=c0V9FAasortedV8a+V5c1Iapermut_allV2V8Aa=aV8V11aV2a-a-alengthV8c1a-V11V5Ia<V11alengthV8Aa<=V5V11FAa=aV8V12aV2V12Ia<V12V5Aa<=c0V12FIa=alengthV8alengthV2FAa<V5alengthV2Aa<=c0V5apermut_allV0V14Aa>=aV14V15aV14V16Ia<V16alengthV14Aa<=a+V5c1V16Aa<V15a+V5c1Aa<=c0V15FAasortedV14a+V5c1Iapermut_allV13V14Aa=aV14V17aV13a-a-alengthV14c1a-V17V5Ia<V17alengthV14Aa<=V5V17FAa=aV14V18aV13V18Ia<V18V5Aa<=c0V18FIa=alengthV14alengthV13FAa<V5alengthV13Aa<=c0V5Iapermut_allV2V13Aa=aV13V19aV2a-a-alengthV13c1a-V19V5Ia<V19alengthV13Aa<=V5V19FAa=aV13V20aV2V20Ia<V20V5Aa<=c0V20FIa=alengthV13alengthV2FAa<V5alengthV2Aa<=c0V5a<V5a-alengthV2c1apermut_allV0V2Aa>=aV2V21aV2V22Ia<V22alengthV2Aa<=a+V5c1V22Aa<V21a+V5c1Aa<=c0V21FAasortedV2a+V5c1tIa>V7a+V6c1Aiiapermut_allV0V24Aa>=aV24V25aV24V26Ia<V26alengthV24A
VC for pancake_sort

e73d9b4d3fe79b075aafffc46a5c62c1 58H57
71afacd76338cbf4c363b0b7533e39b6 3H2H1H0
8c80e53aed520e87cde46fe45d9f4b26 8H7H6H5H4H1H0
66f9c37216d8582cf5b9787337ad3cad 8H12H11H10H9H4H1H0
c9a8bcead8fbe13ff851a03ad79f1c98 8H7H15H14H13H9H4H1H0
a64ba6231e3afa99985a50baba69417e 8H12H18H17H16H13H9H4H1H0
318050dd3074ec1143298cebcf38a778 8H20H19H16H13H9H4H1H0
86ea24a9975f6333c1ff37ea54c023e1 30H29H28H27H26H25H24H23H22H21H4H1H0
f0bf419aaab2596146523aa71307aee5 34H33H6H5H32H31H28H27H26H25H24H23H22H21H4H1H0
4691230510e5d06b50d9166e9cec3c3c 34H37H36H10H35H32H31H28H27H26H25H24H23H22H21H4H1H0
0db37242abf4f780faa91597ae13e8dd 34H33H40H39H38H35H32H31H28H27H26H25H24H23H22H21H4H1H0
e6d30d9ffe90db048c0e24c12589f965 34H37H18H42H41H38H35H32H31H28H27H26H25H24H23H22H21H4H1H0
d87c886cf9da26dd7a7a0470dcfb832d 34H44H43H41H38H35H32H31H28H27H26H25H24H23H22H21H4H1H0
1aa7e64bdce5dd2401a1be3f196371dc 49H48H6H5H28H47H46H45H24H21H4H1H0
de3a377a2b1f1442e512057b8d904813 49H52H51H10H50H28H47H46H45H24H21H4H1H0
7ba63ac4ba47002b031389fb47b13e60 49H28H53H50H28H47H46H45H24H21H4H1H0
65436f13c1fda3ca8b6d96482f56b5d4 56H55H54H1H0
2abb4f9f1d949d6e6008c960fe3a50de 129H128
6ac1000fe199bc514cb5e819d4638f39 8H60H59
f5773d9557dd84f802d79b4590df70eb 8H65H64H63H62H61H60H59
ca03e00dedf9cab9365b763fce59b4f9 8H20H66H60H59
55f5f69fb152f70d201aaffa981b40e3 8H71H70H28H69H68H67H0H21H59
e6b9a6053a6863f6792ba573d8b2bc41 8H73H72H10H71H70H28H69H68H67H0H21H59
4ec4b9c7c7f501a85793edee1f7cc5d8 80H79H78H77H76H75H74H70H28H69H68H67H0H21H59
cc32971dc95bee62f239cd9aa9ec3fca 80H81H78H77H76H75H74H70H28H69H68H67H0H21H59
913b8b3b285fb637a970686745e38a2f 34H84H83H82H78H77H76H75H74H70H28H69H68H67H0H21H59
db4d270394ae80cd80b354b9a008aa5c 34H86H85H10H84H83H82H78H77H76H75H74H70H28H69H68H67H0H21H59
933bd0f8ea6b7f22f78c9b1351f1a72f 34H88H87H78H77H76H75H74H70H28H69H68H67H0H21H59
b0a0f2a265b16d4d840db6b675efcaae 34H89H85H10H88H87H78H77H76H75H74H70H28H69H68H67H0H21H59
0a3a6bdacb9ed2b48e7f3866ed26bcf8 34H92H91H90H77H76H70H28H69H68H67H0H21H59
586455235a61695926d3768db62c25ba 34H96H95H94H93H61H92H91H90H77H76H70H28H69H68H67H0H21H59
4c14d98d4e1f93a6e6b0e3d95a58f8ba 34H28H97H92H91H90H77H76H70H28H69H68H67H0H21H59
1e09392228f51fec83b0fcd5b7edf381 30H79H99H98H90H77H76H70H28H69H68H67H0H21H59
ac8cfa6a04cd93c89904d07409c463ab 30H103H102H101H100H31H99H98H90H77H76H70H28H69H68H67H0H21H59
3b5ca9c92a13bdaf28dab2b1b80cee1e 34H108H107H106H105H104H102H101H100H31H99H98H90H77H76H70H28H69H68H67H0H21H59
02526c7ebc4a661772d975625a76ca27 34H110H109H94H93H61H108H107H106H105H104H102H101H100H31H99H98H90H77H76H70H28H69H68H67H0H21H59
670a90fa8d20a830b74f009c6e4eb0b1 34H112H111H108H107H106H105H104H102H101H100H31H99H98H90H77H76H70H28H69H68H67H0H21H59
0d71e79d65147dfb11864e71b400456b 30H114H113H98H90H77H76H70H28H69H68H67H0H21H59
3a8fe604e35b1accbee26f7eccda578e 34H117H102H116H115H31H113H98H90H77H76H70H28H69H68H67H0H21H59
8074e86674541dfbdd7381084dd9dea8 34H119H118H94H93H61H117H102H116H115H31H113H98H90H77H76H70H28H69H68H67H0H21H59
8fe604b4ff805a60c770ab847ce414fa 34H44H120H117H102H116H115H31H113H98H90H77H76H70H28H69H68H67H0H21H59
1d14ae71c1941be88bb2f9ad8d7c690e 56H122H121H28H69H68H67H0H21H59
b23f0160f679d6f815bb2ce30482f03c 49H125H28H124H123H21H59
408294a719b3458f21d5da9bacadbc01 49H28H125H28H124H123H21H59
eb81807e2522650ff1628eebd2da556d 56H127H126
