a=acountazerosazeros
empty_shape
a=anumofea=a@V0V1anthazerosV1Fc0c32c0
a=acountalsr_bvV2aoneacountV2INa=anth_bvV2azerosaTrueF
Na=anth_bvV2azerosaTrueIa=acountalsr_bvV2aoneacountV2F
a=acountalsr_bvV2aoneasubacountV2aoneIa=anth_bvV2azerosaTrueF
a=anth_bvV2azerosaTrueIa=acountalsr_bvV2aoneasubacountV2aoneF
a=acountalsr_bvV2aoneasubacountV2aoneqa=anth_bvV2azerosaTrueAa=acountalsr_bvV2aoneacountV2qNa=anth_bvV2azerosaTrueF
a=anumofV3a+V5V7a+V6V7anumofV4V5V6Ia=anumofV3a+V5V7a+V8V7anumofV4V5V8La-V6c1ONa<V5V6Aa=a@V4V9a@V3a+V9V7FAa<a-a-V6c1V5a-V6V5Aa<=c0a-V6V5Ia<V5V6Ia=a@V4V10a@V3a+V10V7FF
VC for numof_shift
a=anumofV3a+V5V7a+V6V7anumofV4V5V6Ia=a@V4V8a@V3a+V8V7FF
a<=c0at'intV9Lalsr_bvV9aoneINa=V9azerosF
VC for countSpec_Aux
a<at'intV10at'intV9Lalsr_bvV9aoneINa=V9azerosF
a<at'intV10at'intV9Aa<=c0at'intV9Lalsr_bvV9aoneINa=V9azerosF
variant decrease
a=a@V12V14a@V13V14Ia<V14c31Aa<=c0V14FLea=a@V15V16anthV9a+V16c1FLa@ea=a@a@V17V18V19anthV18V19Falsr_bvV9aoneLa@ea=a@a@V20V21V22anthV21V22FV9Ia=at'intacountV10anumofa@ea=a@a@V23V24V25anthV24V25FV10c0c32Lalsr_bvV9aoneINa=V9azerosF
assertion
a=a-anumofV11c0c32ic0c1a=anth_bvV9azerosaTrueanumofV11a+c0c1c32Ia=a@V12V14a@V13V14Ia<V14c31Aa<=c0V14FLea=a@V15V16anthV9a+V16c1FLa@ea=a@a@V17V18V19anthV18V19Falsr_bvV9aoneLa@ea=a@a@V20V21V22anthV21V22FV9Ia=at'intacountV10anumofa@ea=a@a@V23V24V25anthV24V25FV10c0c32Lalsr_bvV9aoneINa=V9azerosF
a=anumofV11a+c0c1a+c31c1anumofV13c0c31Ia=a-anumofV11c0c32ic0c1a=anth_bvV9azerosaTrueanumofV11a+c0c1c32Ia=a@V12V14a@V13V14Ia<V14c31Aa<=c0V14FLea=a@V15V16anthV9a+V16c1FLa@ea=a@a@V17V18V19anthV18V19Falsr_bvV9aoneLa@ea=a@a@V20V21V22anthV21V22FV9Ia=at'intacountV10anumofa@ea=a@a@V23V24V25anthV24V25FV10c0c32Lalsr_bvV9aoneINa=V9azerosF
a=anumofV12c0a-c32c1anumofV12c0c32Ia=anumofV11a+c0c1a+c31c1anumofV13c0c31Ia=a-anumofV11c0c32ic0c1a=anth_bvV9azerosaTrueanumofV11a+c0c1c32Ia=a@V12V14a@V13V14Ia<V14c31Aa<=c0V14FLea=a@V15V16anthV9a+V16c1FLa@ea=a@a@V17V18V19anthV18V19Falsr_bvV9aoneLa@ea=a@a@V20V21V22anthV21V22FV9Ia=at'intacountV10anumofa@ea=a@a@V23V24V25anthV24V25FV10c0c32Lalsr_bvV9aoneINa=V9azerosF
a=anumofV12c0a-c32c1anumofV12c0c32Aa=anumofV11a+c0c1a+c31c1anumofV13c0c31Aa=a-anumofV11c0c32ic0c1a=anth_bvV9azerosaTrueanumofV11a+c0c1c32Aa=a@V12V14a@V13V14Ia<V14c31Aa<=c0V14FLea=a@V15V16anthV9a+V16c1FLa@ea=a@a@V17V18V19anthV18V19Falsr_bvV9aoneLa@ea=a@a@V20V21V22anthV21V22FV9Ia=at'intacountV10anumofa@ea=a@a@V23V24V25anthV24V25FV10c0c32Lalsr_bvV9aoneINa=V9azerosF
a=at'intacountV9anumofa@ea=a@a@V10V11V12anthV11V12FV9c0c32Ia=anumofV15c0a-c32c1anumofV15c0c32Aa=anumofV14a+c0c1a+c31c1anumofV16c0c31Aa=a-anumofV14c0c32ic0c1a=anth_bvV9azerosaTrueanumofV14a+c0c1c32Aa=a@V15V17a@V16V17Ia<V17c31Aa<=c0V17FLea=a@V18V19anthV9a+V19c1FLa@ea=a@a@V20V21V22anthV21V22Falsr_bvV9aoneLa@ea=a@a@V23V24V25anthV24V25FV9Aa=at'intacountV13anumofa@ea=a@a@V26V27V28anthV27V28FV13c0c32Lalsr_bvV9aoneOa=V9azerosF
postcondition
a=at'intacountV9anumofa@ea=a@a@V10V11V12anthV11V12FV9c0c32Ia=anumofV15c0a-c32c1anumofV15c0c32Aa=anumofV14a+c0c1a+c31c1anumofV16c0c31Aa=a-anumofV14c0c32ic0c1a=anth_bvV9azerosaTrueanumofV14a+c0c1c32Aa=a@V15V17a@V16V17Ia<V17c31Aa<=c0V17FLea=a@V18V19anthV9a+V19c1FLa@ea=a@a@V20V21V22anthV21V22Falsr_bvV9aoneLa@ea=a@a@V23V24V25anthV24V25FV9Aa=at'intacountV13anumofa@ea=a@a@V26V27V28anthV27V28FV13c0c32Lalsr_bvV9aoneOa=V9azerosAa=anumofV31c0a-c32c1anumofV31c0c32Aa=anumofV30a+c0c1a+c31c1anumofV32c0c31Aa=a-anumofV30c0c32ic0c1a=anth_bvV9azerosaTrueanumofV30a+c0c1c32Aa=a@V31V33a@V32V33Ia<V33c31Aa<=c0V33FLea=a@V34V35anthV9a+V35c1FLa@ea=a@a@V36V37V38anthV37V38Falsr_bvV9aoneLa@ea=a@a@V39V40V41anthV40V41FV9Ia=at'intacountV29anumofa@ea=a@a@V42V43V44anthV43V44FV29c0c32Aa<at'intV29at'intV9Aa<=c0at'intV9Lalsr_bvV9aoneINa=V9azerosF
a=at'intacountV9anumofa@ea=a@a@V10V11V12anthV11V12FV9c0c32F
a=at'intacountV13anumofa@ea=a@a@V14V15V16anthV15V16FV13c0c32F
anth_diffV17V18V19qa=anthabw_xorV17V18V19aTrueIa<V19c32Aa<=c0V19FF
a=at'intahammingDV17V18anumofa@a@eanth_diffV20V21V22qa=a@a@a@V19V20V21V22aTrueFV17V18c0c32Ianth_diffV17V18V23qa=anthabw_xorV17V18V23aTrueIa<V23c32Aa<=c0V23FF
a=at'intahammingDV17V18anumofa@a@eanth_diffV20V21V22qa=a@a@a@V19V20V21V22aTrueFV17V18c0c32Aanth_diffV17V18V23qa=anthabw_xorV17V18V23aTrueIa<V23c32Aa<=c0V23FF
VC for hamming_spec
a=at'intahammingDV17V18anumofa@a@eanth_diffV20V21V22qa=a@a@a@V19V20V21V22aTrueFV17V18c0c32F
a=ahammingDV23V24ahammingDV24V23F
a=V25V26qa=ahammingDV25V26azerosF
a<=anumofafun_orV27V28V29V30a+anumofV27V29V30anumofV28V29V30Ia<=anumofafun_orV27V28V29V31a+anumofV27V29V31anumofV28V29V31La-V30c1ONa<V29V30Aa<a-a-V30c1V29a-V30V29Aa<=c0a-V30V29Ia<V29V30F
VC for numof_or
a<=anumofafun_orV27V28V29V30a+anumofV27V29V30anumofV28V29V30F
a=a@afun_ora@a@eanth_diffV36V37V38qa=a@a@a@V35V36V37V38aTrueFV31V32a@a@eanth_diffV40V41V42qa=a@a@a@V39V40V41V42aTrueFV32V33V34aTrueIanth_diffV31V33V34Ia<V34c32Aa<=c0V34FF
VC for triangleInequalityInt
a>=anumofafun_ora@a@eanth_diffV35V36V37qa=a@a@a@V34V35V36V37aTrueFV31V32a@a@eanth_diffV39V40V41qa=a@a@a@V38V39V40V41aTrueFV32V33c0c32anumofa@a@eanth_diffV43V44V45qa=a@a@a@V42V43V44V45aTrueFV31V33c0c32Ia=a@afun_ora@a@eanth_diffV48V49V50qa=a@a@a@V47V48V49V50aTrueFV31V32a@a@eanth_diffV52V53V54qa=a@a@a@V51V52V53V54aTrueFV32V33V46aTrueIanth_diffV31V33V46Ia<V46c32Aa<=c0V46FF
a>=anumofafun_ora@a@eanth_diffV35V36V37qa=a@a@a@V34V35V36V37aTrueFV31V32a@a@eanth_diffV39V40V41qa=a@a@a@V38V39V40V41aTrueFV32V33c0c32anumofa@a@eanth_diffV43V44V45qa=a@a@a@V42V43V44V45aTrueFV31V33c0c32ItOa=a@afun_ora@a@eanth_diffV48V49V50qa=a@a@a@V47V48V49V50aTrueFV31V32a@a@eanth_diffV52V53V54qa=a@a@a@V51V52V53V54aTrueFV32V33V46aTrueIanth_diffV31V33V46Ia<V46c32Aa<=c0V46FF
a>=a+at'intahammingDV31V32at'intahammingDV32V33at'intahammingDV31V33Ia>=anumofafun_ora@a@eanth_diffV35V36V37qa=a@a@a@V34V35V36V37aTrueFV31V32a@a@eanth_diffV39V40V41qa=a@a@a@V38V39V40V41aTrueFV32V33c0c32anumofa@a@eanth_diffV43V44V45qa=a@a@a@V42V43V44V45aTrueFV31V33c0c32F
a>=a+at'intahammingDV31V32at'intahammingDV32V33at'intahammingDV31V33Aa>=anumofafun_ora@a@eanth_diffV35V36V37qa=a@a@a@V34V35V36V37aTrueFV31V32a@a@eanth_diffV39V40V41qa=a@a@a@V38V39V40V41aTrueFV32V33c0c32anumofa@a@eanth_diffV43V44V45qa=a@a@a@V42V43V44V45aTrueFV31V33c0c32ItOa=a@afun_ora@a@eanth_diffV48V49V50qa=a@a@a@V47V48V49V50aTrueFV31V32a@a@eanth_diffV52V53V54qa=a@a@a@V51V52V53V54aTrueFV32V33V46aTrueIanth_diffV31V33V46Ia<V46c32Aa<=c0V46FF
a>=a+at'intahammingDV31V32at'intahammingDV32V33at'intahammingDV31V33F
augeaaddahammingDV34V35ahammingDV35V36ahammingDV34V36F
avalidAsciiabw_orV0alsl_bvacountV0alastbitINa=anth_bvV0alastbitaTrueF
VC for ascii
a=anth_bvahammingDV0V1azerosaTrueqNavalidAsciiV0AavalidAsciiV1ONavalidAsciiV1AavalidAsciiV0F
a=afromGrayatoGrayV2V2Aa=atoGrayafromGrayV2V2F
a=ahammingDatoGrayV3atoGrayaaddV3aoneaoneIaultV3aonesF
a=anth_bvatoGrayV4V5aTrueqa=axorbanth_bvV4V5anth_bvV4aaddV5aoneaTrueIaultV5alastbitF
a=anth_bvV6alastbitaTrueqa=anth_bvatoGrayV6alastbitaTrueF
a=anth_bvacountalsr_bvV7V8azerosaTrueqa=anth_bvafromGrayV7V8aTrueIaultV8asize_bvF
a=anth_bvacountatoGrayV9azerosaTrueqa=anth_bvV9azerosaTrueF
a=abw_notabw_andV10V11abw_orabw_notV10abw_notV11F
a=abw_notabw_orV12V13abw_andabw_notV12abw_notV13F
a=abw_notaaddV14aoneasubabw_notV14aoneF
a=abw_notasubV15aoneaaddabw_notV15aoneF
a=abw_notanegV16asubV16aoneF
a=abw_notabw_xorV17V18abw_xorabw_notV17V18F
a=abw_notaaddV19V20asubabw_notV19V20F
a=abw_notasubV21V22aaddabw_notV21V22F
a=azerosabw_notabw_orV23anegaaddV23aoneF
a=anegV24aaddabw_notV24aoneF
a=abw_notV25asubanegV25aoneF
a=anegabw_notV26aaddV26aoneF
a=abw_notanegV27asubV27aoneF
a=aaddV28V29asubV28aaddabw_notV29aoneF
a=asubV30V31aaddV30aaddabw_notV31aoneF
a=abw_xorV32V33asubabw_orV32V33abw_andV32V33F
a=abw_andV34abw_notV35asubabw_orV34V35V35F
a=abw_notasubV36V37asubV37aaddV36aoneF
Na=abw_xorV38V39aaddabw_andV38V39abw_notabw_orV38V39F
a=abw_orV40V41aaddabw_andV40abw_notV41V41F
a=abw_andV42V43asubabw_orabw_notV42V43abw_notV42F
auleabw_xorV44V45abw_orV44V45F
auleabw_andV46V47abw_notabw_xorV46V47F
augeabw_orV48V49amaxV48V49F
auleabw_andV50V51aminV50V51F
auleabw_orV52V53aaddV52V53IauleV53aaddV52V53AauleV52aaddV52V53F
augtabw_orV54V55aaddV54V55INauleV55aaddV54V55AauleV54aaddV54V55F
a=abw_oralsr_bvV56V57alsl_bvanegalsr_bvV56c31asubc31V57aasr_bvV56V57IaultV57asize_bvF
a=abw_oralsl_bvV58aonealsr_bvV58c31arotate_left_bvV58aoneF
a=abw_oralsr_bvV59aonealsl_bvV59c31arotate_right_bvV59aoneF
auleabw_notV64abw_notV60Aauleabw_notV61abw_notV64Aauleabw_xorV64V65aaddV61V63Aauleazerosabw_xorV64V65Aauleabw_andV64V65aminV61V63Aauleazerosabw_andV64V65Aauleabw_orV64V65aaddV61V63AauleamaxV60V62abw_orV64V65IaaddDontOverflowV61V63IauleV65V63AauleV62V65AauleV64V61AauleV60V64F

34ffd49aa7ea04f35a3851129ea366c2 1H0
fcd76e497375824bfa2fa9736c5ca3dd 1H2H0
86f4fea9aa774eed6d486ec2f90b5964 1H7H2H0
63f794cb802e5811c1fcf6da82fe0dcb 1H3H2H0
31e7c34b9cc3f1a20baffae3dcb858b7 1H4H2H0
d66a53339e6928f2a06f87a036d96bfb 1H5H2H0
0bea889fa63affd5da321fdb169948a9 1H6H2H0
abdd781423a2cfb584b50c3132af502d 9H8H7H2H0
ed20c4e2babb373f60ba89e1fb13c525 12H24H10H7H2H0
41cf7899eeda5b1ab6add78637614199 15H14H10H7H2H0
1b8852c3ff93c00d381db0b9096a6350 12H11H10H7H2H0
cc0bf98b8b3d7995bf59aef2d2a91fc3 12H13H10H7H2H0
7f7c151b09d0a4a290c8e2d3aa63a928 17H21H10H7H2H0
d2302484060a80d9b98b9934936acd6f 17H16H10H7H2H0
57305a30c1fd365fe37cd35ebebda2d5 17H18H10H7H2H0
b243694c7864d4d226488f7cdb5268c2 17H19H10H7H2H0
051eeeae9b4b7de4fce1ce45f8e8b768 17H20H10H7H2H0
9aaf0a914a22b80df475e377dbfa5e52 23H22H10H7H2H0
6133462f9a02109aed4c54b800cf422e 1H26H25H10H7H2H0
70535cd5abea67f8eef779fab684945e 30H29H26H25H10H7H2H0
8e5a62399510df1ae6da6824c80b6a4c 17H27H26H25H10H7H2H0
39850657329c82f557ac24958cc8caaf 23H28H26H25H10H7H2H0
deefb03f0fa4679aa45d7901d9ebc77a 1H32H31H26H25H10H7H2H0
5e11f82802da5ef150d69cca45554fb6 1H33H32H31H26H25H10H7H2H0
e5eb2573c1341af31843c2205e8698a6 35H34H33H32H31H26H25H10H7H2H0
d49bec8580b671133af095b70fa99558 38H42H36H33H32H31H26H25H10H7H2H0
c8b8ebebdfccfa7430bfb1f9e08ca14c 17H40H36H33H32H31H26H25H10H7H2H0
2ba079ec2ae1f5375c6b31fe3bcac7bd 38H37H36H33H32H31H26H25H10H7H2H0
2dab3de836fc0f290f8a80bddcb2a058 38H39H36H33H32H31H26H25H10H7H2H0
e0841ad1597161840b46db0a36f219e6 23H41H36H33H32H31H26H25H10H7H2H0
282add863906de72770b598e843cd493 1H44H43H36H33H32H31H26H25H10H7H2H0
7b04056bbfee6469d626f78d3cb39e80 46H45
2590707a4f53f24288809fa5ea519dd1 1H47
01a043473741a8c13e46d8b1d1a967f9 1H48H47
5125b1cfbac72ff382df1cdd6a424d6f 1H49H48H47
24d72990a98632337171f67b6376fd4a 1H50H49H48H47
2b05f505e99c4ee95627e5b6f166bd7d 1H51H50H49H48H47
69bd69bd79a1933015e773c138ef78a1 1H52H51H50H49H48H47
f8568c73cd5dd31dde763e0e6cc79710 1H53H52H51H50H49H48H47
0e7c2efed9187c9fb4fb78c7a89059ab 1H54H53H52H51H50H49H48H47
eae7dab09a30bb6d12475331eca088cf 1H55H54H53H52H51H50H49H48H47
dc880ed809d9873c7273e3348589c06b 1H56H55H54H53H52H51H50H49H48H47
f9491d39959e88f5d125e186ff283464 1H57H56H55H54H53H52H51H50H49H48H47
d23b2a060d078981a3a3ba2a41309bd3 1H58H57H56H55H54H53H52H51H50H49H48H47
984310a217c8cfb5b8cd2810e490a7a7 1H59H58H57H56H55H54H53H52H51H50H49H48H47
17ad7a1f44ca5852ad67cce2d2943f70 1H60H59H58H57H56H55H54H53H52H51H50H49H48H47
e2df4f81458146fc276f51591e40d593 1H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
20339431d68004e496e9744aad7fbd4d 1H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
76c9fd33f514898edcddb8e90cb471aa 1H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
9853a6b317bba7816255cd53a5739121 1H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
266df81bfff59992a0adf38bc92693fe 1H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
00442cb3707784ed91487f89451d8068 1H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
15ce79bc2e90e1aa11e61a5c542451a1 1H67H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
cbafc66078e6d29d3597dabb92b25d33 1H68H67H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
75cafbfa52a0164654683f9306d9cfa2 1H69H68H67H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
14a0b61012f7d198cad88a1d9adfbcfc 1H70H69H68H67H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
72a8b7f91ce6c78b18801246e451a5b8 1H71H70H69H68H67H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
8851dd0ef782b8721021b43ba337ae20 1H72H71H70H69H68H67H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
b09a871739ba458ed92658dd71f968ce 1H73H72H71H70H69H68H67H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
608f54beeb29dcde87f8a0519fb9e3eb 1H74H73H72H71H70H69H68H67H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
0aed209e24cdd0951d9cc41a7352e2a4 1H75H74H73H72H71H70H69H68H67H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
6bca16716883f94265c983a78007830f 1H76H75H74H73H72H71H70H69H68H67H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
f801b175057c858585782a1fdd911718 1H77H76H75H74H73H72H71H70H69H68H67H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
4335e62d3eac683e45cb272faf48c2c2 1H78H77H76H75H74H73H72H71H70H69H68H67H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
5eecfcb092361150c6495f099d1fbea6 1H79H78H77H76H75H74H73H72H71H70H69H68H67H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
a43242b3306c666e1898abad8c868c91 1H80H79H78H77H76H75H74H73H72H71H70H69H68H67H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
abc7c1dc2a6b2652c65a7adaab63baa2 1H81H80H79H78H77H76H75H74H73H72H71H70H69H68H67H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
563ad8df9dbeaf7a9742001da0a153ef 1H82H81H80H79H78H77H76H75H74H73H72H71H70H69H68H67H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
2768d519c26cb6e944215283f11047af 1H83H82H81H80H79H78H77H76H75H74H73H72H71H70H69H68H67H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
c92555a64af38539da2f9708be3b073c 1H84H83H82H81H80H79H78H77H76H75H74H73H72H71H70H69H68H67H66H65H64H63H62H61H60H59H58H57H56H55H54H53H52H51H50H49H48H47
