809 @{thm add_0_right}, |
809 @{thm add_0_right}, |
810 @{thm "Zero_not_Suc"}, @{thm "Suc_not_Zero"}, @{thm "le_0_eq"}, @{thm "One_nat_def"}, |
810 @{thm "Zero_not_Suc"}, @{thm "Suc_not_Zero"}, @{thm "le_0_eq"}, @{thm "One_nat_def"}, |
811 @{thm "order_less_irrefl"}, @{thm "zero_neq_one"}, @{thm "zero_less_one"}, |
811 @{thm "order_less_irrefl"}, @{thm "zero_neq_one"}, @{thm "zero_less_one"}, |
812 @{thm "zero_le_one"}, @{thm "zero_neq_one"} RS not_sym, @{thm "not_one_le_zero"}, |
812 @{thm "zero_le_one"}, @{thm "zero_neq_one"} RS not_sym, @{thm "not_one_le_zero"}, |
813 @{thm "not_one_less_zero"}] |
813 @{thm "not_one_less_zero"}] |
814 addsimprocs [@{simproc abel_cancel_sum}, @{simproc abel_cancel_relation}] |
814 addsimprocs [@{simproc group_cancel_add}, @{simproc group_cancel_diff}, |
|
815 @{simproc group_cancel_eq}, @{simproc group_cancel_le}, |
|
816 @{simproc group_cancel_less}] |
815 (*abel_cancel helps it work in abstract algebraic domains*) |
817 (*abel_cancel helps it work in abstract algebraic domains*) |
816 addsimprocs Nat_Arith.nat_cancel_sums_add |
818 addsimprocs Nat_Arith.nat_cancel_sums_add |
817 |> Simplifier.add_cong @{thm if_weak_cong}, |
819 |> Simplifier.add_cong @{thm if_weak_cong}, |
818 number_of = number_of}) #> |
820 number_of = number_of}) #> |
819 add_discrete_type @{type_name nat}; |
821 add_discrete_type @{type_name nat}; |