iNa=aV0V4V1Ia<V4alengthV0Aa<=c0V4Fiia=aV0V5V1Aa<V5alengthV0Aa<=c0V5a<=V7V6Aa<=V3V7Ia=aV0V7V1Ia<V7alengthV0Aa<=c0V7FAa<V6alengthV0Aa<=c0V3Aa<a-V6V3a-V2V3Aa<=c0a-V2V3Ia=V6a-V5c1Fa>aV0V5V1Aa<V5alengthV0Aa<=c0V5a<=V9V2Aa<=V8V9Ia=aV0V9V1Ia<V9alengthV0Aa<=c0V9FAa<V2alengthV0Aa<=c0V8Aa<a-V2V8a-V2V3Aa<=c0a-V2V3Ia=V8a+V5c1Fa<aV0V5V1Aa<V5alengthV0Aa<=c0V5Aa<=V5V2Aa<=V3V5La+V3adiva-V2V3c2ANa=c2c0a<=V3V2Ia<=V10V2Aa<=V3V10Ia=aV0V10V1Ia<V10alengthV0Aa<=c0V10FAa<V2alengthV0Aa<=c0V3FAa<=V11a-alengthV0c1Aa<=c0V11Ia=aV0V11V1Ia<V11alengthV0Aa<=c0V11FAa<a-alengthV0c1alengthV0Aa<=c0c0Ia<=aV0V12aV0V13Ia<V13alengthV0Aa<=V12V13Aa<=c0V12FF
VC for binary_search
iNa=aV0V4V1Ia<V4alengthV0Aa<=c0V4Fiia=aV0V5V1Aa<V5alengthV0Aa<=c0V5a<=V7V6Aa<=V3V7Ia=aV0V7V1Ia<V7alengthV0Aa<=c0V7FAa<V6alengthV0Aa<=c0V3Aa<a-V6V3a-V2V3Aa<=c0a-V2V3Ia=V6a-V5c1Fa>aV0V5V1Aa<V5alengthV0Aa<=c0V5a<=V9V2Aa<=V8V9Ia=aV0V9V1Ia<V9alengthV0Aa<=c0V9FAa<V2alengthV0Aa<=c0V8Aa<a-V2V8a-V2V3Aa<=c0a-V2V3Ia=V8a+V5c1Fa<aV0V5V1Aa<V5alengthV0Aa<=c0V5Ia<=V5V2Aa<=V3V5FAa<=V3V2a<=V3V2Ia<=V10V2Aa<=V3V10Ia=aV0V10V1Ia<V10alengthV0Aa<=c0V10FAa<V2alengthV0Aa<=c0V3FAa<=V11a-alengthV0c1Aa<=c0V11Ia=aV0V11V1Ia<V11alengthV0Aa<=c0V11FAa<a-alengthV0c1alengthV0Aa<=c0c0Ia<=aV0V12aV0V13Ia<V13alengthV0Aa<=V12V13Aa<=c0V12FF
iiiNa=aV0V4V1Ia<V4alengthV0Aa<=c0V4FNa=aV0V5V1Ia<V5alengthV0Aa<V3V5FAa=aV0V3V1Aa<V3alengthV0Aa<=c0V3a=aV0V3V1Aa<V3alengthV0Aa<=c0V3a<V11a+V9V10Aa<=aV0V9V1Ia=aV0V11V1Ia<V11alengthV0Aa<=c0V11FAa>=V10c1Aa<=a+V9V10alengthV0Aa<=c0V9Aa<V10V2Aa<=c0V2Ia=V10a-V2V6FIa=V9V8FIia=V8V7a=V8V3a>aV0V7V1FAa<V7alengthV0Aa<=c0V7La+V3V6LadivV2c2ANa=c2c0a>V2c1Ia<V12a+V3V2Aa<=aV0V3V1Ia=aV0V12V1Ia<V12alengthV0Aa<=c0V12FAa>=V2c1Aa<=a+V3V2alengthV0Aa<=c0V3FAa<V13a+c0alengthV0Aa<=aV0c0V1Ia=aV0V13V1Ia<V13alengthV0Aa<=c0V13FAa>=alengthV0c1Aa<=a+c0alengthV0alengthV0Aa<=c0c0Na=aV0V14V1Ia<V14alengthV0Aa<=c0V14Fa=alengthV0c0Ia<=aV0V15aV0V16Ia<V16alengthV0Aa<=V15V16Aa<=c0V15FF
iNa=aV0V6V1Ia<V6aint32'intalengthV0Aa<=c0V6Fiia=aV0aint32'intV9V1Aa<aint32'intV9aint32'intalengthV0Aa<=c0aint32'intV9a<=V12aint32'intV11Aa<=aint32'intV5V12Ia=aV0V12V1Ia<V12aint32'intalengthV0Aa<=c0V12FAa<aint32'intV11aint32'intalengthV0Aa<=c0aint32'intV5Aa<a-aint32'intV11aint32'intV5a-aint32'intV4aint32'intV5Aa<=c0a-aint32'intV4aint32'intV5Ia=V11V10FIa=aint32'intV10a-aint32'intV9c1FAain_boundsa-aint32'intV9c1a>aint32'intaV0aint32'intV9aint32'intV1Aa<aint32'intV9aint32'intalengthV0Aa<=c0aint32'intV9a<=V15aint32'intV4Aa<=aint32'intV14V15Ia=aV0V15V1Ia<V15aint32'intalengthV0Aa<=c0V15FAa<aint32'intV4aint32'intalengthV0Aa<=c0aint32'intV14Aa<a-aint32'intV4aint32'intV14a-aint32'intV4aint32'intV5Aa<=c0a-aint32'intV4aint32'intV5Ia=V14V13FIa=aint32'intV13a+aint32'intV9c1FAain_boundsa+aint32'intV9c1a<aint32'intaV0aint32'intV9aint32'intV1Aa<aint32'intV9aint32'intalengthV0Aa<=c0aint32'intV9Aa<=aint32'intV9aint32'intV4Aa<=aint32'intV5aint32'intV9Ia=aint32'intV9a+aint32'intV5aint32'intV8FAain_boundsa+aint32'intV5aint32'intV8
ia=aV0V3c0Ia<V3V2Aa<=c0V3FAa=aV0V2c1Aa<V2alengthV0Aa<=c0V2ia=aV0V6c0Ia<V6V5Aa<=c0V6FAa=aV0V1c1Aa<V1alengthV0Aa<=V5V1Aa<=c0V5Aa<a-V1V5a-V1V2Aa<=c0a-V1V2Ia=V5a+V4c1Fa=aV0V8c0Ia<V8V2Aa<=c0V8FAa=aV0V7c1Aa<V7alengthV0Aa<=V2V7Aa<=c0V2Aa<a-V7V2a-V1V2Aa<=c0a-V1V2Ia=V7V4Fa=aV0V4c1Aa<V4alengthV0Aa<=c0V4La+V2adiva-V1V2c2ANa=c2c0a<V2V1Ia=aV0V9c0Ia<V9V2Aa<=c0V9FAa=aV0V1c1Aa<V1alengthV0Aa<=V2V1Aa<=c0V2FAa=aV0V10c0Ia<V10c0Aa<=c0V10FAa=aV0a-alengthV0c1c1Aa<a-alengthV0c1alengthV0Aa<=c0a-alengthV0c1Aa<=c0c0Ia=aV0a-alengthV0c1c1Aa<=aV0V12c1Aa<=aV0V11aV0V12Aa<=c0aV0V11Ia<V12alengthV0Aa<=V11V12Aa<=c0V11FAa<c0alengthV0F
a<adivV0c2V0Aa<=c0V0ANa=c2c0INa<=V0c1F
VC for log2
ia=alog2V0a+c1alog2adivV0c2a=alog2V0c0a<=V0c1F
a<=alog2V1alog2V2Ia<=alog2adivV1c2alog2adivV2c2ONa>V2c1Aa<=adivV1c2V3Aa<V3V2Aa<=c0V2ANa=c2c0LadivV2c2ANa=c2c0Ia>V2c1Ia<=V1V2F
VC for log2_monotone
a<=alog2V1alog2V2Ia<=V1V2F
a<=afV3a*c2alog2V3Ia>=V3c2F
empty_shape
a<=aaaV4aaaV5Ia<V5alengthaaAa<=V4V5Aa<=c0V4F
a=atimec0
a<=alengthaaalengthaaAa<=c0alengthaaAa<=c0c0
loop invariant init
a<aialengthaaAa<=alengthaaaiOa<aic0Aa<=c0ai
Na=aaaaiav
Na=aaaV6avIa<V6alengthaaAa<=alengthaaV6Oa<V6c0Aa<=c0V6F
a=a+a+atimea-atimeia+c1alog2alengthaac0a=alengthaac0ia+c1alog2alengthaac0a=alengthaac0Oa<a+a+atimea-atimeia+c1alog2alengthaac0a=alengthaac0ia+c1alog2alengthaac0a=alengthaac0
a<=a+a-atimeatimeafa-alengthaac0afalengthaa
a<=c0alo
a<=aloahi
a<=ahialengthaa
Na=aaaV6avIa<V6alengthaaAa<=ahiV6Oa<V6aloAa<=c0V6F
a<=a+a-atime1atimeafa-ahialoafalengthaa
a<aloahi
Na=c2c0
precondition
a<amidalengthaaAa<=c0amid
index in array bounds
a<aaaamidav
a=alo1a+amidc1
a=atime2a+atime1c1
a<a-ahialo1a-ahialoAa<=c0a-ahialo
loop variant decrease
a<=ahialengthaaAa<=alo1ahiAa<=c0alo1
loop invariant preservation
a<aialengthaaAa<=ahiaiOa<aialo1Aa<=c0ai
Na=aaaV7avIa<V7alengthaaAa<=ahiV7Oa<V7alo1Aa<=c0V7F
a<=a+a-atime2atimeafa-ahialo1afalengthaa
Na<aaaamidav
a>aaaamidav
a=ahi1amid
a<a-ahi1aloa-ahialoAa<=c0a-ahialo
a<=ahi1alengthaaAa<=aloahi1Aa<=c0alo
a<aialengthaaAa<=ahi1aiOa<aialoAa<=c0ai
Na=aaaV7avIa<V7alengthaaAa<=ahi1V7Oa<V7aloAa<=c0V7F
a<=a+a-atime2atimeafa-ahi1aloafalengthaa
Na>aaaamidav
Na=aaaV7avIa<V7alengthaaAa<=c0V7FAa=amidc-1Oa=aaaamidavAa<amidalengthaaAa<=c0amid
postcondition
a<=a-atime1atimeafalengthaa
Na<aloahi
Na=aaaV7avIa<V7alengthaaAa<=c0V7FAtOa=aaac-1avAa<c-1alengthaaAa<=c0c-1
ia<=a-V9V4afalengthV5ANa=aV5V10V6Ia<V10alengthV5Aa<=c0V10FAtOa=aV5c-1V6Aa<c-1alengthV5Aa<=c0c-1iia<=a-V9V4afalengthV5ANa=aV5V12V6Ia<V12alengthV5Aa<=c0V12FAa=V11c-1Oa=aV5V11V6Aa<V11alengthV5Aa<=c0V11a<=a+a-V14V4afa-V13V8afalengthV5ANa=aV5V15V6Ia<V15alengthV5Aa<=V13V15Oa<V15V8Aa<=c0V15FAa<=V13alengthV5Aa<=V8V13Aa<=c0V8Aa<a-V13V8a-V7V8Aa<=c0a-V7V8Ia=V14a+V9c1FIa=V13V11Fa>aV5V11V6Aa<V11alengthV5Aa<=c0V11a<=a+a-V17V4afa-V7V16afalengthV5ANa=aV5V18V6Ia<V18alengthV5Aa<=V7V18Oa<V18V16Aa<=c0V18FAa<=V7alengthV5Aa<=V16V7Aa<=c0V16Aa<a-V7V16a-V7V8Aa<=c0a-V7V8Ia=V17a+V9c1FIa=V16a+V11c1Fa<aV5V11V6Aa<V11alengthV5Aa<=c0V11La+V8adiva-V7V8c2ANa=c2c0a<V8V7Ia<=a+a-V9V4afa-V7V8afalengthV5ANa=aV5V19V6Ia<V19alengthV5Aa<=V7V19Oa<V19V8Aa<=c0V19FAa<=V7alengthV5Aa<=V8V7Aa<=c0V8FAa<=a+a-V4V4afa-alengthV5c0afalengthV5ANa=aV5V20V6Ia<V20alengthV5Aa<=alengthV5V20Oa<V20c0Aa<=c0V20FAa<=alengthV5alengthV5Aa<=c0alengthV5Aa<=c0c0Ia=V4c0Aa<=aV5V21aV5V22Ia<V22alengthV5Aa<=V21V22Aa<=c0V21FFF

bc651c9a1c100565b5517f3027d0a67e 1H0
f4f3da9f7b978cb10dce287be51f0150 1H2
68f5a51afa6790a9e370e55a4573024c 1H3
2e9279dde6b24c05b10dbbb9a0a68d51 1H4
a0a43266e5a426d618234f19fa156605 1H5
2e8ae85342678422e6ff2003b4e73451 7H6
05f6f0564a83bc84b2d0e3ec92119b12 10H9H8
4ff5c89b0289397d3f4f0c735fbd761e 13H12H11H8
8ca6ae0fb5078c9fbe7356fe862bc98c 1H57H12H11H8
6d6b9e9d25ba8d0e4446eee154a15230 17H16H15H14H12H11H8
f4acae4c2f780d2e349ab195d5024e29 17H19H18H16H15H14H12H11H8
e37355ec2d363d8e5a837eaad9cf9748 17H22H20H16H15H14H12H11H8
d2212b611eb98ee8421c4f9a931ed755 17H21H20H16H15H14H12H11H8
b1110b6c13c1a39143a18f90c8657d36 30H29H28H27H26H25H24H23H15H14H12H11H8
cb7beb9b36c3330fea5eae05f5fe49fa 32H31H28H27H26H25H24H23H15H14H12H11H8
a279ccbfb50adbf8c61f30d57b8ad077 37H36H35H34H33H28H27H26H25H24H23H15H14H12H11H8
28b4d750800666a2a51d5e74eaaee470 39H38H35H34H33H28H27H26H25H24H23H15H14H12H11H8
41478264d7d650ea825b06951aec7ec7 39H19H40H38H35H34H33H28H27H26H25H24H23H15H14H12H11H8
6c69c7735705ebc57516be143cd8321e 39H42H41H38H35H34H33H28H27H26H25H24H23H15H14H12H11H8
4dafd0ace70a5a960e02ea59149ade57 32H31H43H28H27H26H25H24H23H15H14H12H11H8
84e4db09deee5b3a7bfc44a33ba4f01b 37H46H35H45H44H43H28H27H26H25H24H23H15H14H12H11H8
ac7be995ba2d2206512b249077c8b328 39H47H35H45H44H43H28H27H26H25H24H23H15H14H12H11H8
9592834ee0fcd2627a8a2e68f475d781 39H19H48H47H35H45H44H43H28H27H26H25H24H23H15H14H12H11H8
ebcab6c0d9121fdb91eb53d490d62bcc 39H50H49H47H35H45H44H43H28H27H26H25H24H23H15H14H12H11H8
458d502b26a44ac94e715bc7bcc9727f 53H52H51H43H28H27H26H25H24H23H15H14H12H11H8
9b16bbefff9de82eaba2138ec37e8531 53H54H52H51H43H28H27H26H25H24H23H15H14H12H11H8
842773fcee03af75880076e5c5d3c3de 53H56H55H27H26H25H24H23H15H14H12H11H8
faa04e58c9cf97634c3db0886ae06040 53H54H56H55H27H26H25H24H23H15H14H12H11H8
