feat(library/init/data): simplify int.transfer; add int and nat to zero_ne_one_class

This commit is contained in:
Johannes Hölzl 2017-03-27 18:49:57 -04:00 committed by Leonardo de Moura
parent 2c85bb5a4d
commit c4c2d703f6
3 changed files with 9 additions and 7 deletions

View file

@ -304,10 +304,9 @@ protected meta def transfer_core : tactic unit := do
`int.rel_eq, `int.rel_zero, `int.rel_one,
`int.rel_add, `int.rel_neg, `int.rel_mul]
protected meta def transfer (distrib := ff) : tactic unit :=
if distrib then `[abstract {int.transfer_core, simp [add_mul, mul_add], intros, trivial}]
else `[abstract {int.transfer_core, simp, intros, trivial}]
protected meta def transfer (distrib := tt) : tactic unit :=
if distrib then `[int.transfer_core, simp [add_mul, mul_add]]
else `[int.transfer_core, simp]
instance : comm_ring int :=
{ add := int.add,
@ -342,7 +341,7 @@ instance : semiring int := by apply_instance
instance : ring int := by apply_instance
instance : distrib int := by apply_instance
protected lemma zero_ne_one : (0 : int) ≠ 1 :=
by int.transfer
instance : zero_ne_one_class :=
{ zero := 0, one := 1, zero_ne_one := by int.transfer }
end int

View file

@ -206,7 +206,7 @@ instance : decidable_linear_ordered_comm_ring int :=
lt_irrefl := int.lt_irrefl,
add_le_add_left := @int.add_le_add_left,
add_lt_add_left := @int.add_lt_add_left,
zero_ne_one := int.zero_ne_one,
zero_ne_one := zero_ne_one,
mul_nonneg := @int.mul_nonneg,
mul_pos := @int.mul_pos,
le_iff_lt_or_eq := int.le_iff_lt_or_eq,

View file

@ -63,6 +63,9 @@ assume h, nat.no_confusion h
protected lemma zero_ne_one : 0 ≠ (1 : ) :=
assume h, nat.no_confusion h
instance : zero_ne_one_class :=
{ zero := 0, one := 1, zero_ne_one := nat.zero_ne_one }
lemma eq_zero_of_add_eq_zero_right : ∀ {n m : }, n + m = 0 → n = 0
| 0 m := by simp [nat.zero_add]
| (n+1) m := λ h,