mirror of
https://github.com/AdaCore/ada-eval.git
synced 2026-02-12 13:53:19 -08:00
14 lines
87 KiB
JSON
14 lines
87 KiB
JSON
{"name":"absolute_value","location":{"path":"src/integer_utils.ads","subprogram_name":"Absolute_Value"},"prompt":"When I try to prove Absolute_Value, I get a warning that \"R\" might not be initialized and \"-X\" might overflow. Please can you make Absolute_Value provable.\n","sources":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/integer_utils.adb":"cGFja2FnZSBib2R5IEludGVnZXJfVXRpbHMgaXMKCiAgIHByb2NlZHVyZSBBYnNvbHV0ZV9WYWx1ZSAoWCA6IEludGVnZXI7IFIgOiBvdXQgTmF0dXJhbCkgaXMKICAgYmVnaW4KICAgICAgaWYgWCA8IDAgdGhlbgogICAgICAgICBSIDo9IC1YOwogICAgICBlbmQgaWY7CiAgICAgIGlmIFggPj0gMCB0aGVuCiAgICAgICAgIFIgOj0gWDsKICAgICAgZW5kIGlmOwogICBlbmQgQWJzb2x1dGVfVmFsdWU7CgplbmQgSW50ZWdlcl9VdGlsczsK","src/integer_utils.ads":"cGFja2FnZSBJbnRlZ2VyX1V0aWxzIGlzCgogICBwcm9jZWR1cmUgQWJzb2x1dGVfVmFsdWUgKFggOiBJbnRlZ2VyOyBSIDogb3V0IE5hdHVyYWwpOwoKZW5kIEludGVnZXJfVXRpbHM7Cg=="},"canonical_solution":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/integer_utils.adb":"cGFja2FnZSBib2R5IEludGVnZXJfVXRpbHMgaXMKCiAgIHByb2NlZHVyZSBBYnNvbHV0ZV9WYWx1ZSAoWCA6IEludGVnZXI7IFIgOiBvdXQgTmF0dXJhbCkgaXMKICAgYmVnaW4KICAgICAgaWYgWCA8IDAgdGhlbgogICAgICAgICBSIDo9IC1YOwogICAgICBlbHNlCiAgICAgICAgIFIgOj0gWDsKICAgICAgZW5kIGlmOwogICBlbmQgQWJzb2x1dGVfVmFsdWU7CgplbmQgSW50ZWdlcl9VdGlsczsK","src/integer_utils.ads":"cGFja2FnZSBJbnRlZ2VyX1V0aWxzIGlzCgogICBwcm9jZWR1cmUgQWJzb2x1dGVfVmFsdWUgKFggOiBJbnRlZ2VyOyBSIDogb3V0IE5hdHVyYWwpCiAgIHdpdGggUHJlID0+IFggLz0gSW50ZWdlcidGaXJzdDsKCmVuZCBJbnRlZ2VyX1V0aWxzOwo="},"canonical_evaluation_results":[{"eval":"build","compiled":true,"pre_format_warnings":false,"post_format_warnings":false},{"eval":"prove","result":"proved","proved_checks":{"UNINITIALIZED":1,"VC_OVERFLOW_CHECK":1,"VC_RANGE_CHECK":2},"unproved_checks":{},"warnings":{},"non_spark_entities":[],"missing_required_checks":[],"pragma_assume_count":0},{"eval":"test","compiled":true,"passed_tests":true}],"comments":"","unit_tests":{"src/tests.adb":"d2l0aCBBZGEuQXNzZXJ0aW9uczsgdXNlIEFkYS5Bc3NlcnRpb25zOwoKd2l0aCBJbnRlZ2VyX1V0aWxzOyB1c2UgSW50ZWdlcl9VdGlsczsKCnByb2NlZHVyZSBUZXN0cyBpcwogICBwcm9jZWR1cmUgQ2hlY2tfQXNzZXJ0aW9uc19FbmFibGVkIGlzCiAgIGJlZ2luCiAgICAgIGJlZ2luCiAgICAgICAgIHByYWdtYSBBc3NlcnQgKEZhbHNlLCAiU2hvdWxkIHJhaXNlIik7CiAgICAgIGV4Y2VwdGlvbgogICAgICAgICB3aGVuIG90aGVycyA9PgogICAgICAgICAgICByZXR1cm47IC0tIHByb3Blcmx5IHJhaXNlZAogICAgICBlbmQ7CiAgICAgIHJhaXNlIFByb2dyYW1fRXJyb3Igd2l0aCAiQXNzZXJ0aW9ucyBub3QgZW5hYmxlZCI7CiAgIGVuZCBDaGVja19Bc3NlcnRpb25zX0VuYWJsZWQ7CgogICBwcm9jZWR1cmUgVGVzdF9BYnNvbHV0ZV9WYWx1ZSBpcwogICAgICBSZXN1bHQgOiBOYXR1cmFsOwogICBiZWdpbgogICAgICBBYnNvbHV0ZV9WYWx1ZSAoMSwgUmVzdWx0KTsKICAgICAgcHJhZ21hIEFzc2VydCAoUmVzdWx0ID0gMSwgIkV4cGVjdGVkIDEsIGdvdCAiICYgUmVzdWx0J0ltYWdlKTsKICAgICAgQWJzb2x1dGVfVmFsdWUgKC0xLCBSZXN1bHQpOwogICAgICBwcmFnbWEgQXNzZXJ0IChSZXN1bHQgPSAxLCAiRXhwZWN0ZWQgMSwgZ290ICIgJiBSZXN1bHQnSW1hZ2UpOwogICAgICBBYnNvbHV0ZV9WYWx1ZSAoSW50ZWdlcidGaXJzdCArIDEsIFJlc3VsdCk7CiAgICAgIHByYWdtYQogICAgICAgIEFzc2VydAogICAgICAgICAgKFJlc3VsdCA9IEludGVnZXInTGFzdCwKICAgICAgICAgICAiRXhwZWN0ZWQgIiAmIEludGVnZXInTGFzdCdJbWFnZSAmICIsIGdvdCAiICYgUmVzdWx0J0ltYWdlKTsKICAgZW5kIFRlc3RfQWJzb2x1dGVfVmFsdWU7CgpiZWdpbgogICBDaGVja19Bc3NlcnRpb25zX0VuYWJsZWQ7CiAgIFRlc3RfQWJzb2x1dGVfVmFsdWU7CmVuZCBUZXN0czsK","tests.gpr":"d2l0aCAibWFpbi5ncHIiOwoKcHJvamVjdCBUZXN0cyBpcwogICBmb3IgTGFuZ3VhZ2VzIHVzZSAoIkFkYSIpOwoKICAgZm9yIFNvdXJjZV9EaXJzIHVzZSAoInNyYyIpOwogICBmb3IgT2JqZWN0X0RpciB1c2UgIm9iaiI7CiAgIGZvciBFeGVjX0RpciB1c2UgImJpbiI7CiAgIGZvciBDcmVhdGVfTWlzc2luZ19EaXJzIHVzZSAiVHJ1ZSI7CiAgIGZvciBNYWluIHVzZSAoInRlc3RzLmFkYiIpOwoKICAgcGFja2FnZSBDb21waWxlciBpcwogICAgICBmb3IgRGVmYXVsdF9Td2l0Y2hlcyAoIkFkYSIpIHVzZSAoCiAgICAgICAgICItZyIgICAgICAgICAtLSBHZW5lcmF0ZSBkZWJ1ZyBpbmZvCiAgICAgICAgICwiLWduYXRhIiAgICAtLSBFbmFibGUgYXNzZXJ0aW9ucyBhbmQgY29udHJhY3RzCiAgICAgICAgICwiLWduYXRXOCIgICAtLSBVVEYtOCBlbmNvZGluZyBmb3Igd2lkZSBjaGFyYWN0ZXJzCiAgICAgICAgICwiLWduYXQyMDIyIiAtLSBVc2UgQWRhIDIwMjIgZmVhdHVyZXMKICAgICAgKTsKICAgZW5kIENvbXBpbGVyOwoKZW5kIFRlc3RzOw=="}}
|
|
{"name":"in_out_init","location":{"path":"src/show_permutation.ads","subprogram_name":"Cyclic_Permutation"},"prompt":"When I run gnatprove against Cyclic_Permutation, I get a warning that \"A\" is not initialized. Please can you identify and fix the issue.","sources":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/show_permutation.adb":"cGFja2FnZSBib2R5IFNob3dfUGVybXV0YXRpb24gaXMKCiAgIHByb2NlZHVyZSBTd2FwIChBIDogaW4gb3V0IFBlcm11dGF0aW9uOyBJLCBKIDogUG9zaXRpdmUpIGlzCiAgICAgIFRtcCA6IFBvc2l0aXZlIDo9IEEgKEkpOwogICBiZWdpbgogICAgICBBIChJKSA6PSBBIChKKTsKICAgICAgQSAoSikgOj0gVG1wOwogICBlbmQgU3dhcDsKCiAgIHByb2NlZHVyZSBJbml0IChBIDogaW4gb3V0IFBlcm11dGF0aW9uKSBpcwogICBiZWdpbgogICAgICBmb3IgSSBpbiBBJ0ZpcnN0IC4uIEEnTGFzdCBsb29wCiAgICAgICAgIEEgKEkpIDo9IEk7CiAgICAgIGVuZCBsb29wOwogICBlbmQgSW5pdDsKCiAgIGZ1bmN0aW9uIEN5Y2xpY19QZXJtdXRhdGlvbiAoTiA6IE5hdHVyYWwpIHJldHVybiBQZXJtdXRhdGlvbiBpcwogICAgICBBIDogUGVybXV0YXRpb24gKDEgLi4gTik7CiAgIGJlZ2luCiAgICAgIEluaXQgKEEpOwogICAgICBmb3IgSSBpbiBBJ0ZpcnN0IC4uIEEnTGFzdCAtIDEgbG9vcAogICAgICAgICBTd2FwIChBLCBJLCBJICsgMSk7CiAgICAgIGVuZCBsb29wOwogICAgICByZXR1cm4gQTsKICAgZW5kIEN5Y2xpY19QZXJtdXRhdGlvbjsKCmVuZCBTaG93X1Blcm11dGF0aW9uOwo=","src/show_permutation.ads":"cGFja2FnZSBTaG93X1Blcm11dGF0aW9uIGlzCgogICB0eXBlIFBlcm11dGF0aW9uIGlzIGFycmF5IChQb3NpdGl2ZSByYW5nZSA8Pikgb2YgUG9zaXRpdmU7CgogICBwcm9jZWR1cmUgU3dhcCAoQSA6IGluIG91dCBQZXJtdXRhdGlvbjsgSSwgSiA6IFBvc2l0aXZlKQogICB3aXRoIFByZSA9PiBJIGluIEEnUmFuZ2UgYW5kIHRoZW4gSiBpbiBBJ1JhbmdlOwoKICAgcHJvY2VkdXJlIEluaXQgKEEgOiBpbiBvdXQgUGVybXV0YXRpb24pOwoKICAgZnVuY3Rpb24gQ3ljbGljX1Blcm11dGF0aW9uIChOIDogTmF0dXJhbCkgcmV0dXJuIFBlcm11dGF0aW9uOwoKZW5kIFNob3dfUGVybXV0YXRpb247Cg=="},"canonical_solution":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/show_permutation.adb":"cGFja2FnZSBib2R5IFNob3dfUGVybXV0YXRpb24gaXMKCiAgIHByb2NlZHVyZSBTd2FwIChBIDogaW4gb3V0IFBlcm11dGF0aW9uOyBJLCBKIDogUG9zaXRpdmUpIGlzCiAgICAgIFRtcCA6IFBvc2l0aXZlIDo9IEEgKEkpOwogICBiZWdpbgogICAgICBBIChJKSA6PSBBIChKKTsKICAgICAgQSAoSikgOj0gVG1wOwogICBlbmQgU3dhcDsKCiAgIHByb2NlZHVyZSBJbml0IChBIDogb3V0IFBlcm11dGF0aW9uKSBpcwogICBiZWdpbgogICAgICBmb3IgSSBpbiBBJ0ZpcnN0IC4uIEEnTGFzdCBsb29wCiAgICAgICAgIEEgKEkpIDo9IEk7CiAgICAgIGVuZCBsb29wOwogICBlbmQgSW5pdDsKCiAgIGZ1bmN0aW9uIEN5Y2xpY19QZXJtdXRhdGlvbiAoTiA6IE5hdHVyYWwpIHJldHVybiBQZXJtdXRhdGlvbiBpcwogICAgICBBIDogUGVybXV0YXRpb24gKDEgLi4gTik7CiAgIGJlZ2luCiAgICAgIEluaXQgKEEpOwogICAgICBmb3IgSSBpbiBBJ0ZpcnN0IC4uIEEnTGFzdCAtIDEgbG9vcAogICAgICAgICBTd2FwIChBLCBJLCBJICsgMSk7CiAgICAgIGVuZCBsb29wOwogICAgICByZXR1cm4gQTsKICAgZW5kIEN5Y2xpY19QZXJtdXRhdGlvbjsKCmVuZCBTaG93X1Blcm11dGF0aW9uOwo=","src/show_permutation.ads":"cGFja2FnZSBTaG93X1Blcm11dGF0aW9uIGlzCgogICB0eXBlIFBlcm11dGF0aW9uIGlzIGFycmF5IChQb3NpdGl2ZSByYW5nZSA8Pikgb2YgUG9zaXRpdmU7CgogICBwcm9jZWR1cmUgU3dhcCAoQSA6IGluIG91dCBQZXJtdXRhdGlvbjsgSSwgSiA6IFBvc2l0aXZlKQogICB3aXRoIFByZSA9PiBJIGluIEEnUmFuZ2UgYW5kIHRoZW4gSiBpbiBBJ1JhbmdlOwoKICAgcHJvY2VkdXJlIEluaXQgKEEgOiBvdXQgUGVybXV0YXRpb24pOwoKICAgZnVuY3Rpb24gQ3ljbGljX1Blcm11dGF0aW9uIChOIDogTmF0dXJhbCkgcmV0dXJuIFBlcm11dGF0aW9uOwoKZW5kIFNob3dfUGVybXV0YXRpb247Cg=="},"canonical_evaluation_results":[{"eval":"build","compiled":true,"pre_format_warnings":false,"post_format_warnings":false},{"eval":"prove","result":"proved","proved_checks":{"SUBPROGRAM_TERMINATION":1,"UNINITIALIZED":2,"VC_INDEX_CHECK":4,"VC_OVERFLOW_CHECK":2,"VC_PRECONDITION":1,"VC_RANGE_CHECK":2},"unproved_checks":{},"warnings":{},"non_spark_entities":[],"missing_required_checks":[],"pragma_assume_count":0},{"eval":"test","compiled":true,"passed_tests":true}],"comments":"The init procedure initializes an array, but the parameter is incorrectly marked as in out, instead of just out.","unit_tests":{"src/tests.adb":"d2l0aCBBZGEuQXNzZXJ0aW9uczsgdXNlIEFkYS5Bc3NlcnRpb25zOwoKd2l0aCBTaG93X1Blcm11dGF0aW9uOyB1c2UgU2hvd19QZXJtdXRhdGlvbjsKCnByb2NlZHVyZSBUZXN0cyBpcwogICBwcm9jZWR1cmUgQ2hlY2tfQXNzZXJ0aW9uc19FbmFibGVkIGlzCiAgIGJlZ2luCiAgICAgIGJlZ2luCiAgICAgICAgIHByYWdtYSBBc3NlcnQgKEZhbHNlLCAiU2hvdWxkIHJhaXNlIik7CiAgICAgIGV4Y2VwdGlvbgogICAgICAgICB3aGVuIG90aGVycyA9PgogICAgICAgICAgICByZXR1cm47IC0tIHByb3Blcmx5IHJhaXNlZAogICAgICBlbmQ7CiAgICAgIHJhaXNlIFByb2dyYW1fRXJyb3Igd2l0aCAiQXNzZXJ0aW9ucyBub3QgZW5hYmxlZCI7CiAgIGVuZCBDaGVja19Bc3NlcnRpb25zX0VuYWJsZWQ7CgogICBwcm9jZWR1cmUgVGVzdF9Td2FwIGlzCiAgICAgIFNpbmdsZV9JdGVtICA6IFBlcm11dGF0aW9uICgxIC4uIDEpIDo9IFsxXTsKICAgICAgTG9uZ2VyX0FycmF5IDogUGVybXV0YXRpb24gOj0gWzEsIDIsIDMsIDQsIDVdOwogICBiZWdpbgogICAgICBTd2FwIChTaW5nbGVfSXRlbSwgMSwgMSk7CiAgICAgIHByYWdtYQogICAgICAgIEFzc2VydCAoU2luZ2xlX0l0ZW0gKDEpID0gMSwgIkV4cGVjdGVkIFsxXSwgZ290ICIgJiBTaW5nbGVfSXRlbSdJbWFnZSk7CiAgICAgIFN3YXAgKExvbmdlcl9BcnJheSwgTG9uZ2VyX0FycmF5J0ZpcnN0LCBMb25nZXJfQXJyYXknTGFzdCk7CiAgICAgIHByYWdtYQogICAgICAgIEFzc2VydAogICAgICAgICAgKExvbmdlcl9BcnJheSA9IFs1LCAyLCAzLCA0LCAxXSwKICAgICAgICAgICAiRXhwZWN0ZWQgWzUsIDIsIDMsIDQsIDFdLCBnb3QgIiAmIExvbmdlcl9BcnJheSdJbWFnZSk7CiAgIGVuZCBUZXN0X1N3YXA7CgogICBwcm9jZWR1cmUgVGVzdF9Jbml0IGlzCiAgICAgIFNpbmdsZV9JdGVtXzEgOiBQZXJtdXRhdGlvbiAoMSAuLiAxKTsKICAgICAgU2luZ2xlX0l0ZW1fMiA6IFBlcm11dGF0aW9uIChQb3NpdGl2ZSdMYXN0IC4uIFBvc2l0aXZlJ0xhc3QpOwogICAgICBMb25nZXJfQXJyYXkgIDogUGVybXV0YXRpb24gKDEgLi4gNSk7CiAgICAgIEVtcHR5X0FycmF5ICAgOiBQZXJtdXRhdGlvbiAoMSAuLiAwKTsKICAgYmVnaW4KICAgICAgSW5pdCAoU2luZ2xlX0l0ZW1fMSk7CiAgICAgIHByYWdtYQogICAgICAgIEFzc2VydAogICAgICAgICAgKFNpbmdsZV9JdGVtXzEgPSBbMV0sICJFeHBlY3RlZCBbMV0sIGdvdCAiICYgU2luZ2xlX0l0ZW1fMSdJbWFnZSk7CiAgICAgIEluaXQgKFNpbmdsZV9JdGVtXzIpOwogICAgICBwcmFnbWEKICAgICAgICBBc3NlcnQKICAgICAgICAgIChTaW5nbGVfSXRlbV8yID0gW1Bvc2l0aXZlJ0xhc3RdLAogICAgICAgICAgICJFeHBlY3RlZCBbIgogICAgICAgICAgICAgJiBQb3NpdGl2ZSdMYXN0J0ltYWdlCiAgICAgICAgICAgICAmICJdLCBnb3QgIgogICAgICAgICAgICAgJiBTaW5nbGVfSXRlbV8yJ0ltYWdlKTsKICAgICAgSW5pdCAoTG9uZ2VyX0FycmF5KTsKICAgICAgcHJhZ21hCiAgICAgICAgQXNzZXJ0CiAgICAgICAgICAoTG9uZ2VyX0FycmF5ID0gWzEsIDIsIDMsIDQsIDVdLAogICAgICAgICAgICJFeHBlY3RlZCBbMSwgMiwgMywgNCwgNV0sIGdvdCAiICYgTG9uZ2VyX0FycmF5J0ltYWdlKTsKICAgICAgSW5pdCAoRW1wdHlfQXJyYXkpOwogICAgICBwcmFnbWEKICAgICAgICBBc3NlcnQKICAgICAgICAgIChFbXB0eV9BcnJheSdMZW5ndGggPSAwLAogICAgICAgICAgICJFeHBlY3RlZCBlbXB0eSBhcnJheSwgZ290IGxlbmd0aCAiICYgRW1wdHlfQXJyYXknTGVuZ3RoJ0ltYWdlKTsKICAgZW5kIFRlc3RfSW5pdDsKCiAgIHByb2NlZHVyZSBUZXN0X0N5Y2xpY19QZXJtdXRhdGlvbiBpcwogICBiZWdpbgogICAgICBwcmFnbWEKICAgICAgICBBc3NlcnQKICAgICAgICAgIChDeWNsaWNfUGVybXV0YXRpb24gKDApID0gW10sCiAgICAgICAgICAgIkV4cGVjdGVkIFtdLCBnb3QgIiAmIEN5Y2xpY19QZXJtdXRhdGlvbiAoMCknSW1hZ2UpOwogICAgICBwcmFnbWEKICAgICAgICBBc3NlcnQKICAgICAgICAgIChDeWNsaWNfUGVybXV0YXRpb24gKDEpID0gWzFdLAogICAgICAgICAgICJFeHBlY3RlZCBbMV0sIGdvdCAiICYgQ3ljbGljX1Blcm11dGF0aW9uICgxKSdJbWFnZSk7CiAgICAgIHByYWdtYQogICAgICAgIEFzc2VydAogICAgICAgICAgKEN5Y2xpY19QZXJtdXRhdGlvbiAoMikgPSBbMiwgMV0sCiAgICAgICAgICAgIkV4cGVjdGVkIFsyLCAxXSwgZ290ICIgJiBDeWNsaWNfUGVybXV0YXRpb24gKDIpJ0ltYWdlKTsKICAgICAgcHJhZ21hCiAgICAgICAgQXNzZXJ0CiAgICAgICAgICAoQ3ljbGljX1Blcm11dGF0aW9uICgzKSA9IFsyLCAzLCAxXSwKICAgICAgICAgICAiRXhwZWN0ZWQgWzIsIDMsIDFdLCBnb3QgIiAmIEN5Y2xpY19QZXJtdXRhdGlvbiAoMyknSW1hZ2UpOwogICAgICBwcmFnbWEKICAgICAgICBBc3NlcnQKICAgICAgICAgIChDeWNsaWNfUGVybXV0YXRpb24gKDEwKSA9IFsyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMV0sCiAgICAgICAgICAgIkV4cGVjdGVkIFsyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMV0sIGdvdCAiCiAgICAgICAgICAgICAmIEN5Y2xpY19QZXJtdXRhdGlvbiAoMTApJ0ltYWdlKTsKICAgZW5kIFRlc3RfQ3ljbGljX1Blcm11dGF0aW9uOwoKYmVnaW4KICAgQ2hlY2tfQXNzZXJ0aW9uc19FbmFibGVkOwogICBUZXN0X1N3YXA7CiAgIFRlc3RfSW5pdDsKICAgVGVzdF9DeWNsaWNfUGVybXV0YXRpb247CmVuZCBUZXN0czsK","tests.gpr":"d2l0aCAibWFpbi5ncHIiOwoKcHJvamVjdCBUZXN0cyBpcwogICBmb3IgTGFuZ3VhZ2VzIHVzZSAoIkFkYSIpOwoKICAgZm9yIFNvdXJjZV9EaXJzIHVzZSAoInNyYyIpOwogICBmb3IgT2JqZWN0X0RpciB1c2UgIm9iaiI7CiAgIGZvciBFeGVjX0RpciB1c2UgImJpbiI7CiAgIGZvciBDcmVhdGVfTWlzc2luZ19EaXJzIHVzZSAiVHJ1ZSI7CiAgIGZvciBNYWluIHVzZSAoInRlc3RzLmFkYiIpOwoKICAgcGFja2FnZSBDb21waWxlciBpcwogICAgICBmb3IgRGVmYXVsdF9Td2l0Y2hlcyAoIkFkYSIpIHVzZSAoCiAgICAgICAgICItZyIgICAgICAgICAtLSBHZW5lcmF0ZSBkZWJ1ZyBpbmZvCiAgICAgICAgICwiLWduYXRhIiAgICAtLSBFbmFibGUgYXNzZXJ0aW9ucyBhbmQgY29udHJhY3RzCiAgICAgICAgICwiLWduYXRXOCIgICAtLSBVVEYtOCBlbmNvZGluZyBmb3Igd2lkZSBjaGFyYWN0ZXJzCiAgICAgICAgICwiLWduYXQyMDIyIiAtLSBVc2UgQWRhIDIwMjIgZmVhdHVyZXMKICAgICAgKTsKICAgZW5kIENvbXBpbGVyOwoKZW5kIFRlc3RzOw=="}}
|
|
{"name":"ineffective_statements_1","location":{"path":"src/show_ineffective_statements.ads","subprogram_name":"Swap1"},"prompt":"When I try to prove Swap1, I get a warning about an unused initial value of \"X\". Please can you help me prove Swap1.\n","sources":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/show_ineffective_statements.adb":"cGFja2FnZSBib2R5IFNob3dfSW5lZmZlY3RpdmVfU3RhdGVtZW50cyBpcwoKICAgcHJvY2VkdXJlIFN3YXAxIChYLCBZIDogaW4gb3V0IFQpIGlzCiAgICAgIFRtcCA6IFQ7CiAgIGJlZ2luCiAgICAgIFRtcCA6PSBYOwogICAgICBYIDo9IFk7CiAgICAgIFkgOj0gWDsKICAgZW5kIFN3YXAxOwoKZW5kIFNob3dfSW5lZmZlY3RpdmVfU3RhdGVtZW50czsK","src/show_ineffective_statements.ads":"cGFja2FnZSBTaG93X0luZWZmZWN0aXZlX1N0YXRlbWVudHMgaXMKCiAgIHR5cGUgVCBpcyBuZXcgSW50ZWdlcjsKCiAgIHByb2NlZHVyZSBTd2FwMSAoWCwgWSA6IGluIG91dCBUKTsKCmVuZCBTaG93X0luZWZmZWN0aXZlX1N0YXRlbWVudHM7Cg=="},"canonical_solution":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/show_ineffective_statements.adb":"cGFja2FnZSBib2R5IFNob3dfSW5lZmZlY3RpdmVfU3RhdGVtZW50cyBpcwoKICAgcHJvY2VkdXJlIFN3YXAxIChYLCBZIDogaW4gb3V0IFQpIGlzCiAgICAgIFRtcCA6IFQgOj0gWDsKICAgYmVnaW4KICAgICAgWCA6PSBZOwogICAgICBZIDo9IFRtcDsKICAgZW5kIFN3YXAxOwoKZW5kIFNob3dfSW5lZmZlY3RpdmVfU3RhdGVtZW50czsK","src/show_ineffective_statements.ads":"cGFja2FnZSBTaG93X0luZWZmZWN0aXZlX1N0YXRlbWVudHMgaXMKCiAgIHR5cGUgVCBpcyBuZXcgSW50ZWdlcjsKCiAgIHByb2NlZHVyZSBTd2FwMSAoWCwgWSA6IGluIG91dCBUKTsKCmVuZCBTaG93X0luZWZmZWN0aXZlX1N0YXRlbWVudHM7Cg=="},"canonical_evaluation_results":[{"eval":"build","compiled":true,"pre_format_warnings":false,"post_format_warnings":false},{"eval":"prove","result":"proved","proved_checks":{},"unproved_checks":{},"warnings":{},"non_spark_entities":[],"missing_required_checks":[],"pragma_assume_count":0},{"eval":"test","compiled":true,"passed_tests":true}],"comments":"","unit_tests":{"src/tests.adb":"d2l0aCBBZGEuQXNzZXJ0aW9uczsgdXNlIEFkYS5Bc3NlcnRpb25zOwoKd2l0aCBTaG93X0luZWZmZWN0aXZlX1N0YXRlbWVudHM7IHVzZSBTaG93X0luZWZmZWN0aXZlX1N0YXRlbWVudHM7Cgpwcm9jZWR1cmUgVGVzdHMgaXMKICAgcHJvY2VkdXJlIENoZWNrX0Fzc2VydGlvbnNfRW5hYmxlZCBpcwogICBiZWdpbgogICAgICBiZWdpbgogICAgICAgICBwcmFnbWEgQXNzZXJ0IChGYWxzZSwgIlNob3VsZCByYWlzZSIpOwogICAgICBleGNlcHRpb24KICAgICAgICAgd2hlbiBvdGhlcnMgPT4KICAgICAgICAgICAgcmV0dXJuOyAtLSBwcm9wZXJseSByYWlzZWQKICAgICAgZW5kOwogICAgICByYWlzZSBQcm9ncmFtX0Vycm9yIHdpdGggIkFzc2VydGlvbnMgbm90IGVuYWJsZWQiOwogICBlbmQgQ2hlY2tfQXNzZXJ0aW9uc19FbmFibGVkOwoKICAgcHJvY2VkdXJlIFRlc3RfU3dhcDEgaXMKICAgICAgWDEsIFkxIDogVCA6PSAxOwogICAgICBYMiAgICAgOiBUIDo9IDI7CiAgICAgIFkyICAgICA6IFQgOj0gMzsKICAgICAgWDMgICAgIDogVCA6PSBUJ0ZpcnN0OwogICAgICBZMyAgICAgOiBUIDo9IFQnTGFzdDsKICAgYmVnaW4KICAgICAgU3dhcDEgKFgxLCBZMSk7CiAgICAgIHByYWdtYSBBc3NlcnQgKFgxID0gMSBhbmQgWTEgPSAxLCAiU2hvdWxkIGhhdmUgbm8gZWZmZWN0Iik7CiAgICAgIFN3YXAxIChYMiwgWTIpOwogICAgICBwcmFnbWEgQXNzZXJ0IChYMiA9IDMgYW5kIFkyID0gMiwgIlNpbXBsZSBzd2FwIik7CiAgICAgIFN3YXAxIChYMywgWTMpOwogICAgICBwcmFnbWEgQXNzZXJ0IChYMyA9IFQnTGFzdCBhbmQgWTMgPSBUJ0ZpcnN0LCAiRXh0cmVtZSB2YWx1ZXMiKTsKICAgZW5kIFRlc3RfU3dhcDE7CgpiZWdpbgogICBDaGVja19Bc3NlcnRpb25zX0VuYWJsZWQ7CiAgIFRlc3RfU3dhcDE7CmVuZCBUZXN0czsK","tests.gpr":"d2l0aCAibWFpbi5ncHIiOwoKcHJvamVjdCBUZXN0cyBpcwogICBmb3IgTGFuZ3VhZ2VzIHVzZSAoIkFkYSIpOwoKICAgZm9yIFNvdXJjZV9EaXJzIHVzZSAoInNyYyIpOwogICBmb3IgT2JqZWN0X0RpciB1c2UgIm9iaiI7CiAgIGZvciBFeGVjX0RpciB1c2UgImJpbiI7CiAgIGZvciBDcmVhdGVfTWlzc2luZ19EaXJzIHVzZSAiVHJ1ZSI7CiAgIGZvciBNYWluIHVzZSAoInRlc3RzLmFkYiIpOwoKICAgcGFja2FnZSBDb21waWxlciBpcwogICAgICBmb3IgRGVmYXVsdF9Td2l0Y2hlcyAoIkFkYSIpIHVzZSAoCiAgICAgICAgICItZyIgICAgICAgICAtLSBHZW5lcmF0ZSBkZWJ1ZyBpbmZvCiAgICAgICAgICwiLWduYXRhIiAgICAtLSBFbmFibGUgYXNzZXJ0aW9ucyBhbmQgY29udHJhY3RzCiAgICAgICAgICwiLWduYXRXOCIgICAtLSBVVEYtOCBlbmNvZGluZyBmb3Igd2lkZSBjaGFyYWN0ZXJzCiAgICAgICAgICwiLWduYXQyMDIyIiAtLSBVc2UgQWRhIDIwMjIgZmVhdHVyZXMKICAgICAgKTsKICAgZW5kIENvbXBpbGVyOwoKZW5kIFRlc3RzOw=="}}
|
|
{"name":"ineffective_statements_2","location":{"path":"src/show_ineffective_statements.ads","subprogram_name":"Swap2"},"prompt":"When I try to prove Swap2, I get a warning about an unused initial value of \"X\". Please can you help me prove Swap2.\n","sources":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/show_ineffective_statements.adb":"cGFja2FnZSBib2R5IFNob3dfSW5lZmZlY3RpdmVfU3RhdGVtZW50cyBpcwoKICAgVG1wIDogVCA6PSAwOwoKICAgcHJvY2VkdXJlIFN3YXAyIChYLCBZIDogaW4gb3V0IFQpIGlzCiAgICAgIFRlbXAgOiBUIDo9IFg7CiAgIGJlZ2luCiAgICAgIFggOj0gWTsKICAgICAgWSA6PSBUbXA7CiAgIGVuZCBTd2FwMjsKCmVuZCBTaG93X0luZWZmZWN0aXZlX1N0YXRlbWVudHM7Cg==","src/show_ineffective_statements.ads":"cGFja2FnZSBTaG93X0luZWZmZWN0aXZlX1N0YXRlbWVudHMgaXMKCiAgIHR5cGUgVCBpcyBuZXcgSW50ZWdlcjsKCiAgIHByb2NlZHVyZSBTd2FwMiAoWCwgWSA6IGluIG91dCBUKTsKCmVuZCBTaG93X0luZWZmZWN0aXZlX1N0YXRlbWVudHM7Cg=="},"canonical_solution":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/show_ineffective_statements.adb":"cGFja2FnZSBib2R5IFNob3dfSW5lZmZlY3RpdmVfU3RhdGVtZW50cyBpcwoKICAgcHJvY2VkdXJlIFN3YXAyIChYLCBZIDogaW4gb3V0IFQpIGlzCiAgICAgIFRtcCA6IFQgOj0gWTsKICAgYmVnaW4KICAgICAgWSA6PSBYOwogICAgICBYIDo9IFRtcDsKICAgZW5kIFN3YXAyOwoKZW5kIFNob3dfSW5lZmZlY3RpdmVfU3RhdGVtZW50czsK","src/show_ineffective_statements.ads":"cGFja2FnZSBTaG93X0luZWZmZWN0aXZlX1N0YXRlbWVudHMgaXMKCiAgIHR5cGUgVCBpcyBuZXcgSW50ZWdlcjsKCiAgIHByb2NlZHVyZSBTd2FwMiAoWCwgWSA6IGluIG91dCBUKTsKCmVuZCBTaG93X0luZWZmZWN0aXZlX1N0YXRlbWVudHM7Cg=="},"canonical_evaluation_results":[{"eval":"build","compiled":true,"pre_format_warnings":false,"post_format_warnings":false},{"eval":"prove","result":"proved","proved_checks":{},"unproved_checks":{},"warnings":{},"non_spark_entities":[],"missing_required_checks":[],"pragma_assume_count":0},{"eval":"test","compiled":true,"passed_tests":true}],"comments":"","unit_tests":{"src/tests.adb":"d2l0aCBBZGEuQXNzZXJ0aW9uczsgdXNlIEFkYS5Bc3NlcnRpb25zOwoKd2l0aCBTaG93X0luZWZmZWN0aXZlX1N0YXRlbWVudHM7IHVzZSBTaG93X0luZWZmZWN0aXZlX1N0YXRlbWVudHM7Cgpwcm9jZWR1cmUgVGVzdHMgaXMKICAgcHJvY2VkdXJlIENoZWNrX0Fzc2VydGlvbnNfRW5hYmxlZCBpcwogICBiZWdpbgogICAgICBiZWdpbgogICAgICAgICBwcmFnbWEgQXNzZXJ0IChGYWxzZSwgIlNob3VsZCByYWlzZSIpOwogICAgICBleGNlcHRpb24KICAgICAgICAgd2hlbiBvdGhlcnMgPT4KICAgICAgICAgICAgcmV0dXJuOyAtLSBwcm9wZXJseSByYWlzZWQKICAgICAgZW5kOwogICAgICByYWlzZSBQcm9ncmFtX0Vycm9yIHdpdGggIkFzc2VydGlvbnMgbm90IGVuYWJsZWQiOwogICBlbmQgQ2hlY2tfQXNzZXJ0aW9uc19FbmFibGVkOwoKICAgcHJvY2VkdXJlIFRlc3RfU3dhcDIgaXMKICAgICAgWDEsIFkxIDogVCA6PSAxOwogICAgICBYMiAgICAgOiBUIDo9IDI7CiAgICAgIFkyICAgICA6IFQgOj0gMzsKICAgICAgWDMgICAgIDogVCA6PSBUJ0ZpcnN0OwogICAgICBZMyAgICAgOiBUIDo9IFQnTGFzdDsKICAgYmVnaW4KICAgICAgU3dhcDIgKFgxLCBZMSk7CiAgICAgIHByYWdtYSBBc3NlcnQgKFgxID0gMSBhbmQgWTEgPSAxLCAiU2hvdWxkIGhhdmUgbm8gZWZmZWN0Iik7CiAgICAgIFN3YXAyIChYMiwgWTIpOwogICAgICBwcmFnbWEgQXNzZXJ0IChYMiA9IDMgYW5kIFkyID0gMiwgIlNpbXBsZSBzd2FwIik7CiAgICAgIFN3YXAyIChYMywgWTMpOwogICAgICBwcmFnbWEgQXNzZXJ0IChYMyA9IFQnTGFzdCBhbmQgWTMgPSBUJ0ZpcnN0LCAiRXh0cmVtZSB2YWx1ZXMiKTsKICAgZW5kIFRlc3RfU3dhcDI7CgpiZWdpbgogICBDaGVja19Bc3NlcnRpb25zX0VuYWJsZWQ7CiAgIFRlc3RfU3dhcDI7CmVuZCBUZXN0czsK","tests.gpr":"d2l0aCAibWFpbi5ncHIiOwoKcHJvamVjdCBUZXN0cyBpcwogICBmb3IgTGFuZ3VhZ2VzIHVzZSAoIkFkYSIpOwoKICAgZm9yIFNvdXJjZV9EaXJzIHVzZSAoInNyYyIpOwogICBmb3IgT2JqZWN0X0RpciB1c2UgIm9iaiI7CiAgIGZvciBFeGVjX0RpciB1c2UgImJpbiI7CiAgIGZvciBDcmVhdGVfTWlzc2luZ19EaXJzIHVzZSAiVHJ1ZSI7CiAgIGZvciBNYWluIHVzZSAoInRlc3RzLmFkYiIpOwoKICAgcGFja2FnZSBDb21waWxlciBpcwogICAgICBmb3IgRGVmYXVsdF9Td2l0Y2hlcyAoIkFkYSIpIHVzZSAoCiAgICAgICAgICItZyIgICAgICAgICAtLSBHZW5lcmF0ZSBkZWJ1ZyBpbmZvCiAgICAgICAgICwiLWduYXRhIiAgICAtLSBFbmFibGUgYXNzZXJ0aW9ucyBhbmQgY29udHJhY3RzCiAgICAgICAgICwiLWduYXRXOCIgICAtLSBVVEYtOCBlbmNvZGluZyBmb3Igd2lkZSBjaGFyYWN0ZXJzCiAgICAgICAgICwiLWduYXQyMDIyIiAtLSBVc2UgQWRhIDIwMjIgZmVhdHVyZXMKICAgICAgKTsKICAgZW5kIENvbXBpbGVyOwoKZW5kIFRlc3RzOw=="}}
|
|
{"name":"max_array","location":{"path":"src/array_utils.ads","subprogram_name":"Max_Array"},"prompt":"I'm trying to prove the correctness of Max_Array. With that in mind I've added a postcondition that states that the result is greater than or equal to all elements in the array, however gnatprove isn't able to prove this. Please can you help me make this provable, without removing the postcondition?","sources":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/array_utils.adb":"cGFja2FnZSBib2R5IEFycmF5X1V0aWxzIGlzCgogICBmdW5jdGlvbiBNYXhfQXJyYXkgKEEgOiBBcnJheV9PZl9OYXR1cmFscykgcmV0dXJuIE5hdHVyYWwgaXMKICAgICAgTWF4IDogTmF0dXJhbCA6PSBOYXR1cmFsJ0ZpcnN0OwogICBiZWdpbgogICAgICBmb3IgSSBpbiBBJ1JhbmdlIGxvb3AKICAgICAgICAgaWYgQSAoSSkgPiBNYXggdGhlbgogICAgICAgICAgICBNYXggOj0gQSAoSSk7CiAgICAgICAgIGVuZCBpZjsKICAgICAgZW5kIGxvb3A7CiAgICAgIHJldHVybiBNYXg7CiAgIGVuZCBNYXhfQXJyYXk7CgplbmQgQXJyYXlfVXRpbHM7Cg==","src/array_utils.ads":"cGFja2FnZSBBcnJheV9VdGlscyBpcwoKICAgdHlwZSBBcnJheV9PZl9OYXR1cmFscyBpcyBhcnJheSAoSW50ZWdlciByYW5nZSA8Pikgb2YgTmF0dXJhbDsKCiAgIGZ1bmN0aW9uIE1heF9BcnJheSAoQSA6IEFycmF5X09mX05hdHVyYWxzKSByZXR1cm4gTmF0dXJhbAogICB3aXRoCiAgICAgUHJlICA9PiBBJ0xlbmd0aCA+IDAsCiAgICAgUG9zdCA9PiAoZm9yIGFsbCBJIGluIEEnUmFuZ2UgPT4gTWF4X0FycmF5J1Jlc3VsdCA+PSBBIChJKSk7CgplbmQgQXJyYXlfVXRpbHM7Cg=="},"canonical_solution":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/array_utils.adb":"cGFja2FnZSBib2R5IEFycmF5X1V0aWxzIGlzCgogICBmdW5jdGlvbiBNYXhfQXJyYXkgKEEgOiBBcnJheV9PZl9OYXR1cmFscykgcmV0dXJuIE5hdHVyYWwgaXMKICAgICAgTWF4IDogTmF0dXJhbCA6PSBOYXR1cmFsJ0ZpcnN0OwogICBiZWdpbgogICAgICBmb3IgSSBpbiBBJ1JhbmdlIGxvb3AKICAgICAgICAgcHJhZ21hCiAgICAgICAgICAgTG9vcF9JbnZhcmlhbnQKICAgICAgICAgICAgIChpZiBJID0gQSdGaXJzdAogICAgICAgICAgICAgICAgdGhlbiBUcnVlCiAgICAgICAgICAgICAgICBlbHNlIChmb3IgYWxsIEogaW4gQSdGaXJzdCAuLiBJIC0gMSA9PiBNYXggPj0gQSAoSikpKTsKICAgICAgICAgaWYgQSAoSSkgPiBNYXggdGhlbgogICAgICAgICAgICBNYXggOj0gQSAoSSk7CiAgICAgICAgIGVuZCBpZjsKICAgICAgZW5kIGxvb3A7CiAgICAgIHJldHVybiBNYXg7CiAgIGVuZCBNYXhfQXJyYXk7CgplbmQgQXJyYXlfVXRpbHM7Cg==","src/array_utils.ads":"cGFja2FnZSBBcnJheV9VdGlscyBpcwoKICAgdHlwZSBBcnJheV9PZl9OYXR1cmFscyBpcyBhcnJheSAoSW50ZWdlciByYW5nZSA8Pikgb2YgTmF0dXJhbDsKCiAgIGZ1bmN0aW9uIE1heF9BcnJheSAoQSA6IEFycmF5X09mX05hdHVyYWxzKSByZXR1cm4gTmF0dXJhbAogICB3aXRoCiAgICAgUHJlICA9PiBBJ0xlbmd0aCA+IDAsCiAgICAgUG9zdCA9PiAoZm9yIGFsbCBJIGluIEEnUmFuZ2UgPT4gTWF4X0FycmF5J1Jlc3VsdCA+PSBBIChJKSk7CgplbmQgQXJyYXlfVXRpbHM7Cg=="},"canonical_evaluation_results":[{"eval":"build","compiled":true,"pre_format_warnings":false,"post_format_warnings":false},{"eval":"prove","result":"proved","proved_checks":{"SUBPROGRAM_TERMINATION":1,"VC_INDEX_CHECK":2,"VC_LOOP_INVARIANT_INIT":1,"VC_LOOP_INVARIANT_PRESERV":1,"VC_OVERFLOW_CHECK":1,"VC_POSTCONDITION":1},"unproved_checks":{},"warnings":{},"non_spark_entities":[],"missing_required_checks":[],"pragma_assume_count":0},{"eval":"test","compiled":true,"passed_tests":true}],"comments":"","unit_tests":{"src/tests.adb":"d2l0aCBBZGEuQXNzZXJ0aW9uczsgdXNlIEFkYS5Bc3NlcnRpb25zOwp3aXRoIEFkYS5OdW1lcmljcy5EaXNjcmV0ZV9SYW5kb207Cgp3aXRoIEFycmF5X1V0aWxzOyB1c2UgQXJyYXlfVXRpbHM7Cgpwcm9jZWR1cmUgVGVzdHMgaXMKCiAgIHByb2NlZHVyZSBTaHVmZmxlX0FycmF5IChBcnIgOiBpbiBvdXQgQXJyYXlfVXRpbHMuQXJyYXlfT2ZfTmF0dXJhbHMpIGlzCiAgICAgIHN1YnR5cGUgQXJyYXlfSW5kZXggaXMgSW50ZWdlciByYW5nZSBBcnInUmFuZ2U7CiAgICAgIHBhY2thZ2UgUmFuZG9tX0luZGV4IGlzIG5ldyBBZGEuTnVtZXJpY3MuRGlzY3JldGVfUmFuZG9tIChBcnJheV9JbmRleCk7CiAgICAgIHVzZSBSYW5kb21fSW5kZXg7CgogICAgICBHICAgICAgICAgIDogR2VuZXJhdG9yOwogICAgICBUZW1wICAgICAgIDogTmF0dXJhbDsKICAgICAgUmFuZG9tX0lkeCA6IEludGVnZXI7CiAgIGJlZ2luCiAgICAgIFJlc2V0IChHKTsKCiAgICAgIC0tIEZpc2hlci1ZYXRlcyBzaHVmZmxlCiAgICAgIGZvciBJIGluIHJldmVyc2UgQXJyJ1JhbmdlIGxvb3AKICAgICAgICAgUmFuZG9tX0lkeCA6PSBSYW5kb20gKEcsIEFycidGaXJzdCwgSSk7CiAgICAgICAgIFRlbXAgOj0gQXJyIChJKTsKICAgICAgICAgQXJyIChJKSA6PSBBcnIgKFJhbmRvbV9JZHgpOwogICAgICAgICBBcnIgKFJhbmRvbV9JZHgpIDo9IFRlbXA7CiAgICAgIGVuZCBsb29wOwogICBlbmQgU2h1ZmZsZV9BcnJheTsKCiAgIHByb2NlZHVyZSBDaGVja19Bc3NlcnRpb25zX0VuYWJsZWQgaXMKICAgYmVnaW4KICAgICAgYmVnaW4KICAgICAgICAgcHJhZ21hIEFzc2VydCAoRmFsc2UsICJTaG91bGQgcmFpc2UiKTsKICAgICAgZXhjZXB0aW9uCiAgICAgICAgIHdoZW4gb3RoZXJzID0+CiAgICAgICAgICAgIHJldHVybjsgLS0gcHJvcGVybHkgcmFpc2VkCiAgICAgIGVuZDsKICAgICAgcmFpc2UgUHJvZ3JhbV9FcnJvciB3aXRoICJBc3NlcnRpb25zIG5vdCBlbmFibGVkIjsKICAgZW5kIENoZWNrX0Fzc2VydGlvbnNfRW5hYmxlZDsKCiAgIHByb2NlZHVyZSBUZXN0X01heF9BcnJheSBpcwogICAgICBBcnIxICAgICAgIDogY29uc3RhbnQgQXJyYXlfT2ZfTmF0dXJhbHMgOj0gWzFdOwogICAgICBBcnIyICAgICAgIDogY29uc3RhbnQgQXJyYXlfT2ZfTmF0dXJhbHMgOj0KICAgICAgICBbTmF0dXJhbCdGaXJzdCwgTmF0dXJhbCdGaXJzdCArIDFdOwogICAgICBBcnIzICAgICAgIDogY29uc3RhbnQgQXJyYXlfT2ZfTmF0dXJhbHMgOj0gW05hdHVyYWwnTGFzdCwgTmF0dXJhbCdGaXJzdF07CiAgICAgIEFycjQgICAgICAgOiBjb25zdGFudCBBcnJheV9PZl9OYXR1cmFscyA6PQogICAgICAgIFtOYXR1cmFsJ0xhc3QsIDAsIE5hdHVyYWwnRmlyc3RdOwogICAgICBBcnI1ICAgICAgIDogQXJyYXlfT2ZfTmF0dXJhbHMgKDEgLi4gMTBfMDAwKSA6PQogICAgICAgIChmb3IgSSBpbiAxIC4uIDEwXzAwMCA9PiBJKTsKICAgICAgQXJyNl9GaXJzdCA6IGNvbnN0YW50IEludGVnZXIgOj0gSW50ZWdlcidMYXN0IC0gOTk5OTsKICAgICAgQXJyNiAgICAgICA6IEFycmF5X09mX05hdHVyYWxzIChBcnI2X0ZpcnN0IC4uIEludGVnZXInTGFzdCkgOj0KICAgICAgICAoZm9yIEkgaW4gQXJyNl9GaXJzdCAuLiBJbnRlZ2VyJ0xhc3QgPT4gSSk7CiAgICAgIFJlczEgICAgICAgOiBjb25zdGFudCBOYXR1cmFsIDo9IE1heF9BcnJheSAoQXJyMSk7CiAgICAgIFJlczIgICAgICAgOiBjb25zdGFudCBOYXR1cmFsIDo9IE1heF9BcnJheSAoQXJyMik7CiAgICAgIFJlczMgICAgICAgOiBjb25zdGFudCBOYXR1cmFsIDo9IE1heF9BcnJheSAoQXJyMyk7CiAgICAgIFJlczQgICAgICAgOiBjb25zdGFudCBOYXR1cmFsIDo9IE1heF9BcnJheSAoQXJyNCk7CiAgICAgIFJlczUgICAgICAgOiBOYXR1cmFsOwogICAgICBSZXM2ICAgICAgIDogTmF0dXJhbDsKICAgYmVnaW4KICAgICAgU2h1ZmZsZV9BcnJheSAoQXJyNSk7CiAgICAgIFJlczUgOj0gTWF4X0FycmF5IChBcnI1KTsKICAgICAgU2h1ZmZsZV9BcnJheSAoQXJyNik7CiAgICAgIFJlczYgOj0gTWF4X0FycmF5IChBcnI2KTsKICAgICAgcHJhZ21hIEFzc2VydCAoUmVzMSA9IDEsICJTaW5nbGUgaXRlbSIpOwogICAgICBwcmFnbWEgQXNzZXJ0IChSZXMyID0gTmF0dXJhbCdGaXJzdCArIDEsICJUd28gc21hbGwgaXRlbXMiKTsKICAgICAgcHJhZ21hIEFzc2VydCAoUmVzMyA9IE5hdHVyYWwnTGFzdCwgIkV4dHJlbWUgdmFsdWVzIik7CiAgICAgIHByYWdtYSBBc3NlcnQgKFJlczQgPSBOYXR1cmFsJ0xhc3QsICJUaHJlZSBpdGVtcyIpOwogICAgICBwcmFnbWEgQXNzZXJ0IChSZXM1ID0gMTBfMDAwLCAiTGFyZ2UgYXJyYXkiKTsKICAgICAgcHJhZ21hIEFzc2VydCAoUmVzNiA9IEludGVnZXInTGFzdCwgIkxhcmdlIGFycmF5Iik7CiAgIGVuZCBUZXN0X01heF9BcnJheTsKCmJlZ2luCiAgIENoZWNrX0Fzc2VydGlvbnNfRW5hYmxlZDsKICAgVGVzdF9NYXhfQXJyYXk7CmVuZCBUZXN0czsK","tests.gpr":"d2l0aCAibWFpbi5ncHIiOwoKcHJvamVjdCBUZXN0cyBpcwogICBmb3IgTGFuZ3VhZ2VzIHVzZSAoIkFkYSIpOwoKICAgZm9yIFNvdXJjZV9EaXJzIHVzZSAoInNyYyIpOwogICBmb3IgT2JqZWN0X0RpciB1c2UgIm9iaiI7CiAgIGZvciBFeGVjX0RpciB1c2UgImJpbiI7CiAgIGZvciBDcmVhdGVfTWlzc2luZ19EaXJzIHVzZSAiVHJ1ZSI7CiAgIGZvciBNYWluIHVzZSAoInRlc3RzLmFkYiIpOwoKICAgcGFja2FnZSBDb21waWxlciBpcwogICAgICBmb3IgRGVmYXVsdF9Td2l0Y2hlcyAoIkFkYSIpIHVzZSAoCiAgICAgICAgICItZyIgICAgICAgICAtLSBHZW5lcmF0ZSBkZWJ1ZyBpbmZvCiAgICAgICAgICwiLWduYXRhIiAgICAtLSBFbmFibGUgYXNzZXJ0aW9ucyBhbmQgY29udHJhY3RzCiAgICAgICAgICwiLWduYXRXOCIgICAtLSBVVEYtOCBlbmNvZGluZyBmb3Igd2lkZSBjaGFyYWN0ZXJzCiAgICAgICAgICwiLWduYXQyMDIyIiAtLSBVc2UgQWRhIDIwMjIgZmVhdHVyZXMKICAgICAgKTsKICAgZW5kIENvbXBpbGVyOwoKZW5kIFRlc3RzOw=="},"required_checks":[{"rule":"VC_POSTCONDITION","entity_name":"Array_Utils.Max_Array","src_pattern":"\\(for all I in A'Range => Max_Array'Result >= A \\(I\\)\\);"}]}
|
|
{"name":"search_array_1","location":{"path":"src/search_array.ads","subprogram_name":"Search_Array"},"prompt":"The implementation of Search_Array is correct, but gnatprove is unhappy, stating that an \"unexpected exception might be raised\". It's not unexpected. I expect it to be raised. Please can you help me fix the function specification to tell gnatprove that an exception might be raised.","sources":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/search_array.adb":"cGFja2FnZSBib2R5IFNlYXJjaF9BcnJheSBpcwoKICAgcHJvY2VkdXJlIFNlYXJjaF9BcnJheQogICAgIChBIDogQXJyYXlfT2ZfUG9zaXRpdmVzOyBFIDogUG9zaXRpdmU7IFJlc3VsdCA6IG91dCBJbnRlZ2VyKSBpcwogICBiZWdpbgogICAgICBmb3IgSSBpbiBBJ1JhbmdlIGxvb3AKICAgICAgICAgaWYgQSAoSSkgPSBFIHRoZW4KICAgICAgICAgICAgUmVzdWx0IDo9IEk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZW5kIGlmOwogICAgICBlbmQgbG9vcDsKICAgICAgcmFpc2UgTm90X0ZvdW5kOwogICBlbmQgU2VhcmNoX0FycmF5OwoKZW5kIFNlYXJjaF9BcnJheTsK","src/search_array.ads":"cGFja2FnZSBTZWFyY2hfQXJyYXkgaXMKCiAgIHR5cGUgQXJyYXlfT2ZfUG9zaXRpdmVzIGlzIGFycmF5IChOYXR1cmFsIHJhbmdlIDw+KSBvZiBQb3NpdGl2ZTsKCiAgIE5vdF9Gb3VuZCA6IGV4Y2VwdGlvbjsKCiAgIHByb2NlZHVyZSBTZWFyY2hfQXJyYXkKICAgICAoQSA6IEFycmF5X09mX1Bvc2l0aXZlczsgRSA6IFBvc2l0aXZlOyBSZXN1bHQgOiBvdXQgSW50ZWdlcik7CgplbmQgU2VhcmNoX0FycmF5Owo="},"canonical_solution":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/search_array.adb":"cGFja2FnZSBib2R5IFNlYXJjaF9BcnJheSBpcwoKICAgcHJvY2VkdXJlIFNlYXJjaF9BcnJheQogICAgIChBIDogQXJyYXlfT2ZfUG9zaXRpdmVzOyBFIDogUG9zaXRpdmU7IFJlc3VsdCA6IG91dCBJbnRlZ2VyKSBpcwogICBiZWdpbgogICAgICBmb3IgSSBpbiBBJ1JhbmdlIGxvb3AKICAgICAgICAgaWYgQSAoSSkgPSBFIHRoZW4KICAgICAgICAgICAgUmVzdWx0IDo9IEk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZW5kIGlmOwogICAgICBlbmQgbG9vcDsKICAgICAgcmFpc2UgTm90X0ZvdW5kOwogICBlbmQgU2VhcmNoX0FycmF5OwoKZW5kIFNlYXJjaF9BcnJheTsK","src/search_array.ads":"cGFja2FnZSBTZWFyY2hfQXJyYXkgaXMKCiAgIHR5cGUgQXJyYXlfT2ZfUG9zaXRpdmVzIGlzIGFycmF5IChOYXR1cmFsIHJhbmdlIDw+KSBvZiBQb3NpdGl2ZTsKCiAgIE5vdF9Gb3VuZCA6IGV4Y2VwdGlvbjsKCiAgIHByb2NlZHVyZSBTZWFyY2hfQXJyYXkKICAgICAoQSA6IEFycmF5X09mX1Bvc2l0aXZlczsgRSA6IFBvc2l0aXZlOyBSZXN1bHQgOiBvdXQgSW50ZWdlcikKICAgd2l0aCBFeGNlcHRpb25hbF9DYXNlcyA9PiAoTm90X0ZvdW5kID0+IFRydWUpOwoKZW5kIFNlYXJjaF9BcnJheTsK"},"canonical_evaluation_results":[{"eval":"build","compiled":true,"pre_format_warnings":false,"post_format_warnings":false},{"eval":"prove","result":"proved","proved_checks":{"UNINITIALIZED":1,"VC_EXCEPTIONAL_CASE":1},"unproved_checks":{},"warnings":{},"non_spark_entities":[],"missing_required_checks":[],"pragma_assume_count":0},{"eval":"test","compiled":true,"passed_tests":true}],"comments":"","unit_tests":{"src/tests.adb":"d2l0aCBBZGEuQXNzZXJ0aW9uczsgdXNlIEFkYS5Bc3NlcnRpb25zOwoKd2l0aCBTZWFyY2hfQXJyYXk7IHVzZSBTZWFyY2hfQXJyYXk7Cgpwcm9jZWR1cmUgVGVzdHMgaXMKCiAgIHByb2NlZHVyZSBDaGVja19Bc3NlcnRpb25zX0VuYWJsZWQgaXMKICAgYmVnaW4KICAgICAgYmVnaW4KICAgICAgICAgcHJhZ21hIEFzc2VydCAoRmFsc2UsICJTaG91bGQgcmFpc2UiKTsKICAgICAgZXhjZXB0aW9uCiAgICAgICAgIHdoZW4gb3RoZXJzID0+CiAgICAgICAgICAgIHJldHVybjsgLS0gcHJvcGVybHkgcmFpc2VkCiAgICAgIGVuZDsKICAgICAgcmFpc2UgUHJvZ3JhbV9FcnJvciB3aXRoICJBc3NlcnRpb25zIG5vdCBlbmFibGVkIjsKICAgZW5kIENoZWNrX0Fzc2VydGlvbnNfRW5hYmxlZDsKCiAgIHByb2NlZHVyZSBUZXN0X1NlYXJjaF9BcnJheSBpcwogICAgICAtLSBUZXN0IGFycmF5cwogICAgICBMYXJnZV9BcnJheSAgICAgICAgIDogQXJyYXlfT2ZfUG9zaXRpdmVzIDo9IChmb3IgSSBpbiAxIC4uIDEwMDAgPT4gSSk7CiAgICAgIFVudXN1YWxfUmFuZ2VfQXJyYXkgOiBjb25zdGFudCBBcnJheV9PZl9Qb3NpdGl2ZXMgKDEwIC4uIDEyKSA6PQogICAgICAgIFsxMDAsIDIwMCwgMzAwXTsKCiAgICAgIFJlc3VsdCA6IEludGVnZXI7CiAgIGJlZ2luCgogICAgICAtLSBGaW5kIGZpcnN0IGVsZW1lbnQKICAgICAgU2VhcmNoX0FycmF5LlNlYXJjaF9BcnJheQogICAgICAgIChMYXJnZV9BcnJheSwgTGFyZ2VfQXJyYXkgKExhcmdlX0FycmF5J0ZpcnN0KSwgUmVzdWx0KTsKICAgICAgcHJhZ21hCiAgICAgICAgQXNzZXJ0CiAgICAgICAgICAoUmVzdWx0ID0gTGFyZ2VfQXJyYXknRmlyc3QsICJTaG91bGQgZmluZCBlbGVtZW50IGF0IHRoZSBiZWdpbm5pbmciKTsKCiAgICAgIC0tIEZpbmQgbGFzdCBlbGVtZW50CiAgICAgIFNlYXJjaF9BcnJheS5TZWFyY2hfQXJyYXkKICAgICAgICAoTGFyZ2VfQXJyYXksIExhcmdlX0FycmF5IChMYXJnZV9BcnJheSdMYXN0KSwgUmVzdWx0KTsKICAgICAgcHJhZ21hCiAgICAgICAgQXNzZXJ0IChSZXN1bHQgPSBMYXJnZV9BcnJheSdMYXN0LCAiU2hvdWxkIGZpbmQgZWxlbWVudCBhdCB0aGUgZW5kIik7CgogICAgICAtLSBGaW5kIG1pZGRsZSBlbGVtZW50CiAgICAgIFNlYXJjaF9BcnJheS5TZWFyY2hfQXJyYXkKICAgICAgICAoVW51c3VhbF9SYW5nZV9BcnJheSwKICAgICAgICAgVW51c3VhbF9SYW5nZV9BcnJheSAoVW51c3VhbF9SYW5nZV9BcnJheSdGaXJzdCArIDEpLAogICAgICAgICBSZXN1bHQpOwogICAgICBwcmFnbWEKICAgICAgICBBc3NlcnQKICAgICAgICAgIChSZXN1bHQgPSBVbnVzdWFsX1JhbmdlX0FycmF5J0ZpcnN0ICsgMSwKICAgICAgICAgICAiU2hvdWxkIGZpbmQgZWxlbWVudCBpbiB0aGUgbWlkZGxlIik7CgogICAgICAtLSBGaW5kIG5vbi1leGlzdGluZyBlbGVtZW50CiAgICAgIGJlZ2luCiAgICAgICAgIFNlYXJjaF9BcnJheS5TZWFyY2hfQXJyYXkgKExhcmdlX0FycmF5LCAxMDAxLCBSZXN1bHQpOwogICAgICBleGNlcHRpb24KICAgICAgICAgd2hlbiBOb3RfRm91bmQgPT4KICAgICAgICAgICAgcmV0dXJuOyAtLSBleHBlY3RlZCBleGNlcHRpb24KICAgICAgZW5kOwogICAgICByYWlzZSBQcm9ncmFtX0Vycm9yIHdpdGggImV4Y2VwdGlvbiBOb3RfRm91bmQgbm90IHJhaXNlZCBhcyBleHBlY3RlZCI7CiAgIGVuZCBUZXN0X1NlYXJjaF9BcnJheTsKCmJlZ2luCiAgIENoZWNrX0Fzc2VydGlvbnNfRW5hYmxlZDsKICAgVGVzdF9TZWFyY2hfQXJyYXk7CmVuZCBUZXN0czsK","tests.gpr":"d2l0aCAibWFpbi5ncHIiOwoKcHJvamVjdCBUZXN0cyBpcwogICBmb3IgTGFuZ3VhZ2VzIHVzZSAoIkFkYSIpOwoKICAgZm9yIFNvdXJjZV9EaXJzIHVzZSAoInNyYyIpOwogICBmb3IgT2JqZWN0X0RpciB1c2UgIm9iaiI7CiAgIGZvciBFeGVjX0RpciB1c2UgImJpbiI7CiAgIGZvciBDcmVhdGVfTWlzc2luZ19EaXJzIHVzZSAiVHJ1ZSI7CiAgIGZvciBNYWluIHVzZSAoInRlc3RzLmFkYiIpOwoKICAgcGFja2FnZSBDb21waWxlciBpcwogICAgICBmb3IgRGVmYXVsdF9Td2l0Y2hlcyAoIkFkYSIpIHVzZSAoCiAgICAgICAgICItZyIgICAgICAgICAtLSBHZW5lcmF0ZSBkZWJ1ZyBpbmZvCiAgICAgICAgICwiLWduYXRhIiAgICAtLSBFbmFibGUgYXNzZXJ0aW9ucyBhbmQgY29udHJhY3RzCiAgICAgICAgICwiLWduYXRXOCIgICAtLSBVVEYtOCBlbmNvZGluZyBmb3Igd2lkZSBjaGFyYWN0ZXJzCiAgICAgICAgICwiLWduYXQyMDIyIiAtLSBVc2UgQWRhIDIwMjIgZmVhdHVyZXMKICAgICAgKTsKICAgZW5kIENvbXBpbGVyOwoKZW5kIFRlc3RzOw=="}}
|
|
{"name":"search_array_2","location":{"path":"src/search_array.ads","subprogram_name":"Contains"},"prompt":"When I try to prove Contains, I get a lot of warnings. While the implementation isn't the most efficient, I'm not allowed to change it at this point. Can you help me figure out how to make gnatprove without changing the actual implementation. (You can add any contracts/pragma's that would help though).","sources":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/search_array.adb":"cGFja2FnZSBib2R5IFNlYXJjaF9BcnJheSBpcwoKICAgcHJvY2VkdXJlIFNlYXJjaF9BcnJheQogICAgIChBIDogQXJyYXlfT2ZfUG9zaXRpdmVzOyBFIDogUG9zaXRpdmU7IFJlc3VsdCA6IG91dCBJbnRlZ2VyKSBpcwogICBiZWdpbgogICAgICBmb3IgSSBpbiBBJ1JhbmdlIGxvb3AKICAgICAgICAgaWYgQSAoSSkgPSBFIHRoZW4KICAgICAgICAgICAgUmVzdWx0IDo9IEk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZW5kIGlmOwogICAgICBlbmQgbG9vcDsKICAgICAgcmFpc2UgTm90X0ZvdW5kOwogICBlbmQgU2VhcmNoX0FycmF5OwoKICAgZnVuY3Rpb24gQ29udGFpbnMgKEEgOiBBcnJheV9PZl9Qb3NpdGl2ZXM7IEUgOiBQb3NpdGl2ZSkgcmV0dXJuIEJvb2xlYW4gaXMKICAgICAgUmVzdWx0IDogSW50ZWdlcjsKICAgYmVnaW4KICAgICAgU2VhcmNoX0FycmF5IChBLCBFLCBSZXN1bHQpOwogICAgICBwcmFnbWEgVW5yZWZlcmVuY2VkIChSZXN1bHQpOwogICAgICByZXR1cm4gVHJ1ZTsKICAgZXhjZXB0aW9uCiAgICAgIHdoZW4gTm90X0ZvdW5kID0+CiAgICAgICAgIHJldHVybiBGYWxzZTsKICAgZW5kIENvbnRhaW5zOwoKZW5kIFNlYXJjaF9BcnJheTsK","src/search_array.ads":"cGFja2FnZSBTZWFyY2hfQXJyYXkgaXMKCiAgIHR5cGUgQXJyYXlfT2ZfUG9zaXRpdmVzIGlzIGFycmF5IChOYXR1cmFsIHJhbmdlIDw+KSBvZiBQb3NpdGl2ZTsKCiAgIE5vdF9Gb3VuZCA6IGV4Y2VwdGlvbjsKCiAgIHByb2NlZHVyZSBTZWFyY2hfQXJyYXkKICAgICAoQSA6IEFycmF5X09mX1Bvc2l0aXZlczsgRSA6IFBvc2l0aXZlOyBSZXN1bHQgOiBvdXQgSW50ZWdlcik7CgogICBmdW5jdGlvbiBDb250YWlucyAoQSA6IEFycmF5X09mX1Bvc2l0aXZlczsgRSA6IFBvc2l0aXZlKSByZXR1cm4gQm9vbGVhbjsKCmVuZCBTZWFyY2hfQXJyYXk7Cg=="},"canonical_solution":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/search_array.adb":"cGFja2FnZSBib2R5IFNlYXJjaF9BcnJheSBpcwoKICAgcHJvY2VkdXJlIFNlYXJjaF9BcnJheQogICAgIChBIDogQXJyYXlfT2ZfUG9zaXRpdmVzOyBFIDogUG9zaXRpdmU7IFJlc3VsdCA6IG91dCBJbnRlZ2VyKSBpcwogICBiZWdpbgogICAgICBmb3IgSSBpbiBBJ1JhbmdlIGxvb3AKICAgICAgICAgaWYgQSAoSSkgPSBFIHRoZW4KICAgICAgICAgICAgUmVzdWx0IDo9IEk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZW5kIGlmOwogICAgICBlbmQgbG9vcDsKICAgICAgcmFpc2UgTm90X0ZvdW5kOwogICBlbmQgU2VhcmNoX0FycmF5OwoKICAgZnVuY3Rpb24gQ29udGFpbnMgKEEgOiBBcnJheV9PZl9Qb3NpdGl2ZXM7IEUgOiBQb3NpdGl2ZSkgcmV0dXJuIEJvb2xlYW4gaXMKICAgICAgUmVzdWx0IDogSW50ZWdlcjsKICAgYmVnaW4KICAgICAgU2VhcmNoX0FycmF5IChBLCBFLCBSZXN1bHQpOwogICAgICBwcmFnbWEgVW5yZWZlcmVuY2VkIChSZXN1bHQpOwogICAgICByZXR1cm4gVHJ1ZTsKICAgZXhjZXB0aW9uCiAgICAgIHdoZW4gTm90X0ZvdW5kID0+CiAgICAgICAgIHJldHVybiBGYWxzZTsKICAgZW5kIENvbnRhaW5zOwoKZW5kIFNlYXJjaF9BcnJheTsK","src/search_array.ads":"cGFja2FnZSBTZWFyY2hfQXJyYXkgaXMKCiAgIHR5cGUgQXJyYXlfT2ZfUG9zaXRpdmVzIGlzIGFycmF5IChOYXR1cmFsIHJhbmdlIDw+KSBvZiBQb3NpdGl2ZTsKCiAgIE5vdF9Gb3VuZCA6IGV4Y2VwdGlvbjsKCiAgIHByb2NlZHVyZSBTZWFyY2hfQXJyYXkKICAgICAoQSA6IEFycmF5X09mX1Bvc2l0aXZlczsgRSA6IFBvc2l0aXZlOyBSZXN1bHQgOiBvdXQgSW50ZWdlcikKICAgd2l0aCBFeGNlcHRpb25hbF9DYXNlcyA9PiAoTm90X0ZvdW5kID0+IFRydWUpOwoKICAgZnVuY3Rpb24gQ29udGFpbnMgKEEgOiBBcnJheV9PZl9Qb3NpdGl2ZXM7IEUgOiBQb3NpdGl2ZSkgcmV0dXJuIEJvb2xlYW47CgplbmQgU2VhcmNoX0FycmF5Owo="},"canonical_evaluation_results":[{"eval":"build","compiled":true,"pre_format_warnings":false,"post_format_warnings":false},{"eval":"prove","result":"proved","proved_checks":{"SUBPROGRAM_TERMINATION":1,"UNINITIALIZED":1,"VC_EXCEPTIONAL_CASE":1,"VC_RAISE":1},"unproved_checks":{},"warnings":{},"non_spark_entities":[],"missing_required_checks":[],"pragma_assume_count":0},{"eval":"test","compiled":true,"passed_tests":true}],"comments":"This is basically the same as search_array_1, however if you try to prove Contains, gnatprove will output a bunch of warnings that might misdirect the user away from the actual issue.","unit_tests":{"src/tests.adb":"d2l0aCBBZGEuQXNzZXJ0aW9uczsgdXNlIEFkYS5Bc3NlcnRpb25zOwoKd2l0aCBTZWFyY2hfQXJyYXk7IHVzZSBTZWFyY2hfQXJyYXk7Cgpwcm9jZWR1cmUgVGVzdHMgaXMKCiAgIHByb2NlZHVyZSBDaGVja19Bc3NlcnRpb25zX0VuYWJsZWQgaXMKICAgYmVnaW4KICAgICAgYmVnaW4KICAgICAgICAgcHJhZ21hIEFzc2VydCAoRmFsc2UsICJTaG91bGQgcmFpc2UiKTsKICAgICAgZXhjZXB0aW9uCiAgICAgICAgIHdoZW4gb3RoZXJzID0+CiAgICAgICAgICAgIHJldHVybjsgLS0gcHJvcGVybHkgcmFpc2VkCiAgICAgIGVuZDsKICAgICAgcmFpc2UgUHJvZ3JhbV9FcnJvciB3aXRoICJBc3NlcnRpb25zIG5vdCBlbmFibGVkIjsKICAgZW5kIENoZWNrX0Fzc2VydGlvbnNfRW5hYmxlZDsKCiAgIHByb2NlZHVyZSBUZXN0X1NlYXJjaF9BcnJheSBpcwogICAgICAtLSBUZXN0IGFycmF5cwogICAgICBMYXJnZV9BcnJheSAgICAgICAgIDogQXJyYXlfT2ZfUG9zaXRpdmVzIDo9IChmb3IgSSBpbiAxIC4uIDEwMDAgPT4gSSk7CiAgICAgIFVudXN1YWxfUmFuZ2VfQXJyYXkgOiBjb25zdGFudCBBcnJheV9PZl9Qb3NpdGl2ZXMgKDEwIC4uIDEyKSA6PQogICAgICAgIFsxMDAsIDIwMCwgMzAwXTsKCiAgICAgIFJlc3VsdCA6IEludGVnZXI7CiAgIGJlZ2luCgogICAgICAtLSBGaW5kIGZpcnN0IGVsZW1lbnQKICAgICAgU2VhcmNoX0FycmF5LlNlYXJjaF9BcnJheQogICAgICAgIChMYXJnZV9BcnJheSwgTGFyZ2VfQXJyYXkgKExhcmdlX0FycmF5J0ZpcnN0KSwgUmVzdWx0KTsKICAgICAgcHJhZ21hCiAgICAgICAgQXNzZXJ0CiAgICAgICAgICAoUmVzdWx0ID0gTGFyZ2VfQXJyYXknRmlyc3QsICJTaG91bGQgZmluZCBlbGVtZW50IGF0IHRoZSBiZWdpbm5pbmciKTsKCiAgICAgIC0tIEZpbmQgbGFzdCBlbGVtZW50CiAgICAgIFNlYXJjaF9BcnJheS5TZWFyY2hfQXJyYXkKICAgICAgICAoTGFyZ2VfQXJyYXksIExhcmdlX0FycmF5IChMYXJnZV9BcnJheSdMYXN0KSwgUmVzdWx0KTsKICAgICAgcHJhZ21hCiAgICAgICAgQXNzZXJ0IChSZXN1bHQgPSBMYXJnZV9BcnJheSdMYXN0LCAiU2hvdWxkIGZpbmQgZWxlbWVudCBhdCB0aGUgZW5kIik7CgogICAgICAtLSBGaW5kIG1pZGRsZSBlbGVtZW50CiAgICAgIFNlYXJjaF9BcnJheS5TZWFyY2hfQXJyYXkKICAgICAgICAoVW51c3VhbF9SYW5nZV9BcnJheSwKICAgICAgICAgVW51c3VhbF9SYW5nZV9BcnJheSAoVW51c3VhbF9SYW5nZV9BcnJheSdGaXJzdCArIDEpLAogICAgICAgICBSZXN1bHQpOwogICAgICBwcmFnbWEKICAgICAgICBBc3NlcnQKICAgICAgICAgIChSZXN1bHQgPSBVbnVzdWFsX1JhbmdlX0FycmF5J0ZpcnN0ICsgMSwKICAgICAgICAgICAiU2hvdWxkIGZpbmQgZWxlbWVudCBpbiB0aGUgbWlkZGxlIik7CgogICAgICAtLSBGaW5kIG5vbi1leGlzdGluZyBlbGVtZW50CiAgICAgIGJlZ2luCiAgICAgICAgIFNlYXJjaF9BcnJheS5TZWFyY2hfQXJyYXkgKExhcmdlX0FycmF5LCAxMDAxLCBSZXN1bHQpOwogICAgICBleGNlcHRpb24KICAgICAgICAgd2hlbiBOb3RfRm91bmQgPT4KICAgICAgICAgICAgcmV0dXJuOyAtLSBleHBlY3RlZCBleGNlcHRpb24KICAgICAgZW5kOwogICAgICByYWlzZSBQcm9ncmFtX0Vycm9yIHdpdGggImV4Y2VwdGlvbiBOb3RfRm91bmQgbm90IHJhaXNlZCBhcyBleHBlY3RlZCI7CiAgIGVuZCBUZXN0X1NlYXJjaF9BcnJheTsKCmJlZ2luCiAgIENoZWNrX0Fzc2VydGlvbnNfRW5hYmxlZDsKICAgVGVzdF9TZWFyY2hfQXJyYXk7CmVuZCBUZXN0czsK","tests.gpr":"d2l0aCAibWFpbi5ncHIiOwoKcHJvamVjdCBUZXN0cyBpcwogICBmb3IgTGFuZ3VhZ2VzIHVzZSAoIkFkYSIpOwoKICAgZm9yIFNvdXJjZV9EaXJzIHVzZSAoInNyYyIpOwogICBmb3IgT2JqZWN0X0RpciB1c2UgIm9iaiI7CiAgIGZvciBFeGVjX0RpciB1c2UgImJpbiI7CiAgIGZvciBDcmVhdGVfTWlzc2luZ19EaXJzIHVzZSAiVHJ1ZSI7CiAgIGZvciBNYWluIHVzZSAoInRlc3RzLmFkYiIpOwoKICAgcGFja2FnZSBDb21waWxlciBpcwogICAgICBmb3IgRGVmYXVsdF9Td2l0Y2hlcyAoIkFkYSIpIHVzZSAoCiAgICAgICAgICItZyIgICAgICAgICAtLSBHZW5lcmF0ZSBkZWJ1ZyBpbmZvCiAgICAgICAgICwiLWduYXRhIiAgICAtLSBFbmFibGUgYXNzZXJ0aW9ucyBhbmQgY29udHJhY3RzCiAgICAgICAgICwiLWduYXRXOCIgICAtLSBVVEYtOCBlbmNvZGluZyBmb3Igd2lkZSBjaGFyYWN0ZXJzCiAgICAgICAgICwiLWduYXQyMDIyIiAtLSBVc2UgQWRhIDIwMjIgZmVhdHVyZXMKICAgICAgKTsKICAgZW5kIENvbXBpbGVyOwoKZW5kIFRlc3RzOw=="}}
|
|
{"name":"search_array_3","location":{"path":"src/search_array.ads","subprogram_name":"Search_Array"},"prompt":"Instead of raising an exception, can you modify the search function to use the new Search_Result type instead. The new implementation should be provable by gnatprove without warnings.","sources":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/search_array.adb":"cGFja2FnZSBib2R5IFNlYXJjaF9BcnJheSBpcwoKICAgcHJvY2VkdXJlIFNlYXJjaF9BcnJheQogICAgIChBIDogQXJyYXlfT2ZfUG9zaXRpdmVzOyBFIDogUG9zaXRpdmU7IFJlc3VsdCA6IG91dCBJbnRlZ2VyKSBpcwogICBiZWdpbgogICAgICBmb3IgSSBpbiBBJ1JhbmdlIGxvb3AKICAgICAgICAgaWYgQSAoSSkgPSBFIHRoZW4KICAgICAgICAgICAgUmVzdWx0IDo9IEk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZW5kIGlmOwogICAgICBlbmQgbG9vcDsKICAgICAgcmFpc2UgTm90X0ZvdW5kOwogICBlbmQgU2VhcmNoX0FycmF5OwoKZW5kIFNlYXJjaF9BcnJheTsK","src/search_array.ads":"cGFja2FnZSBTZWFyY2hfQXJyYXkgaXMKCiAgIHR5cGUgQXJyYXlfT2ZfUG9zaXRpdmVzIGlzIGFycmF5IChOYXR1cmFsIHJhbmdlIDw+KSBvZiBQb3NpdGl2ZTsKCiAgIE5vdF9Gb3VuZCA6IGV4Y2VwdGlvbjsKCiAgIHR5cGUgU2VhcmNoX1Jlc3VsdCAoRm91bmQgOiBCb29sZWFuIDo9IEZhbHNlKSBpcyByZWNvcmQKICAgICAgY2FzZSBGb3VuZCBpcwogICAgICAgICB3aGVuIFRydWUgPT4KICAgICAgICAgICAgQ29udGVudCA6IEludGVnZXI7CgogICAgICAgICB3aGVuIEZhbHNlID0+CiAgICAgICAgICAgIG51bGw7CiAgICAgIGVuZCBjYXNlOwogICBlbmQgcmVjb3JkOwoKICAgcHJvY2VkdXJlIFNlYXJjaF9BcnJheQogICAgIChBIDogQXJyYXlfT2ZfUG9zaXRpdmVzOyBFIDogUG9zaXRpdmU7IFJlc3VsdCA6IG91dCBTZWFyY2hfUmVzdWx0KTsKCmVuZCBTZWFyY2hfQXJyYXk7Cg=="},"canonical_solution":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/search_array.adb":"cGFja2FnZSBib2R5IFNlYXJjaF9BcnJheSBpcwoKICAgcHJvY2VkdXJlIFNlYXJjaF9BcnJheQogICAgIChBIDogQXJyYXlfT2ZfUG9zaXRpdmVzOyBFIDogUG9zaXRpdmU7IFJlc3VsdCA6IG91dCBTZWFyY2hfUmVzdWx0KSBpcwogICBiZWdpbgogICAgICBmb3IgSSBpbiBBJ1JhbmdlIGxvb3AKICAgICAgICAgaWYgQSAoSSkgPSBFIHRoZW4KICAgICAgICAgICAgUmVzdWx0IDo9IChGb3VuZCA9PiBUcnVlLCBDb250ZW50ID0+IEkpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGVuZCBpZjsKICAgICAgZW5kIGxvb3A7CiAgICAgIFJlc3VsdCA6PSAoRm91bmQgPT4gRmFsc2UpOwogICBlbmQgU2VhcmNoX0FycmF5OwoKZW5kIFNlYXJjaF9BcnJheTsK","src/search_array.ads":"cGFja2FnZSBTZWFyY2hfQXJyYXkgaXMKCiAgIHR5cGUgQXJyYXlfT2ZfUG9zaXRpdmVzIGlzIGFycmF5IChOYXR1cmFsIHJhbmdlIDw+KSBvZiBQb3NpdGl2ZTsKCiAgIHR5cGUgU2VhcmNoX1Jlc3VsdCAoRm91bmQgOiBCb29sZWFuIDo9IEZhbHNlKSBpcyByZWNvcmQKICAgICAgY2FzZSBGb3VuZCBpcwogICAgICAgICB3aGVuIFRydWUgPT4KICAgICAgICAgICAgQ29udGVudCA6IEludGVnZXI7CgogICAgICAgICB3aGVuIEZhbHNlID0+CiAgICAgICAgICAgIG51bGw7CiAgICAgIGVuZCBjYXNlOwogICBlbmQgcmVjb3JkOwoKICAgcHJvY2VkdXJlIFNlYXJjaF9BcnJheQogICAgIChBIDogQXJyYXlfT2ZfUG9zaXRpdmVzOyBFIDogUG9zaXRpdmU7IFJlc3VsdCA6IG91dCBTZWFyY2hfUmVzdWx0KQogICB3aXRoIFByZSA9PiBub3QgUmVzdWx0J0NvbnN0cmFpbmVkOwoKZW5kIFNlYXJjaF9BcnJheTsK"},"canonical_evaluation_results":[{"eval":"build","compiled":true,"pre_format_warnings":false,"post_format_warnings":false},{"eval":"prove","result":"proved","proved_checks":{"UNINITIALIZED":1,"VC_DISCRIMINANT_CHECK":2},"unproved_checks":{},"warnings":{},"non_spark_entities":[],"missing_required_checks":[],"pragma_assume_count":0},{"eval":"test","compiled":true,"passed_tests":true}],"comments":"In this problem, the solution requires both updating the implementation correctly, as well as adding the correct pre-condition to the subprogram specification as well.","unit_tests":{"src/tests.adb":"d2l0aCBBZGEuQXNzZXJ0aW9uczsgdXNlIEFkYS5Bc3NlcnRpb25zOwoKd2l0aCBTZWFyY2hfQXJyYXk7IHVzZSBTZWFyY2hfQXJyYXk7Cgpwcm9jZWR1cmUgVGVzdHMgaXMKCiAgIHByb2NlZHVyZSBDaGVja19Bc3NlcnRpb25zX0VuYWJsZWQgaXMKICAgYmVnaW4KICAgICAgYmVnaW4KICAgICAgICAgcHJhZ21hIEFzc2VydCAoRmFsc2UsICJTaG91bGQgcmFpc2UiKTsKICAgICAgZXhjZXB0aW9uCiAgICAgICAgIHdoZW4gb3RoZXJzID0+CiAgICAgICAgICAgIHJldHVybjsgLS0gcHJvcGVybHkgcmFpc2VkCiAgICAgIGVuZDsKICAgICAgcmFpc2UgUHJvZ3JhbV9FcnJvciB3aXRoICJBc3NlcnRpb25zIG5vdCBlbmFibGVkIjsKICAgZW5kIENoZWNrX0Fzc2VydGlvbnNfRW5hYmxlZDsKCiAgIHByb2NlZHVyZSBUZXN0X1NlYXJjaF9BcnJheSBpcwogICAgICAtLSBUZXN0IGFycmF5cwogICAgICBFbXB0eV9BcnJheSAgICAgICAgIDogY29uc3RhbnQgQXJyYXlfT2ZfUG9zaXRpdmVzICgxIC4uIDApIDo9IFtdOwogICAgICBMYXJnZV9BcnJheSAgICAgICAgIDogQXJyYXlfT2ZfUG9zaXRpdmVzIDo9IChmb3IgSSBpbiAxIC4uIDEwMDAgPT4gSSk7CiAgICAgIFVudXN1YWxfUmFuZ2VfQXJyYXkgOiBjb25zdGFudCBBcnJheV9PZl9Qb3NpdGl2ZXMgKDEwIC4uIDEyKSA6PQogICAgICAgIFsxMDAsIDIwMCwgMzAwXTsKCiAgICAgIFJlc3VsdCA6IFNlYXJjaF9SZXN1bHQ7CiAgIGJlZ2luCiAgICAgIC0tIEZpbmQgbm90aGluZyBpbiBhbiBlbXB0eSBhcnJheQogICAgICBTZWFyY2hfQXJyYXkuU2VhcmNoX0FycmF5IChFbXB0eV9BcnJheSwgMSwgUmVzdWx0KTsKICAgICAgcHJhZ21hCiAgICAgICAgQXNzZXJ0IChSZXN1bHQuRm91bmQgPSBGYWxzZSwgIlNob3VsZCd0IGZpbmQgZWxlbWVudCBpbiBlbXB0eSBhcnJheSIpOwoKICAgICAgLS0gRmluZCBmaXJzdCBlbGVtZW50CiAgICAgIFNlYXJjaF9BcnJheS5TZWFyY2hfQXJyYXkKICAgICAgICAoTGFyZ2VfQXJyYXksIExhcmdlX0FycmF5IChMYXJnZV9BcnJheSdGaXJzdCksIFJlc3VsdCk7CiAgICAgIHByYWdtYQogICAgICAgIEFzc2VydCAoUmVzdWx0LkZvdW5kID0gVHJ1ZSwgIlNob3VsZCBmaW5kIGVsZW1lbnQgYXQgdGhlIGJlZ2lubmluZyIpOwogICAgICBwcmFnbWEKICAgICAgICBBc3NlcnQKICAgICAgICAgIChSZXN1bHQuQ29udGVudCA9IExhcmdlX0FycmF5J0ZpcnN0LAogICAgICAgICAgICJTaG91bGQgZmluZCBlbGVtZW50IGF0IHRoZSBiZWdpbm5pbmciKTsKCiAgICAgIC0tIEZpbmQgbGFzdCBlbGVtZW50CiAgICAgIFNlYXJjaF9BcnJheS5TZWFyY2hfQXJyYXkKICAgICAgICAoTGFyZ2VfQXJyYXksIExhcmdlX0FycmF5IChMYXJnZV9BcnJheSdMYXN0KSwgUmVzdWx0KTsKICAgICAgcHJhZ21hIEFzc2VydCAoUmVzdWx0LkZvdW5kID0gVHJ1ZSwgIlNob3VsZCBmaW5kIGVsZW1lbnQgYXQgdGhlIGVuZCIpOwogICAgICBwcmFnbWEKICAgICAgICBBc3NlcnQKICAgICAgICAgIChSZXN1bHQuQ29udGVudCA9IExhcmdlX0FycmF5J0xhc3QsCiAgICAgICAgICAgIlNob3VsZCBmaW5kIGVsZW1lbnQgYXQgdGhlIGVuZCIpOwoKICAgICAgLS0gRmluZCBtaWRkbGUgZWxlbWVudAogICAgICBTZWFyY2hfQXJyYXkuU2VhcmNoX0FycmF5CiAgICAgICAgKFVudXN1YWxfUmFuZ2VfQXJyYXksCiAgICAgICAgIFVudXN1YWxfUmFuZ2VfQXJyYXkgKFVudXN1YWxfUmFuZ2VfQXJyYXknRmlyc3QgKyAxKSwKICAgICAgICAgUmVzdWx0KTsKICAgICAgcHJhZ21hIEFzc2VydCAoUmVzdWx0LkZvdW5kID0gVHJ1ZSwgIlNob3VsZCBmaW5kIGVsZW1lbnQgaW4gdGhlIG1pZGRsZSIpOwogICAgICBwcmFnbWEKICAgICAgICBBc3NlcnQKICAgICAgICAgIChSZXN1bHQuQ29udGVudCA9IFVudXN1YWxfUmFuZ2VfQXJyYXknRmlyc3QgKyAxLAogICAgICAgICAgICJTaG91bGQgZmluZCBlbGVtZW50IGluIHRoZSBtaWRkbGUiKTsKICAgZW5kIFRlc3RfU2VhcmNoX0FycmF5OwoKYmVnaW4KICAgQ2hlY2tfQXNzZXJ0aW9uc19FbmFibGVkOwogICBUZXN0X1NlYXJjaF9BcnJheTsKZW5kIFRlc3RzOwo=","tests.gpr":"d2l0aCAibWFpbi5ncHIiOwoKcHJvamVjdCBUZXN0cyBpcwogICBmb3IgTGFuZ3VhZ2VzIHVzZSAoIkFkYSIpOwoKICAgZm9yIFNvdXJjZV9EaXJzIHVzZSAoInNyYyIpOwogICBmb3IgT2JqZWN0X0RpciB1c2UgIm9iaiI7CiAgIGZvciBFeGVjX0RpciB1c2UgImJpbiI7CiAgIGZvciBDcmVhdGVfTWlzc2luZ19EaXJzIHVzZSAiVHJ1ZSI7CiAgIGZvciBNYWluIHVzZSAoInRlc3RzLmFkYiIpOwoKICAgcGFja2FnZSBDb21waWxlciBpcwogICAgICBmb3IgRGVmYXVsdF9Td2l0Y2hlcyAoIkFkYSIpIHVzZSAoCiAgICAgICAgICItZyIgICAgICAgICAtLSBHZW5lcmF0ZSBkZWJ1ZyBpbmZvCiAgICAgICAgICwiLWduYXRhIiAgICAtLSBFbmFibGUgYXNzZXJ0aW9ucyBhbmQgY29udHJhY3RzCiAgICAgICAgICwiLWduYXRXOCIgICAtLSBVVEYtOCBlbmNvZGluZyBmb3Igd2lkZSBjaGFyYWN0ZXJzCiAgICAgICAgICwiLWduYXQyMDIyIiAtLSBVc2UgQWRhIDIwMjIgZmVhdHVyZXMKICAgICAgKTsKICAgZW5kIENvbXBpbGVyOwoKZW5kIFRlc3RzOw=="}}
|
|
{"name":"show_modularity","location":{"path":"src/integer_utils.ads","subprogram_name":"Increment_Twice"},"prompt":"I'm trying to prove the absence of runtime errors for Increment_Twice. Please can you help me do this without changing the functionality of the code.","sources":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/integer_utils.adb":"cGFja2FnZSBib2R5IEludGVnZXJfVXRpbHMgaXMKCiAgIHByb2NlZHVyZSBJbmNyZW1lbnQgKFggOiBpbiBvdXQgSW50ZWdlcikgaXMKICAgYmVnaW4KICAgICAgWCA6PSBYICsgMTsKICAgZW5kIEluY3JlbWVudDsKCiAgIHByb2NlZHVyZSBJbmNyZW1lbnRfVHdpY2UgKFggOiBpbiBvdXQgSW50ZWdlcikgaXMKICAgYmVnaW4KICAgICAgSW5jcmVtZW50IChYKTsKICAgICAgSW5jcmVtZW50IChYKTsKICAgZW5kIEluY3JlbWVudF9Ud2ljZTsKCmVuZCBJbnRlZ2VyX1V0aWxzOwo=","src/integer_utils.ads":"cGFja2FnZSBJbnRlZ2VyX1V0aWxzIGlzCgogICBwcm9jZWR1cmUgSW5jcmVtZW50IChYIDogaW4gb3V0IEludGVnZXIpCiAgIHdpdGggUHJlID0+IFggPCBJbnRlZ2VyJ0xhc3Q7CgogICBwcm9jZWR1cmUgSW5jcmVtZW50X1R3aWNlIChYIDogaW4gb3V0IEludGVnZXIpCiAgIHdpdGggUHJlID0+IFggPCBJbnRlZ2VyJ0xhc3QgLSAxOwoKZW5kIEludGVnZXJfVXRpbHM7Cg=="},"canonical_solution":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/integer_utils.adb":"cGFja2FnZSBib2R5IEludGVnZXJfVXRpbHMgaXMKCiAgIHByb2NlZHVyZSBJbmNyZW1lbnQgKFggOiBpbiBvdXQgSW50ZWdlcikgaXMKICAgYmVnaW4KICAgICAgWCA6PSBYICsgMTsKICAgZW5kIEluY3JlbWVudDsKCiAgIHByb2NlZHVyZSBJbmNyZW1lbnRfVHdpY2UgKFggOiBpbiBvdXQgSW50ZWdlcikgaXMKICAgYmVnaW4KICAgICAgSW5jcmVtZW50IChYKTsKICAgICAgSW5jcmVtZW50IChYKTsKICAgZW5kIEluY3JlbWVudF9Ud2ljZTsKCmVuZCBJbnRlZ2VyX1V0aWxzOwo=","src/integer_utils.ads":"cGFja2FnZSBJbnRlZ2VyX1V0aWxzIGlzCgogICBwcm9jZWR1cmUgSW5jcmVtZW50IChYIDogaW4gb3V0IEludGVnZXIpCiAgIHdpdGggUHJlID0+IFggPCBJbnRlZ2VyJ0xhc3QsIFBvc3QgPT4gWCA9IFgnT2xkICsgMTsKCiAgIHByb2NlZHVyZSBJbmNyZW1lbnRfVHdpY2UgKFggOiBpbiBvdXQgSW50ZWdlcikKICAgd2l0aCBQcmUgPT4gWCA8IEludGVnZXInTGFzdCAtIDEsIFBvc3QgPT4gWCA9IFgnT2xkICsgMjsKCmVuZCBJbnRlZ2VyX1V0aWxzOwo="},"canonical_evaluation_results":[{"eval":"build","compiled":true,"pre_format_warnings":false,"post_format_warnings":false},{"eval":"prove","result":"proved","proved_checks":{"VC_OVERFLOW_CHECK":3,"VC_POSTCONDITION":2,"VC_PRECONDITION":2},"unproved_checks":{},"warnings":{},"non_spark_entities":[],"missing_required_checks":[],"pragma_assume_count":0},{"eval":"test","compiled":true,"passed_tests":true}],"comments":"Adapted from https://learn.adacore.com/courses/intro-to-spark/chapters/03_Proof_Of_Program_Integrity.html#modularity","unit_tests":{"src/tests.adb":"d2l0aCBBZGEuQXNzZXJ0aW9uczsgdXNlIEFkYS5Bc3NlcnRpb25zOwp3aXRoIEFkYS5OdW1lcmljcy5EaXNjcmV0ZV9SYW5kb207Cgp3aXRoIEludGVnZXJfVXRpbHM7IHVzZSBJbnRlZ2VyX1V0aWxzOwoKcHJvY2VkdXJlIFRlc3RzIGlzCgogICBwcm9jZWR1cmUgQ2hlY2tfQXNzZXJ0aW9uc19FbmFibGVkIGlzCiAgIGJlZ2luCiAgICAgIGJlZ2luCiAgICAgICAgIHByYWdtYSBBc3NlcnQgKEZhbHNlLCAiU2hvdWxkIHJhaXNlIik7CiAgICAgIGV4Y2VwdGlvbgogICAgICAgICB3aGVuIG90aGVycyA9PgogICAgICAgICAgICByZXR1cm47IC0tIHByb3Blcmx5IHJhaXNlZAogICAgICBlbmQ7CiAgICAgIHJhaXNlIFByb2dyYW1fRXJyb3Igd2l0aCAiQXNzZXJ0aW9ucyBub3QgZW5hYmxlZCI7CiAgIGVuZCBDaGVja19Bc3NlcnRpb25zX0VuYWJsZWQ7CgogICBwcm9jZWR1cmUgVGVzdF9JbmNyZW1lbnQgaXMKICAgICAgWCA6IEludGVnZXIgOj0gMDsKICAgYmVnaW4KICAgICAgSW5jcmVtZW50IChYKTsKICAgICAgcHJhZ21hIEFzc2VydCAoWCA9IDEpOwogICAgICBJbmNyZW1lbnRfVHdpY2UgKFgpOwogICAgICBwcmFnbWEgQXNzZXJ0IChYID0gMyk7CiAgICAgIFggOj0gSW50ZWdlcidMYXN0IC0gMTsKICAgICAgSW5jcmVtZW50IChYKTsKICAgICAgcHJhZ21hIEFzc2VydCAoWCA9IEludGVnZXInTGFzdCk7CiAgICAgIFggOj0gSW50ZWdlcidGaXJzdDsKICAgICAgSW5jcmVtZW50X1R3aWNlIChYKTsKICAgICAgcHJhZ21hIEFzc2VydCAoWCA9IEludGVnZXInRmlyc3QgKyAyKTsKICAgZW5kIFRlc3RfSW5jcmVtZW50OwoKYmVnaW4KICAgQ2hlY2tfQXNzZXJ0aW9uc19FbmFibGVkOwogICBUZXN0X0luY3JlbWVudDsKZW5kIFRlc3RzOwo=","tests.gpr":"d2l0aCAibWFpbi5ncHIiOwoKcHJvamVjdCBUZXN0cyBpcwogICBmb3IgTGFuZ3VhZ2VzIHVzZSAoIkFkYSIpOwoKICAgZm9yIFNvdXJjZV9EaXJzIHVzZSAoInNyYyIpOwogICBmb3IgT2JqZWN0X0RpciB1c2UgIm9iaiI7CiAgIGZvciBFeGVjX0RpciB1c2UgImJpbiI7CiAgIGZvciBDcmVhdGVfTWlzc2luZ19EaXJzIHVzZSAiVHJ1ZSI7CiAgIGZvciBNYWluIHVzZSAoInRlc3RzLmFkYiIpOwoKICAgcGFja2FnZSBDb21waWxlciBpcwogICAgICBmb3IgRGVmYXVsdF9Td2l0Y2hlcyAoIkFkYSIpIHVzZSAoCiAgICAgICAgICItZyIgICAgICAgICAtLSBHZW5lcmF0ZSBkZWJ1ZyBpbmZvCiAgICAgICAgICwiLWduYXRhIiAgICAtLSBFbmFibGUgYXNzZXJ0aW9ucyBhbmQgY29udHJhY3RzCiAgICAgICAgICwiLWduYXRXOCIgICAtLSBVVEYtOCBlbmNvZGluZyBmb3Igd2lkZSBjaGFyYWN0ZXJzCiAgICAgICAgICwiLWduYXQyMDIyIiAtLSBVc2UgQWRhIDIwMjIgZmVhdHVyZXMKICAgICAgKTsKICAgZW5kIENvbXBpbGVyOwoKZW5kIFRlc3RzOw=="}}
|
|
{"name":"show_post_condition_violation","location":{"path":"src/integer_utils.ads","subprogram_name":"Absolute"},"prompt":"I'm trying to prove the absence of runtime errors for Absolute. Please can make this provable.","sources":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/integer_utils.adb":"cGFja2FnZSBib2R5IEludGVnZXJfVXRpbHMgaXMKCiAgIHByb2NlZHVyZSBBYnNvbHV0ZSAoWCA6IGluIG91dCBJbnRlZ2VyKSBpcwogICBiZWdpbgogICAgICBpZiBYID4gMCB0aGVuCiAgICAgICAgIFggOj0gLVg7CiAgICAgIGVuZCBpZjsKICAgZW5kIEFic29sdXRlOwoKZW5kIEludGVnZXJfVXRpbHM7Cg==","src/integer_utils.ads":"cGFja2FnZSBJbnRlZ2VyX1V0aWxzIGlzCgogICBwcm9jZWR1cmUgQWJzb2x1dGUgKFggOiBpbiBvdXQgSW50ZWdlcikKICAgd2l0aCBQb3N0ID0+IFggPj0gMDsKCmVuZCBJbnRlZ2VyX1V0aWxzOwo="},"canonical_solution":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/integer_utils.adb":"cGFja2FnZSBib2R5IEludGVnZXJfVXRpbHMgaXMKCiAgIHByb2NlZHVyZSBBYnNvbHV0ZSAoWCA6IGluIG91dCBJbnRlZ2VyKSBpcwogICBiZWdpbgogICAgICBYIDo9IGFicyBYOwogICBlbmQgQWJzb2x1dGU7CgplbmQgSW50ZWdlcl9VdGlsczsK","src/integer_utils.ads":"cGFja2FnZSBJbnRlZ2VyX1V0aWxzIGlzCgogICBwcm9jZWR1cmUgQWJzb2x1dGUgKFggOiBpbiBvdXQgSW50ZWdlcikKICAgd2l0aCBQcmUgPT4gWCAvPSBJbnRlZ2VyJ0ZpcnN0LCBQb3N0ID0+IFggPj0gMDsKCmVuZCBJbnRlZ2VyX1V0aWxzOwo="},"canonical_evaluation_results":[{"eval":"build","compiled":true,"pre_format_warnings":false,"post_format_warnings":false},{"eval":"prove","result":"proved","proved_checks":{"VC_OVERFLOW_CHECK":1,"VC_POSTCONDITION":1},"unproved_checks":{},"warnings":{},"non_spark_entities":[],"missing_required_checks":[],"pragma_assume_count":0},{"eval":"test","compiled":true,"passed_tests":true}],"comments":"Adapted from https://learn.adacore.com/courses/intro-to-spark/chapters/03_Proof_Of_Program_Integrity.html#contracts","unit_tests":{"src/tests.adb":"d2l0aCBBZGEuQXNzZXJ0aW9uczsgdXNlIEFkYS5Bc3NlcnRpb25zOwp3aXRoIEFkYS5OdW1lcmljcy5EaXNjcmV0ZV9SYW5kb207Cgp3aXRoIEludGVnZXJfVXRpbHM7IHVzZSBJbnRlZ2VyX1V0aWxzOwoKcHJvY2VkdXJlIFRlc3RzIGlzCgogICBwcm9jZWR1cmUgQ2hlY2tfQXNzZXJ0aW9uc19FbmFibGVkIGlzCiAgIGJlZ2luCiAgICAgIGJlZ2luCiAgICAgICAgIHByYWdtYSBBc3NlcnQgKEZhbHNlLCAiU2hvdWxkIHJhaXNlIik7CiAgICAgIGV4Y2VwdGlvbgogICAgICAgICB3aGVuIG90aGVycyA9PgogICAgICAgICAgICByZXR1cm47IC0tIHByb3Blcmx5IHJhaXNlZAogICAgICBlbmQ7CiAgICAgIHJhaXNlIFByb2dyYW1fRXJyb3Igd2l0aCAiQXNzZXJ0aW9ucyBub3QgZW5hYmxlZCI7CiAgIGVuZCBDaGVja19Bc3NlcnRpb25zX0VuYWJsZWQ7CgogICBwcm9jZWR1cmUgVGVzdF9BYnNvbHV0ZSBpcwogICAgICBYIDogSW50ZWdlciA6PSAwOwogICBiZWdpbgogICAgICBBYnNvbHV0ZSAoWCk7CiAgICAgIHByYWdtYSBBc3NlcnQgKFggPSAwKTsKICAgICAgWCA6PSAtMzsKICAgICAgQWJzb2x1dGUgKFgpOwogICAgICBwcmFnbWEgQXNzZXJ0IChYID0gMyk7CiAgICAgIEFic29sdXRlIChYKTsKICAgICAgcHJhZ21hIEFzc2VydCAoWCA9IDMpOwogICAgICBYIDo9IEludGVnZXInRmlyc3QgKyAxOwogICAgICBBYnNvbHV0ZSAoWCk7CiAgICAgIHByYWdtYSBBc3NlcnQgKFggPSBJbnRlZ2VyJ0xhc3QpOwogICAgICBBYnNvbHV0ZSAoWCk7CiAgICAgIHByYWdtYSBBc3NlcnQgKFggPSBJbnRlZ2VyJ0xhc3QpOwogICBlbmQgVGVzdF9BYnNvbHV0ZTsKCmJlZ2luCiAgIENoZWNrX0Fzc2VydGlvbnNfRW5hYmxlZDsKICAgVGVzdF9BYnNvbHV0ZTsKZW5kIFRlc3RzOwo=","tests.gpr":"d2l0aCAibWFpbi5ncHIiOwoKcHJvamVjdCBUZXN0cyBpcwogICBmb3IgTGFuZ3VhZ2VzIHVzZSAoIkFkYSIpOwoKICAgZm9yIFNvdXJjZV9EaXJzIHVzZSAoInNyYyIpOwogICBmb3IgT2JqZWN0X0RpciB1c2UgIm9iaiI7CiAgIGZvciBFeGVjX0RpciB1c2UgImJpbiI7CiAgIGZvciBDcmVhdGVfTWlzc2luZ19EaXJzIHVzZSAiVHJ1ZSI7CiAgIGZvciBNYWluIHVzZSAoInRlc3RzLmFkYiIpOwoKICAgcGFja2FnZSBDb21waWxlciBpcwogICAgICBmb3IgRGVmYXVsdF9Td2l0Y2hlcyAoIkFkYSIpIHVzZSAoCiAgICAgICAgICItZyIgICAgICAgICAtLSBHZW5lcmF0ZSBkZWJ1ZyBpbmZvCiAgICAgICAgICwiLWduYXRhIiAgICAtLSBFbmFibGUgYXNzZXJ0aW9ucyBhbmQgY29udHJhY3RzCiAgICAgICAgICwiLWduYXRXOCIgICAtLSBVVEYtOCBlbmNvZGluZyBmb3Igd2lkZSBjaGFyYWN0ZXJzCiAgICAgICAgICwiLWduYXQyMDIyIiAtLSBVc2UgQWRhIDIwMjIgZmVhdHVyZXMKICAgICAgKTsKICAgZW5kIENvbXBpbGVyOwoKZW5kIFRlc3RzOw=="},"required_checks":[{"rule":"VC_POSTCONDITION","entity_name":"Integer_Utils.Absolute","src_pattern":"X >= 0;"}]}
|
|
{"name":"show_runtime_errors","location":{"path":"src/array_utils.ads","subprogram_name":"Update"},"prompt":"I'm trying to prove the absence of runtime errors for Update. Please can you help me do this without changing the functionality of the code.","sources":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/array_utils.adb":"cGFja2FnZSBib2R5IEFycmF5X1V0aWxzIGlzCgogICBwcm9jZWR1cmUgVXBkYXRlIChBIDogaW4gb3V0IE5hdF9BcnJheTsgSSwgSiwgUCwgUSA6IEludGVnZXIpIGlzCiAgIGJlZ2luCiAgICAgIEEgKEkgKyBKKSA6PSBQIC8gUTsKICAgZW5kIFVwZGF0ZTsKCmVuZCBBcnJheV9VdGlsczsK","src/array_utils.ads":"cGFja2FnZSBBcnJheV9VdGlscyBpcwoKICAgdHlwZSBOYXRfQXJyYXkgaXMgYXJyYXkgKEludGVnZXIgcmFuZ2UgPD4pIG9mIE5hdHVyYWw7CgogICBwcm9jZWR1cmUgVXBkYXRlIChBIDogaW4gb3V0IE5hdF9BcnJheTsgSSwgSiwgUCwgUSA6IEludGVnZXIpOwoKZW5kIEFycmF5X1V0aWxzOwo="},"canonical_solution":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/array_utils.adb":"cGFja2FnZSBib2R5IEFycmF5X1V0aWxzIGlzCgogICBwcm9jZWR1cmUgVXBkYXRlIChBIDogaW4gb3V0IE5hdF9BcnJheTsgSSwgSiwgUCwgUSA6IEludGVnZXIpIGlzCiAgIGJlZ2luCiAgICAgIEEgKEkgKyBKKSA6PSBQIC8gUTsKICAgZW5kIFVwZGF0ZTsKCmVuZCBBcnJheV9VdGlsczsK","src/array_utils.ads":"cGFja2FnZSBBcnJheV9VdGlscyBpcwoKICAgdHlwZSBOYXRfQXJyYXkgaXMgYXJyYXkgKEludGVnZXIgcmFuZ2UgPD4pIG9mIE5hdHVyYWw7CgogICBwcm9jZWR1cmUgVXBkYXRlIChBIDogaW4gb3V0IE5hdF9BcnJheTsgSSwgSiwgUCwgUSA6IEludGVnZXIpCiAgIHdpdGgKICAgICBQcmUgPT4KICAgICAgICgoaWYgSSA+PSAwIGFuZCBKID49IDAKICAgICAgICAgdGhlbiBJIDw9IEludGVnZXInTGFzdCAtIEoKICAgICAgICAgZWxzaWYgSSA8IDAgYW5kIEogPCAwCiAgICAgICAgIHRoZW4gSSA+PSBJbnRlZ2VyJ0ZpcnN0IC0gSgogICAgICAgICBlbHNlIFRydWUpICAtLSBDaGVjayB0aGF0IEkgKyBKIGRvZXMgbm90IG92ZXJmbG93CiAgICAgICAgYW5kIHRoZW4gSSArIEogaW4gQSdSYW5nZSAgLS0gQ2hlY2sgdGhhdCBJICsgSiBpcyBhbiBpbmRleCBpbiBBCiAgICAgICAgYW5kIHRoZW4gUSAvPSAwICAtLSBTbyB0aGVyZSBjYW4ndCBiZSBhIGRpdmlzaW9uIGJ5IHplcm8KICAgICAgICBhbmQgdGhlbiBub3QgKFAgPSBJbnRlZ2VyJ0ZpcnN0CiAgICAgICAgICAgICAgICAgICAgICBhbmQgUSA9IC0xKSAgLS0gQXMgYWJzIEludGVnZXInRmlyc3QgaXMgb3V0IG9mIHJhbmdlCiAgICAgICAgYW5kIHRoZW4gUCAvIFEgPj0gMSk7ICAtLSBFbnN1cmUgUCAvIFEgaXMgYSBuYXR1cmFsIG51bWJlcgoKZW5kIEFycmF5X1V0aWxzOwo="},"canonical_evaluation_results":[{"eval":"build","compiled":true,"pre_format_warnings":false,"post_format_warnings":false},{"eval":"prove","result":"proved","proved_checks":{"VC_DIVISION_CHECK":2,"VC_INDEX_CHECK":1,"VC_OVERFLOW_CHECK":6,"VC_RANGE_CHECK":1},"unproved_checks":{},"warnings":{},"non_spark_entities":[],"missing_required_checks":[],"pragma_assume_count":0},{"eval":"test","compiled":true,"passed_tests":true}],"comments":"Adapted from https://learn.adacore.com/courses/intro-to-spark/chapters/03_Proof_Of_Program_Integrity.html#runtime-errors","unit_tests":{"src/tests.adb":"d2l0aCBBZGEuQXNzZXJ0aW9uczsgdXNlIEFkYS5Bc3NlcnRpb25zOwp3aXRoIEFkYS5OdW1lcmljcy5EaXNjcmV0ZV9SYW5kb207Cgp3aXRoIEFycmF5X1V0aWxzOyB1c2UgQXJyYXlfVXRpbHM7Cgpwcm9jZWR1cmUgVGVzdHMgaXMKCiAgIHByb2NlZHVyZSBDaGVja19Bc3NlcnRpb25zX0VuYWJsZWQgaXMKICAgYmVnaW4KICAgICAgYmVnaW4KICAgICAgICAgcHJhZ21hIEFzc2VydCAoRmFsc2UsICJTaG91bGQgcmFpc2UiKTsKICAgICAgZXhjZXB0aW9uCiAgICAgICAgIHdoZW4gb3RoZXJzID0+CiAgICAgICAgICAgIHJldHVybjsgLS0gcHJvcGVybHkgcmFpc2VkCiAgICAgIGVuZDsKICAgICAgcmFpc2UgUHJvZ3JhbV9FcnJvciB3aXRoICJBc3NlcnRpb25zIG5vdCBlbmFibGVkIjsKICAgZW5kIENoZWNrX0Fzc2VydGlvbnNfRW5hYmxlZDsKCiAgIHByb2NlZHVyZSBUZXN0X1VwZGF0ZSBpcwogICAgICBBMSA6IE5hdF9BcnJheSA6PSBbMSA9PiAxXTsKICAgICAgQTIgOiBOYXRfQXJyYXkgKDExIC4uIDIwKSA6PSBbZm9yIEkgaW4gMSAuLiAxMCA9PiBJXTsKICAgYmVnaW4KICAgICAgVXBkYXRlIChBMSwgMCwgMSwgOCwgNCk7CiAgICAgIHByYWdtYSBBc3NlcnQgKEExID0gWzJdKTsKICAgICAgVXBkYXRlIChBMSwgLTEwMDAsIDEwMDEsIDI0NTI3MzczMiwgMTk3MzI0KTsKICAgICAgcHJhZ21hIEFzc2VydCAoQTEgPSBbMTI0M10pOwogICAgICBVcGRhdGUgKEEyLCAtNSwgMjAsIDY0LCA0KTsKICAgICAgcHJhZ21hIEFzc2VydCAoQTIgPSBbMSwgMiwgMywgNCwgMTYsIDYsIDcsIDgsIDksIDEwXSk7CiAgIGVuZCBUZXN0X1VwZGF0ZTsKCmJlZ2luCiAgIENoZWNrX0Fzc2VydGlvbnNfRW5hYmxlZDsKICAgVGVzdF9VcGRhdGU7CmVuZCBUZXN0czsK","tests.gpr":"d2l0aCAibWFpbi5ncHIiOwoKcHJvamVjdCBUZXN0cyBpcwogICBmb3IgTGFuZ3VhZ2VzIHVzZSAoIkFkYSIpOwoKICAgZm9yIFNvdXJjZV9EaXJzIHVzZSAoInNyYyIpOwogICBmb3IgT2JqZWN0X0RpciB1c2UgIm9iaiI7CiAgIGZvciBFeGVjX0RpciB1c2UgImJpbiI7CiAgIGZvciBDcmVhdGVfTWlzc2luZ19EaXJzIHVzZSAiVHJ1ZSI7CiAgIGZvciBNYWluIHVzZSAoInRlc3RzLmFkYiIpOwoKICAgcGFja2FnZSBDb21waWxlciBpcwogICAgICBmb3IgRGVmYXVsdF9Td2l0Y2hlcyAoIkFkYSIpIHVzZSAoCiAgICAgICAgICItZyIgICAgICAgICAtLSBHZW5lcmF0ZSBkZWJ1ZyBpbmZvCiAgICAgICAgICwiLWduYXRhIiAgICAtLSBFbmFibGUgYXNzZXJ0aW9ucyBhbmQgY29udHJhY3RzCiAgICAgICAgICwiLWduYXRXOCIgICAtLSBVVEYtOCBlbmNvZGluZyBmb3Igd2lkZSBjaGFyYWN0ZXJzCiAgICAgICAgICwiLWduYXQyMDIyIiAtLSBVc2UgQWRhIDIwMjIgZmVhdHVyZXMKICAgICAgKTsKICAgZW5kIENvbXBpbGVyOwoKZW5kIFRlc3RzOw=="}}
|
|
{"name":"show_uninitialized","location":{"path":"src/array_utils.ads","subprogram_name":"Max_Array"},"prompt":"Please can you help me prove the implementation of Max_Array.","sources":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/array_utils.adb":"cGFja2FnZSBib2R5IEFycmF5X1V0aWxzIGlzCgogICBmdW5jdGlvbiBNYXhfQXJyYXkgKEEgOiBBcnJheV9PZl9OYXR1cmFscykgcmV0dXJuIE5hdHVyYWwgaXMKICAgICAgTWF4IDogTmF0dXJhbDsKICAgYmVnaW4KICAgICAgZm9yIEkgaW4gQSdSYW5nZSBsb29wCiAgICAgICAgIGlmIEEgKEkpID4gTWF4IHRoZW4KICAgICAgICAgICAgTWF4IDo9IEEgKEkpOwogICAgICAgICBlbmQgaWY7CiAgICAgIGVuZCBsb29wOwogICAgICByZXR1cm4gTWF4OwogICBlbmQgTWF4X0FycmF5OwoKZW5kIEFycmF5X1V0aWxzOwo=","src/array_utils.ads":"cGFja2FnZSBBcnJheV9VdGlscyBpcwoKICAgdHlwZSBBcnJheV9PZl9OYXR1cmFscyBpcyBhcnJheSAoSW50ZWdlciByYW5nZSA8Pikgb2YgTmF0dXJhbDsKCiAgIGZ1bmN0aW9uIE1heF9BcnJheSAoQSA6IEFycmF5X09mX05hdHVyYWxzKSByZXR1cm4gTmF0dXJhbDsKCmVuZCBBcnJheV9VdGlsczsK"},"canonical_solution":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/array_utils.adb":"cGFja2FnZSBib2R5IEFycmF5X1V0aWxzIGlzCgogICBmdW5jdGlvbiBNYXhfQXJyYXkgKEEgOiBBcnJheV9PZl9OYXR1cmFscykgcmV0dXJuIE5hdHVyYWwgaXMKICAgICAgTWF4IDogTmF0dXJhbCA6PSBOYXR1cmFsJ0ZpcnN0OwogICBiZWdpbgogICAgICBmb3IgSSBpbiBBJ1JhbmdlIGxvb3AKICAgICAgICAgaWYgQSAoSSkgPiBNYXggdGhlbgogICAgICAgICAgICBNYXggOj0gQSAoSSk7CiAgICAgICAgIGVuZCBpZjsKICAgICAgZW5kIGxvb3A7CiAgICAgIHJldHVybiBNYXg7CiAgIGVuZCBNYXhfQXJyYXk7CgplbmQgQXJyYXlfVXRpbHM7Cg==","src/array_utils.ads":"cGFja2FnZSBBcnJheV9VdGlscyBpcwoKICAgdHlwZSBBcnJheV9PZl9OYXR1cmFscyBpcyBhcnJheSAoSW50ZWdlciByYW5nZSA8Pikgb2YgTmF0dXJhbDsKCiAgIGZ1bmN0aW9uIE1heF9BcnJheSAoQSA6IEFycmF5X09mX05hdHVyYWxzKSByZXR1cm4gTmF0dXJhbDsKCmVuZCBBcnJheV9VdGlsczsK"},"canonical_evaluation_results":[{"eval":"build","compiled":true,"pre_format_warnings":false,"post_format_warnings":false},{"eval":"prove","result":"proved","proved_checks":{"SUBPROGRAM_TERMINATION":1},"unproved_checks":{},"warnings":{},"non_spark_entities":[],"missing_required_checks":[],"pragma_assume_count":0},{"eval":"test","compiled":true,"passed_tests":true}],"comments":"","unit_tests":{"src/tests.adb":"d2l0aCBBZGEuQXNzZXJ0aW9uczsgdXNlIEFkYS5Bc3NlcnRpb25zOwp3aXRoIEFkYS5OdW1lcmljcy5EaXNjcmV0ZV9SYW5kb207Cgp3aXRoIEFycmF5X1V0aWxzOyB1c2UgQXJyYXlfVXRpbHM7Cgpwcm9jZWR1cmUgVGVzdHMgaXMKCiAgIHByb2NlZHVyZSBTaHVmZmxlX0FycmF5IChBcnIgOiBpbiBvdXQgQXJyYXlfVXRpbHMuQXJyYXlfT2ZfTmF0dXJhbHMpIGlzCiAgICAgIHN1YnR5cGUgQXJyYXlfSW5kZXggaXMgSW50ZWdlciByYW5nZSBBcnInUmFuZ2U7CiAgICAgIHBhY2thZ2UgUmFuZG9tX0luZGV4IGlzIG5ldyBBZGEuTnVtZXJpY3MuRGlzY3JldGVfUmFuZG9tIChBcnJheV9JbmRleCk7CiAgICAgIHVzZSBSYW5kb21fSW5kZXg7CgogICAgICBHICAgICAgICAgIDogR2VuZXJhdG9yOwogICAgICBUZW1wICAgICAgIDogTmF0dXJhbDsKICAgICAgUmFuZG9tX0lkeCA6IEludGVnZXI7CiAgIGJlZ2luCiAgICAgIFJlc2V0IChHKTsKCiAgICAgIC0tIEZpc2hlci1ZYXRlcyBzaHVmZmxlCiAgICAgIGZvciBJIGluIHJldmVyc2UgQXJyJ1JhbmdlIGxvb3AKICAgICAgICAgUmFuZG9tX0lkeCA6PSBSYW5kb20gKEcsIEFycidGaXJzdCwgSSk7CiAgICAgICAgIFRlbXAgOj0gQXJyIChJKTsKICAgICAgICAgQXJyIChJKSA6PSBBcnIgKFJhbmRvbV9JZHgpOwogICAgICAgICBBcnIgKFJhbmRvbV9JZHgpIDo9IFRlbXA7CiAgICAgIGVuZCBsb29wOwogICBlbmQgU2h1ZmZsZV9BcnJheTsKCiAgIHByb2NlZHVyZSBDaGVja19Bc3NlcnRpb25zX0VuYWJsZWQgaXMKICAgYmVnaW4KICAgICAgYmVnaW4KICAgICAgICAgcHJhZ21hIEFzc2VydCAoRmFsc2UsICJTaG91bGQgcmFpc2UiKTsKICAgICAgZXhjZXB0aW9uCiAgICAgICAgIHdoZW4gb3RoZXJzID0+CiAgICAgICAgICAgIHJldHVybjsgLS0gcHJvcGVybHkgcmFpc2VkCiAgICAgIGVuZDsKICAgICAgcmFpc2UgUHJvZ3JhbV9FcnJvciB3aXRoICJBc3NlcnRpb25zIG5vdCBlbmFibGVkIjsKICAgZW5kIENoZWNrX0Fzc2VydGlvbnNfRW5hYmxlZDsKCiAgIHByb2NlZHVyZSBUZXN0X01heF9BcnJheSBpcwogICAgICBBcnIxICAgICAgIDogY29uc3RhbnQgQXJyYXlfT2ZfTmF0dXJhbHMgOj0gWzFdOwogICAgICBBcnIyICAgICAgIDogY29uc3RhbnQgQXJyYXlfT2ZfTmF0dXJhbHMgOj0KICAgICAgICBbTmF0dXJhbCdGaXJzdCwgTmF0dXJhbCdGaXJzdCArIDFdOwogICAgICBBcnIzICAgICAgIDogY29uc3RhbnQgQXJyYXlfT2ZfTmF0dXJhbHMgOj0gW05hdHVyYWwnTGFzdCwgTmF0dXJhbCdGaXJzdF07CiAgICAgIEFycjQgICAgICAgOiBjb25zdGFudCBBcnJheV9PZl9OYXR1cmFscyA6PQogICAgICAgIFtOYXR1cmFsJ0xhc3QsIDAsIE5hdHVyYWwnRmlyc3RdOwogICAgICBBcnI1ICAgICAgIDogQXJyYXlfT2ZfTmF0dXJhbHMgKDEgLi4gMTBfMDAwKSA6PQogICAgICAgIChmb3IgSSBpbiAxIC4uIDEwXzAwMCA9PiBJKTsKICAgICAgQXJyNl9GaXJzdCA6IGNvbnN0YW50IEludGVnZXIgOj0gSW50ZWdlcidMYXN0IC0gOTk5OTsKICAgICAgQXJyNiAgICAgICA6IEFycmF5X09mX05hdHVyYWxzIChBcnI2X0ZpcnN0IC4uIEludGVnZXInTGFzdCkgOj0KICAgICAgICAoZm9yIEkgaW4gQXJyNl9GaXJzdCAuLiBJbnRlZ2VyJ0xhc3QgPT4gSSk7CiAgICAgIFJlczEgICAgICAgOiBjb25zdGFudCBOYXR1cmFsIDo9IE1heF9BcnJheSAoQXJyMSk7CiAgICAgIFJlczIgICAgICAgOiBjb25zdGFudCBOYXR1cmFsIDo9IE1heF9BcnJheSAoQXJyMik7CiAgICAgIFJlczMgICAgICAgOiBjb25zdGFudCBOYXR1cmFsIDo9IE1heF9BcnJheSAoQXJyMyk7CiAgICAgIFJlczQgICAgICAgOiBjb25zdGFudCBOYXR1cmFsIDo9IE1heF9BcnJheSAoQXJyNCk7CiAgICAgIFJlczUgICAgICAgOiBOYXR1cmFsOwogICAgICBSZXM2ICAgICAgIDogTmF0dXJhbDsKICAgYmVnaW4KICAgICAgU2h1ZmZsZV9BcnJheSAoQXJyNSk7CiAgICAgIFJlczUgOj0gTWF4X0FycmF5IChBcnI1KTsKICAgICAgU2h1ZmZsZV9BcnJheSAoQXJyNik7CiAgICAgIFJlczYgOj0gTWF4X0FycmF5IChBcnI2KTsKICAgICAgcHJhZ21hIEFzc2VydCAoUmVzMSA9IDEsICJTaW5nbGUgaXRlbSIpOwogICAgICBwcmFnbWEgQXNzZXJ0IChSZXMyID0gTmF0dXJhbCdGaXJzdCArIDEsICJUd28gc21hbGwgaXRlbXMiKTsKICAgICAgcHJhZ21hIEFzc2VydCAoUmVzMyA9IE5hdHVyYWwnTGFzdCwgIkV4dHJlbWUgdmFsdWVzIik7CiAgICAgIHByYWdtYSBBc3NlcnQgKFJlczQgPSBOYXR1cmFsJ0xhc3QsICJUaHJlZSBpdGVtcyIpOwogICAgICBwcmFnbWEgQXNzZXJ0IChSZXM1ID0gMTBfMDAwLCAiTGFyZ2UgYXJyYXkiKTsKICAgICAgcHJhZ21hIEFzc2VydCAoUmVzNiA9IEludGVnZXInTGFzdCwgIkxhcmdlIGFycmF5Iik7CiAgIGVuZCBUZXN0X01heF9BcnJheTsKCmJlZ2luCiAgIENoZWNrX0Fzc2VydGlvbnNfRW5hYmxlZDsKICAgVGVzdF9NYXhfQXJyYXk7CmVuZCBUZXN0czsK","tests.gpr":"d2l0aCAibWFpbi5ncHIiOwoKcHJvamVjdCBUZXN0cyBpcwogICBmb3IgTGFuZ3VhZ2VzIHVzZSAoIkFkYSIpOwoKICAgZm9yIFNvdXJjZV9EaXJzIHVzZSAoInNyYyIpOwogICBmb3IgT2JqZWN0X0RpciB1c2UgIm9iaiI7CiAgIGZvciBFeGVjX0RpciB1c2UgImJpbiI7CiAgIGZvciBDcmVhdGVfTWlzc2luZ19EaXJzIHVzZSAiVHJ1ZSI7CiAgIGZvciBNYWluIHVzZSAoInRlc3RzLmFkYiIpOwoKICAgcGFja2FnZSBDb21waWxlciBpcwogICAgICBmb3IgRGVmYXVsdF9Td2l0Y2hlcyAoIkFkYSIpIHVzZSAoCiAgICAgICAgICItZyIgICAgICAgICAtLSBHZW5lcmF0ZSBkZWJ1ZyBpbmZvCiAgICAgICAgICwiLWduYXRhIiAgICAtLSBFbmFibGUgYXNzZXJ0aW9ucyBhbmQgY29udHJhY3RzCiAgICAgICAgICwiLWduYXRXOCIgICAtLSBVVEYtOCBlbmNvZGluZyBmb3Igd2lkZSBjaGFyYWN0ZXJzCiAgICAgICAgICwiLWduYXQyMDIyIiAtLSBVc2UgQWRhIDIwMjIgZmVhdHVyZXMKICAgICAgKTsKICAgZW5kIENvbXBpbGVyOwoKZW5kIFRlc3RzOw=="}}
|
|
{"name":"swap_depends","location":{"path":"src/show_swap.ads","subprogram_name":"Identity"},"prompt":"GNATprove complains about the Depends clause on the Identity procedure. Please can you help me make this provable, without removing the Depends clause?","sources":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/show_swap.adb":"cGFja2FnZSBib2R5IFNob3dfU3dhcCBpcwoKICAgcHJvY2VkdXJlIFN3YXAgKFgsIFkgOiBpbiBvdXQgUG9zaXRpdmUpIGlzCiAgICAgIFRtcCA6IGNvbnN0YW50IFBvc2l0aXZlIDo9IFg7CiAgIGJlZ2luCiAgICAgIFggOj0gWTsKICAgICAgWSA6PSBUbXA7CiAgIGVuZCBTd2FwOwoKICAgcHJvY2VkdXJlIElkZW50aXR5IChYLCBZIDogaW4gb3V0IFBvc2l0aXZlKSBpcwogICBiZWdpbgogICAgICBTd2FwIChYID0+IFgsIFkgPT4gWSk7CiAgICAgIFN3YXAgKFggPT4gWSwgWSA9PiBYKTsKICAgZW5kIElkZW50aXR5OwoKZW5kIFNob3dfU3dhcDsK","src/show_swap.ads":"cGFja2FnZSBTaG93X1N3YXAgaXMKCiAgIHByb2NlZHVyZSBTd2FwIChYLCBZIDogaW4gb3V0IFBvc2l0aXZlKTsKCiAgIHByb2NlZHVyZSBJZGVudGl0eSAoWCwgWSA6IGluIG91dCBQb3NpdGl2ZSkKICAgd2l0aCBEZXBlbmRzID0+IChYID0+IFgsIFkgPT4gWSk7CgplbmQgU2hvd19Td2FwOwo="},"canonical_solution":{"main.adc":"cHJhZ21hIFNQQVJLX01vZGUgKE9uKTs=","main.gpr":"cHJvamVjdCBNYWluIGlzCiAgIGZvciBMYW5ndWFnZXMgdXNlICgiQWRhIik7CgogICBmb3IgU291cmNlX0RpcnMgdXNlICgic3JjIik7CiAgIGZvciBPYmplY3RfRGlyIHVzZSAib2JqIjsKICAgZm9yIENyZWF0ZV9NaXNzaW5nX0RpcnMgdXNlICJUcnVlIjsKCiAgIHBhY2thZ2UgQ29tcGlsZXIgaXMKICAgICAgZm9yIERlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB1c2UgKAogICAgICAgICAiLWciICAgICAgICAgLS0gR2VuZXJhdGUgZGVidWcgaW5mbwogICAgICAgICAsIi1nbmF0YSIgICAgLS0gRW5hYmxlIGFzc2VydGlvbnMgYW5kIGNvbnRyYWN0cwogICAgICAgICAsIi1nbmF0VzgiICAgLS0gVVRGLTggZW5jb2RpbmcgZm9yIHdpZGUgY2hhcmFjdGVycwogICAgICAgICAsIi1nbmF0MjAyMiIgLS0gVXNlIEFkYSAyMDIyIGZlYXR1cmVzCiAgICAgICk7CiAgIGVuZCBDb21waWxlcjsKCiAgIHBhY2thZ2UgQnVpbGRlciBpcwogICAgICBmb3IgR2xvYmFsX0NvbmZpZ3VyYXRpb25fUHJhZ21hcyB1c2UgIm1haW4uYWRjIjsKICAgZW5kIEJ1aWxkZXI7CgplbmQgTWFpbjs=","src/show_swap.adb":"cGFja2FnZSBib2R5IFNob3dfU3dhcCBpcwoKICAgcHJvY2VkdXJlIFN3YXAgKFgsIFkgOiBpbiBvdXQgUG9zaXRpdmUpIGlzCiAgICAgIFRtcCA6IGNvbnN0YW50IFBvc2l0aXZlIDo9IFg7CiAgIGJlZ2luCiAgICAgIFggOj0gWTsKICAgICAgWSA6PSBUbXA7CiAgIGVuZCBTd2FwOwoKICAgcHJvY2VkdXJlIElkZW50aXR5IChYLCBZIDogaW4gb3V0IFBvc2l0aXZlKSBpcwogICBiZWdpbgogICAgICBTd2FwIChYID0+IFgsIFkgPT4gWSk7CiAgICAgIFN3YXAgKFggPT4gWSwgWSA9PiBYKTsKICAgZW5kIElkZW50aXR5OwoKZW5kIFNob3dfU3dhcDsK","src/show_swap.ads":"cGFja2FnZSBTaG93X1N3YXAgaXMKCiAgIHByb2NlZHVyZSBTd2FwIChYLCBZIDogaW4gb3V0IFBvc2l0aXZlKQogICB3aXRoIERlcGVuZHMgPT4gKFggPT4gWSwgWSA9PiBYKTsKCiAgIHByb2NlZHVyZSBJZGVudGl0eSAoWCwgWSA6IGluIG91dCBQb3NpdGl2ZSkKICAgd2l0aCBEZXBlbmRzID0+IChYID0+IFgsIFkgPT4gWSk7CgplbmQgU2hvd19Td2FwOwo="},"canonical_evaluation_results":[{"eval":"build","compiled":true,"pre_format_warnings":false,"post_format_warnings":false},{"eval":"prove","result":"proved","proved_checks":{"DEPENDS_WRONG":2},"unproved_checks":{},"warnings":{},"non_spark_entities":[],"missing_required_checks":[],"pragma_assume_count":0},{"eval":"test","compiled":true,"passed_tests":true}],"comments":"","unit_tests":{"src/tests.adb":"d2l0aCBBZGEuQXNzZXJ0aW9uczsgdXNlIEFkYS5Bc3NlcnRpb25zOwoKd2l0aCBTaG93X1N3YXA7IHVzZSBTaG93X1N3YXA7Cgpwcm9jZWR1cmUgVGVzdHMgaXMKICAgcHJvY2VkdXJlIENoZWNrX0Fzc2VydGlvbnNfRW5hYmxlZCBpcwogICBiZWdpbgogICAgICBiZWdpbgogICAgICAgICBwcmFnbWEgQXNzZXJ0IChGYWxzZSwgIlNob3VsZCByYWlzZSIpOwogICAgICBleGNlcHRpb24KICAgICAgICAgd2hlbiBvdGhlcnMgPT4KICAgICAgICAgICAgcmV0dXJuOyAtLSBwcm9wZXJseSByYWlzZWQKICAgICAgZW5kOwogICAgICByYWlzZSBQcm9ncmFtX0Vycm9yIHdpdGggIkFzc2VydGlvbnMgbm90IGVuYWJsZWQiOwogICBlbmQgQ2hlY2tfQXNzZXJ0aW9uc19FbmFibGVkOwoKICAgcHJvY2VkdXJlIFRlc3RfU3dhcCBpcwogICAgICBYMSwgWTEgOiBQb3NpdGl2ZSA6PSAxOwogICAgICBYMiAgICAgOiBQb3NpdGl2ZSA6PSAyOwogICAgICBZMiAgICAgOiBQb3NpdGl2ZSA6PSAzOwogICAgICBYMyAgICAgOiBQb3NpdGl2ZSA6PSAxOwogICAgICBZMyAgICAgOiBQb3NpdGl2ZSA6PSBQb3NpdGl2ZSdMYXN0OwogICBiZWdpbgogICAgICBTd2FwIChYMSwgWTEpOwogICAgICBwcmFnbWEgQXNzZXJ0IChYMSA9IDEgYW5kIFkxID0gMSwgIlNob3VsZCBoYXZlIG5vIGVmZmVjdCIpOwogICAgICBTd2FwIChYMiwgWTIpOwogICAgICBwcmFnbWEgQXNzZXJ0IChYMiA9IDMgYW5kIFkyID0gMiwgIlNpbXBsZSBzd2FwIik7CiAgICAgIFN3YXAgKFgzLCBZMyk7CiAgICAgIHByYWdtYSBBc3NlcnQgKFgzID0gUG9zaXRpdmUnTGFzdCBhbmQgWTMgPSAxLCAiRXh0cmVtZSB2YWx1ZXMiKTsKICAgZW5kIFRlc3RfU3dhcDsKCiAgIHByb2NlZHVyZSBUZXN0X0lkZW50aXR5IGlzCiAgICAgIFgxLCBZMSA6IFBvc2l0aXZlIDo9IDE7CiAgICAgIFgyICAgICA6IFBvc2l0aXZlIDo9IDI7CiAgICAgIFkyICAgICA6IFBvc2l0aXZlIDo9IDM7CiAgICAgIFgzICAgICA6IFBvc2l0aXZlIDo9IDE7CiAgICAgIFkzICAgICA6IFBvc2l0aXZlIDo9IFBvc2l0aXZlJ0xhc3Q7CiAgIGJlZ2luCiAgICAgIElkZW50aXR5IChYMSwgWTEpOwogICAgICBwcmFnbWEgQXNzZXJ0IChYMSA9IDEgYW5kIFkxID0gMSwgIlNhbWUgdmFsdWVzIik7CiAgICAgIElkZW50aXR5IChYMiwgWTIpOwogICAgICBwcmFnbWEgQXNzZXJ0IChYMiA9IDIgYW5kIFkyID0gMywgIlNpbXBsZSBpZGVudGl0eSIpOwogICAgICBJZGVudGl0eSAoWDMsIFkzKTsKICAgICAgcHJhZ21hIEFzc2VydCAoWDMgPSAxIGFuZCBZMyA9IFBvc2l0aXZlJ0xhc3QsICJFeHRyZW1lIHZhbHVlcyIpOwogICBlbmQgVGVzdF9JZGVudGl0eTsKCmJlZ2luCiAgIENoZWNrX0Fzc2VydGlvbnNfRW5hYmxlZDsKICAgVGVzdF9Td2FwOwogICBUZXN0X0lkZW50aXR5OwplbmQgVGVzdHM7Cg==","tests.gpr":"d2l0aCAibWFpbi5ncHIiOwoKcHJvamVjdCBUZXN0cyBpcwogICBmb3IgTGFuZ3VhZ2VzIHVzZSAoIkFkYSIpOwoKICAgZm9yIFNvdXJjZV9EaXJzIHVzZSAoInNyYyIpOwogICBmb3IgT2JqZWN0X0RpciB1c2UgIm9iaiI7CiAgIGZvciBFeGVjX0RpciB1c2UgImJpbiI7CiAgIGZvciBDcmVhdGVfTWlzc2luZ19EaXJzIHVzZSAiVHJ1ZSI7CiAgIGZvciBNYWluIHVzZSAoInRlc3RzLmFkYiIpOwoKICAgcGFja2FnZSBDb21waWxlciBpcwogICAgICBmb3IgRGVmYXVsdF9Td2l0Y2hlcyAoIkFkYSIpIHVzZSAoCiAgICAgICAgICItZyIgICAgICAgICAtLSBHZW5lcmF0ZSBkZWJ1ZyBpbmZvCiAgICAgICAgICwiLWduYXRhIiAgICAtLSBFbmFibGUgYXNzZXJ0aW9ucyBhbmQgY29udHJhY3RzCiAgICAgICAgICwiLWduYXRXOCIgICAtLSBVVEYtOCBlbmNvZGluZyBmb3Igd2lkZSBjaGFyYWN0ZXJzCiAgICAgICAgICwiLWduYXQyMDIyIiAtLSBVc2UgQWRhIDIwMjIgZmVhdHVyZXMKICAgICAgKTsKICAgZW5kIENvbXBpbGVyOwoKZW5kIFRlc3RzOw=="},"required_checks":[{"rule":"DEPENDS_WRONG","entity_name":"Show_Swap.Identity","src_pattern":"Depends => \\(X => X, Y => Y\\);"}]}
|