Skip to content
This repository was archived by the owner on Jun 9, 2021. It is now read-only.

Commit 59e6108

Browse files
committed
move prod destructing to after prove_refinement_eauto
1 parent 37cd9a1 commit 59e6108

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

saw-core-coq/coq/handwritten/CryptolToCoq/CompMExtra.v

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Tactic Notation "unfold_projs" "in" "*" :=
3737
Ltac split_prod_hyps :=
3838
repeat match goal with
3939
| H: _ /\ _ |- _ => destruct H as [?H ?H]
40-
| p: { _ : _ & _ } |- _ => destruct p as [? H]
40+
| p: { _ : _ & _ } |- _ => destruct p as [?p ?p]
4141
| p: _ * _ |- _ => destruct p as [?p ?p]
4242
| u: unit |- _ => destruct u
4343
| u: True |- _ => destruct u
@@ -262,8 +262,8 @@ Ltac IntroArg_base_tac n A g :=
262262
lazymatch A with
263263
| _ /\ _ => simple apply IntroArg_and
264264
| _ \/ _ => simple apply IntroArg_or
265-
| { _ : _ & _ } => simple apply IntroArg_sigT
266-
| prod _ _ => simple apply IntroArg_prod
265+
(* | { _ : _ & _ } => simple apply IntroArg_sigT *)
266+
(* | prod _ _ => simple apply IntroArg_prod *)
267267
| sum _ _ => simple apply IntroArg_sum
268268
| unit => simple apply IntroArg_unit
269269
| existT _ _ _ = existT _ _ _ => simple apply IntroArg_eq_sigT_const
@@ -663,22 +663,27 @@ Hint Extern 5 (@refinesFun (LRT_Fun _ _) _ _) =>
663663
*** Top-level tactics to put it all together
664664
***)
665665

666-
Variant ProveRefOpts := Default | NoRewrite.
666+
Variant ProveRefOpts := Default | NoRewrite | NoDestructProds | NoRewriteNoDestructProds.
667667

668668
Ltac prove_refinement_eauto :=
669669
unshelve (typeclasses eauto with refinesM refinesFun).
670+
Ltac prove_refinement_destruct_prod_hyps :=
671+
split_prod_hyps; unfold_projs in *.
670672
Ltac prove_refinement_rewrite :=
671673
try unshelve (rewrite_strat (bottomup (hints refinesM))).
672674
Ltac prove_refinement_try_solve :=
673-
unfold_projs in *;
674-
split_prod_hyps; split_prod_goal;
675+
split_prod_goal;
675676
try reflexivity || contradiction.
676677

677678
Tactic Notation "prove_refinement_core" "with" constr(opts) :=
679+
prove_refinement_eauto;
678680
match opts with
679-
| Default => prove_refinement_eauto; prove_refinement_rewrite; prove_refinement_try_solve
680-
| NoRewrite => prove_refinement_eauto; prove_refinement_try_solve
681-
end.
681+
| Default => prove_refinement_destruct_prod_hyps; prove_refinement_rewrite
682+
| NoRewrite => prove_refinement_destruct_prod_hyps
683+
| NoDestructProds => prove_refinement_rewrite
684+
| NoRewriteNoDestructProds => idtac
685+
end;
686+
prove_refinement_try_solve.
682687

683688
Ltac prove_refinement_core := prove_refinement_core with Default.
684689

0 commit comments

Comments
 (0)