Documentation

Init.Grind.Module.Basic

class Lean.Grind.NatModule (M : Type u) extends Zero M, Add M, HMul Nat M M :
  • zero : M
  • add : MMM
  • hMul : NatMM
  • add_zero (a : M) : a + 0 = a
  • zero_add (a : M) : 0 + a = a
  • add_comm (a b : M) : a + b = b + a
  • add_assoc (a b c : M) : a + b + c = a + (b + c)
  • zero_hmul (a : M) : 0 * a = 0
  • one_hmul (a : M) : 1 * a = a
  • add_hmul (n m : Nat) (a : M) : (n + m) * a = n * a + m * a
  • hmul_zero (n : Nat) : n * 0 = 0
  • hmul_add (n : Nat) (a b : M) : n * (a + b) = n * a + n * b
  • mul_hmul (n m : Nat) (a : M) : n * m * a = n * (m * a)
Instances
class Lean.Grind.IntModule (M : Type u) extends Zero M, Add M, Neg M, Sub M, HMul Int M M :
  • zero : M
  • add : MMM
  • neg : MM
  • sub : MMM
  • hMul : IntMM
  • add_zero (a : M) : a + 0 = a
  • zero_add (a : M) : 0 + a = a
  • add_comm (a b : M) : a + b = b + a
  • add_assoc (a b c : M) : a + b + c = a + (b + c)
  • zero_hmul (a : M) : 0 * a = 0
  • one_hmul (a : M) : 1 * a = a
  • add_hmul (n m : Int) (a : M) : (n + m) * a = n * a + m * a
  • hmul_zero (n : Int) : n * 0 = 0
  • hmul_add (n : Int) (a b : M) : n * (a + b) = n * a + n * b
  • mul_hmul (n m : Int) (a : M) : n * m * a = n * (m * a)
  • neg_add_cancel (a : M) : -a + a = 0
  • sub_eq_add_neg (a b : M) : a - b = a + -b
Instances
Equations
  • One or more equations did not get rendered due to their size.
theorem Lean.Grind.IntModule.add_neg_cancel {M : Type u} [IntModule M] (a : M) :
a + -a = 0
theorem Lean.Grind.IntModule.add_left_inj {M : Type u} [IntModule M] {a b : M} (c : M) :
a + c = b + c a = b
theorem Lean.Grind.IntModule.add_right_inj {M : Type u} [IntModule M] (a b c : M) :
a + b = a + c b = c
theorem Lean.Grind.IntModule.neg_neg {M : Type u} [IntModule M] (a : M) :
- -a = a
theorem Lean.Grind.IntModule.neg_eq_zero {M : Type u} [IntModule M] (a : M) :
-a = 0 a = 0
theorem Lean.Grind.IntModule.neg_add {M : Type u} [IntModule M] (a b : M) :
-(a + b) = -a + -b
theorem Lean.Grind.IntModule.neg_sub {M : Type u} [IntModule M] (a b : M) :
-(a - b) = b - a
theorem Lean.Grind.IntModule.sub_self {M : Type u} [IntModule M] (a : M) :
a - a = 0
theorem Lean.Grind.IntModule.sub_eq_iff {M : Type u} [IntModule M] {a b c : M} :
a - b = c a = c + b
theorem Lean.Grind.IntModule.sub_eq_zero_iff {M : Type u} [IntModule M] {a b : M} :
a - b = 0 a = b
theorem Lean.Grind.IntModule.neg_hmul {M : Type u} [IntModule M] (n : Int) (a : M) :
-n * a = -(n * a)
theorem Lean.Grind.IntModule.hmul_neg {M : Type u} [IntModule M] (n : Int) (a : M) :
n * -a = -(n * a)
class Lean.Grind.NoNatZeroDivisors (α : Type u) [Zero α] [HMul Nat α α] :

Special case of Mathlib's NoZeroSMulDivisors Nat α.

  • no_nat_zero_divisors (k : Nat) (a : α) : k 0k * a = 0a = 0
Instances