a<=c0am
a<aman
a<a@afV0amAa<=c0a@afV0Ia<V0anAa<=c0V0F
a<=c0a+a-anc1c1
a<=c0ak
a<akc0
a<a@afaka-amc1
loop invariant init
a<=c0ai
a<=aia-anc1
a<a@afV1a-amc1Ia<V1aiAa<=c0V1F
a=a@afaia-amc1
a<=a+aic1a+a-anc1c1
a<aiak
a<aka+aic1
a<=a+aic1aj
a<=aja-anc1
a<a@afV2a-amc1Ia<V2ajAa<aiV2F
a=a@afaja-amc1
a=a@afV3a@afV4Aa<V4anAa<V3V4Aa<=c0V3E
postcondition
Na=a@afaja-amc1
a<aka+ajc1
loop invariant preservation
a<a@afV2a-amc1Ia<V2a+a-anc1c1Aa<aiV2F
a=a@agV3ia@afa+V3c1a@afV3a<V3aiF
a<a-amc1amAa<=c0am
variant decrease
a<a-amc1a-anc1Aa<=c0a-amc1
precondition
a<=c0ai1
a<ai1a-anc1
a<a@agai1a-amc1Aa<=c0a@agai1
a=a@agV4a@agV5Aa<V5a-anc1Aa<V4V5Aa<=c0V4E
a=a@afV6a@afV7Aa<V7anAa<V6V7Aa<=c0V6E
a>a+aic1a+a-anc1c1
a=a@agV2ia@afa+V2c1a@afV2a<V2aiF
a=a@afV3a@afV4Aa<V4anAa<V3V4Aa<=c0V3EIa=a@agV5a@agV6Aa<V6a-anc1Aa<V5V6Aa<=c0V5EAa<a@agV7a-amc1Aa<=c0a@agV7Ia<V7a-anc1Aa<=c0V7FAa<a-amc1a-anc1Aa<=c0a-amc1Aa<a-amc1amAa<=c0am
out of loop bounds
Na=a@afaia-amc1
a<a@afV1a-amc1Ia<V1a+a-anc1c1Aa<=c0V1F
a<a-amc1anAa<=c0a-amc1
a<aian
a<a@afaia-amc1Aa<=c0a@afai
a=a@afV2a@afV3Aa<V3anAa<V2V3Aa<=c0V2E
a=a@afV4a@afV5Aa<V5anAa<V4V5Aa<=c0V4E
a>c0a+a-anc1c1
a=a@afV1a@afV2Aa<V2anAa<V1V2Aa<=c0V1EIa=a@afV3a@afV4Aa<V4anAa<V3V4Aa<=c0V3EAa<a@afV5a-amc1Aa<=c0a@afV5Ia<V5anAa<=c0V5FAa<a-amc1anAa<=c0a-amc1Aa<a-amc1amAa<=c0am
a=a@V2V5a@V2V6Aa<V6V0Aa<V5V6Aa<=c0V5EIa=a@V2V7a@V2V8Aa<V8V0Aa<V7V8Aa<=c0V7EAa<a@V2V9V4Aa<=c0a@V2V9Ia<V9V0Aa<=c0V9FAa<V4V0Aa<=c0V4Aa<V4V1Aa<=c0V1La-V1c1Ia>c0a+V3c1Aa=a@V2V11a@V2V12Aa<V12V0Aa<V11V12Aa<=c0V11EIa=a@V2V13a@V2V14Aa<V14V0Aa<V13V14Aa<=c0V13EAa<a@V2V15V10Aa<=c0a@V2V15Ia<V15V0Aa<=c0V15FAa<V10V0Aa<=c0V10Aa<V10V1Aa<=c0V1La-V1c1Ia<a@V2V16a-V1c1Ia<V16a+V3c1Aa<=c0V16FAia<a@V2V18a-V1c1Ia<V18a+V17c1Aa<=c0V18Fa=a@V2V24a@V2V25Aa<V25V0Aa<V24V25Aa<=c0V24EIa=a@V21V26a@V21V27Aa<V27V23Aa<V26V27Aa<=c0V26EAa<a@V21V28V22Aa<=c0a@V21V28Ia<V28V23Aa<=c0V28FAa<V22V23Aa<=c0V22Aa<V22V1Aa<=c0V1La-V0c1La-V1c1Ia=a@V21V29ia@V2a+V29c1a@V2V29a<V29V17FFIa>V20a+V19c1Aa=a@V2V33a@V2V34Aa<V34V0Aa<V33V34Aa<=c0V33EIa=a@V30V35a@V30V36Aa<V36V32Aa<V35V36Aa<=c0V35EAa<a@V30V37V31Aa<=c0a@V30V37Ia<V37V32Aa<=c0V37FAa<V31V32Aa<=c0V31Aa<V31V1Aa<=c0V1La-V0c1La-V1c1Ia=a@V30V38ia@V2a+V38c1a@V2V38a<V38V17FFIa<a@V2V39a-V1c1Ia<V39a+V19c1Aa<V17V39FAia<a@V2V41a-V1c1Ia<V41a+V40c1Aa<V17V41Fa=a@V2V42a@V2V43Aa<V43V0Aa<V42V43Aa<=c0V42Ea=a@V2V40a-V1c1Ia<a@V2V44a
VC for pigeonhole
apigeon_setV0FIapigeon_setaaddV2V1FIapigeon_setV1FIapigeon_setV3Iais_emptyV3F
amemV6V5Iamem1V6V4FOa=V5a++V8aConsV7a++V9aConsV7V10EIamem1V11V4IamemV11V5FIa=alengthV5acardinalV4F
empty_shape
a=alaConsaxax1
amem1V12aemptyIamemV12alF
a>alengthalacardinalaempty
amem1axaempty
asserted formula
a=ala++V14aConsV13a++V15aConsV13V16E
a=alaNil
a=V12a++V14aConsV13a++V15aConsV13V16EIa>alengthV12acardinalaemptyIamem1V17aemptyIamemV17V12FF
apigeon_setaempty
apigeon_setaaddV13V12FIapigeon_setV12F
apigeon_setV14F
a=V16a++V18aConsV17a++V19aConsV17V20EIa>alengthV16acardinalV15Iamem1V21V15IamemV21V16FF

374341e7aaf24f94d9ded57702c29b17 49H48
0f5f34785a3cfc31cec18c85fda6c305 7H6H5H4H3H2H1H0
43918b4c77fb0359e851ed2ff08c8904 7H6H14H13H12H11H10H9H8H3H2H1H0
280064425ad3d57c478aafb65ea56ebb 20H19H18H17H16H15H12H11H10H9H8H3H2H1H0
645ba05aca9e80127d149576277d79f6 23H6H22H13H21H17H16H15H12H11H10H9H8H3H2H1H0
6b82dc5ee00196e8d525672330b26364 27H26H25H24H12H11H10H9H8H3H2H1H0
0eead25a904ee0d0c5148dfd5e7f527b 29H28H25H24H12H11H10H9H8H3H2H1H0
6785e7822cb2592507f39b2ef353e320 29H32H31H30H28H25H24H12H11H10H9H8H3H2H1H0
a34766b4ba9e759bac090b25dbc2066d 20H34H33H25H24H12H11H10H9H8H3H2H1H0
03afa9ce80d5ce7d147ee2cc28004e7b 38H37H36H35H11H10H9H8H3H2H1H0
c67dbcf8c05ac5f7289cd5989f31f511 23H6H14H4H39H10H9H8H3H2H1H0
7b43693acf817364e253472ac2f28d7c 27H26H40H3H2H1H0
e55917050f48a73f7904845a46efeff3 29H41H40H3H2H1H0
57943233e8ab06141e0aed35bdf4cda1 29H43H42H8H41H40H3H2H1H0
163c9b92e0ec1880ffeb1ec3515aca4e 20H45H44H40H3H2H1H0
5c4f35a04763804bb9dfa24044aaf512 38H47H46H2H1H0
66cbd5368f9405882429a387db27b9c8 52H51H50
23c192d24e38f79dc7e148c5aa70c7ae 52H61H51H50
fdddec4f24beda17a643715c9c6e032f 52H60H51H50
96a24a98371e20d29f4f1b813c1c5459 52H58H55H54H51H50
7ee14abb537fa8fe3f22e992ba95d889 52H58H55H54H53H51H50
16d7c0c55c7e3a156b9b44148ad2caee 57H56H55H54H53H51H50
716b3683fccbeead5e886f5ebe671f99 52H58H56H55H54H53H51H50
b576a69482da273901b930452bce96e0 52H58H55H54H59H51H50
ee2fc59e5bb322319ce62359510a4b9e 52H62H61H51H50
ce701c1a5f937a3eb3d8a9e122b578ea 52H63H62H61H51H50
e15b837f5c1340f9bc046b6fc2223c35 52H64H63H62H61H51H50
