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,236 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
|
|
5
|
+
root_dir = f"{__file__.split('itp_interface')[0]}"
|
|
6
|
+
if root_dir not in sys.path:
|
|
7
|
+
sys.path.append(root_dir)
|
|
8
|
+
import typing
|
|
9
|
+
import os
|
|
10
|
+
import copy
|
|
11
|
+
import enum
|
|
12
|
+
import logging
|
|
13
|
+
from itp_interface.tools.lean4_sync_executor import Lean4SyncExecutor
|
|
14
|
+
from itp_interface.tools.training_data_format import Goal, TrainingDataFormat
|
|
15
|
+
from itp_interface.tools.lean_parse_utils import LeanLineByLineReader
|
|
16
|
+
from itp_interface.tools.lean_context_helper import Lean3ContextHelper
|
|
17
|
+
|
|
18
|
+
class IntertwinedIterator(object):
|
|
19
|
+
def __init__(self, iterator: typing.Optional[typing.Iterator[str]] = None):
|
|
20
|
+
self.base_iterator = iterator
|
|
21
|
+
self.next_instruction: typing.Optional[str] = None
|
|
22
|
+
self.base_iterator_stopped = iterator is None # if the base iterator is None, then it is stopped
|
|
23
|
+
|
|
24
|
+
def set_next_instruction(self, instruction: str):
|
|
25
|
+
assert self.next_instruction is None, "next_instruction must be None"
|
|
26
|
+
assert instruction is not None, "instruction must not be None"
|
|
27
|
+
self.next_instruction = instruction
|
|
28
|
+
|
|
29
|
+
def __iter__(self):
|
|
30
|
+
return self
|
|
31
|
+
|
|
32
|
+
def __next__(self):
|
|
33
|
+
if self.next_instruction is not None:
|
|
34
|
+
# Return the next instruction if it is set
|
|
35
|
+
next_instruction = self.next_instruction
|
|
36
|
+
self.next_instruction = None
|
|
37
|
+
return next_instruction
|
|
38
|
+
# Otherwise, get the next instruction from the base iterator
|
|
39
|
+
if self.base_iterator is not None and not self.base_iterator_stopped:
|
|
40
|
+
try:
|
|
41
|
+
instruction = next(self.base_iterator)
|
|
42
|
+
return instruction
|
|
43
|
+
except StopIteration:
|
|
44
|
+
self.base_iterator_stopped = True
|
|
45
|
+
raise
|
|
46
|
+
else:
|
|
47
|
+
raise StopIteration()
|
|
48
|
+
|
|
49
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
50
|
+
if self.base_iterator is not None:
|
|
51
|
+
self.base_iterator.close()
|
|
52
|
+
pass
|
|
53
|
+
|
|
54
|
+
class DynamicProofExecutor(Lean4SyncExecutor):
|
|
55
|
+
class RunState(object):
|
|
56
|
+
def __init__(self):
|
|
57
|
+
self.tatics_ran = []
|
|
58
|
+
self.last_exception : typing.Optional[str] = None
|
|
59
|
+
self.line_tactic_map = {}
|
|
60
|
+
self.line_proof_context_map = {}
|
|
61
|
+
UnfocussedGoalsDescription = "there are unsolved goals"
|
|
62
|
+
ProofFinishedDescription = "no goals"
|
|
63
|
+
NotInProofModeDescription = "not in proof mode"
|
|
64
|
+
GoalDescriptionOrder = {
|
|
65
|
+
UnfocussedGoalsDescription: 2, # This more hard
|
|
66
|
+
ProofFinishedDescription: 1, # This is easier coz proof is almost done
|
|
67
|
+
NotInProofModeDescription: 0 # This is the easiest as the proof is done
|
|
68
|
+
}
|
|
69
|
+
class ContextType(enum.Enum):
|
|
70
|
+
NoContext = 0
|
|
71
|
+
LocalContext = 1
|
|
72
|
+
BestContext = 2
|
|
73
|
+
|
|
74
|
+
def goal_description_compare(description1: str, descripton2: str) -> int:
|
|
75
|
+
"""
|
|
76
|
+
Returns 1 if description1 < description2, 0 if description1 == description2, -1 if description1 > description2
|
|
77
|
+
"""
|
|
78
|
+
# In case of no description it is much more harder as we have to do a lot of work
|
|
79
|
+
# So None will have same value as unfocussed goals
|
|
80
|
+
order1 = DynamicProofExecutor.GoalDescriptionOrder.get(description1, 2) if description1 is not None else 2
|
|
81
|
+
order2 = DynamicProofExecutor.GoalDescriptionOrder.get(descripton2, 2) if descripton2 is not None else 2
|
|
82
|
+
if order1 < order2:
|
|
83
|
+
return 1
|
|
84
|
+
elif order1 == order2:
|
|
85
|
+
return 0
|
|
86
|
+
else:
|
|
87
|
+
return -1
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def __init__(self, coq_context_helper: Lean3ContextHelper, project_folder: str = None, proof_file: str = None, instruction_iter: typing.Optional[str] = None, use_hammer: bool = False, timeout_in_seconds: int = 60, use_human_readable_proof_context: bool = True, suppress_error_log: bool = True, context_type: ContextType = ContextType.NoContext, keep_local_context = False):
|
|
91
|
+
assert proof_file is None or os.path.exists(proof_file), f"Proof file {proof_file} does not exist"
|
|
92
|
+
assert coq_context_helper is not None, "coq_context_helper must not be None"
|
|
93
|
+
self.proof_file = proof_file
|
|
94
|
+
self.context_type = context_type
|
|
95
|
+
self.lean_file_iter = LeanLineByLineReader(proof_file, remove_comments=True, no_strip=True).instruction_step_generator() if proof_file is not None else instruction_iter
|
|
96
|
+
self.tactic_switch_iterator = IntertwinedIterator(self.lean_file_iter)
|
|
97
|
+
self.run_state = DynamicProofExecutor.RunState()
|
|
98
|
+
self.logger = None
|
|
99
|
+
self.lean_context_helper = coq_context_helper
|
|
100
|
+
super().__init__(project_root=project_folder, proof_step_iter=self.tactic_switch_iterator, use_hammer=use_hammer, timeout_in_sec=timeout_in_seconds, use_human_readable_proof_context=use_human_readable_proof_context, suppress_error_log=suppress_error_log, keep_local_context=keep_local_context)
|
|
101
|
+
|
|
102
|
+
def __enter__(self):
|
|
103
|
+
self.lean_context_helper.__enter__()
|
|
104
|
+
return super().__enter__()
|
|
105
|
+
|
|
106
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
107
|
+
self.lean_context_helper.__exit__(exc_type, exc_val, exc_tb)
|
|
108
|
+
super().__exit__(exc_type, exc_val, exc_tb)
|
|
109
|
+
|
|
110
|
+
def set_logger(self, logger: logging.Logger):
|
|
111
|
+
self.logger = logger
|
|
112
|
+
pass
|
|
113
|
+
|
|
114
|
+
def get_focussed_goals(self) -> typing.List[Goal]:
|
|
115
|
+
if not self.is_in_proof_mode():
|
|
116
|
+
return []
|
|
117
|
+
if self.proof_context is None:
|
|
118
|
+
return []
|
|
119
|
+
return self.lean_context_helper.get_focussed_goals(self)
|
|
120
|
+
|
|
121
|
+
def get_unfocussed_goals(self) -> typing.List[Goal]:
|
|
122
|
+
if not self.is_in_proof_mode():
|
|
123
|
+
return []
|
|
124
|
+
if self.proof_context is None:
|
|
125
|
+
return []
|
|
126
|
+
return self.lean_context_helper.get_unfocussed_goals(self)
|
|
127
|
+
|
|
128
|
+
def get_current_proof_state_as_training_data(self) -> TrainingDataFormat:
|
|
129
|
+
# get the current goal
|
|
130
|
+
if self.needs_cut_close():
|
|
131
|
+
current_goals = self.get_unfocussed_goals()
|
|
132
|
+
training_data_format = TrainingDataFormat(start_goals=current_goals)
|
|
133
|
+
training_data_format.goal_description = DynamicProofExecutor.UnfocussedGoalsDescription
|
|
134
|
+
elif not self.is_in_proof_mode():
|
|
135
|
+
current_goals = self.get_focussed_goals()
|
|
136
|
+
training_data_format = TrainingDataFormat(start_goals=current_goals)
|
|
137
|
+
training_data_format.goal_description = DynamicProofExecutor.NotInProofModeDescription
|
|
138
|
+
elif self.needs_qed():
|
|
139
|
+
current_goals = self.get_focussed_goals()
|
|
140
|
+
assert len(current_goals) == 0, "There should be no goals when needs_qed is True"
|
|
141
|
+
training_data_format = TrainingDataFormat(start_goals=current_goals)
|
|
142
|
+
training_data_format.goal_description = DynamicProofExecutor.ProofFinishedDescription
|
|
143
|
+
else:
|
|
144
|
+
current_goals = self.get_focussed_goals()
|
|
145
|
+
training_data_format = TrainingDataFormat(start_goals=current_goals)
|
|
146
|
+
if len(self.lean_error_messages) > 0:
|
|
147
|
+
training_data_format.goal_description = '\n'.join(self.lean_error_messages)
|
|
148
|
+
else:
|
|
149
|
+
training_data_format.goal_description = None
|
|
150
|
+
return training_data_format
|
|
151
|
+
|
|
152
|
+
def get_all_relevant_thms(self) -> TrainingDataFormat:
|
|
153
|
+
training_data_format = self.get_current_proof_state_as_training_data()
|
|
154
|
+
# self.lean_context_helper.set_all_type_matched_query_result(training_data_format, self, self.logger)
|
|
155
|
+
return training_data_format
|
|
156
|
+
|
|
157
|
+
def get_all_relevant_thms_within_local_context(self) -> TrainingDataFormat:
|
|
158
|
+
training_data_format = self.get_current_proof_state_as_training_data()
|
|
159
|
+
self.lean_context_helper.set_local_thms_dfns(training_data_format, self, self.logger)
|
|
160
|
+
return training_data_format
|
|
161
|
+
|
|
162
|
+
def get_all_relevant_defns(self) -> TrainingDataFormat:
|
|
163
|
+
training_data_format = self.get_current_proof_state_as_training_data()
|
|
164
|
+
self.lean_context_helper.set_relevant_defns_in_training_data_point(training_data_format, self, self.logger)
|
|
165
|
+
return training_data_format
|
|
166
|
+
|
|
167
|
+
def get_all_relevant_defns_and_thms(self, should_print_symbol: bool = False, only_local: bool = False, only_proof_state: bool = False) -> TrainingDataFormat:
|
|
168
|
+
training_data_format = self.get_current_proof_state_as_training_data()
|
|
169
|
+
# self.lean_context_helper.set_relevant_defns_in_training_data_point(training_data_format, self, self.logger)
|
|
170
|
+
# if not only_proof_state:
|
|
171
|
+
# self.lean_context_helper.set_all_type_matched_query_result(training_data_format, self, self.logger)
|
|
172
|
+
return training_data_format
|
|
173
|
+
|
|
174
|
+
def run_cmds(self, cmds: typing.List[str], raise_exception=False) -> typing.Tuple[int, bool]:
|
|
175
|
+
cmd_failed = False
|
|
176
|
+
start_line_num = self.line_num
|
|
177
|
+
for cmd in cmds:
|
|
178
|
+
self.tactic_switch_iterator.set_next_instruction(cmd)
|
|
179
|
+
try:
|
|
180
|
+
self.run_next()
|
|
181
|
+
except Exception:
|
|
182
|
+
self.line_num -= 1
|
|
183
|
+
cmd_failed = True
|
|
184
|
+
if raise_exception:
|
|
185
|
+
raise
|
|
186
|
+
else:
|
|
187
|
+
break
|
|
188
|
+
return start_line_num, not cmd_failed
|
|
189
|
+
|
|
190
|
+
def run_tactics(self, tactics: typing.List[str]) -> typing.Tuple[int, bool]:
|
|
191
|
+
tactic_failed = False
|
|
192
|
+
start_line_num = self.line_num
|
|
193
|
+
self.run_state.line_tactic_map[self.line_num] = len(self.run_state.tatics_ran)
|
|
194
|
+
self.run_state.line_proof_context_map[self.line_num] = copy.deepcopy(self.proof_context)
|
|
195
|
+
for tactic in tactics:
|
|
196
|
+
self.tactic_switch_iterator.set_next_instruction(tactic)
|
|
197
|
+
self.run_next()
|
|
198
|
+
self.run_state.tatics_ran.append(tactic)
|
|
199
|
+
self.run_state.line_proof_context_map[self.line_num] = copy.deepcopy(self.proof_context)
|
|
200
|
+
if len(self.lean_error_messages) > 0:
|
|
201
|
+
current_thm_name = self.get_lemma_name_if_running()
|
|
202
|
+
assert current_thm_name is not None, "current_thm_name must not be None"
|
|
203
|
+
tactic_failed = True
|
|
204
|
+
self.run_state.last_exception = '\n'.join(self.lean_error_messages)
|
|
205
|
+
return start_line_num, not tactic_failed
|
|
206
|
+
|
|
207
|
+
def get_last_exception(self) -> typing.Optional[str]:
|
|
208
|
+
last_exception = self.run_state.last_exception
|
|
209
|
+
self.run_state.last_exception = None
|
|
210
|
+
return last_exception
|
|
211
|
+
|
|
212
|
+
def skip_to_theorem(self, theorem_name: str):
|
|
213
|
+
self._skip_to_theorem(theorem_name)
|
|
214
|
+
|
|
215
|
+
# [TODO] change this for bactracking
|
|
216
|
+
def cancel_tactic_till_line(self, tactic_line_num: int) -> bool:
|
|
217
|
+
assert tactic_line_num <= self.line_num, "tactic_line_num must be <= self.line_num"
|
|
218
|
+
assert tactic_line_num >= 0, "tactic_line_num must be >= 0"
|
|
219
|
+
cancelled_some_tactics = False
|
|
220
|
+
if tactic_line_num < self.line_num:
|
|
221
|
+
self._lines_executed = self._lines_executed[:tactic_line_num]
|
|
222
|
+
state_num = self.run_state.line_tactic_map[tactic_line_num]
|
|
223
|
+
self.run_state.tatics_ran = self.run_state.tatics_ran[:state_num]
|
|
224
|
+
self.proof_context = self.run_state.line_proof_context_map[tactic_line_num]
|
|
225
|
+
line_tactic_map_keys = list(self.run_state.line_tactic_map.keys())
|
|
226
|
+
for line_num in line_tactic_map_keys:
|
|
227
|
+
if line_num >= tactic_line_num:
|
|
228
|
+
del self.run_state.line_tactic_map[line_num]
|
|
229
|
+
line_proof_context_map_keys = list(self.run_state.line_proof_context_map.keys())
|
|
230
|
+
for line_num in line_proof_context_map_keys:
|
|
231
|
+
if line_num >= tactic_line_num:
|
|
232
|
+
del self.run_state.line_proof_context_map[line_num]
|
|
233
|
+
self.line_num = tactic_line_num
|
|
234
|
+
cancelled_some_tactics = self._backtrack_tactic_line(tactic_line_num)
|
|
235
|
+
self._proof_running = self.proof_context is not None
|
|
236
|
+
return cancelled_some_tactics
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
|
|
5
|
+
root_dir = f"{__file__.split('itp_interface')[0]}"
|
|
6
|
+
if root_dir not in sys.path:
|
|
7
|
+
sys.path.append(root_dir)
|
|
8
|
+
import typing
|
|
9
|
+
import os
|
|
10
|
+
import copy
|
|
11
|
+
import enum
|
|
12
|
+
import logging
|
|
13
|
+
from itp_interface.tools.lean_cmd_executor import Lean3Executor
|
|
14
|
+
from itp_interface.tools.training_data_format import Goal, TrainingDataFormat
|
|
15
|
+
from itp_interface.tools.lean_parse_utils import LeanLineByLineReader
|
|
16
|
+
from itp_interface.tools.lean_context_helper import Lean3ContextHelper
|
|
17
|
+
|
|
18
|
+
class IntertwinedIterator(object):
|
|
19
|
+
def __init__(self, iterator: typing.Optional[typing.Iterator[str]] = None):
|
|
20
|
+
self.base_iterator = iterator
|
|
21
|
+
self.next_instruction: typing.Optional[str] = None
|
|
22
|
+
self.base_iterator_stopped = iterator is None # if the base iterator is None, then it is stopped
|
|
23
|
+
|
|
24
|
+
def set_next_instruction(self, instruction: str):
|
|
25
|
+
assert self.next_instruction is None, "next_instruction must be None"
|
|
26
|
+
assert instruction is not None, "instruction must not be None"
|
|
27
|
+
self.next_instruction = instruction
|
|
28
|
+
|
|
29
|
+
def __iter__(self):
|
|
30
|
+
return self
|
|
31
|
+
|
|
32
|
+
def __next__(self):
|
|
33
|
+
if self.next_instruction is not None:
|
|
34
|
+
# Return the next instruction if it is set
|
|
35
|
+
next_instruction = self.next_instruction
|
|
36
|
+
self.next_instruction = None
|
|
37
|
+
return next_instruction
|
|
38
|
+
# Otherwise, get the next instruction from the base iterator
|
|
39
|
+
if self.base_iterator is not None and not self.base_iterator_stopped:
|
|
40
|
+
try:
|
|
41
|
+
instruction = next(self.base_iterator)
|
|
42
|
+
return instruction
|
|
43
|
+
except StopIteration:
|
|
44
|
+
self.base_iterator_stopped = True
|
|
45
|
+
raise
|
|
46
|
+
else:
|
|
47
|
+
raise StopIteration()
|
|
48
|
+
|
|
49
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
50
|
+
if self.base_iterator is not None:
|
|
51
|
+
self.base_iterator.close()
|
|
52
|
+
pass
|
|
53
|
+
|
|
54
|
+
class DynamicProofExecutor(Lean3Executor):
|
|
55
|
+
class RunState(object):
|
|
56
|
+
def __init__(self):
|
|
57
|
+
self.tatics_ran = []
|
|
58
|
+
self.last_exception : typing.Optional[str] = None
|
|
59
|
+
self.line_tactic_map = {}
|
|
60
|
+
self.line_proof_context_map = {}
|
|
61
|
+
UnfocussedGoalsDescription = "there are unsolved goals"
|
|
62
|
+
ProofFinishedDescription = "no goals"
|
|
63
|
+
NotInProofModeDescription = "not in proof mode"
|
|
64
|
+
GoalDescriptionOrder = {
|
|
65
|
+
UnfocussedGoalsDescription: 2, # This more hard
|
|
66
|
+
ProofFinishedDescription: 1, # This is easier coz proof is almost done
|
|
67
|
+
NotInProofModeDescription: 0 # This is the easiest as the proof is done
|
|
68
|
+
}
|
|
69
|
+
class ContextType(enum.Enum):
|
|
70
|
+
NoContext = 0
|
|
71
|
+
LocalContext = 1
|
|
72
|
+
BestContext = 2
|
|
73
|
+
|
|
74
|
+
def goal_description_compare(description1: str, descripton2: str) -> int:
|
|
75
|
+
"""
|
|
76
|
+
Returns 1 if description1 < description2, 0 if description1 == description2, -1 if description1 > description2
|
|
77
|
+
"""
|
|
78
|
+
# In case of no description it is much more harder as we have to do a lot of work
|
|
79
|
+
# So None will have same value as unfocussed goals
|
|
80
|
+
order1 = DynamicProofExecutor.GoalDescriptionOrder.get(description1, 2) if description1 is not None else 2
|
|
81
|
+
order2 = DynamicProofExecutor.GoalDescriptionOrder.get(descripton2, 2) if descripton2 is not None else 2
|
|
82
|
+
if order1 < order2:
|
|
83
|
+
return 1
|
|
84
|
+
elif order1 == order2:
|
|
85
|
+
return 0
|
|
86
|
+
else:
|
|
87
|
+
return -1
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def __init__(self, coq_context_helper: Lean3ContextHelper, project_folder: str = None, proof_file: str = None, instruction_iter: typing.Optional[str] = None, use_hammer: bool = False, timeout_in_seconds: int = 60, use_human_readable_proof_context: bool = True, suppress_error_log: bool = True, context_type: ContextType = ContextType.NoContext, keep_local_context = False):
|
|
91
|
+
assert proof_file is None or os.path.exists(proof_file), f"Proof file {proof_file} does not exist"
|
|
92
|
+
assert coq_context_helper is not None, "coq_context_helper must not be None"
|
|
93
|
+
self.proof_file = proof_file
|
|
94
|
+
self.context_type = context_type
|
|
95
|
+
self.lean_file_iter = LeanLineByLineReader(proof_file).instruction_step_generator() if proof_file is not None else instruction_iter
|
|
96
|
+
self.tactic_switch_iterator = IntertwinedIterator(self.lean_file_iter)
|
|
97
|
+
self.run_state = DynamicProofExecutor.RunState()
|
|
98
|
+
self.logger = None
|
|
99
|
+
self.lean_context_helper = coq_context_helper
|
|
100
|
+
super().__init__(project_root=project_folder, proof_step_iter=self.tactic_switch_iterator, use_hammer=use_hammer, timeout_in_sec=timeout_in_seconds, use_human_readable_proof_context=use_human_readable_proof_context, suppress_error_log=suppress_error_log, keep_local_context=keep_local_context)
|
|
101
|
+
|
|
102
|
+
def __enter__(self):
|
|
103
|
+
self.lean_context_helper.__enter__()
|
|
104
|
+
return super().__enter__()
|
|
105
|
+
|
|
106
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
107
|
+
self.lean_context_helper.__exit__(exc_type, exc_val, exc_tb)
|
|
108
|
+
super().__exit__(exc_type, exc_val, exc_tb)
|
|
109
|
+
|
|
110
|
+
def set_logger(self, logger: logging.Logger):
|
|
111
|
+
self.logger = logger
|
|
112
|
+
pass
|
|
113
|
+
|
|
114
|
+
def get_focussed_goals(self) -> typing.List[Goal]:
|
|
115
|
+
if not self.is_in_proof_mode():
|
|
116
|
+
return []
|
|
117
|
+
return self.lean_context_helper.get_focussed_goals(self)
|
|
118
|
+
|
|
119
|
+
def get_unfocussed_goals(self) -> typing.List[Goal]:
|
|
120
|
+
if not self.is_in_proof_mode():
|
|
121
|
+
return []
|
|
122
|
+
return self.lean_context_helper.get_unfocussed_goals(self)
|
|
123
|
+
|
|
124
|
+
def get_current_proof_state_as_training_data(self) -> TrainingDataFormat:
|
|
125
|
+
# get the current goal
|
|
126
|
+
if self.needs_cut_close():
|
|
127
|
+
current_goals = self.get_unfocussed_goals()
|
|
128
|
+
training_data_format = TrainingDataFormat(start_goals=current_goals)
|
|
129
|
+
training_data_format.goal_description = DynamicProofExecutor.UnfocussedGoalsDescription
|
|
130
|
+
elif not self.is_in_proof_mode():
|
|
131
|
+
current_goals = self.get_focussed_goals()
|
|
132
|
+
training_data_format = TrainingDataFormat(start_goals=current_goals)
|
|
133
|
+
training_data_format.goal_description = DynamicProofExecutor.NotInProofModeDescription
|
|
134
|
+
elif self.needs_qed():
|
|
135
|
+
current_goals = self.get_focussed_goals()
|
|
136
|
+
assert len(current_goals) == 0, "There should be no goals when needs_qed is True"
|
|
137
|
+
training_data_format = TrainingDataFormat(start_goals=current_goals)
|
|
138
|
+
training_data_format.goal_description = DynamicProofExecutor.ProofFinishedDescription
|
|
139
|
+
else:
|
|
140
|
+
current_goals = self.get_focussed_goals()
|
|
141
|
+
training_data_format = TrainingDataFormat(start_goals=current_goals)
|
|
142
|
+
training_data_format.goal_description = None
|
|
143
|
+
return training_data_format
|
|
144
|
+
|
|
145
|
+
def get_all_relevant_thms(self) -> TrainingDataFormat:
|
|
146
|
+
training_data_format = self.get_current_proof_state_as_training_data()
|
|
147
|
+
self.lean_context_helper.set_all_type_matched_query_result(training_data_format, self, self.logger)
|
|
148
|
+
return training_data_format
|
|
149
|
+
|
|
150
|
+
def get_all_relevant_thms_within_local_context(self) -> TrainingDataFormat:
|
|
151
|
+
training_data_format = self.get_current_proof_state_as_training_data()
|
|
152
|
+
self.lean_context_helper.set_local_thms_dfns(training_data_format, self, self.logger)
|
|
153
|
+
return training_data_format
|
|
154
|
+
|
|
155
|
+
def get_all_relevant_defns(self) -> TrainingDataFormat:
|
|
156
|
+
training_data_format = self.get_current_proof_state_as_training_data()
|
|
157
|
+
self.lean_context_helper.set_relevant_defns_in_training_data_point(training_data_format, self, self.logger)
|
|
158
|
+
return training_data_format
|
|
159
|
+
|
|
160
|
+
def get_all_relevant_defns_and_thms(self, should_print_symbol: bool = False, only_local: bool = False, only_proof_state: bool = False) -> TrainingDataFormat:
|
|
161
|
+
training_data_format = self.get_current_proof_state_as_training_data()
|
|
162
|
+
# self.lean_context_helper.set_relevant_defns_in_training_data_point(training_data_format, self, self.logger)
|
|
163
|
+
if not only_proof_state:
|
|
164
|
+
self.lean_context_helper.set_all_type_matched_query_result(training_data_format, self, self.logger)
|
|
165
|
+
return training_data_format
|
|
166
|
+
|
|
167
|
+
def run_cmds(self, cmds: typing.List[str], raise_exception=False) -> typing.Tuple[int, bool]:
|
|
168
|
+
cmd_failed = False
|
|
169
|
+
start_line_num = self.line_num
|
|
170
|
+
for cmd in cmds:
|
|
171
|
+
self.tactic_switch_iterator.set_next_instruction(cmd)
|
|
172
|
+
try:
|
|
173
|
+
self.run_next()
|
|
174
|
+
except Exception:
|
|
175
|
+
self.line_num -= 1
|
|
176
|
+
cmd_failed = True
|
|
177
|
+
if raise_exception:
|
|
178
|
+
raise
|
|
179
|
+
else:
|
|
180
|
+
break
|
|
181
|
+
return start_line_num, not cmd_failed
|
|
182
|
+
|
|
183
|
+
def run_tactics(self, tactics: typing.List[str]) -> typing.Tuple[int, bool]:
|
|
184
|
+
tactic_failed = False
|
|
185
|
+
start_line_num = self.line_num
|
|
186
|
+
self.run_state.line_tactic_map[self.line_num] = len(self.run_state.tatics_ran)
|
|
187
|
+
self.run_state.line_proof_context_map[self.line_num] = copy.deepcopy(self.proof_context)
|
|
188
|
+
for tactic in tactics:
|
|
189
|
+
self.tactic_switch_iterator.set_next_instruction(tactic)
|
|
190
|
+
self.run_next()
|
|
191
|
+
self.run_state.tatics_ran.append(tactic)
|
|
192
|
+
self.run_state.line_proof_context_map[self.line_num] = copy.deepcopy(self.proof_context)
|
|
193
|
+
if len(self.lean_error_messages) > 0:
|
|
194
|
+
current_thm_name = self.get_lemma_name_if_running()
|
|
195
|
+
assert current_thm_name is not None, "current_thm_name must not be None"
|
|
196
|
+
tactic_failed = True
|
|
197
|
+
self.run_state.last_exception = '\n'.join(self.lean_error_messages)
|
|
198
|
+
return start_line_num, not tactic_failed
|
|
199
|
+
|
|
200
|
+
def get_last_exception(self) -> typing.Optional[str]:
|
|
201
|
+
last_exception = self.run_state.last_exception
|
|
202
|
+
self.run_state.last_exception = None
|
|
203
|
+
return last_exception
|
|
204
|
+
|
|
205
|
+
def skip_to_theorem(self, theorem_name: str):
|
|
206
|
+
self._skip_to_theorem(theorem_name)
|
|
207
|
+
|
|
208
|
+
def cancel_tactic_till_line(self, tactic_line_num: int) -> bool:
|
|
209
|
+
assert tactic_line_num <= self.line_num, "tactic_line_num must be <= self.line_num"
|
|
210
|
+
assert tactic_line_num >= 0, "tactic_line_num must be >= 0"
|
|
211
|
+
cancelled_some_tactics = False
|
|
212
|
+
if tactic_line_num < self.line_num:
|
|
213
|
+
self._lines_executed = self._lines_executed[:tactic_line_num]
|
|
214
|
+
self._file_content = "\n".join(self._lines_executed)
|
|
215
|
+
state_num = self.run_state.line_tactic_map[tactic_line_num]
|
|
216
|
+
self.run_state.tatics_ran = self.run_state.tatics_ran[:state_num]
|
|
217
|
+
self.proof_context = self.run_state.line_proof_context_map[tactic_line_num]
|
|
218
|
+
line_tactic_map_keys = list(self.run_state.line_tactic_map.keys())
|
|
219
|
+
for line_num in line_tactic_map_keys:
|
|
220
|
+
if line_num >= tactic_line_num:
|
|
221
|
+
del self.run_state.line_tactic_map[line_num]
|
|
222
|
+
line_proof_context_map_keys = list(self.run_state.line_proof_context_map.keys())
|
|
223
|
+
for line_num in line_proof_context_map_keys:
|
|
224
|
+
if line_num >= tactic_line_num:
|
|
225
|
+
del self.run_state.line_proof_context_map[line_num]
|
|
226
|
+
self.line_num = tactic_line_num
|
|
227
|
+
cancelled_some_tactics = True
|
|
228
|
+
return cancelled_some_tactics
|
|
@@ -0,0 +1,66 @@
|
|
|
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.isabelle_executor import IsabelleExecutor
|
|
11
|
+
from itp_interface.tools.training_data_format import Goal, LemmaRefWithScore, LemmaReferences, TrainingDataFormat
|
|
12
|
+
from typing import List
|
|
13
|
+
|
|
14
|
+
class IsabelleContextHelper(object):
|
|
15
|
+
max_relevance_score = 0.95
|
|
16
|
+
def __init__(self, search_executor: IsabelleExecutor, depth : typing.Optional[int] = None, logger: logging.Logger = None) -> 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.logger = logger if logger is not None else logging.getLogger(__name__)
|
|
22
|
+
|
|
23
|
+
def __enter__(self):
|
|
24
|
+
return self
|
|
25
|
+
|
|
26
|
+
def __exit__(self, exc_type, exc_value, traceback):
|
|
27
|
+
pass
|
|
28
|
+
|
|
29
|
+
def get_focussed_goals(self, isabelle_executor: IsabelleExecutor) -> List[Goal]:
|
|
30
|
+
# Only consider the foreground goals because we can handle the multi-line tactics
|
|
31
|
+
return [Goal(hypotheses=goal.hypotheses, goal=goal.goal) for goal in isabelle_executor.proof_context.fg_goals]
|
|
32
|
+
|
|
33
|
+
def get_unfocussed_goals(self, isabelle_executor: IsabelleExecutor) -> List[Goal]:
|
|
34
|
+
# Only consider the foreground goals because we can handle the multi-line tactics
|
|
35
|
+
other_goals = isabelle_executor.proof_context.bg_goals + isabelle_executor.proof_context.shelved_goals + isabelle_executor.proof_context.given_up_goals
|
|
36
|
+
return [Goal(hypotheses=goal.hypotheses, goal=goal.goal) for goal in other_goals]
|
|
37
|
+
|
|
38
|
+
def get_local_lemmas(self, isabelle_executor: IsabelleExecutor, logger: logging.Logger = None) -> List[typing.Tuple[str, str]]:
|
|
39
|
+
# Search is not supported as of now
|
|
40
|
+
raise Exception("Search is not supported in Isabelle as of now")
|
|
41
|
+
|
|
42
|
+
def set_relevant_defns_in_training_data_point(self, training_data_point: TrainingDataFormat, isabelle_executor: IsabelleExecutor, logger: logging.Logger = None, depth: int = None):
|
|
43
|
+
# Search is not supported as of now
|
|
44
|
+
raise Exception("Search is not supported in Isabelle as of now")
|
|
45
|
+
|
|
46
|
+
def set_all_type_matched_query_result(self, training_data_point: TrainingDataFormat, isabelle_executor: IsabelleExecutor, logger: logging.Logger = None, depth: int = None):
|
|
47
|
+
unique_thms = {defn.lemma_name: idx for idx, defn in enumerate(training_data_point.all_useful_defns_theorems)}
|
|
48
|
+
# query = training_data_point.get_human_readable_serialized_goal(idx, skip_special_tokens=True)
|
|
49
|
+
relevant_thms = isabelle_executor.search_type_matching_defns("") # Here the search simply returns everything
|
|
50
|
+
# Add all lemma references to unique_defns
|
|
51
|
+
for thm in relevant_thms:
|
|
52
|
+
if thm.name not in unique_thms:
|
|
53
|
+
_idx = len(training_data_point.all_useful_defns_theorems)
|
|
54
|
+
unique_thms[thm.name] = _idx
|
|
55
|
+
training_data_point.all_useful_defns_theorems.append(LemmaReferences(_idx, thm.name, thm.dfn))
|
|
56
|
+
for _, goal in enumerate(training_data_point.start_goals):
|
|
57
|
+
goal.possible_useful_theorems_external = [LemmaRefWithScore(unique_thms[thm.name], 1.0) for thm in relevant_thms]
|
|
58
|
+
goal.possible_useful_theorems_local = []
|
|
59
|
+
|
|
60
|
+
def set_useful_defns_theorems_for_training_data_generation(self, current_stmt: str, training_data_point: TrainingDataFormat, isabelle_executor: IsabelleExecutor, logger: logging.Logger = None, depth: int = None, max_search_res: typing.Optional[int] = None):
|
|
61
|
+
# Search is not supported as of now
|
|
62
|
+
raise Exception("Search is not supported in Isabelle as of now")
|
|
63
|
+
|
|
64
|
+
def set_local_thms_dfns(self, training_data_point: TrainingDataFormat, isabelle_executor: IsabelleExecutor, logger: logging.Logger = None):
|
|
65
|
+
# Search is not supported as of now
|
|
66
|
+
raise Exception("Search is not supported in Isabelle as of now")
|