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.
Files changed (485) hide show
  1. itp_interface/__init__.py +0 -0
  2. itp_interface/agent/__init__.py +0 -0
  3. itp_interface/agent/simple_proof_agent.py +100 -0
  4. itp_interface/coq_ser_api/__init__.py +165 -0
  5. itp_interface/coq_ser_api/contexts.py +283 -0
  6. itp_interface/coq_ser_api/coq_agent.py +459 -0
  7. itp_interface/coq_ser_api/coq_backend.py +135 -0
  8. itp_interface/coq_ser_api/coq_util.py +839 -0
  9. itp_interface/coq_ser_api/example.py +67 -0
  10. itp_interface/coq_ser_api/lsp_backend.py +375 -0
  11. itp_interface/coq_ser_api/py.typed +0 -0
  12. itp_interface/coq_ser_api/serapi_backend.py +841 -0
  13. itp_interface/coq_ser_api/util.py +145 -0
  14. itp_interface/coq_ser_api_old/__init__.py +2583 -0
  15. itp_interface/coq_ser_api_old/contexts.py +172 -0
  16. itp_interface/coq_ser_api_old/util.py +146 -0
  17. itp_interface/lean_server/__init__.py +0 -0
  18. itp_interface/lean_server/commands.py +484 -0
  19. itp_interface/lean_server/lean3_search_tool.py +358 -0
  20. itp_interface/lean_server/lean4_repl_interface.py +151 -0
  21. itp_interface/lean_server/lean4_utils.py +255 -0
  22. itp_interface/lean_server/lean_cmd_server.py +111 -0
  23. itp_interface/lean_server/lean_context.py +60 -0
  24. itp_interface/lean_server/lean_sync_server.py +174 -0
  25. itp_interface/lean_server/lean_utils.py +199 -0
  26. itp_interface/lean_server/py.typed +1 -0
  27. itp_interface/main/__init__.py +0 -0
  28. itp_interface/main/config/afp_data_gen.yaml +14 -0
  29. itp_interface/main/config/benchmark/CompCert.yaml +366 -0
  30. itp_interface/main/config/benchmark/GeoCoq.yaml +930 -0
  31. itp_interface/main/config/benchmark/UniMath.yaml +2690 -0
  32. itp_interface/main/config/benchmark/afp_isabelle.yaml +29200 -0
  33. itp_interface/main/config/benchmark/agent_proverbot_hard.yaml +247 -0
  34. itp_interface/main/config/benchmark/category-theory.yaml +470 -0
  35. itp_interface/main/config/benchmark/compcert_118_subset.yaml +148 -0
  36. itp_interface/main/config/benchmark/compcert_benchmark.yaml +36 -0
  37. itp_interface/main/config/benchmark/compcert_benchmark_hard.yaml +498 -0
  38. itp_interface/main/config/benchmark/compcert_benchmark_hard_1.yaml +55 -0
  39. itp_interface/main/config/benchmark/compcert_benchmark_hard_2.yaml +24 -0
  40. itp_interface/main/config/benchmark/compcert_benchmark_hard_3.yaml +95 -0
  41. itp_interface/main/config/benchmark/compcert_benchmark_hard_7_per_cent.yaml +78 -0
  42. itp_interface/main/config/benchmark/compcert_benchmark_test.yaml +38 -0
  43. itp_interface/main/config/benchmark/compcert_benchmark_train.yaml +340 -0
  44. itp_interface/main/config/benchmark/leandojo_novel_premises_test.yaml +2908 -0
  45. itp_interface/main/config/benchmark/leandojo_novel_premises_train.yaml +98645 -0
  46. itp_interface/main/config/benchmark/leandojo_novel_premises_val.yaml +2912 -0
  47. itp_interface/main/config/benchmark/leandojo_random.yaml +2889 -0
  48. itp_interface/main/config/benchmark/leandojo_random_test.yaml +2421 -0
  49. itp_interface/main/config/benchmark/leandojo_random_train.yaml +62729 -0
  50. itp_interface/main/config/benchmark/leandojo_random_val.yaml +2504 -0
  51. itp_interface/main/config/benchmark/math-comp.yaml +200 -0
  52. itp_interface/main/config/benchmark/miniF2F_test.yaml +12 -0
  53. itp_interface/main/config/benchmark/miniF2F_test_aime.yaml +27 -0
  54. itp_interface/main/config/benchmark/miniF2F_test_algebra.yaml +30 -0
  55. itp_interface/main/config/benchmark/miniF2F_test_amc12.yaml +57 -0
  56. itp_interface/main/config/benchmark/miniF2F_test_few_shot_hard.yaml +231 -0
  57. itp_interface/main/config/benchmark/miniF2F_test_imo.yaml +32 -0
  58. itp_interface/main/config/benchmark/miniF2F_test_induction.yaml +20 -0
  59. itp_interface/main/config/benchmark/miniF2F_test_mathd_algebra.yaml +82 -0
  60. itp_interface/main/config/benchmark/miniF2F_test_mathd_algebra_hard.yaml +72 -0
  61. itp_interface/main/config/benchmark/miniF2F_test_mathd_numbertheory.yaml +72 -0
  62. itp_interface/main/config/benchmark/miniF2F_test_numbertheory.yaml +20 -0
  63. itp_interface/main/config/benchmark/minicompcert_benchmark_1.yaml +14 -0
  64. itp_interface/main/config/benchmark/proverbot_hard.yaml +104 -0
  65. itp_interface/main/config/benchmark/re_prover.yaml +66 -0
  66. itp_interface/main/config/benchmark/re_prover_hard.yaml +41 -0
  67. itp_interface/main/config/benchmark/re_prover_very_hard.yaml +22 -0
  68. itp_interface/main/config/benchmark/reprover_with_retrieval.yaml +73 -0
  69. itp_interface/main/config/benchmark/reprover_with_retrieval_hard.yaml +30 -0
  70. itp_interface/main/config/benchmark/reprover_with_retrieval_neg.yaml +195 -0
  71. itp_interface/main/config/benchmark/simple_benchmark_1.yaml +24 -0
  72. itp_interface/main/config/benchmark/simple_benchmark_8.yaml +50 -0
  73. itp_interface/main/config/benchmark/simple_benchmark_9.yaml +65 -0
  74. itp_interface/main/config/benchmark/simple_benchmark_isabelle.yaml +18 -0
  75. itp_interface/main/config/benchmark/simple_benchmark_lean.yaml +12 -0
  76. itp_interface/main/config/benchmark/simple_benchmark_lean_training_data.yaml +12 -0
  77. itp_interface/main/config/benchmark/simple_rl_benchmark_lean.yaml +14 -0
  78. itp_interface/main/config/benchmark/stack_machine.yaml +13 -0
  79. itp_interface/main/config/benchmark/stack_machine_hard.yaml +15 -0
  80. itp_interface/main/config/category_theory_data_gen.yaml +14 -0
  81. itp_interface/main/config/category_theory_data_gen_random.yaml +16 -0
  82. itp_interface/main/config/compcert_data_gen_test.yaml +10 -0
  83. itp_interface/main/config/compcert_data_gen_train.yaml +7 -0
  84. itp_interface/main/config/env_settings/bm25_retrieval.yaml +2 -0
  85. itp_interface/main/config/env_settings/bm25_retrieval_no_dfns.yaml +2 -0
  86. itp_interface/main/config/env_settings/bm25_retrieval_only_local_no_dfns.yaml +2 -0
  87. itp_interface/main/config/env_settings/bm25_retrieval_with_print.yaml +2 -0
  88. itp_interface/main/config/env_settings/bm25_retrieval_with_print_only_local.yaml +2 -0
  89. itp_interface/main/config/env_settings/bm25_retrieval_with_print_only_local_no_dfns.yaml +2 -0
  90. itp_interface/main/config/env_settings/no_retrieval.yaml +2 -0
  91. itp_interface/main/config/experiments.yaml +12 -0
  92. itp_interface/main/config/geo_coq_data_gen.yaml +14 -0
  93. itp_interface/main/config/geo_coq_data_gen_random.yaml +16 -0
  94. itp_interface/main/config/leandojo_random_data_gen.yaml +16 -0
  95. itp_interface/main/config/math_comp_data_gen.yaml +14 -0
  96. itp_interface/main/config/math_comp_data_gen_random.yaml +16 -0
  97. itp_interface/main/config/mathlib_data_gen.yaml +14 -0
  98. itp_interface/main/config/repo/coq_repos.yaml +191 -0
  99. itp_interface/main/config/run_settings/default_coq_data_generation_transforms.yaml +24 -0
  100. itp_interface/main/config/run_settings/default_isabelle_data_generation_transforms.yaml +24 -0
  101. itp_interface/main/config/run_settings/default_lean4_data_generation_transforms.yaml +24 -0
  102. itp_interface/main/config/run_settings/default_lean_data_generation_transforms.yaml +24 -0
  103. itp_interface/main/config/simple_coq_data_gen.yaml +12 -0
  104. itp_interface/main/config/simple_coq_data_gen_random.yaml +17 -0
  105. itp_interface/main/config/simple_lean_data_gen.yaml +12 -0
  106. itp_interface/main/config/simple_rl_lean_data_gen.yaml +12 -0
  107. itp_interface/main/config/uni_math_data_gen.yaml +14 -0
  108. itp_interface/main/config.py +192 -0
  109. itp_interface/main/extract_benchmark_dataset.py +106 -0
  110. itp_interface/main/filter_dataset.py +107 -0
  111. itp_interface/main/install.py +92 -0
  112. itp_interface/main/merge_dataset.py +96 -0
  113. itp_interface/main/run_tool.py +444 -0
  114. itp_interface/pisa/.git +1 -0
  115. itp_interface/pisa/.gitignore +125 -0
  116. itp_interface/pisa/.idea/.gitignore +8 -0
  117. itp_interface/pisa/.idea/ClojureProjectResolveSettings.xml +6 -0
  118. itp_interface/pisa/.idea/codeStyles/Project.xml +7 -0
  119. itp_interface/pisa/.idea/codeStyles/codeStyleConfig.xml +5 -0
  120. itp_interface/pisa/.idea/inspectionProfiles/Project_Default.xml +16 -0
  121. itp_interface/pisa/.idea/libraries/sbt__com_google_android_annotations_4_1_1_4_jar.xml +13 -0
  122. itp_interface/pisa/.idea/libraries/sbt__com_google_api_grpc_proto_google_common_protos_1_17_0_jar.xml +13 -0
  123. itp_interface/pisa/.idea/libraries/sbt__com_google_code_findbugs_jsr305_3_0_2_jar.xml +13 -0
  124. itp_interface/pisa/.idea/libraries/sbt__com_google_code_gson_gson_2_8_6_jar.xml +13 -0
  125. itp_interface/pisa/.idea/libraries/sbt__com_google_errorprone_error_prone_annotations_2_3_4_jar.xml +13 -0
  126. itp_interface/pisa/.idea/libraries/sbt__com_google_guava_failureaccess_1_0_1_jar.xml +13 -0
  127. itp_interface/pisa/.idea/libraries/sbt__com_google_guava_guava_30_0_jre_jar.xml +13 -0
  128. itp_interface/pisa/.idea/libraries/sbt__com_google_guava_listenablefuture_9999_0_empty_to_avoid_conflict_with_guava_jar.xml +9 -0
  129. itp_interface/pisa/.idea/libraries/sbt__com_google_j2objc_j2objc_annotations_1_3_jar.xml +13 -0
  130. itp_interface/pisa/.idea/libraries/sbt__com_google_protobuf_protobuf_java_3_12_0_jar.xml +13 -0
  131. itp_interface/pisa/.idea/libraries/sbt__com_google_protobuf_protobuf_java_util_3_12_0_jar.xml +13 -0
  132. itp_interface/pisa/.idea/libraries/sbt__com_lihaoyi_fastparse_2_13_2_3_0_jar.xml +13 -0
  133. itp_interface/pisa/.idea/libraries/sbt__com_lihaoyi_geny_2_13_0_6_0_jar.xml +13 -0
  134. itp_interface/pisa/.idea/libraries/sbt__com_lihaoyi_sourcecode_2_13_0_2_1_jar.xml +13 -0
  135. itp_interface/pisa/.idea/libraries/sbt__com_thesamet_scalapb_lenses_2_13_0_10_9_jar.xml +13 -0
  136. itp_interface/pisa/.idea/libraries/sbt__com_thesamet_scalapb_scalapb_runtime_2_13_0_10_9_jar.xml +13 -0
  137. itp_interface/pisa/.idea/libraries/sbt__com_thesamet_scalapb_scalapb_runtime_grpc_2_13_0_10_9_jar.xml +13 -0
  138. itp_interface/pisa/.idea/libraries/sbt__com_thesamet_scalapb_zio_grpc_zio_grpc_core_2_13_0_4_2_jar.xml +13 -0
  139. itp_interface/pisa/.idea/libraries/sbt__com_thoughtworks_paranamer_paranamer_2_8_jar.xml +13 -0
  140. itp_interface/pisa/.idea/libraries/sbt__commons_io_commons_io_2_8_0_jar.xml +13 -0
  141. itp_interface/pisa/.idea/libraries/sbt__de_unruh_java_patterns_0_1_0_jar.xml +13 -0
  142. itp_interface/pisa/.idea/libraries/sbt__de_unruh_scala_isabelle_2_13_master_SNAPSHOT_jar.xml +13 -0
  143. itp_interface/pisa/.idea/libraries/sbt__dev_zio_izumi_reflect_2_13_1_0_0_M9_jar.xml +13 -0
  144. itp_interface/pisa/.idea/libraries/sbt__dev_zio_izumi_reflect_thirdparty_boopickle_shaded_2_13_1_0_0_M9_jar.xml +13 -0
  145. itp_interface/pisa/.idea/libraries/sbt__dev_zio_zio_2_13_1_0_3_jar.xml +13 -0
  146. itp_interface/pisa/.idea/libraries/sbt__dev_zio_zio_stacktracer_2_13_1_0_3_jar.xml +13 -0
  147. itp_interface/pisa/.idea/libraries/sbt__dev_zio_zio_streams_2_13_1_0_3_jar.xml +13 -0
  148. itp_interface/pisa/.idea/libraries/sbt__io_grpc_grpc_api_1_34_0_jar.xml +13 -0
  149. itp_interface/pisa/.idea/libraries/sbt__io_grpc_grpc_context_1_34_0_jar.xml +13 -0
  150. itp_interface/pisa/.idea/libraries/sbt__io_grpc_grpc_core_1_34_0_jar.xml +13 -0
  151. itp_interface/pisa/.idea/libraries/sbt__io_grpc_grpc_netty_1_34_0_jar.xml +13 -0
  152. itp_interface/pisa/.idea/libraries/sbt__io_grpc_grpc_protobuf_1_34_0_jar.xml +13 -0
  153. itp_interface/pisa/.idea/libraries/sbt__io_grpc_grpc_protobuf_lite_1_34_0_jar.xml +13 -0
  154. itp_interface/pisa/.idea/libraries/sbt__io_grpc_grpc_services_1_34_0_jar.xml +13 -0
  155. itp_interface/pisa/.idea/libraries/sbt__io_grpc_grpc_stub_1_34_0_jar.xml +13 -0
  156. itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_buffer_4_1_51_Final_jar.xml +13 -0
  157. itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_codec_4_1_51_Final_jar.xml +13 -0
  158. itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_codec_http2_4_1_51_Final_jar.xml +13 -0
  159. itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_codec_http_4_1_51_Final_jar.xml +13 -0
  160. itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_codec_socks_4_1_51_Final_jar.xml +13 -0
  161. itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_common_4_1_51_Final_jar.xml +13 -0
  162. itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_handler_4_1_51_Final_jar.xml +13 -0
  163. itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_handler_proxy_4_1_51_Final_jar.xml +13 -0
  164. itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_resolver_4_1_51_Final_jar.xml +13 -0
  165. itp_interface/pisa/.idea/libraries/sbt__io_netty_netty_transport_4_1_51_Final_jar.xml +13 -0
  166. itp_interface/pisa/.idea/libraries/sbt__io_perfmark_perfmark_api_0_19_0_jar.xml +13 -0
  167. itp_interface/pisa/.idea/libraries/sbt__net_java_dev_jna_jna_5_3_1_jar.xml +13 -0
  168. itp_interface/pisa/.idea/libraries/sbt__net_liftweb_lift_json_2_13_3_4_3_jar.xml +13 -0
  169. itp_interface/pisa/.idea/libraries/sbt__org_apache_commons_commons_lang3_3_11_jar.xml +13 -0
  170. itp_interface/pisa/.idea/libraries/sbt__org_apache_commons_commons_text_1_9_jar.xml +13 -0
  171. itp_interface/pisa/.idea/libraries/sbt__org_checkerframework_checker_qual_3_5_0_jar.xml +13 -0
  172. itp_interface/pisa/.idea/libraries/sbt__org_codehaus_mojo_animal_sniffer_annotations_1_18_jar.xml +13 -0
  173. itp_interface/pisa/.idea/libraries/sbt__org_jetbrains_annotations_20_1_0_jar.xml +13 -0
  174. itp_interface/pisa/.idea/libraries/sbt__org_jline_jline_3_16_0_jar.xml +13 -0
  175. itp_interface/pisa/.idea/libraries/sbt__org_log4s_log4s_2_13_1_9_0_jar.xml +13 -0
  176. itp_interface/pisa/.idea/libraries/sbt__org_scala_lang_modules_scala_collection_compat_2_13_2_1_6_jar.xml +13 -0
  177. itp_interface/pisa/.idea/libraries/sbt__org_scala_lang_modules_scala_xml_2_13_1_3_0_jar.xml +13 -0
  178. itp_interface/pisa/.idea/libraries/sbt__org_scala_lang_scala_compiler_2_13_4_jar.xml +13 -0
  179. itp_interface/pisa/.idea/libraries/sbt__org_scala_lang_scala_library_2_13_4_jar.xml +23 -0
  180. itp_interface/pisa/.idea/libraries/sbt__org_scala_lang_scala_reflect_2_13_4_jar.xml +13 -0
  181. itp_interface/pisa/.idea/libraries/sbt__org_scala_lang_scalap_2_13_4_jar.xml +13 -0
  182. itp_interface/pisa/.idea/libraries/sbt__org_scalaz_scalaz_core_2_13_7_3_2_jar.xml +13 -0
  183. itp_interface/pisa/.idea/libraries/sbt__org_slf4j_slf4j_api_1_7_30_jar.xml +13 -0
  184. itp_interface/pisa/.idea/libraries/sbt__org_slf4j_slf4j_simple_1_7_30_jar.xml +13 -0
  185. itp_interface/pisa/.idea/misc.xml +7 -0
  186. itp_interface/pisa/.idea/modules/PISA-build.iml +127 -0
  187. itp_interface/pisa/.idea/modules/PISA.iml +94 -0
  188. itp_interface/pisa/.idea/modules.xml +9 -0
  189. itp_interface/pisa/.idea/other.xml +6 -0
  190. itp_interface/pisa/.idea/sbt.xml +20 -0
  191. itp_interface/pisa/.idea/scala_compiler.xml +6 -0
  192. itp_interface/pisa/.idea/uiDesigner.xml +124 -0
  193. itp_interface/pisa/.idea/vcs.xml +6 -0
  194. itp_interface/pisa/.scalafmt.conf +2 -0
  195. itp_interface/pisa/LICENSE +29 -0
  196. itp_interface/pisa/README.md +262 -0
  197. itp_interface/pisa/build.sbt +49 -0
  198. itp_interface/pisa/build.sh +26 -0
  199. itp_interface/pisa/command_generation/close_gaps.py +44 -0
  200. itp_interface/pisa/command_generation/conjecture_normal_order.py +62 -0
  201. itp_interface/pisa/command_generation/conjecturer_command_generator.py +36 -0
  202. itp_interface/pisa/command_generation/create_dirs.py +11 -0
  203. itp_interface/pisa/command_generation/find_std.py +67 -0
  204. itp_interface/pisa/command_generation/generate_build_commands_afp.py +15 -0
  205. itp_interface/pisa/command_generation/generate_build_commands_std.py +15 -0
  206. itp_interface/pisa/command_generation/generate_commands_afp.py +103 -0
  207. itp_interface/pisa/command_generation/generate_commands_mini.py +73 -0
  208. itp_interface/pisa/command_generation/generate_commands_std.py +69 -0
  209. itp_interface/pisa/command_generation/generate_hammer_extraction_text.py +5 -0
  210. itp_interface/pisa/command_generation/hammer_command_generator.py +40 -0
  211. itp_interface/pisa/command_generation/hp_search_command_generator.py +63 -0
  212. itp_interface/pisa/command_generation/oracle_command_generator.py +56 -0
  213. itp_interface/pisa/command_generation/search_command_generator.py +69 -0
  214. itp_interface/pisa/command_generation/summarise_problem_names.py +45 -0
  215. itp_interface/pisa/command_generation/tpu_hp_search.py +75 -0
  216. itp_interface/pisa/docker/Dockerfile +34 -0
  217. itp_interface/pisa/docker/docker_tutorial.md +64 -0
  218. itp_interface/pisa/eval_setup/copy_isabelle.py +42 -0
  219. itp_interface/pisa/eval_setup/copy_pisa_jars.py +18 -0
  220. itp_interface/pisa/mesh_transformer_utils/tokenization.py +86 -0
  221. itp_interface/pisa/project/build.properties +1 -0
  222. itp_interface/pisa/project/plugins.sbt +5 -0
  223. itp_interface/pisa/requirements.txt +4 -0
  224. itp_interface/pisa/scripts/extract_last_k_steps.py +28 -0
  225. itp_interface/pisa/scripts/extract_proof_corpus.py +26 -0
  226. itp_interface/pisa/scripts/gather_hammer_results.py +27 -0
  227. itp_interface/pisa/scripts/length_in_char_stats.py +20 -0
  228. itp_interface/pisa/scripts/mix.py +127 -0
  229. itp_interface/pisa/scripts/results_stat.py +52 -0
  230. itp_interface/pisa/scripts/test_array_job.sh +34 -0
  231. itp_interface/pisa/setup.sh +25 -0
  232. itp_interface/pisa/src/main/protobuf/server.proto +60 -0
  233. itp_interface/pisa/src/main/python/.idea/.gitignore +8 -0
  234. itp_interface/pisa/src/main/python/.idea/inspectionProfiles/Project_Default.xml +18 -0
  235. itp_interface/pisa/src/main/python/.idea/inspectionProfiles/profiles_settings.xml +6 -0
  236. itp_interface/pisa/src/main/python/.idea/misc.xml +4 -0
  237. itp_interface/pisa/src/main/python/.idea/modules.xml +8 -0
  238. itp_interface/pisa/src/main/python/.idea/python.iml +12 -0
  239. itp_interface/pisa/src/main/python/.idea/vcs.xml +6 -0
  240. itp_interface/pisa/src/main/python/conjecturing_parsing/conjecturer_postprocessing.py +59 -0
  241. itp_interface/pisa/src/main/python/data_extraction/extract_data.py +184 -0
  242. itp_interface/pisa/src/main/python/data_extraction/find_premises.py +221 -0
  243. itp_interface/pisa/src/main/python/data_extraction/process_data.py +129 -0
  244. itp_interface/pisa/src/main/python/legacy/PisaFlexibleClient.py +167 -0
  245. itp_interface/pisa/src/main/python/legacy/autof_test.py +74 -0
  246. itp_interface/pisa/src/main/python/legacy/cmd_client.py +23 -0
  247. itp_interface/pisa/src/main/python/legacy/convert_scala_dump_to_test_name_jsons.py +14 -0
  248. itp_interface/pisa/src/main/python/legacy/create_data_txt.py +72 -0
  249. itp_interface/pisa/src/main/python/legacy/create_finetune_tfrecords.py +311 -0
  250. itp_interface/pisa/src/main/python/legacy/demo.py +49 -0
  251. itp_interface/pisa/src/main/python/legacy/evaluate.py +108 -0
  252. itp_interface/pisa/src/main/python/legacy/extract_first_step.py +25 -0
  253. itp_interface/pisa/src/main/python/legacy/get_global_facts.py +35 -0
  254. itp_interface/pisa/src/main/python/legacy/mix_data.py +19 -0
  255. itp_interface/pisa/src/main/python/legacy/one_stage_extraction.py +111 -0
  256. itp_interface/pisa/src/main/python/legacy/prepare_episodic_transitions.py +137 -0
  257. itp_interface/pisa/src/main/python/legacy/prepare_translation_pairs.py +277 -0
  258. itp_interface/pisa/src/main/python/pisa_client.py +322 -0
  259. itp_interface/pisa/src/main/python/server_pb2.py +394 -0
  260. itp_interface/pisa/src/main/python/server_pb2_grpc.py +230 -0
  261. itp_interface/pisa/src/main/python/test_client.py +17 -0
  262. itp_interface/pisa/src/main/python/test_client2.py +79 -0
  263. itp_interface/pisa/src/main/python/utils/filters.py +59 -0
  264. itp_interface/pisa/src/main/python/utils/pisa_server_control.py +29 -0
  265. itp_interface/pisa/src/main/scala/pisa/agent/CheckSyntax.scala +257 -0
  266. itp_interface/pisa/src/main/scala/pisa/agent/DepThms.scala +29 -0
  267. itp_interface/pisa/src/main/scala/pisa/agent/PisaStat.scala +46 -0
  268. itp_interface/pisa/src/main/scala/pisa/agent/RefactorTest.scala +40 -0
  269. itp_interface/pisa/src/main/scala/pisa/agent/RepHammer.scala +95 -0
  270. itp_interface/pisa/src/main/scala/pisa/server/HammFacts.scala +63 -0
  271. itp_interface/pisa/src/main/scala/pisa/server/PisaOS.scala +881 -0
  272. itp_interface/pisa/src/main/scala/pisa/server/PisaOneStage.scala +540 -0
  273. itp_interface/pisa/src/main/scala/pisa/server/PisaOneStageServers.scala +1048 -0
  274. itp_interface/pisa/src/main/scala/pisa/utils/TheoryManager.scala +95 -0
  275. itp_interface/pisa/src/test/python/analyse_debug.py +33 -0
  276. itp_interface/pisa/src/test/python/extract_test_seq2seq.py +53 -0
  277. itp_interface/pisa/src/test/python/extract_test_theorem_ground_truth_indices.py +31 -0
  278. itp_interface/pisa/src/test/python/proof_originality.py +24 -0
  279. itp_interface/pisa/src/test/python/test_command_generator.py +25 -0
  280. itp_interface/pisa/src/test/python/test_model_sequence_accuracy.py +70 -0
  281. itp_interface/pisa/src/test/scala/pisa/Easy.scala +26 -0
  282. itp_interface/pisa/src/test/scala/pisa/TestCurl.scala +82 -0
  283. itp_interface/pisa/src/test/scala/pisa/TestIsa.scala +27 -0
  284. itp_interface/pisa/test.sh +19 -0
  285. itp_interface/pisa/universal_test_theorems.tar.gz +0 -0
  286. itp_interface/repo/build.py +78 -0
  287. itp_interface/repo/clone.py +79 -0
  288. itp_interface/repo/dataset_discovery.py +99 -0
  289. itp_interface/retrieval/__init__.py +0 -0
  290. itp_interface/retrieval/abstraction.py +35 -0
  291. itp_interface/retrieval/coq_bm25_reranker.py +153 -0
  292. itp_interface/retrieval/isabelle_bm25_reranker.py +86 -0
  293. itp_interface/retrieval/lean3_bm25_reranker.py +86 -0
  294. itp_interface/rl/__init__.py +0 -0
  295. itp_interface/rl/abstraction.py +168 -0
  296. itp_interface/rl/proof_action.py +172 -0
  297. itp_interface/rl/proof_state.py +149 -0
  298. itp_interface/rl/proof_tree.py +109 -0
  299. itp_interface/rl/simpl_proof_env_pool.py +16 -0
  300. itp_interface/rl/simple_proof_env.py +713 -0
  301. itp_interface/rl/simple_proof_env_pool.py +591 -0
  302. itp_interface/scripts/setup.sh +228 -0
  303. itp_interface/tools/__init__.py +0 -0
  304. itp_interface/tools/basic_utils.py +172 -0
  305. itp_interface/tools/bin_packing.py +61 -0
  306. itp_interface/tools/cache.py +93 -0
  307. itp_interface/tools/coq_build_spec.py +31 -0
  308. itp_interface/tools/coq_build_tool.py +319 -0
  309. itp_interface/tools/coq_context_helper.py +354 -0
  310. itp_interface/tools/coq_executor.py +508 -0
  311. itp_interface/tools/coq_local_data_generation_transform.py +158 -0
  312. itp_interface/tools/coq_parse_utils.py +154 -0
  313. itp_interface/tools/coq_raw_proofs.py +193 -0
  314. itp_interface/tools/coq_theorem_proof_pair_generation_transform.py +146 -0
  315. itp_interface/tools/coq_training_data_generator.py +76 -0
  316. itp_interface/tools/dynamic_coq_proof_exec.py +220 -0
  317. itp_interface/tools/dynamic_isabelle_proof_exec.py +229 -0
  318. itp_interface/tools/dynamic_lean4_proof_exec.py +236 -0
  319. itp_interface/tools/dynamic_lean_proof_exec.py +228 -0
  320. itp_interface/tools/isabelle_context_helper.py +66 -0
  321. itp_interface/tools/isabelle_executor.py +862 -0
  322. itp_interface/tools/isabelle_local_data_generation_transform.py +149 -0
  323. itp_interface/tools/isabelle_parse_utils.py +131 -0
  324. itp_interface/tools/isabelle_server.py +106 -0
  325. itp_interface/tools/lean4_context_helper.py +72 -0
  326. itp_interface/tools/lean4_local_data_generation_transform.py +122 -0
  327. itp_interface/tools/lean4_sync_executor.py +1193 -0
  328. itp_interface/tools/lean_cmd_executor.py +804 -0
  329. itp_interface/tools/lean_context_helper.py +327 -0
  330. itp_interface/tools/lean_dojo_data_generation_transform.py +206 -0
  331. itp_interface/tools/lean_executor.py +687 -0
  332. itp_interface/tools/lean_local_data_generation_transform.py +136 -0
  333. itp_interface/tools/lean_parse_utils.py +32 -0
  334. itp_interface/tools/log_utils.py +20 -0
  335. itp_interface/tools/proof_exec_callback.py +76 -0
  336. itp_interface/tools/ray_utils.py +265 -0
  337. itp_interface/tools/repl/.git +1 -0
  338. itp_interface/tools/repl/.github/workflows/ci.yml +24 -0
  339. itp_interface/tools/repl/.gitignore +7 -0
  340. itp_interface/tools/repl/.vscode/copyright.code-snippets +13 -0
  341. itp_interface/tools/repl/.vscode/extensions.json +13 -0
  342. itp_interface/tools/repl/.vscode/module-docstring.code-snippets +35 -0
  343. itp_interface/tools/repl/.vscode/settings.json +11 -0
  344. itp_interface/tools/repl/README.md +174 -0
  345. itp_interface/tools/repl/REPL/Frontend.lean +47 -0
  346. itp_interface/tools/repl/REPL/JSON.lean +186 -0
  347. itp_interface/tools/repl/REPL/Lean/ContextInfo.lean +9 -0
  348. itp_interface/tools/repl/REPL/Lean/Environment.lean +31 -0
  349. itp_interface/tools/repl/REPL/Lean/InfoTree/ToJson.lean +114 -0
  350. itp_interface/tools/repl/REPL/Lean/InfoTree.lean +272 -0
  351. itp_interface/tools/repl/REPL/Main.lean +323 -0
  352. itp_interface/tools/repl/REPL/Snapshots.lean +306 -0
  353. itp_interface/tools/repl/REPL/Util/Path.lean +36 -0
  354. itp_interface/tools/repl/REPL/Util/Pickle.lean +44 -0
  355. itp_interface/tools/repl/REPL.lean +4 -0
  356. itp_interface/tools/repl/lake-manifest.json +5 -0
  357. itp_interface/tools/repl/lakefile.lean +15 -0
  358. itp_interface/tools/repl/lean-toolchain +1 -0
  359. itp_interface/tools/repl/test/Mathlib/.gitignore +5 -0
  360. itp_interface/tools/repl/test/Mathlib/H20231110.sh +2 -0
  361. itp_interface/tools/repl/test/Mathlib/ReplMathlibTests.lean +1 -0
  362. itp_interface/tools/repl/test/Mathlib/lake-manifest.json +68 -0
  363. itp_interface/tools/repl/test/Mathlib/lakefile.lean +11 -0
  364. itp_interface/tools/repl/test/Mathlib/lean-toolchain +1 -0
  365. itp_interface/tools/repl/test/Mathlib/test/20240209.expected.out +20 -0
  366. itp_interface/tools/repl/test/Mathlib/test/20240209.in +3 -0
  367. itp_interface/tools/repl/test/Mathlib/test/20240209.lean +4 -0
  368. itp_interface/tools/repl/test/Mathlib/test/H20231020.expected.out +8 -0
  369. itp_interface/tools/repl/test/Mathlib/test/H20231020.in +8 -0
  370. itp_interface/tools/repl/test/Mathlib/test/H20231020.lean +22 -0
  371. itp_interface/tools/repl/test/Mathlib/test/H20231110.expected.out +4 -0
  372. itp_interface/tools/repl/test/Mathlib/test/H20231110.in +4 -0
  373. itp_interface/tools/repl/test/Mathlib/test/H20231115.expected.out +19 -0
  374. itp_interface/tools/repl/test/Mathlib/test/H20231115.in +5 -0
  375. itp_interface/tools/repl/test/Mathlib/test/H20231115_2.expected.out +18 -0
  376. itp_interface/tools/repl/test/Mathlib/test/H20231115_2.in +4 -0
  377. itp_interface/tools/repl/test/Mathlib/test/H20231115_3.expected.out +10 -0
  378. itp_interface/tools/repl/test/Mathlib/test/H20231115_3.in +4 -0
  379. itp_interface/tools/repl/test/Mathlib/test/H20231214.in +9 -0
  380. itp_interface/tools/repl/test/Mathlib/test/H20231214.lean +30 -0
  381. itp_interface/tools/repl/test/Mathlib/test/H20231215.expected.out +4 -0
  382. itp_interface/tools/repl/test/Mathlib/test/H20231215.in +4 -0
  383. itp_interface/tools/repl/test/Mathlib/test/H20231215_2.expected.out +14 -0
  384. itp_interface/tools/repl/test/Mathlib/test/H20231215_2.in +3 -0
  385. itp_interface/tools/repl/test/Mathlib/test/exact.expected.out +37 -0
  386. itp_interface/tools/repl/test/Mathlib/test/exact.in +10 -0
  387. itp_interface/tools/repl/test/Mathlib/test/import_Mathlib.lean +1 -0
  388. itp_interface/tools/repl/test/Mathlib/test/induction.expected.out +29 -0
  389. itp_interface/tools/repl/test/Mathlib/test/induction.in +10 -0
  390. itp_interface/tools/repl/test/Mathlib/test/induction.lean +6 -0
  391. itp_interface/tools/repl/test/Mathlib/test/on_goal.expected.out +22 -0
  392. itp_interface/tools/repl/test/Mathlib/test/on_goal.in +5 -0
  393. itp_interface/tools/repl/test/Mathlib/test/pickle.expected.out +16 -0
  394. itp_interface/tools/repl/test/Mathlib/test/pickle.in +6 -0
  395. itp_interface/tools/repl/test/Mathlib/test/pickle_2.expected.out +4 -0
  396. itp_interface/tools/repl/test/Mathlib/test/pickle_2.in +4 -0
  397. itp_interface/tools/repl/test/Mathlib/test.sh +41 -0
  398. itp_interface/tools/repl/test/all_tactics.expected.out +13 -0
  399. itp_interface/tools/repl/test/all_tactics.in +1 -0
  400. itp_interface/tools/repl/test/by_cases.expected.out +25 -0
  401. itp_interface/tools/repl/test/by_cases.in +8 -0
  402. itp_interface/tools/repl/test/by_cases.lean +4 -0
  403. itp_interface/tools/repl/test/calc.expected.out +32 -0
  404. itp_interface/tools/repl/test/calc.in +1 -0
  405. itp_interface/tools/repl/test/def_eval.expected.out +9 -0
  406. itp_interface/tools/repl/test/def_eval.in +3 -0
  407. itp_interface/tools/repl/test/enableInitializersExecution.expected.out +2 -0
  408. itp_interface/tools/repl/test/enableInitializersExecution.in +1 -0
  409. itp_interface/tools/repl/test/file.expected.out +8 -0
  410. itp_interface/tools/repl/test/file.in +1 -0
  411. itp_interface/tools/repl/test/file.lean +5 -0
  412. itp_interface/tools/repl/test/have_by_sorry.expected.out +28 -0
  413. itp_interface/tools/repl/test/have_by_sorry.in +6 -0
  414. itp_interface/tools/repl/test/import_lean.in +1 -0
  415. itp_interface/tools/repl/test/incomplete.expected.out +18 -0
  416. itp_interface/tools/repl/test/incomplete.in +3 -0
  417. itp_interface/tools/repl/test/incomplete.lean +0 -0
  418. itp_interface/tools/repl/test/infotree.expected.out +20 -0
  419. itp_interface/tools/repl/test/infotree.in +2 -0
  420. itp_interface/tools/repl/test/invalid_tactic.expected.out +20 -0
  421. itp_interface/tools/repl/test/invalid_tactic.in +3 -0
  422. itp_interface/tools/repl/test/name_generator.expected.out +53 -0
  423. itp_interface/tools/repl/test/name_generator.in +18 -0
  424. itp_interface/tools/repl/test/no_goal_sorry.expected.out +11 -0
  425. itp_interface/tools/repl/test/no_goal_sorry.in +1 -0
  426. itp_interface/tools/repl/test/no_goal_sorry_2.expected.out +12 -0
  427. itp_interface/tools/repl/test/no_goal_sorry_2.in +1 -0
  428. itp_interface/tools/repl/test/options.expected.out +17 -0
  429. itp_interface/tools/repl/test/options.in +6 -0
  430. itp_interface/tools/repl/test/pickle_environment.expected.out +8 -0
  431. itp_interface/tools/repl/test/pickle_environment.in +7 -0
  432. itp_interface/tools/repl/test/pickle_environment_with_imports.expected.out +10 -0
  433. itp_interface/tools/repl/test/pickle_environment_with_imports.in +9 -0
  434. itp_interface/tools/repl/test/pickle_open.expected.out +8 -0
  435. itp_interface/tools/repl/test/pickle_open.in +7 -0
  436. itp_interface/tools/repl/test/pickle_open_2.expected.out +4 -0
  437. itp_interface/tools/repl/test/pickle_open_2.in +3 -0
  438. itp_interface/tools/repl/test/pickle_open_scoped.expected.out +18 -0
  439. itp_interface/tools/repl/test/pickle_open_scoped.in +8 -0
  440. itp_interface/tools/repl/test/pickle_open_scoped_2.expected.out +14 -0
  441. itp_interface/tools/repl/test/pickle_open_scoped_2.in +3 -0
  442. itp_interface/tools/repl/test/pickle_proof_state_1.expected.out +26 -0
  443. itp_interface/tools/repl/test/pickle_proof_state_1.in +15 -0
  444. itp_interface/tools/repl/test/pickle_proof_state_2.expected.out +4 -0
  445. itp_interface/tools/repl/test/pickle_proof_state_2.in +3 -0
  446. itp_interface/tools/repl/test/pickle_proof_state_env.expected.out +26 -0
  447. itp_interface/tools/repl/test/pickle_proof_state_env.in +15 -0
  448. itp_interface/tools/repl/test/pickle_scoped_notation.in +16 -0
  449. itp_interface/tools/repl/test/pickle_scoped_notation_2.in +3 -0
  450. itp_interface/tools/repl/test/proof_step.expected.out +18 -0
  451. itp_interface/tools/repl/test/proof_step.in +7 -0
  452. itp_interface/tools/repl/test/readme.expected.out +16 -0
  453. itp_interface/tools/repl/test/readme.in +5 -0
  454. itp_interface/tools/repl/test/sorry_hypotheses.expected.out +16 -0
  455. itp_interface/tools/repl/test/sorry_hypotheses.in +4 -0
  456. itp_interface/tools/repl/test/synthesize_placeholder.expected.out +7 -0
  457. itp_interface/tools/repl/test/synthesize_placeholder.in +1 -0
  458. itp_interface/tools/repl/test/tactic_mode_sorry.expected.out +14 -0
  459. itp_interface/tools/repl/test/tactic_mode_sorry.in +3 -0
  460. itp_interface/tools/repl/test/tactic_sorry.expected.out +12 -0
  461. itp_interface/tools/repl/test/tactic_sorry.in +1 -0
  462. itp_interface/tools/repl/test/term_sorry.expected.out +12 -0
  463. itp_interface/tools/repl/test/term_sorry.in +1 -0
  464. itp_interface/tools/repl/test/trace_simp.expected.out +41 -0
  465. itp_interface/tools/repl/test/trace_simp.in +15 -0
  466. itp_interface/tools/repl/test/unfinished_tactic_block.expected.out +11 -0
  467. itp_interface/tools/repl/test/unfinished_tactic_block.in +1 -0
  468. itp_interface/tools/repl/test/unknown_environment.expected.out +2 -0
  469. itp_interface/tools/repl/test/unknown_environment.in +1 -0
  470. itp_interface/tools/repl/test/unknown_proof_state.expected.out +14 -0
  471. itp_interface/tools/repl/test/unknown_proof_state.in +3 -0
  472. itp_interface/tools/repl/test/unknown_tactic.expected.out +14 -0
  473. itp_interface/tools/repl/test/unknown_tactic.in +3 -0
  474. itp_interface/tools/repl/test/variables.expected.out +26 -0
  475. itp_interface/tools/repl/test/variables.in +5 -0
  476. itp_interface/tools/repl/test.sh +43 -0
  477. itp_interface/tools/run_data_generation_transforms.py +350 -0
  478. itp_interface/tools/theorem_details.py +25 -0
  479. itp_interface/tools/training_data.py +358 -0
  480. itp_interface/tools/training_data_format.py +599 -0
  481. itp_interface-1.0.0.dist-info/METADATA +78 -0
  482. itp_interface-1.0.0.dist-info/RECORD +485 -0
  483. itp_interface-1.0.0.dist-info/WHEEL +4 -0
  484. itp_interface-1.0.0.dist-info/entry_points.txt +3 -0
  485. 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
+ }