Documentation

Init.Grind.Ring.Envelope

def Lean.Grind.Ring.OfSemiring.r (α : Type u) [Semiring α] :
α × αα × αProp
Instances For
    Instances For
      theorem Lean.Grind.Ring.OfSemiring.r_rfl {α : Type u} [Semiring α] (a : α × α) :
      r α a a
      theorem Lean.Grind.Ring.OfSemiring.r_sym {α : Type u} [Semiring α] {a b : α × α} :
      r α a br α b a
      theorem Lean.Grind.Ring.OfSemiring.r_trans {α : Type u} [Semiring α] {a b c : α × α} :
      r α a br α b cr α a c
      theorem Lean.Grind.Ring.OfSemiring.mul_helper {α : Type u_1} [Semiring α] {a₁ b₁ a₂ b₂ a₃ b₃ a₄ b₄ k₁ k₂ : α} (h₁ : a₁ + b₃ + k₁ = b₁ + a₃ + k₁) (h₂ : a₂ + b₄ + k₂ = b₂ + a₄ + k₂) :
      (k : α), a₁ * a₂ + b₁ * b₂ + (a₃ * b₄ + b₃ * a₄) + k = a₁ * b₂ + b₁ * a₂ + (a₃ * a₄ + b₃ * b₄) + k
      def Lean.Grind.Ring.OfSemiring.Q.mk {α : Type u} [Semiring α] (p : α × α) :
      Q α
      Instances For
        def Lean.Grind.Ring.OfSemiring.Q.liftOn₂ {α : Type u} [Semiring α] {β : Sort u_1} (q₁ q₂ : Q α) (f : α × αα × αβ) (h : ∀ {a₁ b₁ a₂ b₂ : α × α}, r α a₁ a₂r α b₁ b₂f a₁ b₁ = f a₂ b₂) :
        β
        Instances For
          def Lean.Grind.Ring.OfSemiring.Q.ind {α : Type u} [Semiring α] {β : Q αProp} (mk : ∀ (a : α × α), β (mk a)) (q : Q α) :
          β q
          Instances For
            Instances For
              Instances For
                def Lean.Grind.Ring.OfSemiring.sub {α : Type u} [Semiring α] (q₁ q₂ : Q α) :
                Q α
                Instances For
                  def Lean.Grind.Ring.OfSemiring.add {α : Type u} [Semiring α] (q₁ q₂ : Q α) :
                  Q α
                  Instances For
                    def Lean.Grind.Ring.OfSemiring.mul {α : Type u} [Semiring α] (q₁ q₂ : Q α) :
                    Q α
                    Instances For
                      def Lean.Grind.Ring.OfSemiring.neg {α : Type u} [Semiring α] (q : Q α) :
                      Q α
                      Instances For
                        theorem Lean.Grind.Ring.OfSemiring.add_comm {α : Type u} [Semiring α] (a b : Q α) :
                        add a b = add b a
                        theorem Lean.Grind.Ring.OfSemiring.add_zero {α : Type u} [Semiring α] (a : Q α) :
                        add a (natCast 0) = a
                        theorem Lean.Grind.Ring.OfSemiring.add_assoc {α : Type u} [Semiring α] (a b c : Q α) :
                        add (add a b) c = add a (add b c)
                        theorem Lean.Grind.Ring.OfSemiring.sub_eq_add_neg {α : Type u} [Semiring α] (a b : Q α) :
                        sub a b = add a (neg b)
                        theorem Lean.Grind.Ring.OfSemiring.mul_assoc {α : Type u} [Semiring α] (a b c : Q α) :
                        mul (mul a b) c = mul a (mul b c)
                        theorem Lean.Grind.Ring.OfSemiring.mul_one {α : Type u} [Semiring α] (a : Q α) :
                        mul a (natCast 1) = a
                        theorem Lean.Grind.Ring.OfSemiring.one_mul {α : Type u} [Semiring α] (a : Q α) :
                        mul (natCast 1) a = a
                        theorem Lean.Grind.Ring.OfSemiring.left_distrib {α : Type u} [Semiring α] (a b c : Q α) :
                        mul a (add b c) = add (mul a b) (mul a c)
                        theorem Lean.Grind.Ring.OfSemiring.right_distrib {α : Type u} [Semiring α] (a b c : Q α) :
                        mul (add a b) c = add (mul a c) (mul b c)
                        def Lean.Grind.Ring.OfSemiring.npow {α : Type u} [Semiring α] (a : Q α) (n : Nat) :
                        Q α
                        Instances For
                          theorem Lean.Grind.Ring.OfSemiring.pow_zero {α : Type u} [Semiring α] (a : Q α) :
                          npow a 0 = natCast 1
                          theorem Lean.Grind.Ring.OfSemiring.pow_succ {α : Type u} [Semiring α] (a : Q α) (n : Nat) :
                          npow a (n + 1) = mul (npow a n) a
                          def Lean.Grind.Ring.OfSemiring.nsmul {α : Type u} [Semiring α] (n : Nat) (a : Q α) :
                          Q α
                          Instances For
                            def Lean.Grind.Ring.OfSemiring.zsmul {α : Type u} [Semiring α] (i : Int) (a : Q α) :
                            Q α
                            Instances For
                              theorem Lean.Grind.Ring.OfSemiring.neg_zsmul {α : Type u} [Semiring α] (i : Int) (a : Q α) :
                              zsmul (-i) a = neg (zsmul i a)
                              @[implicit_reducible]
                              def Lean.Grind.Ring.OfSemiring.toQ {α : Type u} [Semiring α] (a : α) :
                              Q α
                              Instances For

                                Embedding theorems

                                theorem Lean.Grind.Ring.OfSemiring.toQ_add {α : Type u} [Semiring α] (a b : α) :
                                (a + b) = a + b
                                theorem Lean.Grind.Ring.OfSemiring.toQ_mul {α : Type u} [Semiring α] (a b : α) :
                                (a * b) = a * b
                                theorem Lean.Grind.Ring.OfSemiring.toQ_pow {α : Type u} [Semiring α] (a : α) (n : Nat) :
                                (a ^ n) = a ^ n

                                Helper definitions and theorems for proving toQ is injective when CommSemiring has the right_cancel property

                                theorem Lean.Grind.Ring.OfSemiring.Q.exact {α : Type u} [Semiring α] {a b : α × α} :
                                mk a = mk br α a b
                                theorem Lean.Grind.Ring.OfSemiring.toQ_inj {α : Type u} [Semiring α] [AddRightCancel α] {a b : α} :
                                a = ba = b
                                @[instance 10000]
                                @[implicit_reducible, instance 10000]
                                @[implicit_reducible, instance 10000]
                                theorem Lean.Grind.Ring.OfSemiring.mk_le_mk {α : Type u} [Semiring α] [LE α] [Std.IsPreorder α] [OrderedAdd α] {a₁ a₂ b₁ b₂ : α} :
                                Q.mk (a₁, a₂) Q.mk (b₁, b₂) a₁ + b₂ a₂ + b₁
                                @[instance 10000]
                                theorem Lean.Grind.Ring.OfSemiring.toQ_le {α : Type u} [Semiring α] [LE α] [Std.IsPreorder α] [OrderedAdd α] {a b : α} :
                                a b a b
                                theorem Lean.Grind.Ring.OfSemiring.toQ_lt {α : Type u} [Semiring α] [LE α] [LT α] [Std.LawfulOrderLT α] [Std.IsPreorder α] [OrderedAdd α] {a b : α} :
                                a < b a < b
                                @[instance 10000]
                                @[implicit_reducible, instance 10000]
                                @[implicit_reducible, instance 10000]
                                @[implicit_reducible, instance 10000]
                                @[implicit_reducible, instance 10000]
                                @[implicit_reducible, instance 10000]
                                @[implicit_reducible, instance 10000]
                                @[implicit_reducible, instance 10000]
                                @[implicit_reducible, instance 10000]