a=V2a@V1aheightV0ICa=V2a@V1c0aEmptya=V2a@ea=a@V5V6a@ea=a@V7V8a@V1a+c1amaxV6V8FaheightV4FaheightV3aNodeVwVV0FACtaEmptyCfaEmptya=V12V9Oa=V11V9aNodeVwVV0ACfaEmptya=V14V10Oa=V13V10aNodeVwVV0aNodeVwVV0F
VC for height_cps
a=a@ea=a@V1V2V2FaheightV0aheightV0F
VC for height
Ca>=asizekV0c0aIda>=asizekV0c0Ia>=asizekV2c0aKleftVVa>=asizekV0c0Ia>=asizekV4c0aKrightVVV0F
empty_shape
a>=asizekV0c0F
a>=a*c4asizeV1c0F
a>=asizewV2c0F
a=aevalkaIdaevalwaArgumentV3aheightV3F
loop invariant init
a<a+asizekV4asizewV7a+asizekV4asizewV5Aa<=c0a+asizekV4asizewV5Ia=V7aResultc0FIa=V6aEmptyIa=V5aArgumentV6FIa=V4aIdINais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
loop variant decrease
a=aevalkV4aevalwV7aheightV3Ia=V7aResultc0FIa=V6aEmptyIa=V5aArgumentV6FIa=V4aIdINais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
loop invariant preservation
a<a+asizekV11asizewV10a+asizekV4asizewV5Aa<=c0a+asizekV4asizewV5Ia=V11aKleftV9V4FIa=V10aArgumentV7FIa=V6aNodeV7V8V9FIa=V5aArgumentV6FIa=V4aIdINais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
a=aevalkV11aevalwV10aheightV3Ia=V11aKleftV9V4FIa=V10aArgumentV7FIa=V6aNodeV7V8V9FIa=V5aArgumentV6FIa=V4aIdINais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
fIa=V5aResultV6FIa=V4aIdINais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
unreachable point
a<a+asizekV4asizewV9a+asizekV4asizewV5Aa<=c0a+asizekV4asizewV5Ia=V9aResultc0FIa=V8aEmptyIa=V5aArgumentV8FIa=V4aKleftV6V7FINais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
a=aevalkV4aevalwV9aheightV3Ia=V9aResultc0FIa=V8aEmptyIa=V5aArgumentV8FIa=V4aKleftV6V7FINais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
a<a+asizekV13asizewV12a+asizekV4asizewV5Aa<=c0a+asizekV4asizewV5Ia=V13aKleftV11V4FIa=V12aArgumentV9FIa=V8aNodeV9V10V11FIa=V5aArgumentV8FIa=V4aKleftV6V7FINais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
a=aevalkV13aevalwV12aheightV3Ia=V13aKleftV11V4FIa=V12aArgumentV9FIa=V8aNodeV9V10V11FIa=V5aArgumentV8FIa=V4aKleftV6V7FINais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
a<a+asizekV10asizewV9a+asizekV4asizewV5Aa<=c0a+asizekV4asizewV5Ia=V10aKrightV8V7FIa=V9aArgumentV6FIa=V5aResultV8FIa=V4aKleftV6V7FINais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
a=aevalkV10aevalwV9aheightV3Ia=V10aKrightV8V7FIa=V9aArgumentV6FIa=V5aResultV8FIa=V4aKleftV6V7FINais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
a<a+asizekV4asizewV9a+asizekV4asizewV5Aa<=c0a+asizekV4asizewV5Ia=V9aResultc0FIa=V8aEmptyIa=V5aArgumentV8FIa=V4aKrightV6V7FINais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
a=aevalkV4aevalwV9aheightV3Ia=V9aResultc0FIa=V8aEmptyIa=V5aArgumentV8FIa=V4aKrightV6V7FINais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
a<a+asizekV13asizewV12a+asizekV4asizewV5Aa<=c0a+asizekV4asizewV5Ia=V13aKleftV11V4FIa=V12aArgumentV9FIa=V8aNodeV9V10V11FIa=V5aArgumentV8FIa=V4aKrightV6V7FINais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
a=aevalkV13aevalwV12aheightV3Ia=V13aKleftV11V4FIa=V12aArgumentV9FIa=V8aNodeV9V10V11FIa=V5aArgumentV8FIa=V4aKrightV6V7FINais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
a<a+asizekV10asizewV9a+asizekV4asizewV5Aa<=c0a+asizekV4asizewV5Ia=V10V7FIa=V9aResulta+c1amaxV6V8FIa=V5aResultV8FIa=V4aKrightV6V7FINais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
a=aevalkV10aevalwV9aheightV3Ia=V10V7FIa=V9aResulta+c1amaxV6V8FIa=V5aResultV8FIa=V4aKrightV6V7FINais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
fIa=V5aArgumentV6EINNais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
a=c0asizekV0Oa<c0asizekV0F
a=c0a*c4asizeV1Oa<c0a*c4asizeV1F
a=c0Ca+c1a*c4asizeV3aArgumentVc0aResultwV2Oa<c0Ca+c1a*c4asizeV4aArgumentVc0aResultwV2F
a=V8aheightV5ICa=V8V9aResultVfwV7FINNCtaResultwfwV7ACtaIdfwV6Ia=aevalkV6CaheightV10aArgumentVV11aResultVV7aheightV5FF
postcondition
a=V6aheightV3ICa=V6V7aResultVfwV5FINNais_resultV5Aais_idV4Ia=aevalkV4aevalwV5aheightV3FF
ia=V6aheightV3ICa=V6V7aResultVfwV5FACtaResultVfwV5CCCa=aevalkV4aevalwV10aheightV3Aa<a+asizekV4asizewV10a+asizekV4asizewV5Aa<=c0a+asizekV4asizewV5Ia=V10aResultc0FaEmptya=aevalkV15aevalwV14aheightV3Aa<a+asizekV15asizewV14a+asizekV4asizewV5Aa<=c0a+asizekV4asizewV5Ia=V15aKleftV13V4FIa=V14aArgumentV11FaNodeVVVV9aArgumentVfaResultVV5aIdCCa=aevalkV4aevalwV20aheightV3Aa<a+asizekV4asizewV20a+asizekV4asizewV5Aa<=c0a+asizekV4asizewV5Ia=V20aResultc0FaEmptya=aevalkV25aevalwV24aheightV3Aa<a+asizekV25asizewV24a+asizekV4asizewV5Aa<=c0a+asizekV4asizewV5Ia=V25aKleftV23V4FIa=V24aArgumentV21FaNodeVVVV19aArgumentVa=aevalkV28aevalwV27aheightV3Aa<a+asizekV28asizewV27a+asizekV4asizewV5Aa<=c0a+asizekV4asizewV5Ia=V28aKrightV26V18FIa=V27aArgumentV17FaResultVV5aKleftVVCCa=aevalkV4aevalwV32aheightV3Aa<a+asizekV4asizewV32a+asizekV4asizewV5Aa<=c0a+asizekV4asizewV5Ia=V32aResultc0FaEmptya=aevalkV37aevalwV36aheightV3Aa<a+asizekV37asizewV36a+asizekV4asizewV5Aa<=c0a+asizekV4asizewV5Ia=V37aKleftV35V4FIa=V36aArgumentV33FaNodeVVVV31aArgumentVa=aevalk
VC for height1
Ca>=asizesV0c0aNila>=asizesV0c0Ia>=asizesV2c0aConsVVV0F
a>=asizesV0c0F
CfaNila=V7V4aConswVV2Aa=asizesV2asizesV4Oa<asizesV4asizesV2Aa<=c0asizesV2Ia=V6aEmptyIa=V3aTuple2V5V6FIa=V2aConsV3V4FIa>=V1c0F
variant decrease
a>=amaxV1V5c0Ia=V6aEmptyIa=V3aTuple2V5V6FIa=V2aConsV3V4FIa>=V1c0F
precondition
CfaNila=V11V10aConswVV2Aa=asizesV2asizesV10Oa<asizesV10asizesV2Aa<=c0asizesV2LaConsaTuple2a+V5c1V7aConsaTuple2a+V5c1V9V4Ia=V6aNodeV7V8V9FIa=V3aTuple2V5V6FIa=V2aConsV3V4FIa>=V1c0F
a>=V1c0LaConsaTuple2a+V5c1V7aConsaTuple2a+V5c1V9V4Ia=V6aNodeV7V8V9FIa=V3aTuple2V5V6FIa=V2aConsV3V4FIa>=V1c0F
a=V3amaxV1aheightsV2ICa=V3V1aNilCCa=V3amaxamaxV1V6aheightsV5aEmptya=V3amaxV1aheightsaConsaTuple2a+V6c1V8aConsaTuple2a+V6c1V10V5aNodeVVVV7aTuple2VVV4aConsVVV2FIa>=V1c0F
a=V3amaxV1aheightsV2ICa=V3V1aNila=V3amaxamaxV1V4aheightsV5aConsaTuple2VaEmptyVa=V3amaxV1aheightsaConsaTuple2a+V6c1V7aConsaTuple2a+V6c1V8V9aConsaTuple2VaNodeVwVVV2FACtaNila>=amaxV1V10c0ACfaNila=V12V11aConswVV2Aa=asizesV2asizesV11Oa<asizesV11asizesV2Aa<=c0asizesV2aConsaTuple2VaEmptyVa>=V1c0ACfaNila=V18V17aConswVV2Aa=asizesV2asizesV17Oa<asizesV17asizesV2Aa<=c0asizesV2LaConsaTuple2a+V13c1V14aConsaTuple2a+V13c1V15V16aConsaTuple2VaNodeVwVVV2Ia>=V1c0F
VC for height_stack
a>=c0c0F
a=amaxc0aheightsaConsaTuple2c0V1aNilaheightV1F
a=amaxc0aheightsaConsaTuple2c0V1aNilaheightV1Aa>=c0c0F
Ca>aleavesV3V2aNonea<=c0V6Aa=V2a+aleavesV3V6Aa=V5amaxV0a+V1aheightV3aSomeaTuple2VVV4ICa=V4aSomeaTuple2amaxV0V1a-V2c1aEmptyCa=V4aNoneaNoneCa>aleavesV13V14aNonea<=c0V16Aa=V14a+aleavesV13V16Aa=V15amaxamaxV0a+a+V1V11c1a+a+V1c1aheightV13aSomeaTuple2VVV4La-V2V12aSomeaTuple3VVVV10ACa>aleavesV8V9Aa>aleavesV7V9aNonea<=V18V9Aa<c0V18Aa=aleavesV3a+aleavesV19V18Aa=aheightV3a+c1amaxV17aheightV19aSomeaTuple3VVVV10ELadivV2c2aNodeVwVV3FACtaEmptyCtaNonea<=c0amaxV0a+a+V1V24c1Aa<c0V27Aa<V27V2Aa<=c0V2La-V2V25aSomeaTuple3VVVV23ICa>aleavesV21V22Aa>aleavesV20V22aNonea<=V29V22Aa<c0V29Aa=aleavesV3a+aleavesV30V29Aa=aheightV3a+c1amaxV28aheightV30aSomeaTuple3VVVV23FAa<V22V2Aa<=c0V22LadivV2c2ANa=c2c0ACa>aleavesV21V31Aa>aleavesV20V31aNonea<=V34V31Aa<c0V34Aa=aleavesV3a+aleavesV35V34Aa=aheightV3a+c1amaxV33aheightV35aSomeaTuple3VVVV32IiCa=V32V38aSomewzCa=V32aSomeaTuple3V40a-V31V41V21aSomeaTuple2VVCa=V32aSomeaTuple3V43a-V31V44V20aSomeaTuple2VVa=V32aNoneaNoneV42ACa>aleavesV21V31aNonea<=c0V46Aa=V31a+aleavesV21V46Aa=V45amaxc0a+c0aheightV21aSomeaTuple2
VC for height_limited
ifCa>V3c0Aa<a-aleavesV0V3a-aleavesV0V1Aa<=c0a-aleavesV0V1Ia=V3a*V1c2FaNonea=V4aheightV0aSomeaTuple2VwV2ICa>aleavesV0V1aNonea<=c0V6Aa=V1a+aleavesV0V6Aa=V5amaxc0a+c0aheightV0aSomeaTuple2VVV2FAa<=c0c0Aa<c0V1tIa>V1c0FAa>c1c0F

e59aa02a26679c25d304d1ab988919b5 1H0
4be292273d9ad14cdc2a22a3fa181244 3H2
0de57887b5a1ab80926c17f3a587d0dc 5H6
5ab67e9a3fcaabaa4d2a8b25d7f7b8ec 5H4
5f2e615223c9394e85158a5451894b90 5H7H6
7199ff50988bfbd5993e08faf1b1c0f7 5H8H7H6
cf1daa4f32980792f2fdc9228da5cb12 39H38H8H7H6
b99bd06bbe788d9d94c158030f0aeb64 10H9H8H7H6
5b525a02422567dc15c1d6578a097711 12H11H8H7H6
1a8a99cbee9659c6e6a6769fd6cacae6 14H13H8H7H6
410ec30ef3f6b411f10cf932776eec9f 12H15H8H7H6
f49304a993aadaeaa8406ddfa0e7faae 14H16H8H7H6
b40eac2847d2aaf54647281149cf75dd 18H17H8H7H6
07226227b708ae8b31ff0c86a12134d1 12H19H8H7H6
1ceafd8e7aa7734c247f84c7c59a9920 14H20H8H7H6
d989b3cd60d752f990eea0d6318124d7 12H21H8H7H6
7b94db80ea833c80322b49ace851912b 14H22H8H7H6
916b399cd7c987ec4311c023d21a04f3 12H23H8H7H6
54dee7d2f7ffbc39445213e8445f8476 14H24H8H7H6
55a85a286ea6d15dba748b8e24dea0c1 12H25H8H7H6
35d36f586378dc8ff9929d38ed5542d6 14H26H8H7H6
b6b8fd480f0c9d791bc57b70f5333333 12H27H8H7H6
05d1f6b3e88c278a3db6addb39a8e24f 14H28H8H7H6
9893a999a7de1be7cecd209cf37e8c3b 12H29H8H7H6
9da74ded75328f61787df657f7e894b7 14H30H8H7H6
9fadc80084df946411332d26ee68397d 18H31H8H7H6
75a04e105865784ca9da113fa0a4dd74 36H37H8H7H6
2040eb51c276dcaebf3f60107ceac779 36H35H34H33H32
8953dbb6c8a2510722433e26d3f03841 5H41
e42a8c909cf50f306a78b97c6ffff186 5H40
02647921c9bb35ec4d8978f63943f2f8 50H49H41
682f3fce89fdb7a1040e569c7b1c68fc 43H42H41
1be9f36825ce7775ed7f9f1dc48edd82 45H44H41
8d96a8868f930186d68f60be0fc0639f 43H46H41
f79b1bdba0e792a9414be9179e28f46e 45H47H41
16ddf3186d619d5cc928e682e15eb559 36H48H41
fc04e6210db48b0243a643aa3152c9bf 39H53H41
e65345a504b9d1e822c651d87acdbcb7 45H51H41
cdd729f202d4339cc8a6e5aff992dffc 36H52H41
27c3e07670906ca221bc2a4bba02315e 55H54
d951edb54e15da07cc0efec1272a9b90 3H56
