548 ) |
548 ) |
549 | NONE => log (minimize_tag id ^ "failed: " ^ msg) |
549 | NONE => log (minimize_tag id ^ "failed: " ^ msg) |
550 end |
550 end |
551 |
551 |
552 |
552 |
553 val e_override_params = |
553 fun e_override_params timeout = |
554 [("provers", "e"), |
554 [("provers", "e"), |
555 ("max_relevant", "0"), |
555 ("max_relevant", "0"), |
556 ("type_enc", "poly_guards?"), |
556 ("type_enc", "poly_guards?"), |
557 ("sound", "true"), |
557 ("sound", "true"), |
558 ("slicing", "false")] |
558 ("slicing", "false"), |
559 |
559 ("timeout", timeout |> Time.toSeconds |> string_of_int)] |
560 val vampire_override_params = |
560 |
|
561 fun vampire_override_params timeout = |
561 [("provers", "vampire"), |
562 [("provers", "vampire"), |
562 ("max_relevant", "0"), |
563 ("max_relevant", "0"), |
563 ("type_enc", "poly_tags"), |
564 ("type_enc", "poly_tags"), |
564 ("sound", "true"), |
565 ("sound", "true"), |
565 ("slicing", "false")] |
566 ("slicing", "false"), |
|
567 ("timeout", timeout |> Time.toSeconds |> string_of_int)] |
566 |
568 |
567 fun run_reconstructor trivial full m name reconstructor named_thms id |
569 fun run_reconstructor trivial full m name reconstructor named_thms id |
568 ({pre=st, timeout, log, pos, ...}: Mirabelle.run_args) = |
570 ({pre=st, timeout, log, pos, ...}: Mirabelle.run_args) = |
569 let |
571 let |
570 fun do_reconstructor thms ctxt = |
572 fun do_reconstructor thms ctxt = |
571 (if !reconstructor = "sledgehammer_tac" then |
573 (if !reconstructor = "sledgehammer_tac" then |
572 (fn ctxt => fn thms => |
574 (fn ctxt => fn thms => |
573 Method.insert_tac thms THEN' |
575 Method.insert_tac thms THEN' |
574 (Sledgehammer_Tactics.sledgehammer_as_oracle_tac ctxt |
576 (Sledgehammer_Tactics.sledgehammer_as_oracle_tac ctxt |
575 e_override_params |
577 (e_override_params timeout) |
576 ORELSE' |
578 ORELSE' |
577 Sledgehammer_Tactics.sledgehammer_as_oracle_tac ctxt |
579 Sledgehammer_Tactics.sledgehammer_as_oracle_tac ctxt |
578 vampire_override_params)) |
580 (vampire_override_params timeout))) |
579 else if !reconstructor = "smt" then |
581 else if !reconstructor = "smt" then |
580 SMT_Solver.smt_tac |
582 SMT_Solver.smt_tac |
581 else if full orelse !reconstructor = "metis (full_types)" then |
583 else if full orelse !reconstructor = "metis (full_types)" then |
582 Metis_Tactics.metis_tac [Metis_Tactics.full_type_enc] |
584 Metis_Tactics.metis_tac [Metis_Tactics.full_type_enc] |
583 else if !reconstructor = "metis (no_types)" then |
585 else if !reconstructor = "metis (no_types)" then |