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,540 @@
|
|
|
1
|
+
/*
|
|
2
|
+
This is adapted from contents in Dominique Unruh's package scala-isabelle
|
|
3
|
+
The package can be found on github at https://github.com/dominique-unruh/scala-isabelle
|
|
4
|
+
This particular file is adapted from https://github.com/dominique-unruh/scala-isabelle/blob/master/src/test/scala/de/unruh/isabelle/experiments/ExecuteIsar.scala
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
package pisa.server
|
|
8
|
+
|
|
9
|
+
import io.grpc.Status
|
|
10
|
+
import zio.{ZEnv, ZIO}
|
|
11
|
+
import pisa.server.ZioServer.ZServer
|
|
12
|
+
import de.unruh.isabelle.pure.{Theory, ToplevelState}
|
|
13
|
+
import de.unruh.isabelle.control.IsabelleMLException
|
|
14
|
+
import de.unruh.isabelle.mlvalue.MLValue
|
|
15
|
+
import de.unruh.isabelle.control.Isabelle
|
|
16
|
+
import de.unruh.isabelle.pure.Implicits._
|
|
17
|
+
import de.unruh.isabelle.mlvalue.Implicits._
|
|
18
|
+
|
|
19
|
+
import scala.concurrent.{ExecutionContext, TimeoutException}
|
|
20
|
+
import java.io.PrintWriter
|
|
21
|
+
import scala.util.control.Breaks
|
|
22
|
+
|
|
23
|
+
class OneStageBody extends ZServer[ZEnv, Any] {
|
|
24
|
+
var pisaos: PisaOS = null
|
|
25
|
+
var stand_in_thy: MLValue[Theory] = null
|
|
26
|
+
var stand_in_tls: MLValue[ToplevelState] = null
|
|
27
|
+
var isaPath: String = null
|
|
28
|
+
var isaWorkingDirectory: String = null
|
|
29
|
+
|
|
30
|
+
def initialiseIsabelle(
|
|
31
|
+
isa_path: IsaPath
|
|
32
|
+
): ZIO[zio.ZEnv, Status, IsaMessage] = {
|
|
33
|
+
isaPath = isa_path.path
|
|
34
|
+
ZIO.succeed(
|
|
35
|
+
IsaMessage(
|
|
36
|
+
s"----------Path to Isabelle source----------\n${isa_path.path}"
|
|
37
|
+
)
|
|
38
|
+
)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
def isabelleWorkingDirectory(
|
|
42
|
+
isa_working_directory: IsaPath
|
|
43
|
+
): zio.ZIO[zio.ZEnv, Status, IsaMessage] = {
|
|
44
|
+
isaWorkingDirectory = isa_working_directory.path
|
|
45
|
+
ZIO.succeed(
|
|
46
|
+
IsaMessage(
|
|
47
|
+
s"----------Path to Isabelle working directory----------\n${isaWorkingDirectory}"
|
|
48
|
+
)
|
|
49
|
+
)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
def isabelleContext(
|
|
53
|
+
path_to_file: IsaContext
|
|
54
|
+
): ZIO[zio.ZEnv, Status, IsaMessage] = {
|
|
55
|
+
pisaos = new PisaOS(
|
|
56
|
+
path_to_isa_bin = isaPath,
|
|
57
|
+
path_to_file = path_to_file.context,
|
|
58
|
+
working_directory = isaWorkingDirectory
|
|
59
|
+
)
|
|
60
|
+
stand_in_thy = pisaos.thy1.mlValue
|
|
61
|
+
stand_in_tls = pisaos.copy_tls
|
|
62
|
+
ZIO.succeed(
|
|
63
|
+
IsaMessage(
|
|
64
|
+
s"----------Path to Isabelle theory file----------\n${path_to_file.context}"
|
|
65
|
+
)
|
|
66
|
+
)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
def reset_problem(): Unit = {
|
|
70
|
+
implicit val isabelle: Isabelle = pisaos.isabelle
|
|
71
|
+
implicit val ec: ExecutionContext = pisaos.ec
|
|
72
|
+
pisaos.thy1 = stand_in_thy.force.retrieveNow
|
|
73
|
+
pisaos.toplevel = stand_in_tls.force.retrieveNow
|
|
74
|
+
pisaos.reset_map()
|
|
75
|
+
pisaos.register_tls("default", pisaos.toplevel)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
def deal_with_reset_problem(): String = {
|
|
79
|
+
reset_problem()
|
|
80
|
+
"The problem is reset."
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
def deal_with_extraction(): String = {
|
|
84
|
+
try{
|
|
85
|
+
pisaos.step("PISA extract data")
|
|
86
|
+
} catch {
|
|
87
|
+
case t: Throwable => {println(t); t.toString()}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
def deal_with_extraction_with_hammer(): String =
|
|
92
|
+
pisaos.step("PISA extract data with hammer")
|
|
93
|
+
|
|
94
|
+
def deal_with_list_states(): String =
|
|
95
|
+
pisaos.top_level_state_map.keys.mkString(" | ")
|
|
96
|
+
|
|
97
|
+
def deal_with_initialise(): String = {
|
|
98
|
+
// print("Intialising the problem...")
|
|
99
|
+
pisaos.top_level_state_map += ("default" -> pisaos.copy_tls)
|
|
100
|
+
// println(" Intialised!")
|
|
101
|
+
"Toplevel state 'default' is ready"
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
def deal_with_get_state(toplevel_state_name: String): String = {
|
|
105
|
+
if (pisaos.top_level_state_map.contains(toplevel_state_name))
|
|
106
|
+
pisaos.getStateString(pisaos.retrieve_tls(toplevel_state_name))
|
|
107
|
+
else s"Didn't find top level state of given name: ${toplevel_state_name}"
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
def deal_with_is_finished(toplevel_state_name: String): String = {
|
|
111
|
+
if (pisaos.top_level_state_map.contains(toplevel_state_name)) {
|
|
112
|
+
if (pisaos.getProofLevel(pisaos.retrieve_tls(toplevel_state_name)) == 0)
|
|
113
|
+
"true"
|
|
114
|
+
else "false"
|
|
115
|
+
} else s"Didn't find top level state of given name: ${toplevel_state_name}"
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
val TRY_STRING: String = "Try this:"
|
|
119
|
+
val FOUND_PROOF_STRING: String = "found a proof:"
|
|
120
|
+
val ERROR_MSG: String = "sledgehammer failed to find a proof before timing out."
|
|
121
|
+
val SMT_HAMMER: String = "sledgehammer"
|
|
122
|
+
val METIS_HAMMER: String = "metishammer"
|
|
123
|
+
val NORMAL_HAMMER: String = "normalhammer"
|
|
124
|
+
val DEL_HAMMER: String = "delhammer"
|
|
125
|
+
val TIME_STRING1: String = " ms)"
|
|
126
|
+
val TIME_STRING2: String = " s)"
|
|
127
|
+
val ALLOW_MORE_TIME: String = "<allow more time>"
|
|
128
|
+
|
|
129
|
+
def process_hammer_strings(hammer_string_list: List[String]): String = {
|
|
130
|
+
var found = false
|
|
131
|
+
for (attempt_string <- hammer_string_list) {
|
|
132
|
+
if (!found && (attempt_string contains TRY_STRING)) {
|
|
133
|
+
found = true
|
|
134
|
+
val parsed = attempt_string.split(TRY_STRING).drop(1).mkString("").trim
|
|
135
|
+
if ((parsed contains TIME_STRING1) || (parsed contains TIME_STRING2)) {
|
|
136
|
+
return parsed.split('(').dropRight(1).mkString("(").trim
|
|
137
|
+
}
|
|
138
|
+
return parsed
|
|
139
|
+
} else if (!found && (attempt_string contains FOUND_PROOF_STRING)) {
|
|
140
|
+
found = true
|
|
141
|
+
val parsed =
|
|
142
|
+
attempt_string.split(FOUND_PROOF_STRING).drop(1).mkString("").trim
|
|
143
|
+
if ((parsed contains TIME_STRING1) || (parsed contains TIME_STRING2)) {
|
|
144
|
+
return parsed.split('(').dropRight(1).mkString("(").trim
|
|
145
|
+
}
|
|
146
|
+
return parsed
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
""
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
def hammer_actual_step(
|
|
153
|
+
old_state: ToplevelState,
|
|
154
|
+
new_name: String,
|
|
155
|
+
hammer_method: (ToplevelState, Int) => (Boolean, List[String])
|
|
156
|
+
): String = {
|
|
157
|
+
// If found a sledgehammer step, execute it differently
|
|
158
|
+
var raw_hammer_strings = List[String]()
|
|
159
|
+
val total_result = hammer_method(old_state, 240000)
|
|
160
|
+
// println(total_result)
|
|
161
|
+
val success = total_result._1
|
|
162
|
+
val actual_step: String =
|
|
163
|
+
if (success) {
|
|
164
|
+
// println("Hammer string list: " + total_result._2.mkString(" ||| "))
|
|
165
|
+
val tentative_step = process_hammer_strings(total_result._2)
|
|
166
|
+
println("actual_step: " + tentative_step)
|
|
167
|
+
tentative_step
|
|
168
|
+
} else {
|
|
169
|
+
throw new TimeoutException(ERROR_MSG)
|
|
170
|
+
}
|
|
171
|
+
// println(actual_step)
|
|
172
|
+
assert(actual_step.trim.nonEmpty)
|
|
173
|
+
actual_step
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
def deal_with_apply_to_tls(
|
|
177
|
+
toplevel_state_name: String,
|
|
178
|
+
action: String,
|
|
179
|
+
new_name: String
|
|
180
|
+
): String = {
|
|
181
|
+
if (pisaos.top_level_state_map.contains(toplevel_state_name)) {
|
|
182
|
+
var actual_timeout = 10000
|
|
183
|
+
val old_state: ToplevelState = pisaos.retrieve_tls(toplevel_state_name)
|
|
184
|
+
var actual_step: String = "Gibberish"
|
|
185
|
+
var hammered: Boolean = false
|
|
186
|
+
|
|
187
|
+
if (action.startsWith(NORMAL_HAMMER)) {
|
|
188
|
+
val additional_arguments_string: String =
|
|
189
|
+
action.split(NORMAL_HAMMER).drop(1).mkString("").trim
|
|
190
|
+
val add_names: List[String] = {
|
|
191
|
+
if (additional_arguments_string contains "<add>") {
|
|
192
|
+
additional_arguments_string.split("<add>")(1).split(",").toList
|
|
193
|
+
} else List[String]()
|
|
194
|
+
}
|
|
195
|
+
val del_names: List[String] = {
|
|
196
|
+
if (additional_arguments_string contains "<del>") {
|
|
197
|
+
additional_arguments_string.split("<del>")(1).split(",").toList
|
|
198
|
+
} else List[String]()
|
|
199
|
+
}
|
|
200
|
+
val partial_hammer = (state: ToplevelState, timeout: Int) =>
|
|
201
|
+
pisaos.normal_with_hammer(state, add_names, del_names, timeout)
|
|
202
|
+
actual_step = hammer_actual_step(old_state, new_name, partial_hammer)
|
|
203
|
+
hammered = true
|
|
204
|
+
} else if (action.startsWith(ALLOW_MORE_TIME)) {
|
|
205
|
+
actual_step = action.split(ALLOW_MORE_TIME).drop(1).mkString("").trim
|
|
206
|
+
actual_timeout = 30000
|
|
207
|
+
} else {
|
|
208
|
+
actual_step = action
|
|
209
|
+
}
|
|
210
|
+
// println("Actual step: " + actual_step)
|
|
211
|
+
|
|
212
|
+
val new_state: ToplevelState =
|
|
213
|
+
pisaos.step(actual_step, old_state, actual_timeout)
|
|
214
|
+
// println("Application successful")
|
|
215
|
+
// println("New state: " + pisaos.getStateString(new_state))
|
|
216
|
+
|
|
217
|
+
pisaos.register_tls(name = new_name, tls = new_state)
|
|
218
|
+
if (hammered) {
|
|
219
|
+
s"$actual_step <hammer> ${pisaos.getStateString(new_state)}"
|
|
220
|
+
} else s"${pisaos.getStateString(new_state)}"
|
|
221
|
+
} else s"Didn't find top level state of given name: ${toplevel_state_name}"
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
def deal_with_proof_level(toplevel_state_name: String): String = {
|
|
225
|
+
if (pisaos.top_level_state_map.contains(toplevel_state_name)) {
|
|
226
|
+
val tls: ToplevelState = pisaos.retrieve_tls(toplevel_state_name)
|
|
227
|
+
s"${pisaos.getProofLevel(tls)}"
|
|
228
|
+
} else s"Didn't find top level state of given name: ${toplevel_state_name}"
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
def deal_with_proceed_before(true_command: String): String =
|
|
232
|
+
pisaos.step_to_transition_text(true_command, after = false)
|
|
233
|
+
|
|
234
|
+
def deal_with_proceed_after(true_command: String): String =
|
|
235
|
+
pisaos.step_to_transition_text(true_command, after = true)
|
|
236
|
+
|
|
237
|
+
def deal_with_exit(command: String): String = {
|
|
238
|
+
pisaos.step(command)
|
|
239
|
+
pisaos = null
|
|
240
|
+
"Exited"
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
def deal_with_clone(old_name: String, new_name: String): String = {
|
|
244
|
+
pisaos.clone_tls(old_name, new_name)
|
|
245
|
+
"Successfully copied top level state named: " + new_name
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
def deal_with_delete(toplevel_state_name: String): String = {
|
|
249
|
+
if (pisaos.top_level_state_map.contains(toplevel_state_name)) {
|
|
250
|
+
pisaos.top_level_state_map -= toplevel_state_name
|
|
251
|
+
s"Successfully deleted state named: ${toplevel_state_name}"
|
|
252
|
+
} else s"Didn't find top level state of given name: ${toplevel_state_name}"
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
def deal_with_local_facts_and_defs(toplevel_state_name: String): String = {
|
|
256
|
+
if (pisaos.top_level_state_map.contains(toplevel_state_name)) {
|
|
257
|
+
pisaos.local_facts_and_defs_string(toplevel_state_name)
|
|
258
|
+
} else s"Didn't find top level state of given name: ${toplevel_state_name}"
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
def deal_with_global_facts_and_defs(toplevel_state_name: String): String = {
|
|
262
|
+
if (pisaos.top_level_state_map.contains(toplevel_state_name)) {
|
|
263
|
+
pisaos.global_facts_and_defs_string(toplevel_state_name)
|
|
264
|
+
} else s"Didn't find top level state of given name: ${toplevel_state_name}"
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
def deal_with_total_facts_and_defs(toplevel_state_name: String): String = {
|
|
268
|
+
if (pisaos.top_level_state_map.contains(toplevel_state_name)) {
|
|
269
|
+
pisaos.total_facts_and_defs_string(toplevel_state_name)
|
|
270
|
+
} else s"Didn't find top level state of given name: ${toplevel_state_name}"
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
def deal_with_get_all_defs(theorem_string: String): String = {
|
|
274
|
+
val tls_name = "default"
|
|
275
|
+
pisaos.get_all_definitions(tls_name, theorem_string).mkString("\n")
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
def deal_with_global_facts_from_file: String = {
|
|
279
|
+
implicit val isabelle: Isabelle = pisaos.isabelle
|
|
280
|
+
implicit val ec: ExecutionContext = pisaos.ec
|
|
281
|
+
val continue = new Breaks
|
|
282
|
+
val transition_and_index_list = pisaos
|
|
283
|
+
.parse_text(pisaos.thy1, pisaos.fileContentCopy.trim)
|
|
284
|
+
.force
|
|
285
|
+
.retrieveNow
|
|
286
|
+
.zipWithIndex
|
|
287
|
+
for (((transition, text), i) <- transition_and_index_list) {
|
|
288
|
+
continue.breakable {
|
|
289
|
+
if (text.trim.isEmpty) continue.break
|
|
290
|
+
else if (
|
|
291
|
+
text.trim == "end" && (i == transition_and_index_list.length - 1)
|
|
292
|
+
) continue.break
|
|
293
|
+
else {
|
|
294
|
+
pisaos.singleTransition(transition)
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
pisaos.global_facts_and_defs_string(pisaos.toplevel)
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
def deal_with_parse_text(text: String): String = {
|
|
302
|
+
implicit val isabelle: Isabelle = pisaos.isabelle
|
|
303
|
+
implicit val ec: ExecutionContext = pisaos.ec
|
|
304
|
+
val parsed = pisaos.parse_text(pisaos.thy1, text.trim).force.retrieveNow
|
|
305
|
+
parsed.map(x => x._2).filter(_.trim.nonEmpty).mkString("<SEP>")
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
def deal_with_accummulative_step_before(text: String) = {
|
|
309
|
+
pisaos.accumulative_step_to_before_transition_starting(text)
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
def deal_with_get_dependent_theorems(tls_name: String, theorem_name: String, separator: String) = {
|
|
313
|
+
// println("Start dealing with dependent theorems")
|
|
314
|
+
val dependent_theorem_list = pisaos.get_dependent_theorems(tls_name, theorem_name)
|
|
315
|
+
dependent_theorem_list.mkString(separator)
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
def deal_with_fact_definition(tls_name: String, fact_name: String) = {
|
|
319
|
+
pisaos.fact_definition(tls_name, fact_name)
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
def deal_with_parse_entire_thy : String = {
|
|
323
|
+
val entire_thy_parsed = pisaos.parse_entire_thy
|
|
324
|
+
entire_thy_parsed.filter(_.trim.nonEmpty).mkString("<SEP>")
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
def deal_with_accumulative_step_to_theorem_end(theorem_name: String) = {
|
|
328
|
+
pisaos.accumulative_step_to_theorem_end(theorem_name)
|
|
329
|
+
"<SUCCESS>"
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
def deal_with_accumulative_step_before_theorem_starts(theorem_name: String) = {
|
|
333
|
+
pisaos.accumulative_step_before_theorem_starts(theorem_name)
|
|
334
|
+
"<SUCCESS>"
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
def deal_with_accumulative_step_through_a_theorem = {
|
|
338
|
+
pisaos.accumulative_step_through_a_theorem
|
|
339
|
+
"<SUCCESS>"
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
def isabelleCommand(
|
|
343
|
+
isa_command: IsaCommand
|
|
344
|
+
): ZIO[zio.ZEnv, Status, IsaState] = {
|
|
345
|
+
val proof_state: String = {
|
|
346
|
+
if (isa_command.command.trim == "PISA extract data")
|
|
347
|
+
deal_with_extraction()
|
|
348
|
+
else if (isa_command.command.trim == "PISA extract data with hammer")
|
|
349
|
+
deal_with_extraction_with_hammer()
|
|
350
|
+
else if (isa_command.command.startsWith("<accumulative step before>")) {
|
|
351
|
+
val text = isa_command.command.stripPrefix("<accumulative step before>")
|
|
352
|
+
deal_with_accummulative_step_before(text)
|
|
353
|
+
} else if (isa_command.command.trim.startsWith("<parse text>")) {
|
|
354
|
+
val text = isa_command.command.trim.stripPrefix("<parse text>")
|
|
355
|
+
deal_with_parse_text(text)
|
|
356
|
+
} else if (isa_command.command.trim.startsWith("<get all definitions>")) {
|
|
357
|
+
val theorem_string: String =
|
|
358
|
+
isa_command.command.stripPrefix("<get all definitions>").trim
|
|
359
|
+
deal_with_get_all_defs(theorem_string)
|
|
360
|
+
} else if (isa_command.command.startsWith("<local facts and defs>")) {
|
|
361
|
+
val tls_name: String =
|
|
362
|
+
isa_command.command.stripPrefix("<local facts and defs>").trim
|
|
363
|
+
deal_with_local_facts_and_defs(tls_name)
|
|
364
|
+
} else if (isa_command.command.startsWith("<global facts and defs>")) {
|
|
365
|
+
val tls_name: String =
|
|
366
|
+
isa_command.command.stripPrefix("<global facts and defs>").trim
|
|
367
|
+
deal_with_global_facts_and_defs(tls_name)
|
|
368
|
+
} else if (isa_command.command.startsWith("<total facts and defs>")) {
|
|
369
|
+
val tls_name: String =
|
|
370
|
+
isa_command.command.stripPrefix("<total facts and defs>").trim
|
|
371
|
+
deal_with_total_facts_and_defs(tls_name)
|
|
372
|
+
} else if (
|
|
373
|
+
isa_command.command.startsWith("<get global facts from file>")
|
|
374
|
+
) {
|
|
375
|
+
deal_with_global_facts_from_file
|
|
376
|
+
} else if (isa_command.command.startsWith("<list states>"))
|
|
377
|
+
deal_with_list_states()
|
|
378
|
+
else if (isa_command.command.startsWith("<initialise>"))
|
|
379
|
+
deal_with_initialise()
|
|
380
|
+
else if (isa_command.command.startsWith("<get state>")) {
|
|
381
|
+
val tls_name: String =
|
|
382
|
+
isa_command.command.stripPrefix("<get state>").trim
|
|
383
|
+
deal_with_get_state(tls_name)
|
|
384
|
+
} else if (isa_command.command.startsWith("<is finished>")) {
|
|
385
|
+
val tls_name: String =
|
|
386
|
+
isa_command.command.split("<is finished>").last.trim
|
|
387
|
+
deal_with_is_finished(tls_name)
|
|
388
|
+
} else if (isa_command.command.startsWith("<apply to top level state>")) {
|
|
389
|
+
val tls_name: String =
|
|
390
|
+
isa_command.command.split("<apply to top level state>")(1).trim
|
|
391
|
+
val action: String =
|
|
392
|
+
isa_command.command.split("<apply to top level state>")(2).trim
|
|
393
|
+
val new_name: String =
|
|
394
|
+
isa_command.command.split("<apply to top level state>")(3).trim
|
|
395
|
+
try {
|
|
396
|
+
// println(s"Start applying action '${action}' to top level state '${tls_name}'")
|
|
397
|
+
deal_with_apply_to_tls(tls_name, action, new_name)
|
|
398
|
+
} catch {
|
|
399
|
+
case d: TimeoutException => {
|
|
400
|
+
println("Action: " + action)
|
|
401
|
+
println("TimeoutException: " + d.getMessage + "\n")
|
|
402
|
+
"Step error: " + d.getMessage
|
|
403
|
+
}
|
|
404
|
+
case e: IsabelleMLException => {
|
|
405
|
+
println("Action: " + action)
|
|
406
|
+
println("IsabelleException: " + e.getMessage + "\n")
|
|
407
|
+
"Step error: " + e.getMessage
|
|
408
|
+
}
|
|
409
|
+
case f: Throwable => {
|
|
410
|
+
println("Action: " + action)
|
|
411
|
+
println("Unknown error: " + f.getMessage + "\n")
|
|
412
|
+
"Unknown error: " + f.getMessage
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
} else if (isa_command.command.startsWith("<get_proof_level>")) {
|
|
416
|
+
val tls_name: String =
|
|
417
|
+
isa_command.command.stripPrefix("<get_proof_level>").trim
|
|
418
|
+
deal_with_proof_level(tls_name)
|
|
419
|
+
} else if (isa_command.command.startsWith("<proceed before>")) {
|
|
420
|
+
val true_command: String =
|
|
421
|
+
isa_command.command.stripPrefix("<proceed before>").trim
|
|
422
|
+
deal_with_proceed_before(true_command)
|
|
423
|
+
} else if (isa_command.command.startsWith("<proceed after>")) {
|
|
424
|
+
val true_command: String =
|
|
425
|
+
isa_command.command.stripPrefix("<proceed after>").trim
|
|
426
|
+
deal_with_proceed_after(true_command)
|
|
427
|
+
} else if (isa_command.command.trim.startsWith("<clone>")) {
|
|
428
|
+
val old_name: String = isa_command.command.trim.split("<clone>")(1).trim
|
|
429
|
+
val new_name: String = isa_command.command.trim.split("<clone>")(2).trim
|
|
430
|
+
deal_with_clone(old_name, new_name)
|
|
431
|
+
} else if (isa_command.command.trim.startsWith("<delete>")) {
|
|
432
|
+
val tls_name: String =
|
|
433
|
+
isa_command.command.trim.stripPrefix("<delete>").trim
|
|
434
|
+
deal_with_delete(tls_name)
|
|
435
|
+
} else if (isa_command.command.trim == "<get_ancestors>") {
|
|
436
|
+
val ancestors_names_list: List[String] =
|
|
437
|
+
pisaos.get_theory_ancestors_names(pisaos.thy1)
|
|
438
|
+
ancestors_names_list.mkString(",")
|
|
439
|
+
} else if (isa_command.command == "exit")
|
|
440
|
+
deal_with_exit(isa_command.command)
|
|
441
|
+
else if (isa_command.command.startsWith("<get dependent theorems>")) {
|
|
442
|
+
val tls_name: String = isa_command.command.split("<get dependent theorems>")(1).trim
|
|
443
|
+
val theorem_name: String = isa_command.command.split("<get dependent theorems>")(2).trim
|
|
444
|
+
val separator: String = isa_command.command.split("<get dependent theorems>")(3).trim
|
|
445
|
+
deal_with_get_dependent_theorems(tls_name, theorem_name, separator)
|
|
446
|
+
} else if (isa_command.command.startsWith("<get fact definition>")) {
|
|
447
|
+
val tls_name: String = isa_command.command.split("<get fact definition>")(1).trim
|
|
448
|
+
val fact_name: String = isa_command.command.split("<get fact definition>")(2).trim
|
|
449
|
+
deal_with_fact_definition(tls_name, fact_name)
|
|
450
|
+
} else if (isa_command.command.trim == "<parse entire thy>") {
|
|
451
|
+
deal_with_parse_entire_thy
|
|
452
|
+
} else if (isa_command.command.trim.startsWith("<accumulative_step_to_theorem_end>")) {
|
|
453
|
+
val theorem_name = isa_command.command.trim.split("<accumulative_step_to_theorem_end>")(1).trim
|
|
454
|
+
deal_with_accumulative_step_to_theorem_end(theorem_name)
|
|
455
|
+
} else if (isa_command.command.trim.startsWith("<accumulative_step_before_theorem_starts>")) {
|
|
456
|
+
val theorem_name = isa_command.command.trim.split("<accumulative_step_before_theorem_starts>")(1).trim
|
|
457
|
+
deal_with_accumulative_step_before_theorem_starts(theorem_name)
|
|
458
|
+
} else if (isa_command.command.trim.startsWith("<accumulative_step_through_a_theorem>")) {
|
|
459
|
+
deal_with_accumulative_step_through_a_theorem
|
|
460
|
+
}
|
|
461
|
+
else "Unrecognised operation."
|
|
462
|
+
}
|
|
463
|
+
ZIO.succeed(IsaState(proof_state))
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
def isabelleSetSearchWidth(
|
|
467
|
+
request: IsaSearchWidth
|
|
468
|
+
): ZIO[zio.ZEnv with Any, Status, IsaMessage] = {
|
|
469
|
+
ZIO.succeed(IsaMessage(s"This shouldn't be used here."))
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
def isabelleSearchIndexCommand(
|
|
473
|
+
request: IsaSearchIndexCommand
|
|
474
|
+
): ZIO[zio.ZEnv with Any, Status, IsaState] =
|
|
475
|
+
ZIO.succeed(IsaState(s"This shouldn't be used here."))
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
object PisaOneStage {
|
|
479
|
+
val path_to_isa_bin: String = "/home/qj213/Isabelle2021"
|
|
480
|
+
val path_to_afp: String = "/home/qj213/afp-2021-10-22"
|
|
481
|
+
|
|
482
|
+
def main(args: Array[String]): Unit = {
|
|
483
|
+
// val path_to_file: String = s"$path_to_afp/thys/Game_Based_Crypto/Guessing_Many_One.thy"
|
|
484
|
+
val path_to_file: String =
|
|
485
|
+
"/home/qj213/miniF2F/isabelle/valid/amc12_2000_p15.thy"
|
|
486
|
+
// val working_directory: String = s"$path_to_afp/thys/Game_Based_Crypto"
|
|
487
|
+
val working_directory: String = "/home/qj213/miniF2F/isabelle/valid"
|
|
488
|
+
val pisaos = new PisaOS(
|
|
489
|
+
path_to_isa_bin = path_to_isa_bin,
|
|
490
|
+
path_to_file = path_to_file,
|
|
491
|
+
working_directory = working_directory
|
|
492
|
+
)
|
|
493
|
+
// val theorem_name = """lemma accepts_conv_steps: "accepts A w = (\<exists>q. (start A,q) \<in> steps A w \<and> fin A q)"""".stripMargin
|
|
494
|
+
// val parsed : String = pisaos.step("PISA extract data")
|
|
495
|
+
val parsed: String = pisaos.step("PISA extract data")
|
|
496
|
+
// val parsed : String = pisaos.step_to_transition_text(theorem_name)
|
|
497
|
+
// println(parsed)
|
|
498
|
+
// println(pisaos.step("by(simp add: delta_conv_steps accepts_def)"))
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
object PisaMini {
|
|
503
|
+
val path_to_isa_bin: String = "/home/qj213/Isabelle2021"
|
|
504
|
+
val path_to_mini: String = "/home/qj213/miniF2F/isabelle"
|
|
505
|
+
|
|
506
|
+
def main(args: Array[String]): Unit = {
|
|
507
|
+
val path_to_file: String = s"$path_to_mini/valid/aime_1983_p9.thy"
|
|
508
|
+
val working_directory: String = s"$path_to_mini/valid"
|
|
509
|
+
val pisaos = new PisaOS(
|
|
510
|
+
path_to_isa_bin = path_to_isa_bin,
|
|
511
|
+
path_to_file = path_to_file,
|
|
512
|
+
working_directory = working_directory
|
|
513
|
+
)
|
|
514
|
+
val theorem_name =
|
|
515
|
+
"""theorem aime_1983_p9: fixes x::real assumes "0<x" "x<pi" shows "12 \<le> ((9 * (x^2 * (sin x)^2)) + 4) / (x * sin x)"""".stripMargin
|
|
516
|
+
val parsed: String = pisaos.step("PISA extract data")
|
|
517
|
+
// val parsed : String = pisaos.step_to_transition_text(theorem_name)
|
|
518
|
+
// println(parsed)
|
|
519
|
+
// println(pisaos.step("by(simp add: delta_conv_steps accepts_def)"))
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
object PisaExtraction {
|
|
524
|
+
val path_to_isa_bin: String = "/home/qj213/Isabelle2021"
|
|
525
|
+
val path_to_afp: String = "/home/qj213/afp-2021-10-22"
|
|
526
|
+
|
|
527
|
+
def main(args: Array[String]): Unit = {
|
|
528
|
+
val path_to_file: String = args(0)
|
|
529
|
+
val working_directory: String = args(1)
|
|
530
|
+
val dump_path: String = args(2)
|
|
531
|
+
val pisaos = new PisaOS(
|
|
532
|
+
path_to_isa_bin = path_to_isa_bin,
|
|
533
|
+
path_to_file = path_to_file,
|
|
534
|
+
working_directory = working_directory
|
|
535
|
+
)
|
|
536
|
+
new PrintWriter(dump_path) {
|
|
537
|
+
close()
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
}
|