Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 52 additions & 52 deletions theories/Tactics/Hints.v
Original file line number Diff line number Diff line change
@@ -1,32 +1,32 @@
From Hammer Require Import Tactics.
Require List Arith ZArith Bool.

Global Hint Rewrite -> Arith.PeanoNat.Nat.add_0_r : shints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.add_1_r : shints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.sub_0_r : shints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_0_r : shints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_1_r : shints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.add_assoc : shints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_assoc : shints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_add_distr_r : shints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_add_distr_l : shints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_sub_distr_r : shints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_sub_distr_l : shints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.sub_add_distr : shints.
Global Hint Rewrite <- Arith.PeanoNat.Nat.leb_antisym : shints.
Global Hint Rewrite <- Arith.PeanoNat.Nat.ltb_antisym : shints.
Global Hint Rewrite -> ZArith.BinInt.Z.add_0_r : shints.
Global Hint Rewrite -> ZArith.BinInt.Z.add_1_r : shints.
Global Hint Rewrite -> ZArith.BinInt.Z.sub_0_r : shints.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_0_r : shints.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_1_r : shints.
Global Hint Rewrite -> ZArith.BinInt.Z.add_assoc : shints.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_assoc : shints.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_add_distr_r : shints.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_add_distr_l : shints.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_sub_distr_r : shints.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_sub_distr_l : shints.
Global Hint Rewrite -> ZArith.BinInt.Z.sub_add_distr : shints.
Global Hint Rewrite -> PeanoNat.Nat.add_0_r : shints.
Global Hint Rewrite -> PeanoNat.Nat.add_1_r : shints.
Global Hint Rewrite -> PeanoNat.Nat.sub_0_r : shints.
Global Hint Rewrite -> PeanoNat.Nat.mul_0_r : shints.
Global Hint Rewrite -> PeanoNat.Nat.mul_1_r : shints.
Global Hint Rewrite -> PeanoNat.Nat.add_assoc : shints.
Global Hint Rewrite -> PeanoNat.Nat.mul_assoc : shints.
Global Hint Rewrite -> PeanoNat.Nat.mul_add_distr_r : shints.
Global Hint Rewrite -> PeanoNat.Nat.mul_add_distr_l : shints.
Global Hint Rewrite -> PeanoNat.Nat.mul_sub_distr_r : shints.
Global Hint Rewrite -> PeanoNat.Nat.mul_sub_distr_l : shints.
Global Hint Rewrite -> PeanoNat.Nat.sub_add_distr : shints.
Global Hint Rewrite <- PeanoNat.Nat.leb_antisym : shints.
Global Hint Rewrite <- PeanoNat.Nat.ltb_antisym : shints.
Global Hint Rewrite -> BinInt.Z.add_0_r : shints.
Global Hint Rewrite -> BinInt.Z.add_1_r : shints.
Global Hint Rewrite -> BinInt.Z.sub_0_r : shints.
Global Hint Rewrite -> BinInt.Z.mul_0_r : shints.
Global Hint Rewrite -> BinInt.Z.mul_1_r : shints.
Global Hint Rewrite -> BinInt.Z.add_assoc : shints.
Global Hint Rewrite -> BinInt.Z.mul_assoc : shints.
Global Hint Rewrite -> BinInt.Z.mul_add_distr_r : shints.
Global Hint Rewrite -> BinInt.Z.mul_add_distr_l : shints.
Global Hint Rewrite -> BinInt.Z.mul_sub_distr_r : shints.
Global Hint Rewrite -> BinInt.Z.mul_sub_distr_l : shints.
Global Hint Rewrite -> BinInt.Z.sub_add_distr : shints.
Global Hint Rewrite -> List.in_app_iff : shints.
Global Hint Rewrite -> List.in_map_iff : shints.
Global Hint Rewrite <- List.app_assoc : shints.
Expand Down Expand Up @@ -57,30 +57,30 @@ Global Hint Rewrite -> List.in_app_iff : slist.
Global Hint Rewrite -> List.in_map_iff : slist.
Global Hint Rewrite <- List.app_assoc : slist.

Global Hint Rewrite -> Arith.PeanoNat.Nat.add_0_r : sarith.
Global Hint Rewrite -> Arith.PeanoNat.Nat.add_1_r : sarith.
Global Hint Rewrite -> Arith.PeanoNat.Nat.sub_0_r : sarith.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_0_r : sarith.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_1_r : sarith.
Global Hint Rewrite -> Arith.PeanoNat.Nat.add_assoc : sarith.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_assoc : sarith.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_add_distr_r : sarith.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_add_distr_l : sarith.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_sub_distr_r : sarith.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_sub_distr_l : sarith.
Global Hint Rewrite -> Arith.PeanoNat.Nat.sub_add_distr : sarith.
Global Hint Rewrite <- Arith.PeanoNat.Nat.leb_antisym : sarith.
Global Hint Rewrite <- Arith.PeanoNat.Nat.ltb_antisym : sarith.
Global Hint Rewrite -> PeanoNat.Nat.add_0_r : sarith.
Global Hint Rewrite -> PeanoNat.Nat.add_1_r : sarith.
Global Hint Rewrite -> PeanoNat.Nat.sub_0_r : sarith.
Global Hint Rewrite -> PeanoNat.Nat.mul_0_r : sarith.
Global Hint Rewrite -> PeanoNat.Nat.mul_1_r : sarith.
Global Hint Rewrite -> PeanoNat.Nat.add_assoc : sarith.
Global Hint Rewrite -> PeanoNat.Nat.mul_assoc : sarith.
Global Hint Rewrite -> PeanoNat.Nat.mul_add_distr_r : sarith.
Global Hint Rewrite -> PeanoNat.Nat.mul_add_distr_l : sarith.
Global Hint Rewrite -> PeanoNat.Nat.mul_sub_distr_r : sarith.
Global Hint Rewrite -> PeanoNat.Nat.mul_sub_distr_l : sarith.
Global Hint Rewrite -> PeanoNat.Nat.sub_add_distr : sarith.
Global Hint Rewrite <- PeanoNat.Nat.leb_antisym : sarith.
Global Hint Rewrite <- PeanoNat.Nat.ltb_antisym : sarith.

Global Hint Rewrite -> ZArith.BinInt.Z.add_0_r : szarith.
Global Hint Rewrite -> ZArith.BinInt.Z.add_1_r : szarith.
Global Hint Rewrite -> ZArith.BinInt.Z.sub_0_r : szarith.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_0_r : szarith.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_1_r : szarith.
Global Hint Rewrite -> ZArith.BinInt.Z.add_assoc : szarith.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_assoc : szarith.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_add_distr_r : szarith.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_add_distr_l : szarith.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_sub_distr_r : szarith.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_sub_distr_l : szarith.
Global Hint Rewrite -> ZArith.BinInt.Z.sub_add_distr : szarith.
Global Hint Rewrite -> BinInt.Z.add_0_r : szarith.
Global Hint Rewrite -> BinInt.Z.add_1_r : szarith.
Global Hint Rewrite -> BinInt.Z.sub_0_r : szarith.
Global Hint Rewrite -> BinInt.Z.mul_0_r : szarith.
Global Hint Rewrite -> BinInt.Z.mul_1_r : szarith.
Global Hint Rewrite -> BinInt.Z.add_assoc : szarith.
Global Hint Rewrite -> BinInt.Z.mul_assoc : szarith.
Global Hint Rewrite -> BinInt.Z.mul_add_distr_r : szarith.
Global Hint Rewrite -> BinInt.Z.mul_add_distr_l : szarith.
Global Hint Rewrite -> BinInt.Z.mul_sub_distr_r : szarith.
Global Hint Rewrite -> BinInt.Z.mul_sub_distr_l : szarith.
Global Hint Rewrite -> BinInt.Z.sub_add_distr : szarith.
44 changes: 22 additions & 22 deletions theories/Tactics/Reconstr.v
Original file line number Diff line number Diff line change
Expand Up @@ -12,28 +12,28 @@ Inductive ReconstrT : Set := Empty : ReconstrT | AllHyps : ReconstrT.

Create HintDb yhints discriminated.

Global Hint Rewrite -> Arith.PeanoNat.Nat.add_0_r : yhints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.sub_0_r : yhints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_0_r : yhints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_1_r : yhints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.add_assoc : yhints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_assoc : yhints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_add_distr_r : yhints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_add_distr_l : yhints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_sub_distr_r : yhints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.mul_sub_distr_l : yhints.
Global Hint Rewrite -> Arith.PeanoNat.Nat.sub_add_distr : yhints.
Global Hint Rewrite -> ZArith.BinInt.Z.add_0_r : yhints.
Global Hint Rewrite -> ZArith.BinInt.Z.sub_0_r : yhints.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_0_r : yhints.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_1_r : yhints.
Global Hint Rewrite -> ZArith.BinInt.Z.add_assoc : yhints.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_assoc : yhints.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_add_distr_r : yhints.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_add_distr_l : yhints.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_sub_distr_r : yhints.
Global Hint Rewrite -> ZArith.BinInt.Z.mul_sub_distr_l : yhints.
Global Hint Rewrite -> ZArith.BinInt.Z.sub_add_distr : yhints.
Global Hint Rewrite -> PeanoNat.Nat.add_0_r : yhints.
Global Hint Rewrite -> PeanoNat.Nat.sub_0_r : yhints.
Global Hint Rewrite -> PeanoNat.Nat.mul_0_r : yhints.
Global Hint Rewrite -> PeanoNat.Nat.mul_1_r : yhints.
Global Hint Rewrite -> PeanoNat.Nat.add_assoc : yhints.
Global Hint Rewrite -> PeanoNat.Nat.mul_assoc : yhints.
Global Hint Rewrite -> PeanoNat.Nat.mul_add_distr_r : yhints.
Global Hint Rewrite -> PeanoNat.Nat.mul_add_distr_l : yhints.
Global Hint Rewrite -> PeanoNat.Nat.mul_sub_distr_r : yhints.
Global Hint Rewrite -> PeanoNat.Nat.mul_sub_distr_l : yhints.
Global Hint Rewrite -> PeanoNat.Nat.sub_add_distr : yhints.
Global Hint Rewrite -> BinInt.Z.add_0_r : yhints.
Global Hint Rewrite -> BinInt.Z.sub_0_r : yhints.
Global Hint Rewrite -> BinInt.Z.mul_0_r : yhints.
Global Hint Rewrite -> BinInt.Z.mul_1_r : yhints.
Global Hint Rewrite -> BinInt.Z.add_assoc : yhints.
Global Hint Rewrite -> BinInt.Z.mul_assoc : yhints.
Global Hint Rewrite -> BinInt.Z.mul_add_distr_r : yhints.
Global Hint Rewrite -> BinInt.Z.mul_add_distr_l : yhints.
Global Hint Rewrite -> BinInt.Z.mul_sub_distr_r : yhints.
Global Hint Rewrite -> BinInt.Z.mul_sub_distr_l : yhints.
Global Hint Rewrite -> BinInt.Z.sub_add_distr : yhints.
Global Hint Rewrite -> List.in_app_iff : yhints.
Global Hint Rewrite -> List.in_map_iff : yhints.
Global Hint Rewrite -> List.in_inv : yhints.
Expand Down
20 changes: 10 additions & 10 deletions theories/Tactics/Tactics.v
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
Declare ML Module "coq-hammer-tactics.lib".

Require Import Lia.
Require Import Program.Equality.
From Stdlib.Program Require Import Equality.
From Hammer Require Import Tactics.Reflect.

Create HintDb shints discriminated.
Expand Down Expand Up @@ -379,11 +379,11 @@ Ltac trysolve :=
eauto 2 with shints; try solve [ constructor ];
match goal with
| [ |- ?t = ?u ] => try solve [ try subst; congruence 8 |
match type of t with nat => lia | ZArith.BinInt.Z => lia end ]
match type of t with nat => lia | BinInt.Z => lia end ]
| [ |- ?t <> ?u ] => try solve [ try subst; congruence 8 |
match type of t with nat => lia | ZArith.BinInt.Z => lia end ]
match type of t with nat => lia | BinInt.Z => lia end ]
| [ |- (?t = ?u) -> False ] => try solve [ intro; try subst; congruence 8 |
match type of t with nat => lia | ZArith.BinInt.Z => lia end ]
match type of t with nat => lia | BinInt.Z => lia end ]
| [ |- False ] => try solve [ try subst; congruence 8 ]
| [ |- ?t >= ?u ] => try solve [ lia ]
| [ |- ?t <= ?u ] => try solve [ lia ]
Expand Down Expand Up @@ -530,24 +530,24 @@ Ltac bnat_reflect :=
clear H
| [ H : (Nat.eqb ?A ?B) = true |- _ ] =>
notHyp (A = B);
assert (A = B) by (rewrite Coq.Arith.PeanoNat.Nat.eqb_eq in H; apply H);
assert (A = B) by (rewrite PeanoNat.Nat.eqb_eq in H; apply H);
try subst
| [ H : (Nat.eqb ?A ?B) = false |- _ ] =>
notHyp (A = B -> False);
assert (A = B -> False) by
(rewrite <- Coq.Arith.PeanoNat.Nat.eqb_eq; rewrite H; discriminate)
(rewrite <- PeanoNat.Nat.eqb_eq; rewrite H; discriminate)
| [ H : (Nat.leb ?A ?B) = true |- _ ] =>
notHyp (A <= B);
assert (A <= B) by (apply Coq.Arith.Compare_dec.leb_complete; apply H)
assert (A <= B) by (apply Compare_dec.leb_complete; apply H)
| [ H : (Nat.leb ?A ?B) = false |- _ ] =>
notHyp (B < A);
assert (B < A) by (apply Coq.Arith.Compare_dec.leb_complete_conv; apply H)
assert (B < A) by (apply Compare_dec.leb_complete_conv; apply H)
| [ H : (Nat.ltb ?A ?B) = true |- _ ] =>
notHyp (A < B);
assert (A < B) by (apply Coq.Arith.PeanoNat.Nat.ltb_lt; apply H)
assert (A < B) by (apply PeanoNat.Nat.ltb_lt; apply H)
| [ H : (Nat.ltb ?A ?B) = false |- _ ] =>
notHyp (B <= A);
assert (B <= A) by (apply Coq.Arith.PeanoNat.Nat.ltb_ge; apply H)
assert (B <= A) by (apply PeanoNat.Nat.ltb_ge; apply H)
| [ H : (BinNat.N.eqb ?A ?B) = true |- _ ] =>
notHyp (A = B);
assert (A = B) by (apply Coq.NArith.BinNat.N.eqb_eq; apply H);
Expand Down