From Hammer Require Import Tactics.
From Stdlib Require List Arith ZArith Bool.

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.
Global Hint Rewrite -> Bool.orb_true_r : shints.
Global Hint Rewrite -> Bool.orb_false_r : shints.
Global Hint Rewrite -> Bool.andb_true_r : shints.
Global Hint Rewrite -> Bool.andb_false_r : shints.

Global Hint Rewrite -> Bool.orb_true_r : sbool.
Global Hint Rewrite -> Bool.orb_true_l : sbool.
Global Hint Rewrite -> Bool.orb_false_r : sbool.
Global Hint Rewrite -> Bool.orb_false_l : sbool.
Global Hint Rewrite -> Bool.andb_true_r : sbool.
Global Hint Rewrite -> Bool.andb_true_l : sbool.
Global Hint Rewrite -> Bool.andb_false_r : sbool.
Global Hint Rewrite -> Bool.andb_false_l : sbool.

Global Hint Rewrite -> List.app_nil_r : slist.
Global Hint Rewrite -> List.length_rev : slist.
Global Hint Rewrite -> List.length_app : slist.
Global Hint Rewrite -> List.length_seq : slist.
Global Hint Rewrite -> List.length_map : slist.
Global Hint Rewrite -> List.map_nth : slist.
Global Hint Rewrite -> List.rev_unit : slist.
Global Hint Rewrite -> List.rev_involutive : slist.
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 -> 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 -> 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.
