itp-interface 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- itp_interface/__init__.py +0 -0
- itp_interface/agent/__init__.py +0 -0
- itp_interface/agent/simple_proof_agent.py +100 -0
- itp_interface/coq_ser_api/__init__.py +165 -0
- itp_interface/coq_ser_api/contexts.py +283 -0
- itp_interface/coq_ser_api/coq_agent.py +459 -0
- itp_interface/coq_ser_api/coq_backend.py +135 -0
- itp_interface/coq_ser_api/coq_util.py +839 -0
- itp_interface/coq_ser_api/example.py +67 -0
- itp_interface/coq_ser_api/lsp_backend.py +375 -0
- itp_interface/coq_ser_api/py.typed +0 -0
- itp_interface/coq_ser_api/serapi_backend.py +841 -0
- itp_interface/coq_ser_api/util.py +145 -0
- itp_interface/coq_ser_api_old/__init__.py +2583 -0
- itp_interface/coq_ser_api_old/contexts.py +172 -0
- itp_interface/coq_ser_api_old/util.py +146 -0
- itp_interface/lean_server/__init__.py +0 -0
- itp_interface/lean_server/commands.py +484 -0
- itp_interface/lean_server/lean3_search_tool.py +358 -0
- itp_interface/lean_server/lean4_repl_interface.py +151 -0
- itp_interface/lean_server/lean4_utils.py +255 -0
- itp_interface/lean_server/lean_cmd_server.py +111 -0
- itp_interface/lean_server/lean_context.py +60 -0
- itp_interface/lean_server/lean_sync_server.py +174 -0
- itp_interface/lean_server/lean_utils.py +199 -0
- itp_interface/lean_server/py.typed +1 -0
- itp_interface/main/__init__.py +0 -0
- itp_interface/main/config/afp_data_gen.yaml +14 -0
- itp_interface/main/config/benchmark/CompCert.yaml +366 -0
- itp_interface/main/config/benchmark/GeoCoq.yaml +930 -0
- itp_interface/main/config/benchmark/UniMath.yaml +2690 -0
- itp_interface/main/config/benchmark/afp_isabelle.yaml +29200 -0
- itp_interface/main/config/benchmark/agent_proverbot_hard.yaml +247 -0
- itp_interface/main/config/benchmark/category-theory.yaml +470 -0
- itp_interface/main/config/benchmark/compcert_118_subset.yaml +148 -0
- itp_interface/main/config/benchmark/compcert_benchmark.yaml +36 -0
- itp_interface/main/config/benchmark/compcert_benchmark_hard.yaml +498 -0
- itp_interface/main/config/benchmark/compcert_benchmark_hard_1.yaml +55 -0
- itp_interface/main/config/benchmark/compcert_benchmark_hard_2.yaml +24 -0
- itp_interface/main/config/benchmark/compcert_benchmark_hard_3.yaml +95 -0
- itp_interface/main/config/benchmark/compcert_benchmark_hard_7_per_cent.yaml +78 -0
- itp_interface/main/config/benchmark/compcert_benchmark_test.yaml +38 -0
- itp_interface/main/config/benchmark/compcert_benchmark_train.yaml +340 -0
- itp_interface/main/config/benchmark/leandojo_novel_premises_test.yaml +2908 -0
- itp_interface/main/config/benchmark/leandojo_novel_premises_train.yaml +98645 -0
- itp_interface/main/config/benchmark/leandojo_novel_premises_val.yaml +2912 -0
- itp_interface/main/config/benchmark/leandojo_random.yaml +2889 -0
- itp_interface/main/config/benchmark/leandojo_random_test.yaml +2421 -0
- itp_interface/main/config/benchmark/leandojo_random_train.yaml +62729 -0
- itp_interface/main/config/benchmark/leandojo_random_val.yaml +2504 -0
- itp_interface/main/config/benchmark/math-comp.yaml +200 -0
- itp_interface/main/config/benchmark/miniF2F_test.yaml +12 -0
- itp_interface/main/config/benchmark/miniF2F_test_aime.yaml +27 -0
- itp_interface/main/config/benchmark/miniF2F_test_algebra.yaml +30 -0
- itp_interface/main/config/benchmark/miniF2F_test_amc12.yaml +57 -0
- itp_interface/main/config/benchmark/miniF2F_test_few_shot_hard.yaml +231 -0
- itp_interface/main/config/benchmark/miniF2F_test_imo.yaml +32 -0
- itp_interface/main/config/benchmark/miniF2F_test_induction.yaml +20 -0
- itp_interface/main/config/benchmark/miniF2F_test_mathd_algebra.yaml +82 -0
- itp_interface/main/config/benchmark/miniF2F_test_mathd_algebra_hard.yaml +72 -0
- itp_interface/main/config/benchmark/miniF2F_test_mathd_numbertheory.yaml +72 -0
- itp_interface/main/config/benchmark/miniF2F_test_numbertheory.yaml +20 -0
- itp_interface/main/config/benchmark/minicompcert_benchmark_1.yaml +14 -0
- itp_interface/main/config/benchmark/proverbot_hard.yaml +104 -0
- itp_interface/main/config/benchmark/re_prover.yaml +66 -0
- itp_interface/main/config/benchmark/re_prover_hard.yaml +41 -0
- itp_interface/main/config/benchmark/re_prover_very_hard.yaml +22 -0
- itp_interface/main/config/benchmark/reprover_with_retrieval.yaml +73 -0
- itp_interface/main/config/benchmark/reprover_with_retrieval_hard.yaml +30 -0
- itp_interface/main/config/benchmark/reprover_with_retrieval_neg.yaml +195 -0
- itp_interface/main/config/benchmark/simple_benchmark_1.yaml +24 -0
- itp_interface/main/config/benchmark/simple_benchmark_8.yaml +50 -0
- itp_interface/main/config/benchmark/simple_benchmark_9.yaml +65 -0
- itp_interface/main/config/benchmark/simple_benchmark_isabelle.yaml +18 -0
- itp_interface/main/config/benchmark/simple_benchmark_lean.yaml +12 -0
- itp_interface/main/config/benchmark/simple_benchmark_lean_training_data.yaml +12 -0
- itp_interface/main/config/benchmark/simple_rl_benchmark_lean.yaml +14 -0
- itp_interface/main/config/benchmark/stack_machine.yaml +13 -0
- itp_interface/main/config/benchmark/stack_machine_hard.yaml +15 -0
- itp_interface/main/config/category_theory_data_gen.yaml +14 -0
- itp_interface/main/config/category_theory_data_gen_random.yaml +16 -0
- itp_interface/main/config/compcert_data_gen_test.yaml +10 -0
- itp_interface/main/config/compcert_data_gen_train.yaml +7 -0
- itp_interface/main/config/env_settings/bm25_retrieval.yaml +2 -0
- itp_interface/main/config/env_settings/bm25_retrieval_no_dfns.yaml +2 -0
- itp_interface/main/config/env_settings/bm25_retrieval_only_local_no_dfns.yaml +2 -0
- itp_interface/main/config/env_settings/bm25_retrieval_with_print.yaml +2 -0
- itp_interface/main/config/env_settings/bm25_retrieval_with_print_only_local.yaml +2 -0
- itp_interface/main/config/env_settings/bm25_retrieval_with_print_only_local_no_dfns.yaml +2 -0
- itp_interface/main/config/env_settings/no_retrieval.yaml +2 -0
- itp_interface/main/config/experiments.yaml +12 -0
- itp_interface/main/config/geo_coq_data_gen.yaml +14 -0
- itp_interface/main/config/geo_coq_data_gen_random.yaml +16 -0
- itp_interface/main/config/leandojo_random_data_gen.yaml +16 -0
- itp_interface/main/config/math_comp_data_gen.yaml +14 -0
- itp_interface/main/config/math_comp_data_gen_random.yaml +16 -0
- itp_interface/main/config/mathlib_data_gen.yaml +14 -0
- itp_interface/main/config/repo/coq_repos.yaml +191 -0
- itp_interface/main/config/run_settings/default_coq_data_generation_transforms.yaml +24 -0
- itp_interface/main/config/run_settings/default_isabelle_data_generation_transforms.yaml +24 -0
- itp_interface/main/config/run_settings/default_lean4_data_generation_transforms.yaml +24 -0
- itp_interface/main/config/run_settings/default_lean_data_generation_transforms.yaml +24 -0
- itp_interface/main/config/simple_coq_data_gen.yaml +12 -0
- itp_interface/main/config/simple_coq_data_gen_random.yaml +17 -0
- itp_interface/main/config/simple_lean_data_gen.yaml +12 -0
- itp_interface/main/config/simple_rl_lean_data_gen.yaml +12 -0
- itp_interface/main/config/uni_math_data_gen.yaml +14 -0
- itp_interface/main/config.py +192 -0
- itp_interface/main/extract_benchmark_dataset.py +106 -0
- itp_interface/main/filter_dataset.py +107 -0
- itp_interface/main/install.py +92 -0
- itp_interface/main/merge_dataset.py +96 -0
- itp_interface/main/run_tool.py +444 -0
- itp_interface/pisa/.git +1 -0
- itp_interface/pisa/.gitignore +125 -0
- itp_interface/pisa/.idea/.gitignore +8 -0
- itp_interface/pisa/.idea/ClojureProjectResolveSettings.xml +6 -0
- itp_interface/pisa/.idea/codeStyles/Project.xml +7 -0
- itp_interface/pisa/.idea/codeStyles/codeStyleConfig.xml +5 -0
- itp_interface/pisa/.idea/inspectionProfiles/Project_Default.xml +16 -0
- itp_interface/pisa/.idea/libraries/sbt__com_google_android_annotations_4_1_1_4_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__com_google_api_grpc_proto_google_common_protos_1_17_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__com_google_code_findbugs_jsr305_3_0_2_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__com_google_code_gson_gson_2_8_6_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__com_google_errorprone_error_prone_annotations_2_3_4_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__com_google_guava_failureaccess_1_0_1_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__com_google_guava_guava_30_0_jre_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__com_google_guava_listenablefuture_9999_0_empty_to_avoid_conflict_with_guava_jar.xml +9 -0
- itp_interface/pisa/.idea/libraries/sbt__com_google_j2objc_j2objc_annotations_1_3_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__com_google_protobuf_protobuf_java_3_12_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__com_google_protobuf_protobuf_java_util_3_12_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__com_lihaoyi_fastparse_2_13_2_3_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__com_lihaoyi_geny_2_13_0_6_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__com_lihaoyi_sourcecode_2_13_0_2_1_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__com_thesamet_scalapb_lenses_2_13_0_10_9_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__com_thesamet_scalapb_scalapb_runtime_2_13_0_10_9_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__com_thesamet_scalapb_scalapb_runtime_grpc_2_13_0_10_9_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__com_thesamet_scalapb_zio_grpc_zio_grpc_core_2_13_0_4_2_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__com_thoughtworks_paranamer_paranamer_2_8_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__commons_io_commons_io_2_8_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__de_unruh_java_patterns_0_1_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__de_unruh_scala_isabelle_2_13_master_SNAPSHOT_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__dev_zio_izumi_reflect_2_13_1_0_0_M9_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__dev_zio_izumi_reflect_thirdparty_boopickle_shaded_2_13_1_0_0_M9_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__dev_zio_zio_2_13_1_0_3_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__dev_zio_zio_stacktracer_2_13_1_0_3_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__dev_zio_zio_streams_2_13_1_0_3_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_grpc_grpc_api_1_34_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_grpc_grpc_context_1_34_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_grpc_grpc_core_1_34_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_grpc_grpc_netty_1_34_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_grpc_grpc_protobuf_1_34_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_grpc_grpc_protobuf_lite_1_34_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_grpc_grpc_services_1_34_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_grpc_grpc_stub_1_34_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_buffer_4_1_51_Final_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_codec_4_1_51_Final_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_codec_http2_4_1_51_Final_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_codec_http_4_1_51_Final_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_codec_socks_4_1_51_Final_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_common_4_1_51_Final_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_handler_4_1_51_Final_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_handler_proxy_4_1_51_Final_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_resolver_4_1_51_Final_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_transport_4_1_51_Final_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__io_perfmark_perfmark_api_0_19_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__net_java_dev_jna_jna_5_3_1_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__net_liftweb_lift_json_2_13_3_4_3_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__org_apache_commons_commons_lang3_3_11_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__org_apache_commons_commons_text_1_9_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__org_checkerframework_checker_qual_3_5_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__org_codehaus_mojo_animal_sniffer_annotations_1_18_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__org_jetbrains_annotations_20_1_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__org_jline_jline_3_16_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__org_log4s_log4s_2_13_1_9_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__org_scala_lang_modules_scala_collection_compat_2_13_2_1_6_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__org_scala_lang_modules_scala_xml_2_13_1_3_0_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__org_scala_lang_scala_compiler_2_13_4_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__org_scala_lang_scala_library_2_13_4_jar.xml +23 -0
- itp_interface/pisa/.idea/libraries/sbt__org_scala_lang_scala_reflect_2_13_4_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__org_scala_lang_scalap_2_13_4_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__org_scalaz_scalaz_core_2_13_7_3_2_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__org_slf4j_slf4j_api_1_7_30_jar.xml +13 -0
- itp_interface/pisa/.idea/libraries/sbt__org_slf4j_slf4j_simple_1_7_30_jar.xml +13 -0
- itp_interface/pisa/.idea/misc.xml +7 -0
- itp_interface/pisa/.idea/modules/PISA-build.iml +127 -0
- itp_interface/pisa/.idea/modules/PISA.iml +94 -0
- itp_interface/pisa/.idea/modules.xml +9 -0
- itp_interface/pisa/.idea/other.xml +6 -0
- itp_interface/pisa/.idea/sbt.xml +20 -0
- itp_interface/pisa/.idea/scala_compiler.xml +6 -0
- itp_interface/pisa/.idea/uiDesigner.xml +124 -0
- itp_interface/pisa/.idea/vcs.xml +6 -0
- itp_interface/pisa/.scalafmt.conf +2 -0
- itp_interface/pisa/LICENSE +29 -0
- itp_interface/pisa/README.md +262 -0
- itp_interface/pisa/build.sbt +49 -0
- itp_interface/pisa/build.sh +26 -0
- itp_interface/pisa/command_generation/close_gaps.py +44 -0
- itp_interface/pisa/command_generation/conjecture_normal_order.py +62 -0
- itp_interface/pisa/command_generation/conjecturer_command_generator.py +36 -0
- itp_interface/pisa/command_generation/create_dirs.py +11 -0
- itp_interface/pisa/command_generation/find_std.py +67 -0
- itp_interface/pisa/command_generation/generate_build_commands_afp.py +15 -0
- itp_interface/pisa/command_generation/generate_build_commands_std.py +15 -0
- itp_interface/pisa/command_generation/generate_commands_afp.py +103 -0
- itp_interface/pisa/command_generation/generate_commands_mini.py +73 -0
- itp_interface/pisa/command_generation/generate_commands_std.py +69 -0
- itp_interface/pisa/command_generation/generate_hammer_extraction_text.py +5 -0
- itp_interface/pisa/command_generation/hammer_command_generator.py +40 -0
- itp_interface/pisa/command_generation/hp_search_command_generator.py +63 -0
- itp_interface/pisa/command_generation/oracle_command_generator.py +56 -0
- itp_interface/pisa/command_generation/search_command_generator.py +69 -0
- itp_interface/pisa/command_generation/summarise_problem_names.py +45 -0
- itp_interface/pisa/command_generation/tpu_hp_search.py +75 -0
- itp_interface/pisa/docker/Dockerfile +34 -0
- itp_interface/pisa/docker/docker_tutorial.md +64 -0
- itp_interface/pisa/eval_setup/copy_isabelle.py +42 -0
- itp_interface/pisa/eval_setup/copy_pisa_jars.py +18 -0
- itp_interface/pisa/mesh_transformer_utils/tokenization.py +86 -0
- itp_interface/pisa/project/build.properties +1 -0
- itp_interface/pisa/project/plugins.sbt +5 -0
- itp_interface/pisa/requirements.txt +4 -0
- itp_interface/pisa/scripts/extract_last_k_steps.py +28 -0
- itp_interface/pisa/scripts/extract_proof_corpus.py +26 -0
- itp_interface/pisa/scripts/gather_hammer_results.py +27 -0
- itp_interface/pisa/scripts/length_in_char_stats.py +20 -0
- itp_interface/pisa/scripts/mix.py +127 -0
- itp_interface/pisa/scripts/results_stat.py +52 -0
- itp_interface/pisa/scripts/test_array_job.sh +34 -0
- itp_interface/pisa/setup.sh +25 -0
- itp_interface/pisa/src/main/protobuf/server.proto +60 -0
- itp_interface/pisa/src/main/python/.idea/.gitignore +8 -0
- itp_interface/pisa/src/main/python/.idea/inspectionProfiles/Project_Default.xml +18 -0
- itp_interface/pisa/src/main/python/.idea/inspectionProfiles/profiles_settings.xml +6 -0
- itp_interface/pisa/src/main/python/.idea/misc.xml +4 -0
- itp_interface/pisa/src/main/python/.idea/modules.xml +8 -0
- itp_interface/pisa/src/main/python/.idea/python.iml +12 -0
- itp_interface/pisa/src/main/python/.idea/vcs.xml +6 -0
- itp_interface/pisa/src/main/python/conjecturing_parsing/conjecturer_postprocessing.py +59 -0
- itp_interface/pisa/src/main/python/data_extraction/extract_data.py +184 -0
- itp_interface/pisa/src/main/python/data_extraction/find_premises.py +221 -0
- itp_interface/pisa/src/main/python/data_extraction/process_data.py +129 -0
- itp_interface/pisa/src/main/python/legacy/PisaFlexibleClient.py +167 -0
- itp_interface/pisa/src/main/python/legacy/autof_test.py +74 -0
- itp_interface/pisa/src/main/python/legacy/cmd_client.py +23 -0
- itp_interface/pisa/src/main/python/legacy/convert_scala_dump_to_test_name_jsons.py +14 -0
- itp_interface/pisa/src/main/python/legacy/create_data_txt.py +72 -0
- itp_interface/pisa/src/main/python/legacy/create_finetune_tfrecords.py +311 -0
- itp_interface/pisa/src/main/python/legacy/demo.py +49 -0
- itp_interface/pisa/src/main/python/legacy/evaluate.py +108 -0
- itp_interface/pisa/src/main/python/legacy/extract_first_step.py +25 -0
- itp_interface/pisa/src/main/python/legacy/get_global_facts.py +35 -0
- itp_interface/pisa/src/main/python/legacy/mix_data.py +19 -0
- itp_interface/pisa/src/main/python/legacy/one_stage_extraction.py +111 -0
- itp_interface/pisa/src/main/python/legacy/prepare_episodic_transitions.py +137 -0
- itp_interface/pisa/src/main/python/legacy/prepare_translation_pairs.py +277 -0
- itp_interface/pisa/src/main/python/pisa_client.py +322 -0
- itp_interface/pisa/src/main/python/server_pb2.py +394 -0
- itp_interface/pisa/src/main/python/server_pb2_grpc.py +230 -0
- itp_interface/pisa/src/main/python/test_client.py +17 -0
- itp_interface/pisa/src/main/python/test_client2.py +79 -0
- itp_interface/pisa/src/main/python/utils/filters.py +59 -0
- itp_interface/pisa/src/main/python/utils/pisa_server_control.py +29 -0
- itp_interface/pisa/src/main/scala/pisa/agent/CheckSyntax.scala +257 -0
- itp_interface/pisa/src/main/scala/pisa/agent/DepThms.scala +29 -0
- itp_interface/pisa/src/main/scala/pisa/agent/PisaStat.scala +46 -0
- itp_interface/pisa/src/main/scala/pisa/agent/RefactorTest.scala +40 -0
- itp_interface/pisa/src/main/scala/pisa/agent/RepHammer.scala +95 -0
- itp_interface/pisa/src/main/scala/pisa/server/HammFacts.scala +63 -0
- itp_interface/pisa/src/main/scala/pisa/server/PisaOS.scala +881 -0
- itp_interface/pisa/src/main/scala/pisa/server/PisaOneStage.scala +540 -0
- itp_interface/pisa/src/main/scala/pisa/server/PisaOneStageServers.scala +1048 -0
- itp_interface/pisa/src/main/scala/pisa/utils/TheoryManager.scala +95 -0
- itp_interface/pisa/src/test/python/analyse_debug.py +33 -0
- itp_interface/pisa/src/test/python/extract_test_seq2seq.py +53 -0
- itp_interface/pisa/src/test/python/extract_test_theorem_ground_truth_indices.py +31 -0
- itp_interface/pisa/src/test/python/proof_originality.py +24 -0
- itp_interface/pisa/src/test/python/test_command_generator.py +25 -0
- itp_interface/pisa/src/test/python/test_model_sequence_accuracy.py +70 -0
- itp_interface/pisa/src/test/scala/pisa/Easy.scala +26 -0
- itp_interface/pisa/src/test/scala/pisa/TestCurl.scala +82 -0
- itp_interface/pisa/src/test/scala/pisa/TestIsa.scala +27 -0
- itp_interface/pisa/test.sh +19 -0
- itp_interface/pisa/universal_test_theorems.tar.gz +0 -0
- itp_interface/repo/build.py +78 -0
- itp_interface/repo/clone.py +79 -0
- itp_interface/repo/dataset_discovery.py +99 -0
- itp_interface/retrieval/__init__.py +0 -0
- itp_interface/retrieval/abstraction.py +35 -0
- itp_interface/retrieval/coq_bm25_reranker.py +153 -0
- itp_interface/retrieval/isabelle_bm25_reranker.py +86 -0
- itp_interface/retrieval/lean3_bm25_reranker.py +86 -0
- itp_interface/rl/__init__.py +0 -0
- itp_interface/rl/abstraction.py +168 -0
- itp_interface/rl/proof_action.py +172 -0
- itp_interface/rl/proof_state.py +149 -0
- itp_interface/rl/proof_tree.py +109 -0
- itp_interface/rl/simpl_proof_env_pool.py +16 -0
- itp_interface/rl/simple_proof_env.py +713 -0
- itp_interface/rl/simple_proof_env_pool.py +591 -0
- itp_interface/scripts/setup.sh +228 -0
- itp_interface/tools/__init__.py +0 -0
- itp_interface/tools/basic_utils.py +172 -0
- itp_interface/tools/bin_packing.py +61 -0
- itp_interface/tools/cache.py +93 -0
- itp_interface/tools/coq_build_spec.py +31 -0
- itp_interface/tools/coq_build_tool.py +319 -0
- itp_interface/tools/coq_context_helper.py +354 -0
- itp_interface/tools/coq_executor.py +508 -0
- itp_interface/tools/coq_local_data_generation_transform.py +158 -0
- itp_interface/tools/coq_parse_utils.py +154 -0
- itp_interface/tools/coq_raw_proofs.py +193 -0
- itp_interface/tools/coq_theorem_proof_pair_generation_transform.py +146 -0
- itp_interface/tools/coq_training_data_generator.py +76 -0
- itp_interface/tools/dynamic_coq_proof_exec.py +220 -0
- itp_interface/tools/dynamic_isabelle_proof_exec.py +229 -0
- itp_interface/tools/dynamic_lean4_proof_exec.py +236 -0
- itp_interface/tools/dynamic_lean_proof_exec.py +228 -0
- itp_interface/tools/isabelle_context_helper.py +66 -0
- itp_interface/tools/isabelle_executor.py +862 -0
- itp_interface/tools/isabelle_local_data_generation_transform.py +149 -0
- itp_interface/tools/isabelle_parse_utils.py +131 -0
- itp_interface/tools/isabelle_server.py +106 -0
- itp_interface/tools/lean4_context_helper.py +72 -0
- itp_interface/tools/lean4_local_data_generation_transform.py +122 -0
- itp_interface/tools/lean4_sync_executor.py +1193 -0
- itp_interface/tools/lean_cmd_executor.py +804 -0
- itp_interface/tools/lean_context_helper.py +327 -0
- itp_interface/tools/lean_dojo_data_generation_transform.py +206 -0
- itp_interface/tools/lean_executor.py +687 -0
- itp_interface/tools/lean_local_data_generation_transform.py +136 -0
- itp_interface/tools/lean_parse_utils.py +32 -0
- itp_interface/tools/log_utils.py +20 -0
- itp_interface/tools/proof_exec_callback.py +76 -0
- itp_interface/tools/ray_utils.py +265 -0
- itp_interface/tools/repl/.git +1 -0
- itp_interface/tools/repl/.github/workflows/ci.yml +24 -0
- itp_interface/tools/repl/.gitignore +7 -0
- itp_interface/tools/repl/.vscode/copyright.code-snippets +13 -0
- itp_interface/tools/repl/.vscode/extensions.json +13 -0
- itp_interface/tools/repl/.vscode/module-docstring.code-snippets +35 -0
- itp_interface/tools/repl/.vscode/settings.json +11 -0
- itp_interface/tools/repl/README.md +174 -0
- itp_interface/tools/repl/REPL/Frontend.lean +47 -0
- itp_interface/tools/repl/REPL/JSON.lean +186 -0
- itp_interface/tools/repl/REPL/Lean/ContextInfo.lean +9 -0
- itp_interface/tools/repl/REPL/Lean/Environment.lean +31 -0
- itp_interface/tools/repl/REPL/Lean/InfoTree/ToJson.lean +114 -0
- itp_interface/tools/repl/REPL/Lean/InfoTree.lean +272 -0
- itp_interface/tools/repl/REPL/Main.lean +323 -0
- itp_interface/tools/repl/REPL/Snapshots.lean +306 -0
- itp_interface/tools/repl/REPL/Util/Path.lean +36 -0
- itp_interface/tools/repl/REPL/Util/Pickle.lean +44 -0
- itp_interface/tools/repl/REPL.lean +4 -0
- itp_interface/tools/repl/lake-manifest.json +5 -0
- itp_interface/tools/repl/lakefile.lean +15 -0
- itp_interface/tools/repl/lean-toolchain +1 -0
- itp_interface/tools/repl/test/Mathlib/.gitignore +5 -0
- itp_interface/tools/repl/test/Mathlib/H20231110.sh +2 -0
- itp_interface/tools/repl/test/Mathlib/ReplMathlibTests.lean +1 -0
- itp_interface/tools/repl/test/Mathlib/lake-manifest.json +68 -0
- itp_interface/tools/repl/test/Mathlib/lakefile.lean +11 -0
- itp_interface/tools/repl/test/Mathlib/lean-toolchain +1 -0
- itp_interface/tools/repl/test/Mathlib/test/20240209.expected.out +20 -0
- itp_interface/tools/repl/test/Mathlib/test/20240209.in +3 -0
- itp_interface/tools/repl/test/Mathlib/test/20240209.lean +4 -0
- itp_interface/tools/repl/test/Mathlib/test/H20231020.expected.out +8 -0
- itp_interface/tools/repl/test/Mathlib/test/H20231020.in +8 -0
- itp_interface/tools/repl/test/Mathlib/test/H20231020.lean +22 -0
- itp_interface/tools/repl/test/Mathlib/test/H20231110.expected.out +4 -0
- itp_interface/tools/repl/test/Mathlib/test/H20231110.in +4 -0
- itp_interface/tools/repl/test/Mathlib/test/H20231115.expected.out +19 -0
- itp_interface/tools/repl/test/Mathlib/test/H20231115.in +5 -0
- itp_interface/tools/repl/test/Mathlib/test/H20231115_2.expected.out +18 -0
- itp_interface/tools/repl/test/Mathlib/test/H20231115_2.in +4 -0
- itp_interface/tools/repl/test/Mathlib/test/H20231115_3.expected.out +10 -0
- itp_interface/tools/repl/test/Mathlib/test/H20231115_3.in +4 -0
- itp_interface/tools/repl/test/Mathlib/test/H20231214.in +9 -0
- itp_interface/tools/repl/test/Mathlib/test/H20231214.lean +30 -0
- itp_interface/tools/repl/test/Mathlib/test/H20231215.expected.out +4 -0
- itp_interface/tools/repl/test/Mathlib/test/H20231215.in +4 -0
- itp_interface/tools/repl/test/Mathlib/test/H20231215_2.expected.out +14 -0
- itp_interface/tools/repl/test/Mathlib/test/H20231215_2.in +3 -0
- itp_interface/tools/repl/test/Mathlib/test/exact.expected.out +37 -0
- itp_interface/tools/repl/test/Mathlib/test/exact.in +10 -0
- itp_interface/tools/repl/test/Mathlib/test/import_Mathlib.lean +1 -0
- itp_interface/tools/repl/test/Mathlib/test/induction.expected.out +29 -0
- itp_interface/tools/repl/test/Mathlib/test/induction.in +10 -0
- itp_interface/tools/repl/test/Mathlib/test/induction.lean +6 -0
- itp_interface/tools/repl/test/Mathlib/test/on_goal.expected.out +22 -0
- itp_interface/tools/repl/test/Mathlib/test/on_goal.in +5 -0
- itp_interface/tools/repl/test/Mathlib/test/pickle.expected.out +16 -0
- itp_interface/tools/repl/test/Mathlib/test/pickle.in +6 -0
- itp_interface/tools/repl/test/Mathlib/test/pickle_2.expected.out +4 -0
- itp_interface/tools/repl/test/Mathlib/test/pickle_2.in +4 -0
- itp_interface/tools/repl/test/Mathlib/test.sh +41 -0
- itp_interface/tools/repl/test/all_tactics.expected.out +13 -0
- itp_interface/tools/repl/test/all_tactics.in +1 -0
- itp_interface/tools/repl/test/by_cases.expected.out +25 -0
- itp_interface/tools/repl/test/by_cases.in +8 -0
- itp_interface/tools/repl/test/by_cases.lean +4 -0
- itp_interface/tools/repl/test/calc.expected.out +32 -0
- itp_interface/tools/repl/test/calc.in +1 -0
- itp_interface/tools/repl/test/def_eval.expected.out +9 -0
- itp_interface/tools/repl/test/def_eval.in +3 -0
- itp_interface/tools/repl/test/enableInitializersExecution.expected.out +2 -0
- itp_interface/tools/repl/test/enableInitializersExecution.in +1 -0
- itp_interface/tools/repl/test/file.expected.out +8 -0
- itp_interface/tools/repl/test/file.in +1 -0
- itp_interface/tools/repl/test/file.lean +5 -0
- itp_interface/tools/repl/test/have_by_sorry.expected.out +28 -0
- itp_interface/tools/repl/test/have_by_sorry.in +6 -0
- itp_interface/tools/repl/test/import_lean.in +1 -0
- itp_interface/tools/repl/test/incomplete.expected.out +18 -0
- itp_interface/tools/repl/test/incomplete.in +3 -0
- itp_interface/tools/repl/test/incomplete.lean +0 -0
- itp_interface/tools/repl/test/infotree.expected.out +20 -0
- itp_interface/tools/repl/test/infotree.in +2 -0
- itp_interface/tools/repl/test/invalid_tactic.expected.out +20 -0
- itp_interface/tools/repl/test/invalid_tactic.in +3 -0
- itp_interface/tools/repl/test/name_generator.expected.out +53 -0
- itp_interface/tools/repl/test/name_generator.in +18 -0
- itp_interface/tools/repl/test/no_goal_sorry.expected.out +11 -0
- itp_interface/tools/repl/test/no_goal_sorry.in +1 -0
- itp_interface/tools/repl/test/no_goal_sorry_2.expected.out +12 -0
- itp_interface/tools/repl/test/no_goal_sorry_2.in +1 -0
- itp_interface/tools/repl/test/options.expected.out +17 -0
- itp_interface/tools/repl/test/options.in +6 -0
- itp_interface/tools/repl/test/pickle_environment.expected.out +8 -0
- itp_interface/tools/repl/test/pickle_environment.in +7 -0
- itp_interface/tools/repl/test/pickle_environment_with_imports.expected.out +10 -0
- itp_interface/tools/repl/test/pickle_environment_with_imports.in +9 -0
- itp_interface/tools/repl/test/pickle_open.expected.out +8 -0
- itp_interface/tools/repl/test/pickle_open.in +7 -0
- itp_interface/tools/repl/test/pickle_open_2.expected.out +4 -0
- itp_interface/tools/repl/test/pickle_open_2.in +3 -0
- itp_interface/tools/repl/test/pickle_open_scoped.expected.out +18 -0
- itp_interface/tools/repl/test/pickle_open_scoped.in +8 -0
- itp_interface/tools/repl/test/pickle_open_scoped_2.expected.out +14 -0
- itp_interface/tools/repl/test/pickle_open_scoped_2.in +3 -0
- itp_interface/tools/repl/test/pickle_proof_state_1.expected.out +26 -0
- itp_interface/tools/repl/test/pickle_proof_state_1.in +15 -0
- itp_interface/tools/repl/test/pickle_proof_state_2.expected.out +4 -0
- itp_interface/tools/repl/test/pickle_proof_state_2.in +3 -0
- itp_interface/tools/repl/test/pickle_proof_state_env.expected.out +26 -0
- itp_interface/tools/repl/test/pickle_proof_state_env.in +15 -0
- itp_interface/tools/repl/test/pickle_scoped_notation.in +16 -0
- itp_interface/tools/repl/test/pickle_scoped_notation_2.in +3 -0
- itp_interface/tools/repl/test/proof_step.expected.out +18 -0
- itp_interface/tools/repl/test/proof_step.in +7 -0
- itp_interface/tools/repl/test/readme.expected.out +16 -0
- itp_interface/tools/repl/test/readme.in +5 -0
- itp_interface/tools/repl/test/sorry_hypotheses.expected.out +16 -0
- itp_interface/tools/repl/test/sorry_hypotheses.in +4 -0
- itp_interface/tools/repl/test/synthesize_placeholder.expected.out +7 -0
- itp_interface/tools/repl/test/synthesize_placeholder.in +1 -0
- itp_interface/tools/repl/test/tactic_mode_sorry.expected.out +14 -0
- itp_interface/tools/repl/test/tactic_mode_sorry.in +3 -0
- itp_interface/tools/repl/test/tactic_sorry.expected.out +12 -0
- itp_interface/tools/repl/test/tactic_sorry.in +1 -0
- itp_interface/tools/repl/test/term_sorry.expected.out +12 -0
- itp_interface/tools/repl/test/term_sorry.in +1 -0
- itp_interface/tools/repl/test/trace_simp.expected.out +41 -0
- itp_interface/tools/repl/test/trace_simp.in +15 -0
- itp_interface/tools/repl/test/unfinished_tactic_block.expected.out +11 -0
- itp_interface/tools/repl/test/unfinished_tactic_block.in +1 -0
- itp_interface/tools/repl/test/unknown_environment.expected.out +2 -0
- itp_interface/tools/repl/test/unknown_environment.in +1 -0
- itp_interface/tools/repl/test/unknown_proof_state.expected.out +14 -0
- itp_interface/tools/repl/test/unknown_proof_state.in +3 -0
- itp_interface/tools/repl/test/unknown_tactic.expected.out +14 -0
- itp_interface/tools/repl/test/unknown_tactic.in +3 -0
- itp_interface/tools/repl/test/variables.expected.out +26 -0
- itp_interface/tools/repl/test/variables.in +5 -0
- itp_interface/tools/repl/test.sh +43 -0
- itp_interface/tools/run_data_generation_transforms.py +350 -0
- itp_interface/tools/theorem_details.py +25 -0
- itp_interface/tools/training_data.py +358 -0
- itp_interface/tools/training_data_format.py +599 -0
- itp_interface-1.0.0.dist-info/METADATA +78 -0
- itp_interface-1.0.0.dist-info/RECORD +485 -0
- itp_interface-1.0.0.dist-info/WHEEL +4 -0
- itp_interface-1.0.0.dist-info/entry_points.txt +3 -0
- itp_interface-1.0.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
root_dir = f"{__file__.split('itp_interface')[0]}"
|
|
5
|
+
if root_dir not in sys.path:
|
|
6
|
+
sys.path.append(root_dir)
|
|
7
|
+
|
|
8
|
+
import logging
|
|
9
|
+
import typing
|
|
10
|
+
from itp_interface.tools.coq_executor import CoqExecutor
|
|
11
|
+
from itp_interface.tools.training_data_format import Goal, LemmaRefWithScore, LemmaReferences, TrainingDataFormat
|
|
12
|
+
from typing import List
|
|
13
|
+
|
|
14
|
+
class CoqContextHelper(object):
|
|
15
|
+
max_relevance_score = 0.95
|
|
16
|
+
def __init__(self, search_executor: CoqExecutor, depth : typing.Optional[int] = None, logger: logging.Logger = None, enable_search: bool = True) -> None:
|
|
17
|
+
assert search_executor is not None, "Search executor cannot be None"
|
|
18
|
+
assert depth is None or depth >= 0, "Depth should be greater than 0"
|
|
19
|
+
self.search_executor = search_executor
|
|
20
|
+
self.depth = depth if depth is not None else -1
|
|
21
|
+
self._enable_search = enable_search
|
|
22
|
+
self.logger = logger if logger is not None else logging.getLogger(__name__)
|
|
23
|
+
|
|
24
|
+
def __enter__(self):
|
|
25
|
+
if self._enable_search:
|
|
26
|
+
self.search_executor.__enter__()
|
|
27
|
+
self.search_executor.run_to_finish()
|
|
28
|
+
search_exec_local_lemmas_discovered_so_far = [lemma.split(':')[0].strip() if ':' in lemma else lemma.split()[0].strip() for lemma in self.search_executor.coq.local_lemmas]
|
|
29
|
+
self.search_exec_local_lemmas_discovered_so_far = set([l for l in search_exec_local_lemmas_discovered_so_far if len(l) > 0])
|
|
30
|
+
return self
|
|
31
|
+
|
|
32
|
+
def __exit__(self, exc_type, exc_value, traceback):
|
|
33
|
+
if self._enable_search:
|
|
34
|
+
self.search_executor.__exit__(exc_type, exc_value, traceback)
|
|
35
|
+
|
|
36
|
+
def _get_local_lemma_names_discovered_so_far(self, coq_executor: CoqExecutor):
|
|
37
|
+
local_lemmas_discovered_so_far = [lemma.split(':')[0].strip() if ':' in lemma else lemma.split()[0].strip() for lemma in coq_executor.coq.local_lemmas[:-1]]
|
|
38
|
+
local_lemmas_discovered_so_far = set([l for l in local_lemmas_discovered_so_far if len(l) > 0])
|
|
39
|
+
return local_lemmas_discovered_so_far
|
|
40
|
+
|
|
41
|
+
def _get_local_lemmas_discovered_so_far(self, coq_executor: CoqExecutor):
|
|
42
|
+
local_lemmas_discovered_so_far = []
|
|
43
|
+
for lemma in coq_executor.coq.local_lemmas[:-1]:
|
|
44
|
+
defn = lemma.split(":")
|
|
45
|
+
defn_name = defn[0].strip()
|
|
46
|
+
if len(defn_name) == 0:
|
|
47
|
+
continue
|
|
48
|
+
if len(defn) > 1:
|
|
49
|
+
defn_val = ("".join(defn[1:])).strip()
|
|
50
|
+
else:
|
|
51
|
+
defn_val = ""
|
|
52
|
+
local_lemmas_discovered_so_far.append((defn_name, defn_val))
|
|
53
|
+
return local_lemmas_discovered_so_far
|
|
54
|
+
|
|
55
|
+
def _search_exact_with_diff(self, coq_executor: CoqExecutor, tok: str, should_print_symbol: bool = False, only_local: bool = False):
|
|
56
|
+
local_lemmas_discovered_so_far = self._get_local_lemmas_discovered_so_far(coq_executor)
|
|
57
|
+
local_lemmas_name = set([defn for defn, _ in local_lemmas_discovered_so_far])
|
|
58
|
+
if only_local:
|
|
59
|
+
exact_search_res = local_lemmas_discovered_so_far
|
|
60
|
+
else:
|
|
61
|
+
exact_search_res = self.search_executor.search_exact(tok, should_print_symbol=should_print_symbol)
|
|
62
|
+
exact_search_res_set = set([res[0] for res in exact_search_res])
|
|
63
|
+
for defn, defn_val in local_lemmas_discovered_so_far:
|
|
64
|
+
if defn not in exact_search_res_set:
|
|
65
|
+
exact_search_res.append((defn, defn_val))
|
|
66
|
+
|
|
67
|
+
diff = self.search_exec_local_lemmas_discovered_so_far.difference(local_lemmas_name)
|
|
68
|
+
# Remove future lemmas which are yet to be discovered
|
|
69
|
+
exact_search_res = [res for res in exact_search_res if res[0] not in diff]
|
|
70
|
+
return exact_search_res
|
|
71
|
+
|
|
72
|
+
def _search_defn_with_diff(self, coq_executor: CoqExecutor, name: str, match_until: typing.Tuple[str, ...], max_search_res: typing.Optional[int] = None, should_print_symbol: bool = False, only_local: bool = False):
|
|
73
|
+
local_lemmas_discovered_so_far = [(defn_name, defn_val, False) for defn_name, defn_val in self._get_local_lemmas_discovered_so_far(coq_executor)]
|
|
74
|
+
local_lemmas_name = set([defn for defn, _ in local_lemmas_discovered_so_far])
|
|
75
|
+
if only_local:
|
|
76
|
+
search_defn_res = local_lemmas_discovered_so_far
|
|
77
|
+
else:
|
|
78
|
+
search_defn_res = self.search_executor.search_defn(name, match_until, max_search_res=max_search_res, should_print_symbol=should_print_symbol)
|
|
79
|
+
search_defn_res_set = set([res[0] for res in search_defn_res])
|
|
80
|
+
for defn, defn_val, _ in local_lemmas_discovered_so_far:
|
|
81
|
+
if defn not in search_defn_res_set:
|
|
82
|
+
search_defn_res.append((defn, defn_val, False))
|
|
83
|
+
diff = self.search_exec_local_lemmas_discovered_so_far.difference(local_lemmas_name)
|
|
84
|
+
# Remove future lemmas which are yet to be discovered
|
|
85
|
+
search_defn_res = [res for res in search_defn_res if res[0] not in diff]
|
|
86
|
+
return search_defn_res
|
|
87
|
+
|
|
88
|
+
def _get_all_type_matching_defns_with_diff(self, coq_executor: CoqExecutor, tok: str, should_print_symbol: bool = False, only_local: bool = False):
|
|
89
|
+
local_lemmas_discovered_so_far = self._get_local_lemmas_discovered_so_far(coq_executor)
|
|
90
|
+
local_lemmas_name = set([defn for defn, _ in local_lemmas_discovered_so_far])
|
|
91
|
+
if only_local:
|
|
92
|
+
exact_search_res : typing.List[typing.Tuple[str, str]] = local_lemmas_discovered_so_far
|
|
93
|
+
else:
|
|
94
|
+
exact_search_res = list(self.search_executor.get_all_type_matching_defns(tok, should_print_symbol=should_print_symbol))
|
|
95
|
+
exact_search_res_set = set([res[0] for res in exact_search_res])
|
|
96
|
+
for defn, defn_val in local_lemmas_discovered_so_far:
|
|
97
|
+
if defn not in exact_search_res_set:
|
|
98
|
+
exact_search_res.append((defn, defn_val))
|
|
99
|
+
diff = self.search_exec_local_lemmas_discovered_so_far.difference(local_lemmas_name)
|
|
100
|
+
# Remove future lemmas which are yet to be discovered
|
|
101
|
+
exact_search_res = [res for res in exact_search_res if res[0] not in diff]
|
|
102
|
+
return exact_search_res
|
|
103
|
+
|
|
104
|
+
def _get_variables_in_hyp(self, hyps: List[str], coq_exec: CoqExecutor) -> typing.Set[str]:
|
|
105
|
+
variables = set()
|
|
106
|
+
for hyp in hyps:
|
|
107
|
+
hyp = hyp.strip()
|
|
108
|
+
defn = hyp.split(":")
|
|
109
|
+
defn_name = defn[0].strip()
|
|
110
|
+
# tokenize defn_name
|
|
111
|
+
possible_vars = set(coq_exec.get_tokens_in_given_stmt(defn_name, ignore_first_token=False))
|
|
112
|
+
possible_vars = {var for var in possible_vars if var not in coq_exec.token_separator_set}
|
|
113
|
+
variables.update(possible_vars)
|
|
114
|
+
return variables
|
|
115
|
+
|
|
116
|
+
def _get_changed_goal_idx(self, training_data_point: TrainingDataFormat) -> typing.List[int]:
|
|
117
|
+
# Figure out the subset of start goals which were changed
|
|
118
|
+
start_goals = dict()
|
|
119
|
+
for goal in training_data_point.start_goals:
|
|
120
|
+
if goal.goal in start_goals:
|
|
121
|
+
start_goals[goal.goal] += 1
|
|
122
|
+
else:
|
|
123
|
+
start_goals[goal.goal] = 1
|
|
124
|
+
end_goals = dict()
|
|
125
|
+
for goal in training_data_point.end_goals:
|
|
126
|
+
if goal.goal in end_goals:
|
|
127
|
+
end_goals[goal.goal] += 1
|
|
128
|
+
else:
|
|
129
|
+
end_goals[goal.goal] = 1
|
|
130
|
+
changed_goals = dict()
|
|
131
|
+
for goal, cnt in start_goals.items():
|
|
132
|
+
if goal in end_goals and end_goals[goal] < cnt:
|
|
133
|
+
changed_goals[goal] = cnt - end_goals[goal]
|
|
134
|
+
elif goal not in end_goals:
|
|
135
|
+
changed_goals[goal] = 1
|
|
136
|
+
else:
|
|
137
|
+
# The goal was not changed
|
|
138
|
+
pass
|
|
139
|
+
changed_goals_idx = []
|
|
140
|
+
for idx, goal in enumerate(training_data_point.start_goals):
|
|
141
|
+
if goal.goal in changed_goals and changed_goals[goal.goal] > 0:
|
|
142
|
+
changed_goals_idx.append(idx)
|
|
143
|
+
changed_goals[goal.goal] -= 1
|
|
144
|
+
return changed_goals_idx
|
|
145
|
+
|
|
146
|
+
def get_focussed_goals(self, coq_executor: CoqExecutor) -> List[Goal]:
|
|
147
|
+
# Only consider the foreground goals because we can handle the multi-line tactics
|
|
148
|
+
return [Goal(hypotheses=goal.hypotheses, goal=goal.goal) for goal in coq_executor.coq.proof_context.fg_goals]
|
|
149
|
+
|
|
150
|
+
def get_unfocussed_goals(self, coq_executor: CoqExecutor) -> List[Goal]:
|
|
151
|
+
# Only consider the foreground goals because we can handle the multi-line tactics
|
|
152
|
+
other_goals = coq_executor.coq.proof_context.bg_goals + coq_executor.coq.proof_context.shelved_goals + coq_executor.coq.proof_context.given_up_goals
|
|
153
|
+
return [Goal(hypotheses=goal.hypotheses, goal=goal.goal) for goal in other_goals]
|
|
154
|
+
|
|
155
|
+
def get_local_lemmas(self, coq_executor: CoqExecutor, logger: logging.Logger = None) -> List[typing.Tuple[str, str]]:
|
|
156
|
+
# Since LOCAL retrieval is not intelligent enough to filter out the useless lemmas, we will not filter out the useless lemmas here, and let the model learn it
|
|
157
|
+
logger = logger if logger is not None else self.logger
|
|
158
|
+
lemmas = []
|
|
159
|
+
for lemma in coq_executor.coq.local_lemmas[:-1]:
|
|
160
|
+
lemma_split = lemma.split(':') if ':' in lemma else lemma.split()
|
|
161
|
+
lemma_name = ""
|
|
162
|
+
if len(lemma_split) > 0:
|
|
163
|
+
lemma_name = lemma_split[0].strip()
|
|
164
|
+
lemma_val = lemma_split[-1].strip()
|
|
165
|
+
if lemma_val.endswith('.'):
|
|
166
|
+
lemma_val = lemma_val[:-1]
|
|
167
|
+
if len(lemma_name) > 0:
|
|
168
|
+
lemmas.append((lemma_name, lemma_val))
|
|
169
|
+
return lemmas
|
|
170
|
+
|
|
171
|
+
def set_relevant_defns_in_training_data_point(self, training_data_point: TrainingDataFormat, coq_executor: CoqExecutor, logger: logging.Logger = None, depth: int = None, should_print_symbol: bool = False, only_local: bool = False):
|
|
172
|
+
logger = logger if logger is not None else self.logger
|
|
173
|
+
depth = self.depth if depth is None else depth
|
|
174
|
+
unique_defns = {defn: idx for idx, defn in enumerate(training_data_point.all_useful_defns_theorems)}
|
|
175
|
+
for idx, goal in enumerate(training_data_point.start_goals):
|
|
176
|
+
current_depth = 0
|
|
177
|
+
query = training_data_point.get_human_readable_serialized_goal(idx, skip_special_tokens=True)
|
|
178
|
+
possible_variables = self._get_variables_in_hyp(goal.hypotheses, coq_executor)
|
|
179
|
+
query_toks = set(coq_executor.get_tokens_in_given_stmt(query, ignore_first_token=False))
|
|
180
|
+
stack = [(current_depth, tok) for tok in query_toks if tok not in possible_variables]
|
|
181
|
+
toks_executed = set()
|
|
182
|
+
depth_map = {}
|
|
183
|
+
useful_defns_maps : typing.Dict[str, str] = {}
|
|
184
|
+
full_depth = depth == -1
|
|
185
|
+
while len(stack) > 0:
|
|
186
|
+
current_depth, tok = stack.pop()
|
|
187
|
+
if current_depth > depth and not full_depth:
|
|
188
|
+
continue
|
|
189
|
+
if tok in toks_executed:
|
|
190
|
+
continue
|
|
191
|
+
else:
|
|
192
|
+
toks_executed.add(tok)
|
|
193
|
+
for defn, denf_val in self._search_exact_with_diff(coq_executor, tok, should_print_symbol=should_print_symbol, only_local=only_local):
|
|
194
|
+
if defn in depth_map:
|
|
195
|
+
depth_map[defn] = min(depth_map[defn], current_depth)
|
|
196
|
+
useful_defns_maps[defn] = denf_val
|
|
197
|
+
else:
|
|
198
|
+
depth_map[defn] = current_depth
|
|
199
|
+
useful_defns_maps[defn] = denf_val
|
|
200
|
+
for stmt_tok in coq_executor.get_tokens_in_given_stmt(denf_val, ignore_first_token=False):
|
|
201
|
+
if stmt_tok not in toks_executed:
|
|
202
|
+
stack.append((current_depth + 1, stmt_tok))
|
|
203
|
+
useful_defns = [(defn, defn_val, CoqContextHelper.max_relevance_score/(depth_map[defn] + 1)) for defn, defn_val in useful_defns_maps.items()]
|
|
204
|
+
useful_defns.sort(key=lambda x: (x[2], x[0]), reverse=True) # sort by relevance
|
|
205
|
+
for defn, defn_val, _ in useful_defns:
|
|
206
|
+
if defn not in unique_defns:
|
|
207
|
+
lemma_idx = len(training_data_point.all_useful_defns_theorems)
|
|
208
|
+
unique_defns[defn] = lemma_idx
|
|
209
|
+
training_data_point.all_useful_defns_theorems.append(LemmaReferences(lemma_idx, defn, defn_val, 0))
|
|
210
|
+
useful_defns = [LemmaRefWithScore(unique_defns[defn], score) for defn, _, score in useful_defns]
|
|
211
|
+
goal.relevant_defns = useful_defns
|
|
212
|
+
|
|
213
|
+
def set_all_type_matched_query_result(self, training_data_point: TrainingDataFormat, coq_executor: CoqExecutor, logger: logging.Logger = None, depth: int = None, should_print_symbol: bool = False, only_local: bool = False):
|
|
214
|
+
# Use the hypothesis to find the definition
|
|
215
|
+
# Recursively find the definition of the definition to a fixed depth
|
|
216
|
+
# dump useful_hyps and current stmt into a stack
|
|
217
|
+
logger = logger if logger is not None else self.logger
|
|
218
|
+
depth = self.depth if depth is None else depth
|
|
219
|
+
unique_thms = {defn.lemma_name: idx for idx, defn in enumerate(training_data_point.all_useful_defns_theorems)}
|
|
220
|
+
for idx, goal in enumerate(training_data_point.start_goals):
|
|
221
|
+
current_depth = 0
|
|
222
|
+
query = training_data_point.get_human_readable_serialized_goal(idx, skip_special_tokens=True)
|
|
223
|
+
possible_variables = self._get_variables_in_hyp(goal.hypotheses, coq_executor)
|
|
224
|
+
query_toks = set(coq_executor.get_tokens_in_given_stmt(query, ignore_first_token=False))
|
|
225
|
+
stack = [(current_depth, tok) for tok in query_toks if tok not in possible_variables]
|
|
226
|
+
toks_executed = set()
|
|
227
|
+
depth_map = {}
|
|
228
|
+
useful_defns_maps : typing.Dict[str, str] = {}
|
|
229
|
+
full_depth = depth == -1
|
|
230
|
+
while len(stack) > 0:
|
|
231
|
+
current_depth, tok = stack.pop()
|
|
232
|
+
if current_depth > depth and not full_depth:
|
|
233
|
+
continue
|
|
234
|
+
if tok in toks_executed:
|
|
235
|
+
continue
|
|
236
|
+
else:
|
|
237
|
+
toks_executed.add(tok)
|
|
238
|
+
for defn, denf_val in self._get_all_type_matching_defns_with_diff(coq_executor, tok, should_print_symbol=should_print_symbol, only_local=only_local):
|
|
239
|
+
if defn in depth_map:
|
|
240
|
+
depth_map[defn] = min(depth_map[defn], current_depth)
|
|
241
|
+
else:
|
|
242
|
+
depth_map[defn] = current_depth
|
|
243
|
+
useful_defns_maps[defn] = denf_val
|
|
244
|
+
if current_depth + 1 <= depth or full_depth:
|
|
245
|
+
for stmt_tok in coq_executor.get_tokens_in_given_stmt(denf_val, ignore_first_token=False):
|
|
246
|
+
if stmt_tok not in toks_executed:
|
|
247
|
+
stack.append((current_depth + 1, stmt_tok))
|
|
248
|
+
useful_theorems = [(defn, defn_val, CoqContextHelper.max_relevance_score/(depth_map[defn] + 1)) for defn, defn_val in useful_defns_maps.items()]
|
|
249
|
+
useful_theorems.sort(key=lambda x: (x[2], x[0]), reverse=True) # sort by relevance
|
|
250
|
+
useful_local_theorems = []
|
|
251
|
+
useful_external_theorems = []
|
|
252
|
+
for defn, defn_val, score in useful_theorems:
|
|
253
|
+
if defn not in unique_thms:
|
|
254
|
+
lemma_idx = len(training_data_point.all_useful_defns_theorems)
|
|
255
|
+
unique_thms[defn] = lemma_idx
|
|
256
|
+
training_data_point.all_useful_defns_theorems.append(LemmaReferences(lemma_idx, defn, defn_val, 0))
|
|
257
|
+
if defn in self.search_exec_local_lemmas_discovered_so_far:
|
|
258
|
+
useful_local_theorems.append((defn, defn_val, score))
|
|
259
|
+
else:
|
|
260
|
+
useful_external_theorems.append((defn, defn_val, score))
|
|
261
|
+
useful_local_theorems = [(unique_thms[defn], score) for defn, _, score in useful_local_theorems]
|
|
262
|
+
useful_external_theorems = [(unique_thms[defn], score) for defn, _, score in useful_external_theorems]
|
|
263
|
+
goal.used_theorems_local = []
|
|
264
|
+
goal.used_theorems_external = []
|
|
265
|
+
goal.possible_useful_theorems_external = [LemmaRefWithScore(defn_idx, score) for defn_idx, score in useful_external_theorems if score <= CoqContextHelper.max_relevance_score]
|
|
266
|
+
goal.possible_useful_theorems_local = [LemmaRefWithScore(defn_idx, score) for defn_idx, score in useful_local_theorems if score <= CoqContextHelper.max_relevance_score]
|
|
267
|
+
|
|
268
|
+
def set_useful_defns_theorems_for_training_data_generation(self, current_stmt: str, training_data_point: TrainingDataFormat, coq_executor: CoqExecutor, logger: logging.Logger = None, depth: int = None, max_search_res: typing.Optional[int] = None, should_print_symbol: bool = False, only_local: bool = False):
|
|
269
|
+
# Use the hypothesis to find the definition
|
|
270
|
+
# Recursively find the definition of the definition to a fixed depth
|
|
271
|
+
# dump useful_hyps and current stmt into a stack
|
|
272
|
+
logger = logger if logger is not None else self.logger
|
|
273
|
+
depth = self.depth if depth is None else depth
|
|
274
|
+
current_stmt_toks = tuple(coq_executor.get_tokens_in_given_stmt(current_stmt, ignore_first_token=True))
|
|
275
|
+
unique_thms = {defn: idx for idx, defn in enumerate(training_data_point.all_useful_defns_theorems)}
|
|
276
|
+
changed_goal_idx = set(self._get_changed_goal_idx(training_data_point))
|
|
277
|
+
for idx, goal in enumerate(training_data_point.start_goals):
|
|
278
|
+
# if idx not in changed_goal_idx:
|
|
279
|
+
# continue
|
|
280
|
+
current_depth = 0
|
|
281
|
+
query = training_data_point.get_human_readable_serialized_goal(idx, skip_special_tokens=True)
|
|
282
|
+
possible_variables = self._get_variables_in_hyp(goal.hypotheses, coq_executor)
|
|
283
|
+
query_toks = set(coq_executor.get_tokens_in_given_stmt(query, ignore_first_token=False))
|
|
284
|
+
stack = [(current_depth, tok) for tok in query_toks if tok not in possible_variables]
|
|
285
|
+
toks_executed = set()
|
|
286
|
+
depth_map = {}
|
|
287
|
+
useful_defns_maps : typing.Dict[str, str] = {}
|
|
288
|
+
full_depth = depth == -1
|
|
289
|
+
while len(stack) > 0:
|
|
290
|
+
current_depth, tok = stack.pop()
|
|
291
|
+
if current_depth > depth and not full_depth:
|
|
292
|
+
continue
|
|
293
|
+
if tok in toks_executed:
|
|
294
|
+
continue
|
|
295
|
+
else:
|
|
296
|
+
toks_executed.add(tok)
|
|
297
|
+
for defn, denf_val, is_used in self._search_defn_with_diff(coq_executor, tok, current_stmt_toks, max_search_res=max_search_res, should_print_symbol=should_print_symbol, only_local=only_local):
|
|
298
|
+
if defn in depth_map:
|
|
299
|
+
depth_map[defn] = min(depth_map[defn], current_depth)
|
|
300
|
+
old_val, was_used_earlier = useful_defns_maps[defn]
|
|
301
|
+
current_defn_val = None
|
|
302
|
+
if was_used_earlier:
|
|
303
|
+
current_defn_val = old_val
|
|
304
|
+
else:
|
|
305
|
+
current_defn_val = denf_val
|
|
306
|
+
useful_defns_maps[defn] = (current_defn_val, was_used_earlier or is_used)
|
|
307
|
+
else:
|
|
308
|
+
depth_map[defn] = current_depth
|
|
309
|
+
useful_defns_maps[defn] = (denf_val, is_used)
|
|
310
|
+
if current_depth + 1 <= depth or full_depth:
|
|
311
|
+
for stmt_tok in coq_executor.get_tokens_in_given_stmt(denf_val, ignore_first_token=False):
|
|
312
|
+
if stmt_tok not in toks_executed:
|
|
313
|
+
stack.append((current_depth + 1, stmt_tok))
|
|
314
|
+
useful_theorems = [(defn, defn_val, 1.0 if is_used else CoqContextHelper.max_relevance_score/(depth_map[defn] + 1)) for defn, (defn_val, is_used) in useful_defns_maps.items()]
|
|
315
|
+
useful_theorems.sort(key=lambda x: (x[2], x[0]), reverse=True) # sort by relevance
|
|
316
|
+
useful_local_theorems = []
|
|
317
|
+
useful_external_theorems = []
|
|
318
|
+
for defn, defn_val, defn_score in useful_theorems:
|
|
319
|
+
if defn not in unique_thms:
|
|
320
|
+
lemma_idx = len(training_data_point.all_useful_defns_theorems)
|
|
321
|
+
unique_thms[defn] = lemma_idx
|
|
322
|
+
training_data_point.all_useful_defns_theorems.append(LemmaReferences(lemma_idx, defn, defn_val, 0))
|
|
323
|
+
if defn in self.search_exec_local_lemmas_discovered_so_far:
|
|
324
|
+
useful_local_theorems.append((defn, defn_val, defn_score))
|
|
325
|
+
else:
|
|
326
|
+
useful_external_theorems.append((defn, defn_val, defn_score))
|
|
327
|
+
useful_local_theorems = [(unique_thms[defn], defn_score) for defn, _, defn_score in useful_local_theorems]
|
|
328
|
+
useful_external_theorems = [(unique_thms[defn], defn_score) for defn, _, defn_score in useful_external_theorems]
|
|
329
|
+
if idx in changed_goal_idx:
|
|
330
|
+
# Only assign used theorems if it was in changed goals
|
|
331
|
+
goal.used_theorems_local = [LemmaRefWithScore(defn_idx, score) for defn_idx, score in useful_local_theorems if score > CoqContextHelper.max_relevance_score]
|
|
332
|
+
goal.used_theorems_external = [LemmaRefWithScore(defn_idx, score) for defn_idx, score in useful_external_theorems if score > CoqContextHelper.max_relevance_score]
|
|
333
|
+
if len(goal.used_theorems_local) > 0:
|
|
334
|
+
for lemma_ref in goal.used_theorems_local:
|
|
335
|
+
training_data_point.all_useful_defns_theorems[lemma_ref.lemma_idx].ref_count += 1
|
|
336
|
+
if len(goal.used_theorems_external) > 0:
|
|
337
|
+
for lemma_ref in goal.used_theorems_external:
|
|
338
|
+
training_data_point.all_useful_defns_theorems[lemma_ref.lemma_idx].ref_count += 1
|
|
339
|
+
goal.possible_useful_theorems_local = [LemmaRefWithScore(defn_idx, score) for defn_idx, score in useful_local_theorems if score <= CoqContextHelper.max_relevance_score]
|
|
340
|
+
goal.possible_useful_theorems_external = [LemmaRefWithScore(defn_idx, score) for defn_idx, score in useful_external_theorems if score <= CoqContextHelper.max_relevance_score]
|
|
341
|
+
|
|
342
|
+
def set_local_thms_dfns(self, training_data_point: TrainingDataFormat, coq_executor: CoqExecutor, logger: logging.Logger = None):
|
|
343
|
+
local_lemmas = self.get_local_lemmas(coq_executor, logger)
|
|
344
|
+
unique_thms = {defn.lemma_name: idx for idx, defn in enumerate(training_data_point.all_useful_defns_theorems)}
|
|
345
|
+
useful_local_theorems = []
|
|
346
|
+
for defn, defn_val in local_lemmas:
|
|
347
|
+
if defn not in unique_thms:
|
|
348
|
+
lemma_idx = len(training_data_point.all_useful_defns_theorems)
|
|
349
|
+
unique_thms[defn] = lemma_idx
|
|
350
|
+
training_data_point.all_useful_defns_theorems.append(LemmaReferences(lemma_idx, defn, defn_val, 0))
|
|
351
|
+
if defn in self.search_exec_local_lemmas_discovered_so_far:
|
|
352
|
+
useful_local_theorems.append((unique_thms[defn], CoqContextHelper.max_relevance_score))
|
|
353
|
+
for goal in training_data_point.start_goals:
|
|
354
|
+
goal.possible_useful_theorems_local = [LemmaRefWithScore(defn_idx, score) for defn_idx, score in useful_local_theorems if score <= CoqContextHelper.max_relevance_score]
|