summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBrian Campbell2018-08-14 18:15:24 +0100
committerBrian Campbell2018-08-14 21:07:23 +0100
commit39fea17bac77535c9cff47cd6657a308e391ac8a (patch)
tree05c3bb014d38bfd87b9f09bd43cd80c0f4e1a1a2 /lib
parent7adf0f81af82f3d401a9b45f87c1dc92c5062f8e (diff)
Coq: attempt a quick proof before an indepth one
Diffstat (limited to 'lib')
-rw-r--r--lib/coq/Sail2_values.v8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/coq/Sail2_values.v b/lib/coq/Sail2_values.v
index 7766e6af..c63e8453 100644
--- a/lib/coq/Sail2_values.v
+++ b/lib/coq/Sail2_values.v
@@ -1021,6 +1021,9 @@ Ltac prepare_for_solver :=
reduce_list_lengths;
reduce_pow.
Ltac solve_arithfact :=
+(* Attempt a simple proof first to avoid lengthy preparation steps (especially
+ as the large proof terms can upset subsequent proofs). *)
+try (constructor; omega);
prepare_for_solver;
(*dump_context;*)
solve
@@ -1037,7 +1040,10 @@ prepare_for_solver;
| constructor; eauto 3 with datatypes zarith sail
| constructor; idtac "Unable to solve constraint"; dump_context; fail
].
-Hint Extern 0 (ArithFact _) => solve_arithfact : typeclass_instances.
+(* Add an indirection so that you can redefine run_solver to fail to get
+ slow running constraints into proof mode. *)
+Ltac run_solver := solve_arithfact.
+Hint Extern 0 (ArithFact _) => run_solver : typeclass_instances.
Hint Unfold length_mword : sail.