Documentation

Mathlib.Algebra.Group.Pointwise.Set.Basic

Pointwise operations of sets #

This file defines pointwise algebraic operations on sets.

Main declarations #

For sets s and t and scalar a:

For α a semigroup/monoid, Set α is a semigroup/monoid. As an unfortunate side effect, this means that n • s, where n : ℕ, is ambiguous between pointwise scaling and repeated pointwise addition; the former has (2 : ℕ) • {1, 2} = {2, 4}, while the latter has (2 : ℕ) • {1, 2} = {2, 3, 4}. See note [pointwise nat action].

Appropriate definitions and results are also transported to the additive theory via to_additive.

Implementation notes #

Tags #

set multiplication, set addition, pointwise addition, pointwise multiplication, pointwise subtraction

Pointwise monoids (Set, Finset, Filter) have derived pointwise actions of the form SMul α β → SMul α (Set β). When α is or , this action conflicts with the nat or int action coming from Set β being a Monoid or DivInvMonoid. For example, 2 • {a, b} can both be {2 • a, 2 • b} (pointwise action, pointwise repeated addition, Set.smulSet) and {a + a, a + b, b + a, b + b} (nat or int action, repeated pointwise addition, Set.NSMul).

Because the pointwise action can easily be spelled out in such cases, we give higher priority to the nat and int actions.

Equations
Instances For

    0/1 as sets #

    def Set.one {α : Type u_2} [One α] :
    One (Set α)

    The set 1 : Set α is defined as {1} in scope Pointwise.

    Equations
    Instances For
      def Set.zero {α : Type u_2} [Zero α] :
      Zero (Set α)

      The set 0 : Set α is defined as {0} in scope Pointwise.

      Equations
      Instances For
        theorem Set.singleton_one {α : Type u_2} [One α] :
        {1} = 1
        theorem Set.singleton_zero {α : Type u_2} [Zero α] :
        {0} = 0
        @[simp]
        theorem Set.mem_one {α : Type u_2} [One α] {a : α} :
        a 1 a = 1
        @[simp]
        theorem Set.mem_zero {α : Type u_2} [Zero α] {a : α} :
        a 0 a = 0
        theorem Set.one_mem_one {α : Type u_2} [One α] :
        1 1
        theorem Set.zero_mem_zero {α : Type u_2} [Zero α] :
        0 0
        @[simp]
        theorem Set.one_subset {α : Type u_2} [One α] {s : Set α} :
        1 s 1 s
        @[simp]
        theorem Set.zero_subset {α : Type u_2} [Zero α] {s : Set α} :
        0 s 0 s
        @[simp]
        theorem Set.one_nonempty {α : Type u_2} [One α] :
        @[simp]
        theorem Set.zero_nonempty {α : Type u_2} [Zero α] :
        @[simp]
        theorem Set.image_one {α : Type u_2} {β : Type u_3} [One α] {f : αβ} :
        f '' 1 = {f 1}
        @[simp]
        theorem Set.image_zero {α : Type u_2} {β : Type u_3} [Zero α] {f : αβ} :
        f '' 0 = {f 0}
        theorem Set.subset_one_iff_eq {α : Type u_2} [One α] {s : Set α} :
        s 1 s = s = 1
        theorem Set.subset_zero_iff_eq {α : Type u_2} [Zero α] {s : Set α} :
        s 0 s = s = 0
        theorem Set.Nonempty.subset_one_iff {α : Type u_2} [One α] {s : Set α} (h : s.Nonempty) :
        s 1 s = 1
        theorem Set.Nonempty.subset_zero_iff {α : Type u_2} [Zero α] {s : Set α} (h : s.Nonempty) :
        s 0 s = 0
        def Set.singletonOneHom {α : Type u_2} [One α] :
        OneHom α (Set α)

        The singleton operation as a OneHom.

        Equations
        Instances For
          def Set.singletonZeroHom {α : Type u_2} [Zero α] :
          ZeroHom α (Set α)

          The singleton operation as a ZeroHom.

          Equations
          Instances For
            @[simp]
            theorem Set.image_op_one {α : Type u_2} [One α] :
            theorem Set.image_op_zero {α : Type u_2} [Zero α] :
            @[simp]
            theorem Set.one_prod_one {α : Type u_2} {β : Type u_3} [One α] [One β] :
            1 ×ˢ 1 = 1
            @[simp]
            theorem Set.zero_prod_zero {α : Type u_2} {β : Type u_3} [Zero α] [Zero β] :
            0 ×ˢ 0 = 0
            @[deprecated Set.zero_prod_zero (since := "2025-03-11")]
            theorem Set.zero_sum_zero {α : Type u_2} {β : Type u_3} [Zero α] [Zero β] :
            0 ×ˢ 0 = 0

            Alias of Set.zero_prod_zero.

            Set negation/inversion #

            def Set.inv {α : Type u_2} [Inv α] :
            Inv (Set α)

            The pointwise inversion of set s⁻¹ is defined as {x | x⁻¹ ∈ s} in scope Pointwise. It is equal to {x⁻¹ | x ∈ s}, see Set.image_inv_eq_inv.

            Equations
            Instances For
              def Set.neg {α : Type u_2} [Neg α] :
              Neg (Set α)

              The pointwise negation of set -s is defined as {x | -x ∈ s} in scope Pointwise. It is equal to {-x | x ∈ s}, see Set.image_neg_eq_neg.

              Equations
              Instances For
                @[simp]
                theorem Set.mem_inv {α : Type u_2} [Inv α] {s : Set α} {a : α} :
                @[simp]
                theorem Set.mem_neg {α : Type u_2} [Neg α] {s : Set α} {a : α} :
                a -s -a s
                @[simp]
                theorem Set.inv_preimage {α : Type u_2} [Inv α] {s : Set α} :
                @[simp]
                theorem Set.neg_preimage {α : Type u_2} [Neg α] {s : Set α} :
                @[simp]
                theorem Set.inv_empty {α : Type u_2} [Inv α] :
                @[simp]
                theorem Set.neg_empty {α : Type u_2} [Neg α] :
                @[simp]
                theorem Set.inv_univ {α : Type u_2} [Inv α] :
                @[simp]
                theorem Set.neg_univ {α : Type u_2} [Neg α] :
                @[simp]
                theorem Set.inter_inv {α : Type u_2} [Inv α] {s t : Set α} :
                @[simp]
                theorem Set.inter_neg {α : Type u_2} [Neg α] {s t : Set α} :
                -(s t) = -s -t
                @[simp]
                theorem Set.union_inv {α : Type u_2} [Inv α] {s t : Set α} :
                @[simp]
                theorem Set.union_neg {α : Type u_2} [Neg α] {s t : Set α} :
                -(s t) = -s -t
                @[simp]
                theorem Set.compl_inv {α : Type u_2} [Inv α] {s : Set α} :
                @[simp]
                theorem Set.compl_neg {α : Type u_2} [Neg α] {s : Set α} :
                -s = (-s)
                @[simp]
                theorem Set.inv_prod {α : Type u_2} {β : Type u_3} [Inv α] [Inv β] (s : Set α) (t : Set β) :
                @[simp]
                theorem Set.neg_prod {α : Type u_2} {β : Type u_3} [Neg α] [Neg β] (s : Set α) (t : Set β) :
                -s ×ˢ t = (-s) ×ˢ (-t)
                @[deprecated Set.neg_prod (since := "2025-03-11")]
                theorem Set.neg_sum {α : Type u_2} {β : Type u_3} [Neg α] [Neg β] (s : Set α) (t : Set β) :
                -s ×ˢ t = (-s) ×ˢ (-t)

                Alias of Set.neg_prod.

                theorem Set.inv_mem_inv {α : Type u_2} [InvolutiveInv α] {s : Set α} {a : α} :
                theorem Set.neg_mem_neg {α : Type u_2} [InvolutiveNeg α] {s : Set α} {a : α} :
                -a -s a s
                @[simp]
                theorem Set.nonempty_inv {α : Type u_2} [InvolutiveInv α] {s : Set α} :
                @[simp]
                theorem Set.nonempty_neg {α : Type u_2} [InvolutiveNeg α] {s : Set α} :
                theorem Set.Nonempty.inv {α : Type u_2} [InvolutiveInv α] {s : Set α} (h : s.Nonempty) :
                theorem Set.Nonempty.neg {α : Type u_2} [InvolutiveNeg α] {s : Set α} (h : s.Nonempty) :
                @[simp]
                theorem Set.image_inv_eq_inv {α : Type u_2} [InvolutiveInv α] {s : Set α} :
                (fun (x : α) => x⁻¹) '' s = s⁻¹
                @[simp]
                theorem Set.image_neg_eq_neg {α : Type u_2} [InvolutiveNeg α] {s : Set α} :
                (fun (x : α) => -x) '' s = -s
                @[simp]
                theorem Set.inv_eq_empty {α : Type u_2} [InvolutiveInv α] {s : Set α} :
                @[simp]
                theorem Set.neg_eq_empty {α : Type u_2} [InvolutiveNeg α] {s : Set α} :
                -s = s =
                instance Set.involutiveInv {α : Type u_2} [InvolutiveInv α] :
                Equations
                instance Set.involutiveNeg {α : Type u_2} [InvolutiveNeg α] :
                Equations
                @[simp]
                theorem Set.inv_subset_inv {α : Type u_2} [InvolutiveInv α] {s t : Set α} :
                @[simp]
                theorem Set.neg_subset_neg {α : Type u_2} [InvolutiveNeg α] {s t : Set α} :
                -s -t s t
                theorem Set.inv_subset {α : Type u_2} [InvolutiveInv α] {s t : Set α} :
                theorem Set.neg_subset {α : Type u_2} [InvolutiveNeg α] {s t : Set α} :
                -s t s -t
                @[simp]
                theorem Set.inv_singleton {α : Type u_2} [InvolutiveInv α] (a : α) :
                @[simp]
                theorem Set.neg_singleton {α : Type u_2} [InvolutiveNeg α] (a : α) :
                @[simp]
                theorem Set.inv_insert {α : Type u_2} [InvolutiveInv α] (a : α) (s : Set α) :
                @[simp]
                theorem Set.neg_insert {α : Type u_2} [InvolutiveNeg α] (a : α) (s : Set α) :
                -insert a s = insert (-a) (-s)
                theorem Set.inv_range {α : Type u_2} [InvolutiveInv α] {ι : Sort u_5} {f : ια} :
                (range f)⁻¹ = range fun (i : ι) => (f i)⁻¹
                theorem Set.neg_range {α : Type u_2} [InvolutiveNeg α] {ι : Sort u_5} {f : ια} :
                -range f = range fun (i : ι) => -f i

                Set addition/multiplication #

                def Set.mul {α : Type u_2} [Mul α] :
                Mul (Set α)

                The pointwise multiplication of sets s * t and t is defined as {x * y | x ∈ s, y ∈ t} in scope Pointwise.

                Equations
                Instances For
                  def Set.add {α : Type u_2} [Add α] :
                  Add (Set α)

                  The pointwise addition of sets s + t is defined as {x + y | x ∈ s, y ∈ t} in locale Pointwise.

                  Equations
                  Instances For
                    @[simp]
                    theorem Set.image2_mul {α : Type u_2} [Mul α] {s t : Set α} :
                    image2 (fun (x1 x2 : α) => x1 * x2) s t = s * t
                    @[simp]
                    theorem Set.image2_add {α : Type u_2} [Add α] {s t : Set α} :
                    image2 (fun (x1 x2 : α) => x1 + x2) s t = s + t
                    theorem Set.mem_mul {α : Type u_2} [Mul α] {s t : Set α} {a : α} :
                    a s * t xs, yt, x * y = a
                    theorem Set.mem_add {α : Type u_2} [Add α] {s t : Set α} {a : α} :
                    a s + t xs, yt, x + y = a
                    theorem Set.mul_mem_mul {α : Type u_2} [Mul α] {s t : Set α} {a b : α} :
                    a sb ta * b s * t
                    theorem Set.add_mem_add {α : Type u_2} [Add α] {s t : Set α} {a b : α} :
                    a sb ta + b s + t
                    theorem Set.image_mul_prod {α : Type u_2} [Mul α] {s t : Set α} :
                    (fun (x : α × α) => x.1 * x.2) '' s ×ˢ t = s * t
                    theorem Set.add_image_prod {α : Type u_2} [Add α] {s t : Set α} :
                    (fun (x : α × α) => x.1 + x.2) '' s ×ˢ t = s + t
                    @[simp]
                    theorem Set.empty_mul {α : Type u_2} [Mul α] {s : Set α} :
                    @[simp]
                    theorem Set.empty_add {α : Type u_2} [Add α] {s : Set α} :
                    @[simp]
                    theorem Set.mul_empty {α : Type u_2} [Mul α] {s : Set α} :
                    @[simp]
                    theorem Set.add_empty {α : Type u_2} [Add α] {s : Set α} :
                    @[simp]
                    theorem Set.mul_eq_empty {α : Type u_2} [Mul α] {s t : Set α} :
                    s * t = s = t =
                    @[simp]
                    theorem Set.add_eq_empty {α : Type u_2} [Add α] {s t : Set α} :
                    s + t = s = t =
                    @[simp]
                    theorem Set.mul_nonempty {α : Type u_2} [Mul α] {s t : Set α} :
                    @[simp]
                    theorem Set.add_nonempty {α : Type u_2} [Add α] {s t : Set α} :
                    theorem Set.Nonempty.mul {α : Type u_2} [Mul α] {s t : Set α} :
                    s.Nonemptyt.Nonempty(s * t).Nonempty
                    theorem Set.Nonempty.add {α : Type u_2} [Add α] {s t : Set α} :
                    s.Nonemptyt.Nonempty(s + t).Nonempty
                    theorem Set.Nonempty.of_mul_left {α : Type u_2} [Mul α] {s t : Set α} :
                    (s * t).Nonemptys.Nonempty
                    theorem Set.Nonempty.of_add_left {α : Type u_2} [Add α] {s t : Set α} :
                    (s + t).Nonemptys.Nonempty
                    theorem Set.Nonempty.of_mul_right {α : Type u_2} [Mul α] {s t : Set α} :
                    (s * t).Nonemptyt.Nonempty
                    theorem Set.Nonempty.of_add_right {α : Type u_2} [Add α] {s t : Set α} :
                    (s + t).Nonemptyt.Nonempty
                    @[simp]
                    theorem Set.mul_singleton {α : Type u_2} [Mul α] {s : Set α} {b : α} :
                    s * {b} = (fun (x : α) => x * b) '' s
                    @[simp]
                    theorem Set.add_singleton {α : Type u_2} [Add α] {s : Set α} {b : α} :
                    s + {b} = (fun (x : α) => x + b) '' s
                    @[simp]
                    theorem Set.singleton_mul {α : Type u_2} [Mul α] {t : Set α} {a : α} :
                    {a} * t = (fun (x : α) => a * x) '' t
                    @[simp]
                    theorem Set.singleton_add {α : Type u_2} [Add α] {t : Set α} {a : α} :
                    {a} + t = (fun (x : α) => a + x) '' t
                    theorem Set.singleton_mul_singleton {α : Type u_2} [Mul α] {a b : α} :
                    {a} * {b} = {a * b}
                    theorem Set.singleton_add_singleton {α : Type u_2} [Add α] {a b : α} :
                    {a} + {b} = {a + b}
                    theorem Set.mul_subset_mul {α : Type u_2} [Mul α] {s₁ s₂ t₁ t₂ : Set α} :
                    s₁ t₁s₂ t₂s₁ * s₂ t₁ * t₂
                    theorem Set.add_subset_add {α : Type u_2} [Add α] {s₁ s₂ t₁ t₂ : Set α} :
                    s₁ t₁s₂ t₂s₁ + s₂ t₁ + t₂
                    theorem Set.mul_subset_mul_left {α : Type u_2} [Mul α] {s t₁ t₂ : Set α} :
                    t₁ t₂s * t₁ s * t₂
                    theorem Set.add_subset_add_left {α : Type u_2} [Add α] {s t₁ t₂ : Set α} :
                    t₁ t₂s + t₁ s + t₂
                    theorem Set.mul_subset_mul_right {α : Type u_2} [Mul α] {s₁ s₂ t : Set α} :
                    s₁ s₂s₁ * t s₂ * t
                    theorem Set.add_subset_add_right {α : Type u_2} [Add α] {s₁ s₂ t : Set α} :
                    s₁ s₂s₁ + t s₂ + t
                    instance Set.instMulLeftMono {α : Type u_2} [Mul α] :
                    instance Set.instAddLeftMono {α : Type u_2} [Add α] :
                    instance Set.instMulRightMono {α : Type u_2} [Mul α] :
                    instance Set.instAddRightMono {α : Type u_2} [Add α] :
                    theorem Set.mul_subset_iff {α : Type u_2} [Mul α] {s t u : Set α} :
                    s * t u xs, yt, x * y u
                    theorem Set.add_subset_iff {α : Type u_2} [Add α] {s t u : Set α} :
                    s + t u xs, yt, x + y u
                    theorem Set.union_mul {α : Type u_2} [Mul α] {s₁ s₂ t : Set α} :
                    (s₁ s₂) * t = s₁ * t s₂ * t
                    theorem Set.union_add {α : Type u_2} [Add α] {s₁ s₂ t : Set α} :
                    s₁ s₂ + t = s₁ + t (s₂ + t)
                    theorem Set.mul_union {α : Type u_2} [Mul α] {s t₁ t₂ : Set α} :
                    s * (t₁ t₂) = s * t₁ s * t₂
                    theorem Set.add_union {α : Type u_2} [Add α] {s t₁ t₂ : Set α} :
                    s + (t₁ t₂) = s + t₁ (s + t₂)
                    theorem Set.inter_mul_subset {α : Type u_2} [Mul α] {s₁ s₂ t : Set α} :
                    s₁ s₂ * t s₁ * t (s₂ * t)
                    theorem Set.inter_add_subset {α : Type u_2} [Add α] {s₁ s₂ t : Set α} :
                    s₁ s₂ + t (s₁ + t) (s₂ + t)
                    theorem Set.mul_inter_subset {α : Type u_2} [Mul α] {s t₁ t₂ : Set α} :
                    s * (t₁ t₂) s * t₁ (s * t₂)
                    theorem Set.add_inter_subset {α : Type u_2} [Add α] {s t₁ t₂ : Set α} :
                    s + t₁ t₂ (s + t₁) (s + t₂)
                    theorem Set.inter_mul_union_subset_union {α : Type u_2} [Mul α] {s₁ s₂ t₁ t₂ : Set α} :
                    s₁ s₂ * (t₁ t₂) s₁ * t₁ s₂ * t₂
                    theorem Set.inter_add_union_subset_union {α : Type u_2} [Add α] {s₁ s₂ t₁ t₂ : Set α} :
                    s₁ s₂ + (t₁ t₂) s₁ + t₁ (s₂ + t₂)
                    theorem Set.union_mul_inter_subset_union {α : Type u_2} [Mul α] {s₁ s₂ t₁ t₂ : Set α} :
                    (s₁ s₂) * (t₁ t₂) s₁ * t₁ s₂ * t₂
                    theorem Set.union_add_inter_subset_union {α : Type u_2} [Add α] {s₁ s₂ t₁ t₂ : Set α} :
                    s₁ s₂ + t₁ t₂ s₁ + t₁ (s₂ + t₂)
                    def Set.singletonMulHom {α : Type u_2} [Mul α] :
                    α →ₙ* Set α

                    The singleton operation as a MulHom.

                    Equations
                    Instances For
                      def Set.singletonAddHom {α : Type u_2} [Add α] :
                      α →ₙ+ Set α

                      The singleton operation as an AddHom.

                      Equations
                      Instances For
                        @[simp]
                        @[simp]
                        @[simp]
                        theorem Set.singletonMulHom_apply {α : Type u_2} [Mul α] (a : α) :
                        @[simp]
                        theorem Set.singletonAddHom_apply {α : Type u_2} [Add α] (a : α) :
                        @[simp]
                        theorem Set.image_op_mul {α : Type u_2} [Mul α] {s t : Set α} :
                        @[simp]
                        theorem Set.image_op_add {α : Type u_2} [Add α] {s t : Set α} :
                        @[simp]
                        theorem Set.prod_mul_prod_comm {α : Type u_2} {β : Type u_3} [Mul α] [Mul β] (s₁ s₂ : Set α) (t₁ t₂ : Set β) :
                        s₁ ×ˢ t₁ * s₂ ×ˢ t₂ = (s₁ * s₂) ×ˢ (t₁ * t₂)
                        @[simp]
                        theorem Set.prod_add_prod_comm {α : Type u_2} {β : Type u_3} [Add α] [Add β] (s₁ s₂ : Set α) (t₁ t₂ : Set β) :
                        s₁ ×ˢ t₁ + s₂ ×ˢ t₂ = (s₁ + s₂) ×ˢ (t₁ + t₂)
                        @[deprecated Set.prod_add_prod_comm (since := "2025-03-11")]
                        theorem Set.sum_add_sum_comm {α : Type u_2} {β : Type u_3} [Add α] [Add β] (s₁ s₂ : Set α) (t₁ t₂ : Set β) :
                        s₁ ×ˢ t₁ + s₂ ×ˢ t₂ = (s₁ + s₂) ×ˢ (t₁ + t₂)

                        Alias of Set.prod_add_prod_comm.

                        Set subtraction/division #

                        def Set.div {α : Type u_2} [Div α] :
                        Div (Set α)

                        The pointwise division of sets s / t is defined as {x / y | x ∈ s, y ∈ t} in locale Pointwise.

                        Equations
                        Instances For
                          def Set.sub {α : Type u_2} [Sub α] :
                          Sub (Set α)

                          The pointwise subtraction of sets s - t is defined as {x - y | x ∈ s, y ∈ t} in locale Pointwise.

                          Equations
                          Instances For
                            @[simp]
                            theorem Set.image2_div {α : Type u_2} [Div α] {s t : Set α} :
                            image2 (fun (x1 x2 : α) => x1 / x2) s t = s / t
                            @[simp]
                            theorem Set.image2_sub {α : Type u_2} [Sub α] {s t : Set α} :
                            image2 (fun (x1 x2 : α) => x1 - x2) s t = s - t
                            theorem Set.mem_div {α : Type u_2} [Div α] {s t : Set α} {a : α} :
                            a s / t xs, yt, x / y = a
                            theorem Set.mem_sub {α : Type u_2} [Sub α] {s t : Set α} {a : α} :
                            a s - t xs, yt, x - y = a
                            theorem Set.div_mem_div {α : Type u_2} [Div α] {s t : Set α} {a b : α} :
                            a sb ta / b s / t
                            theorem Set.sub_mem_sub {α : Type u_2} [Sub α] {s t : Set α} {a b : α} :
                            a sb ta - b s - t
                            theorem Set.image_div_prod {α : Type u_2} [Div α] {s t : Set α} :
                            (fun (x : α × α) => x.1 / x.2) '' s ×ˢ t = s / t
                            theorem Set.sub_image_prod {α : Type u_2} [Sub α] {s t : Set α} :
                            (fun (x : α × α) => x.1 - x.2) '' s ×ˢ t = s - t
                            @[simp]
                            theorem Set.empty_div {α : Type u_2} [Div α] {s : Set α} :
                            @[simp]
                            theorem Set.empty_sub {α : Type u_2} [Sub α] {s : Set α} :
                            @[simp]
                            theorem Set.div_empty {α : Type u_2} [Div α] {s : Set α} :
                            @[simp]
                            theorem Set.sub_empty {α : Type u_2} [Sub α] {s : Set α} :
                            @[simp]
                            theorem Set.div_eq_empty {α : Type u_2} [Div α] {s t : Set α} :
                            s / t = s = t =
                            @[simp]
                            theorem Set.sub_eq_empty {α : Type u_2} [Sub α] {s t : Set α} :
                            s - t = s = t =
                            @[simp]
                            theorem Set.div_nonempty {α : Type u_2} [Div α] {s t : Set α} :
                            @[simp]
                            theorem Set.sub_nonempty {α : Type u_2} [Sub α] {s t : Set α} :
                            theorem Set.Nonempty.div {α : Type u_2} [Div α] {s t : Set α} :
                            s.Nonemptyt.Nonempty(s / t).Nonempty
                            theorem Set.Nonempty.sub {α : Type u_2} [Sub α] {s t : Set α} :
                            s.Nonemptyt.Nonempty(s - t).Nonempty
                            theorem Set.Nonempty.of_div_left {α : Type u_2} [Div α] {s t : Set α} :
                            (s / t).Nonemptys.Nonempty
                            theorem Set.Nonempty.of_sub_left {α : Type u_2} [Sub α] {s t : Set α} :
                            (s - t).Nonemptys.Nonempty
                            theorem Set.Nonempty.of_div_right {α : Type u_2} [Div α] {s t : Set α} :
                            (s / t).Nonemptyt.Nonempty
                            theorem Set.Nonempty.of_sub_right {α : Type u_2} [Sub α] {s t : Set α} :
                            (s - t).Nonemptyt.Nonempty
                            @[simp]
                            theorem Set.div_singleton {α : Type u_2} [Div α] {s : Set α} {b : α} :
                            s / {b} = (fun (x : α) => x / b) '' s
                            @[simp]
                            theorem Set.sub_singleton {α : Type u_2} [Sub α] {s : Set α} {b : α} :
                            s - {b} = (fun (x : α) => x - b) '' s
                            @[simp]
                            theorem Set.singleton_div {α : Type u_2} [Div α] {t : Set α} {a : α} :
                            {a} / t = (fun (x1 x2 : α) => x1 / x2) a '' t
                            @[simp]
                            theorem Set.singleton_sub {α : Type u_2} [Sub α] {t : Set α} {a : α} :
                            {a} - t = (fun (x1 x2 : α) => x1 - x2) a '' t
                            theorem Set.singleton_div_singleton {α : Type u_2} [Div α] {a b : α} :
                            {a} / {b} = {a / b}
                            theorem Set.singleton_sub_singleton {α : Type u_2} [Sub α] {a b : α} :
                            {a} - {b} = {a - b}
                            theorem Set.div_subset_div {α : Type u_2} [Div α] {s₁ s₂ t₁ t₂ : Set α} :
                            s₁ t₁s₂ t₂s₁ / s₂ t₁ / t₂
                            theorem Set.sub_subset_sub {α : Type u_2} [Sub α] {s₁ s₂ t₁ t₂ : Set α} :
                            s₁ t₁s₂ t₂s₁ - s₂ t₁ - t₂
                            theorem Set.div_subset_div_left {α : Type u_2} [Div α] {s t₁ t₂ : Set α} :
                            t₁ t₂s / t₁ s / t₂
                            theorem Set.sub_subset_sub_left {α : Type u_2} [Sub α] {s t₁ t₂ : Set α} :
                            t₁ t₂s - t₁ s - t₂
                            theorem Set.div_subset_div_right {α : Type u_2} [Div α] {s₁ s₂ t : Set α} :
                            s₁ s₂s₁ / t s₂ / t
                            theorem Set.sub_subset_sub_right {α : Type u_2} [Sub α] {s₁ s₂ t : Set α} :
                            s₁ s₂s₁ - t s₂ - t
                            theorem Set.div_subset_iff {α : Type u_2} [Div α] {s t u : Set α} :
                            s / t u xs, yt, x / y u
                            theorem Set.sub_subset_iff {α : Type u_2} [Sub α] {s t u : Set α} :
                            s - t u xs, yt, x - y u
                            theorem Set.union_div {α : Type u_2} [Div α] {s₁ s₂ t : Set α} :
                            (s₁ s₂) / t = s₁ / t s₂ / t
                            theorem Set.union_sub {α : Type u_2} [Sub α] {s₁ s₂ t : Set α} :
                            s₁ s₂ - t = s₁ - t (s₂ - t)
                            theorem Set.div_union {α : Type u_2} [Div α] {s t₁ t₂ : Set α} :
                            s / (t₁ t₂) = s / t₁ s / t₂
                            theorem Set.sub_union {α : Type u_2} [Sub α] {s t₁ t₂ : Set α} :
                            s - (t₁ t₂) = s - t₁ (s - t₂)
                            theorem Set.inter_div_subset {α : Type u_2} [Div α] {s₁ s₂ t : Set α} :
                            s₁ s₂ / t s₁ / t (s₂ / t)
                            theorem Set.inter_sub_subset {α : Type u_2} [Sub α] {s₁ s₂ t : Set α} :
                            s₁ s₂ - t (s₁ - t) (s₂ - t)
                            theorem Set.div_inter_subset {α : Type u_2} [Div α] {s t₁ t₂ : Set α} :
                            s / (t₁ t₂) s / t₁ (s / t₂)
                            theorem Set.sub_inter_subset {α : Type u_2} [Sub α] {s t₁ t₂ : Set α} :
                            s - t₁ t₂ (s - t₁) (s - t₂)
                            theorem Set.inter_div_union_subset_union {α : Type u_2} [Div α] {s₁ s₂ t₁ t₂ : Set α} :
                            s₁ s₂ / (t₁ t₂) s₁ / t₁ s₂ / t₂
                            theorem Set.inter_sub_union_subset_union {α : Type u_2} [Sub α] {s₁ s₂ t₁ t₂ : Set α} :
                            s₁ s₂ - (t₁ t₂) s₁ - t₁ (s₂ - t₂)
                            theorem Set.union_div_inter_subset_union {α : Type u_2} [Div α] {s₁ s₂ t₁ t₂ : Set α} :
                            (s₁ s₂) / (t₁ t₂) s₁ / t₁ s₂ / t₂
                            theorem Set.union_sub_inter_subset_union {α : Type u_2} [Sub α] {s₁ s₂ t₁ t₂ : Set α} :
                            s₁ s₂ - t₁ t₂ s₁ - t₁ (s₂ - t₂)
                            def Set.NSMul {α : Type u_2} [Zero α] [Add α] :
                            SMul (Set α)

                            Repeated pointwise addition (not the same as pointwise repeated addition!) of a Set. See note [pointwise nat action].

                            Equations
                            Instances For
                              def Set.NPow {α : Type u_2} [One α] [Mul α] :
                              Pow (Set α)

                              Repeated pointwise multiplication (not the same as pointwise repeated multiplication!) of a Set. See note [pointwise nat action].

                              Equations
                              Instances For
                                def Set.ZSMul {α : Type u_2} [Zero α] [Add α] [Neg α] :
                                SMul (Set α)

                                Repeated pointwise addition/subtraction (not the same as pointwise repeated addition/subtraction!) of a Set. See note [pointwise nat action].

                                Equations
                                Instances For
                                  def Set.ZPow {α : Type u_2} [One α] [Mul α] [Inv α] :
                                  Pow (Set α)

                                  Repeated pointwise multiplication/division (not the same as pointwise repeated multiplication/division!) of a Set. See note [pointwise nat action].

                                  Equations
                                  Instances For
                                    def Set.semigroup {α : Type u_2} [Semigroup α] :

                                    Set α is a Semigroup under pointwise operations if α is.

                                    Equations
                                    Instances For

                                      Set α is an AddSemigroup under pointwise operations if α is.

                                      Equations
                                      Instances For

                                        Set α is a CommSemigroup under pointwise operations if α is.

                                        Equations
                                        Instances For

                                          Set α is an AddCommSemigroup under pointwise operations if α is.

                                          Equations
                                          Instances For
                                            theorem Set.inter_mul_union_subset {α : Type u_2} [CommSemigroup α] {s t : Set α} :
                                            s t * (s t) s * t
                                            theorem Set.inter_add_union_subset {α : Type u_2} [AddCommSemigroup α] {s t : Set α} :
                                            s t + (s t) s + t
                                            theorem Set.union_mul_inter_subset {α : Type u_2} [CommSemigroup α] {s t : Set α} :
                                            (s t) * (s t) s * t
                                            theorem Set.union_add_inter_subset {α : Type u_2} [AddCommSemigroup α] {s t : Set α} :
                                            s t + s t s + t
                                            def Set.mulOneClass {α : Type u_2} [MulOneClass α] :

                                            Set α is a MulOneClass under pointwise operations if α is.

                                            Equations
                                            Instances For

                                              Set α is an AddZeroClass under pointwise operations if α is.

                                              Equations
                                              Instances For
                                                theorem Set.subset_mul_left {α : Type u_2} [MulOneClass α] (s : Set α) {t : Set α} (ht : 1 t) :
                                                s s * t
                                                theorem Set.subset_add_left {α : Type u_2} [AddZeroClass α] (s : Set α) {t : Set α} (ht : 0 t) :
                                                s s + t
                                                theorem Set.subset_mul_right {α : Type u_2} [MulOneClass α] {s : Set α} (t : Set α) (hs : 1 s) :
                                                t s * t
                                                theorem Set.subset_add_right {α : Type u_2} [AddZeroClass α] {s : Set α} (t : Set α) (hs : 0 s) :
                                                t s + t
                                                def Set.singletonMonoidHom {α : Type u_2} [MulOneClass α] :
                                                α →* Set α

                                                The singleton operation as a MonoidHom.

                                                Equations
                                                Instances For

                                                  The singleton operation as an AddMonoidHom.

                                                  Equations
                                                  Instances For
                                                    @[simp]
                                                    def Set.monoid {α : Type u_2} [Monoid α] :
                                                    Monoid (Set α)

                                                    Set α is a Monoid under pointwise operations if α is.

                                                    Equations
                                                    Instances For
                                                      def Set.addMonoid {α : Type u_2} [AddMonoid α] :

                                                      Set α is an AddMonoid under pointwise operations if α is.

                                                      Equations
                                                      Instances For
                                                        theorem Set.pow_right_monotone {α : Type u_2} [Monoid α] {s : Set α} (hs : 1 s) :
                                                        Monotone fun (x : ) => s ^ x
                                                        theorem Set.nsmul_right_monotone {α : Type u_2} [AddMonoid α] {s : Set α} (hs : 0 s) :
                                                        Monotone fun (x : ) => x s
                                                        theorem Set.pow_subset_pow_left {α : Type u_2} [Monoid α] {s t : Set α} {n : } (hst : s t) :
                                                        s ^ n t ^ n
                                                        theorem Set.nsmul_subset_nsmul_left {α : Type u_2} [AddMonoid α] {s t : Set α} {n : } (hst : s t) :
                                                        n s n t
                                                        theorem Set.pow_subset_pow_right {α : Type u_2} [Monoid α] {s : Set α} {m n : } (hs : 1 s) (hmn : m n) :
                                                        s ^ m s ^ n
                                                        theorem Set.nsmul_subset_nsmul_right {α : Type u_2} [AddMonoid α] {s : Set α} {m n : } (hs : 0 s) (hmn : m n) :
                                                        m s n s
                                                        theorem Set.pow_subset_pow {α : Type u_2} [Monoid α] {s t : Set α} {m n : } (hst : s t) (ht : 1 t) (hmn : m n) :
                                                        s ^ m t ^ n
                                                        theorem Set.nsmul_subset_nsmul {α : Type u_2} [AddMonoid α] {s t : Set α} {m n : } (hst : s t) (ht : 0 t) (hmn : m n) :
                                                        m s n t
                                                        theorem Set.subset_pow {α : Type u_2} [Monoid α] {s : Set α} {n : } (hs : 1 s) (hn : n 0) :
                                                        s s ^ n
                                                        theorem Set.subset_nsmul {α : Type u_2} [AddMonoid α] {s : Set α} {n : } (hs : 0 s) (hn : n 0) :
                                                        s n s
                                                        theorem Set.pow_subset_pow_mul_of_sq_subset_mul {α : Type u_2} [Monoid α] {s t : Set α} {n : } (hst : s ^ 2 t * s) (hn : n 0) :
                                                        s ^ n t ^ (n - 1) * s
                                                        theorem Set.nsmul_subset_nsmul_add_of_sq_subset_add {α : Type u_2} [AddMonoid α] {s t : Set α} {n : } (hst : 2 s t + s) (hn : n 0) :
                                                        n s (n - 1) t + s
                                                        @[simp]
                                                        theorem Set.empty_pow {α : Type u_2} [Monoid α] {n : } (hn : n 0) :
                                                        @[simp]
                                                        theorem Set.nsmul_empty {α : Type u_2} [AddMonoid α] {n : } (hn : n 0) :
                                                        theorem Set.Nonempty.pow {α : Type u_2} [Monoid α] {s : Set α} (hs : s.Nonempty) {n : } :
                                                        (s ^ n).Nonempty
                                                        theorem Set.Nonempty.nsmul {α : Type u_2} [AddMonoid α] {s : Set α} (hs : s.Nonempty) {n : } :
                                                        @[simp]
                                                        theorem Set.pow_eq_empty {α : Type u_2} [Monoid α] {s : Set α} {n : } :
                                                        s ^ n = s = n 0
                                                        @[simp]
                                                        theorem Set.nsmul_eq_empty {α : Type u_2} [AddMonoid α] {s : Set α} {n : } :
                                                        n s = s = n 0
                                                        @[simp]
                                                        theorem Set.singleton_pow {α : Type u_2} [Monoid α] (a : α) (n : ) :
                                                        {a} ^ n = {a ^ n}
                                                        @[simp]
                                                        theorem Set.nsmul_singleton {α : Type u_2} [AddMonoid α] (a : α) (n : ) :
                                                        n {a} = {n a}
                                                        theorem Set.pow_mem_pow {α : Type u_2} [Monoid α] {s : Set α} {a : α} {n : } (ha : a s) :
                                                        a ^ n s ^ n
                                                        theorem Set.nsmul_mem_nsmul {α : Type u_2} [AddMonoid α] {s : Set α} {a : α} {n : } (ha : a s) :
                                                        n a n s
                                                        theorem Set.one_mem_pow {α : Type u_2} [Monoid α] {s : Set α} {n : } (hs : 1 s) :
                                                        1 s ^ n
                                                        theorem Set.zero_mem_nsmul {α : Type u_2} [AddMonoid α] {s : Set α} {n : } (hs : 0 s) :
                                                        0 n s
                                                        theorem Set.inter_pow_subset {α : Type u_2} [Monoid α] {s t : Set α} {n : } :
                                                        (s t) ^ n s ^ n t ^ n
                                                        theorem Set.inter_nsmul_subset {α : Type u_2} [AddMonoid α] {s t : Set α} {n : } :
                                                        n (s t) n s n t
                                                        theorem Set.mul_univ_of_one_mem {α : Type u_2} [Monoid α] {s : Set α} (hs : 1 s) :
                                                        theorem Set.add_univ_of_zero_mem {α : Type u_2} [AddMonoid α] {s : Set α} (hs : 0 s) :
                                                        theorem Set.univ_mul_of_one_mem {α : Type u_2} [Monoid α] {t : Set α} (ht : 1 t) :
                                                        theorem Set.univ_add_of_zero_mem {α : Type u_2} [AddMonoid α] {t : Set α} (ht : 0 t) :
                                                        @[simp]
                                                        theorem Set.univ_mul_univ {α : Type u_2} [Monoid α] :
                                                        @[simp]
                                                        theorem Set.univ_add_univ {α : Type u_2} [AddMonoid α] :
                                                        @[simp]
                                                        theorem Set.univ_pow {α : Type u_2} [Monoid α] {n : } :
                                                        n 0univ ^ n = univ
                                                        @[simp]
                                                        theorem Set.nsmul_univ {α : Type u_2} [AddMonoid α] {n : } :
                                                        n 0n univ = univ
                                                        theorem IsUnit.set {α : Type u_2} [Monoid α] {a : α} :
                                                        theorem IsAddUnit.set {α : Type u_2} [AddMonoid α] {a : α} :
                                                        theorem Set.prod_pow {α : Type u_2} {β : Type u_3} [Monoid α] [Monoid β] (s : Set α) (t : Set β) (n : ) :
                                                        s ×ˢ t ^ n = (s ^ n) ×ˢ (t ^ n)
                                                        theorem Set.nsmul_prod {α : Type u_2} {β : Type u_3} [AddMonoid α] [AddMonoid β] (s : Set α) (t : Set β) (n : ) :
                                                        n s ×ˢ t = (n s) ×ˢ (n t)
                                                        theorem Set.Nontrivial.mul_left {α : Type u_2} [Mul α] [IsLeftCancelMul α] {s t : Set α} :
                                                        t.Nontrivials.Nonempty(s * t).Nontrivial
                                                        theorem Set.Nontrivial.add_left {α : Type u_2} [Add α] [IsLeftCancelAdd α] {s t : Set α} :
                                                        t.Nontrivials.Nonempty(s + t).Nontrivial
                                                        theorem Set.Nontrivial.mul {α : Type u_2} [Mul α] [IsLeftCancelMul α] {s t : Set α} (hs : s.Nontrivial) (ht : t.Nontrivial) :
                                                        theorem Set.Nontrivial.add {α : Type u_2} [Add α] [IsLeftCancelAdd α] {s t : Set α} (hs : s.Nontrivial) (ht : t.Nontrivial) :
                                                        theorem Set.Nontrivial.mul_right {α : Type u_2} [Mul α] [IsRightCancelMul α] {s t : Set α} :
                                                        s.Nontrivialt.Nonempty(s * t).Nontrivial
                                                        theorem Set.Nontrivial.add_right {α : Type u_2} [Add α] [IsRightCancelAdd α] {s t : Set α} :
                                                        s.Nontrivialt.Nonempty(s + t).Nontrivial
                                                        theorem Set.Nontrivial.pow {α : Type u_2} [CancelMonoid α] {s : Set α} (hs : s.Nontrivial) {n : } :
                                                        n 0(s ^ n).Nontrivial
                                                        theorem Set.Nontrivial.nsmul {α : Type u_2} [AddCancelMonoid α] {s : Set α} (hs : s.Nontrivial) {n : } :
                                                        n 0(n s).Nontrivial
                                                        def Set.commMonoid {α : Type u_2} [CommMonoid α] :

                                                        Set α is a CommMonoid under pointwise operations if α is.

                                                        Equations
                                                        Instances For

                                                          Set α is an AddCommMonoid under pointwise operations if α is.

                                                          Equations
                                                          Instances For
                                                            theorem Set.mul_eq_one_iff {α : Type u_2} [DivisionMonoid α] {s t : Set α} :
                                                            s * t = 1 ∃ (a : α) (b : α), s = {a} t = {b} a * b = 1
                                                            theorem Set.add_eq_zero_iff {α : Type u_2} [SubtractionMonoid α] {s t : Set α} :
                                                            s + t = 0 ∃ (a : α) (b : α), s = {a} t = {b} a + b = 0

                                                            Set α is a division monoid under pointwise operations if α is.

                                                            Equations
                                                            • One or more equations did not get rendered due to their size.
                                                            Instances For

                                                              Set α is a subtraction monoid under pointwise operations if α is.

                                                              Equations
                                                              • One or more equations did not get rendered due to their size.
                                                              Instances For
                                                                @[simp]
                                                                theorem Set.isUnit_iff {α : Type u_2} [DivisionMonoid α] {s : Set α} :
                                                                IsUnit s ∃ (a : α), s = {a} IsUnit a
                                                                @[simp]
                                                                theorem Set.isAddUnit_iff {α : Type u_2} [SubtractionMonoid α] {s : Set α} :
                                                                IsAddUnit s ∃ (a : α), s = {a} IsAddUnit a
                                                                @[simp]
                                                                @[simp]
                                                                theorem Set.subset_div_left {α : Type u_2} [DivisionMonoid α] {s t : Set α} (ht : 1 t) :
                                                                s s / t
                                                                theorem Set.subset_sub_left {α : Type u_2} [SubtractionMonoid α] {s t : Set α} (ht : 0 t) :
                                                                s s - t
                                                                theorem Set.inv_subset_div_right {α : Type u_2} [DivisionMonoid α] {s t : Set α} (hs : 1 s) :
                                                                t⁻¹ s / t
                                                                theorem Set.neg_subset_sub_right {α : Type u_2} [SubtractionMonoid α] {s t : Set α} (hs : 0 s) :
                                                                -t s - t
                                                                @[simp]
                                                                theorem Set.empty_zpow {α : Type u_2} [DivisionMonoid α] {n : } (hn : n 0) :
                                                                @[simp]
                                                                theorem Set.zsmul_empty {α : Type u_2} [SubtractionMonoid α] {n : } (hn : n 0) :
                                                                theorem Set.Nonempty.zpow {α : Type u_2} [DivisionMonoid α] {s : Set α} (hs : s.Nonempty) {n : } :
                                                                (s ^ n).Nonempty
                                                                theorem Set.Nonempty.zsmul {α : Type u_2} [SubtractionMonoid α] {s : Set α} (hs : s.Nonempty) {n : } :
                                                                @[simp]
                                                                theorem Set.zpow_eq_empty {α : Type u_2} [DivisionMonoid α] {s : Set α} {n : } :
                                                                s ^ n = s = n 0
                                                                @[simp]
                                                                theorem Set.zsmul_eq_empty {α : Type u_2} [SubtractionMonoid α] {s : Set α} {n : } :
                                                                n s = s = n 0
                                                                @[simp]
                                                                theorem Set.singleton_zpow {α : Type u_2} [DivisionMonoid α] (a : α) (n : ) :
                                                                {a} ^ n = {a ^ n}
                                                                @[simp]
                                                                theorem Set.zsmul_singleton {α : Type u_2} [SubtractionMonoid α] (a : α) (n : ) :
                                                                n {a} = {n a}

                                                                Set α is a commutative division monoid under pointwise operations if α is.

                                                                Equations
                                                                Instances For

                                                                  Set α is a commutative subtraction monoid under pointwise operations if α is.

                                                                  Equations
                                                                  Instances For

                                                                    Note that Set is not a Group because s / s ≠ 1 in general.

                                                                    @[simp]
                                                                    theorem Set.one_mem_div_iff {α : Type u_2} [Group α] {s t : Set α} :
                                                                    1 s / t ¬Disjoint s t
                                                                    @[simp]
                                                                    theorem Set.zero_mem_sub_iff {α : Type u_2} [AddGroup α] {s t : Set α} :
                                                                    0 s - t ¬Disjoint s t
                                                                    @[simp]
                                                                    theorem Set.one_mem_inv_mul_iff {α : Type u_2} [Group α] {s t : Set α} :
                                                                    @[simp]
                                                                    theorem Set.zero_mem_neg_add_iff {α : Type u_2} [AddGroup α] {s t : Set α} :
                                                                    0 -t + s ¬Disjoint s t
                                                                    theorem Set.one_notMem_div_iff {α : Type u_2} [Group α] {s t : Set α} :
                                                                    1s / t Disjoint s t
                                                                    theorem Set.zero_notMem_sub_iff {α : Type u_2} [AddGroup α] {s t : Set α} :
                                                                    0s - t Disjoint s t
                                                                    @[deprecated Set.zero_notMem_sub_iff (since := "2025-05-23")]
                                                                    theorem Set.not_zero_mem_sub_iff {α : Type u_2} [AddGroup α] {s t : Set α} :
                                                                    0s - t Disjoint s t

                                                                    Alias of Set.zero_notMem_sub_iff.

                                                                    @[deprecated Set.one_notMem_div_iff (since := "2025-05-23")]
                                                                    theorem Set.not_one_mem_div_iff {α : Type u_2} [Group α] {s t : Set α} :
                                                                    1s / t Disjoint s t

                                                                    Alias of Set.one_notMem_div_iff.

                                                                    theorem Set.one_notMem_inv_mul_iff {α : Type u_2} [Group α] {s t : Set α} :
                                                                    1t⁻¹ * s Disjoint s t
                                                                    theorem Set.zero_notMem_neg_add_iff {α : Type u_2} [AddGroup α] {s t : Set α} :
                                                                    0-t + s Disjoint s t
                                                                    @[deprecated Set.zero_notMem_neg_add_iff (since := "2025-05-23")]
                                                                    theorem Set.not_zero_mem_neg_add_iff {α : Type u_2} [AddGroup α] {s t : Set α} :
                                                                    0-t + s Disjoint s t

                                                                    Alias of Set.zero_notMem_neg_add_iff.

                                                                    @[deprecated Set.one_notMem_inv_mul_iff (since := "2025-05-23")]
                                                                    theorem Set.not_one_mem_inv_mul_iff {α : Type u_2} [Group α] {s t : Set α} :
                                                                    1t⁻¹ * s Disjoint s t

                                                                    Alias of Set.one_notMem_inv_mul_iff.

                                                                    theorem Disjoint.one_notMem_div_set {α : Type u_2} [Group α] {s t : Set α} :
                                                                    Disjoint s t1s / t

                                                                    Alias of the reverse direction of Set.one_notMem_div_iff.

                                                                    theorem Disjoint.zero_notMem_sub_set {α : Type u_2} [AddGroup α] {s t : Set α} :
                                                                    Disjoint s t0s - t
                                                                    @[deprecated Disjoint.zero_notMem_sub_set (since := "2025-05-23")]
                                                                    theorem Disjoint.zero_not_mem_sub_set {α : Type u_2} [AddGroup α] {s t : Set α} :
                                                                    Disjoint s t0s - t

                                                                    Alias of Disjoint.zero_notMem_sub_set.

                                                                    @[deprecated Disjoint.one_notMem_div_set (since := "2025-05-23")]
                                                                    theorem Disjoint.one_not_mem_div_set {α : Type u_2} [Group α] {s t : Set α} :
                                                                    Disjoint s t1s / t

                                                                    Alias of the reverse direction of Set.one_notMem_div_iff.


                                                                    Alias of the reverse direction of Set.one_notMem_div_iff.

                                                                    theorem Set.Nonempty.one_mem_div {α : Type u_2} [Group α] {s : Set α} (h : s.Nonempty) :
                                                                    1 s / s
                                                                    theorem Set.Nonempty.zero_mem_sub {α : Type u_2} [AddGroup α] {s : Set α} (h : s.Nonempty) :
                                                                    0 s - s
                                                                    theorem Set.isUnit_singleton {α : Type u_2} [Group α] (a : α) :
                                                                    theorem Set.isAddUnit_singleton {α : Type u_2} [AddGroup α] (a : α) :
                                                                    @[simp]
                                                                    theorem Set.isUnit_iff_singleton {α : Type u_2} [Group α] {s : Set α} :
                                                                    IsUnit s ∃ (a : α), s = {a}
                                                                    @[simp]
                                                                    theorem Set.isAddUnit_iff_singleton {α : Type u_2} [AddGroup α] {s : Set α} :
                                                                    IsAddUnit s ∃ (a : α), s = {a}
                                                                    @[simp]
                                                                    theorem Set.image_mul_left {α : Type u_2} [Group α] {t : Set α} {a : α} :
                                                                    (fun (x : α) => a * x) '' t = (fun (x : α) => a⁻¹ * x) ⁻¹' t
                                                                    @[simp]
                                                                    theorem Set.image_add_left {α : Type u_2} [AddGroup α] {t : Set α} {a : α} :
                                                                    (fun (x : α) => a + x) '' t = (fun (x : α) => -a + x) ⁻¹' t
                                                                    @[simp]
                                                                    theorem Set.image_mul_right {α : Type u_2} [Group α] {t : Set α} {b : α} :
                                                                    (fun (x : α) => x * b) '' t = (fun (x : α) => x * b⁻¹) ⁻¹' t
                                                                    @[simp]
                                                                    theorem Set.image_add_right {α : Type u_2} [AddGroup α] {t : Set α} {b : α} :
                                                                    (fun (x : α) => x + b) '' t = (fun (x : α) => x + -b) ⁻¹' t
                                                                    theorem Set.image_mul_left' {α : Type u_2} [Group α] {t : Set α} {a : α} :
                                                                    (fun (x : α) => a⁻¹ * x) '' t = (fun (x : α) => a * x) ⁻¹' t
                                                                    theorem Set.image_add_left' {α : Type u_2} [AddGroup α] {t : Set α} {a : α} :
                                                                    (fun (x : α) => -a + x) '' t = (fun (x : α) => a + x) ⁻¹' t
                                                                    theorem Set.image_mul_right' {α : Type u_2} [Group α] {t : Set α} {b : α} :
                                                                    (fun (x : α) => x * b⁻¹) '' t = (fun (x : α) => x * b) ⁻¹' t
                                                                    theorem Set.image_add_right' {α : Type u_2} [AddGroup α] {t : Set α} {b : α} :
                                                                    (fun (x : α) => x + -b) '' t = (fun (x : α) => x + b) ⁻¹' t
                                                                    @[simp]
                                                                    theorem Set.preimage_mul_left_singleton {α : Type u_2} [Group α] {a b : α} :
                                                                    (fun (x : α) => a * x) ⁻¹' {b} = {a⁻¹ * b}
                                                                    @[simp]
                                                                    theorem Set.preimage_add_left_singleton {α : Type u_2} [AddGroup α] {a b : α} :
                                                                    (fun (x : α) => a + x) ⁻¹' {b} = {-a + b}
                                                                    @[simp]
                                                                    theorem Set.preimage_mul_right_singleton {α : Type u_2} [Group α] {a b : α} :
                                                                    (fun (x : α) => x * a) ⁻¹' {b} = {b * a⁻¹}
                                                                    @[simp]
                                                                    theorem Set.preimage_add_right_singleton {α : Type u_2} [AddGroup α] {a b : α} :
                                                                    (fun (x : α) => x + a) ⁻¹' {b} = {b + -a}
                                                                    @[simp]
                                                                    theorem Set.preimage_mul_left_one {α : Type u_2} [Group α] {a : α} :
                                                                    (fun (x : α) => a * x) ⁻¹' 1 = {a⁻¹}
                                                                    @[simp]
                                                                    theorem Set.preimage_add_left_zero {α : Type u_2} [AddGroup α] {a : α} :
                                                                    (fun (x : α) => a + x) ⁻¹' 0 = {-a}
                                                                    @[simp]
                                                                    theorem Set.preimage_mul_right_one {α : Type u_2} [Group α] {b : α} :
                                                                    (fun (x : α) => x * b) ⁻¹' 1 = {b⁻¹}
                                                                    @[simp]
                                                                    theorem Set.preimage_add_right_zero {α : Type u_2} [AddGroup α] {b : α} :
                                                                    (fun (x : α) => x + b) ⁻¹' 0 = {-b}
                                                                    theorem Set.preimage_mul_left_one' {α : Type u_2} [Group α] {a : α} :
                                                                    (fun (x : α) => a⁻¹ * x) ⁻¹' 1 = {a}
                                                                    theorem Set.preimage_add_left_zero' {α : Type u_2} [AddGroup α] {a : α} :
                                                                    (fun (x : α) => -a + x) ⁻¹' 0 = {a}
                                                                    theorem Set.preimage_mul_right_one' {α : Type u_2} [Group α] {b : α} :
                                                                    (fun (x : α) => x * b⁻¹) ⁻¹' 1 = {b}
                                                                    theorem Set.preimage_add_right_zero' {α : Type u_2} [AddGroup α] {b : α} :
                                                                    (fun (x : α) => x + -b) ⁻¹' 0 = {b}
                                                                    @[simp]
                                                                    theorem Set.mul_univ {α : Type u_2} [Group α] {s : Set α} (hs : s.Nonempty) :
                                                                    @[simp]
                                                                    theorem Set.add_univ {α : Type u_2} [AddGroup α] {s : Set α} (hs : s.Nonempty) :
                                                                    @[simp]
                                                                    theorem Set.univ_mul {α : Type u_2} [Group α] {t : Set α} (ht : t.Nonempty) :
                                                                    @[simp]
                                                                    theorem Set.univ_add {α : Type u_2} [AddGroup α] {t : Set α} (ht : t.Nonempty) :
                                                                    theorem Set.image_inv {F : Type u_1} {α : Type u_2} {β : Type u_3} [Group α] [DivisionMonoid β] [FunLike F α β] [MonoidHomClass F α β] (f : F) (s : Set α) :
                                                                    f '' s⁻¹ = (f '' s)⁻¹
                                                                    theorem Set.image_neg {F : Type u_1} {α : Type u_2} {β : Type u_3} [AddGroup α] [SubtractionMonoid β] [FunLike F α β] [AddMonoidHomClass F α β] (f : F) (s : Set α) :
                                                                    f '' (-s) = -f '' s
                                                                    theorem Set.image_mul {F : Type u_1} {α : Type u_2} {β : Type u_3} [Mul α] [Mul β] [FunLike F α β] [MulHomClass F α β] (m : F) {s t : Set α} :
                                                                    m '' (s * t) = m '' s * m '' t
                                                                    theorem Set.image_add {F : Type u_1} {α : Type u_2} {β : Type u_3} [Add α] [Add β] [FunLike F α β] [AddHomClass F α β] (m : F) {s t : Set α} :
                                                                    m '' (s + t) = m '' s + m '' t
                                                                    theorem Set.mul_subset_range {F : Type u_1} {α : Type u_2} {β : Type u_3} [Mul α] [Mul β] [FunLike F α β] [MulHomClass F α β] (m : F) {s t : Set β} (hs : s range m) (ht : t range m) :
                                                                    s * t range m
                                                                    theorem Set.add_subset_range {F : Type u_1} {α : Type u_2} {β : Type u_3} [Add α] [Add β] [FunLike F α β] [AddHomClass F α β] (m : F) {s t : Set β} (hs : s range m) (ht : t range m) :
                                                                    s + t range m
                                                                    theorem Set.preimage_mul_preimage_subset {F : Type u_1} {α : Type u_2} {β : Type u_3} [Mul α] [Mul β] [FunLike F α β] [MulHomClass F α β] (m : F) {s t : Set β} :
                                                                    m ⁻¹' s * m ⁻¹' t m ⁻¹' (s * t)
                                                                    theorem Set.preimage_add_preimage_subset {F : Type u_1} {α : Type u_2} {β : Type u_3} [Add α] [Add β] [FunLike F α β] [AddHomClass F α β] (m : F) {s t : Set β} :
                                                                    m ⁻¹' s + m ⁻¹' t m ⁻¹' (s + t)
                                                                    theorem Set.preimage_mul {F : Type u_1} {α : Type u_2} {β : Type u_3} [Mul α] [Mul β] [FunLike F α β] [MulHomClass F α β] (m : F) (hm : Function.Injective m) {s t : Set β} (hs : s range m) (ht : t range m) :
                                                                    m ⁻¹' (s * t) = m ⁻¹' s * m ⁻¹' t
                                                                    theorem Set.preimage_add {F : Type u_1} {α : Type u_2} {β : Type u_3} [Add α] [Add β] [FunLike F α β] [AddHomClass F α β] (m : F) (hm : Function.Injective m) {s t : Set β} (hs : s range m) (ht : t range m) :
                                                                    m ⁻¹' (s + t) = m ⁻¹' s + m ⁻¹' t
                                                                    theorem Set.image_pow_of_ne_zero {F : Type u_1} {α : Type u_2} {β : Type u_3} [Monoid α] [Monoid β] [FunLike F α β] [MulHomClass F α β] {n : } :
                                                                    n 0∀ (f : F) (s : Set α), f '' (s ^ n) = (f '' s) ^ n
                                                                    theorem Set.image_nsmul_of_ne_zero {F : Type u_1} {α : Type u_2} {β : Type u_3} [AddMonoid α] [AddMonoid β] [FunLike F α β] [AddHomClass F α β] {n : } :
                                                                    n 0∀ (f : F) (s : Set α), f '' (n s) = n f '' s
                                                                    theorem Set.image_pow {F : Type u_1} {α : Type u_2} {β : Type u_3} [Monoid α] [Monoid β] [FunLike F α β] [MonoidHomClass F α β] (f : F) (s : Set α) (n : ) :
                                                                    f '' (s ^ n) = (f '' s) ^ n
                                                                    theorem Set.image_nsmul {F : Type u_1} {α : Type u_2} {β : Type u_3} [AddMonoid α] [AddMonoid β] [FunLike F α β] [AddMonoidHomClass F α β] (f : F) (s : Set α) (n : ) :
                                                                    f '' (n s) = n f '' s
                                                                    theorem Set.image_div {F : Type u_1} {α : Type u_2} {β : Type u_3} [Group α] [DivisionMonoid β] [FunLike F α β] [MonoidHomClass F α β] (m : F) {s t : Set α} :
                                                                    m '' (s / t) = m '' s / m '' t
                                                                    theorem Set.image_sub {F : Type u_1} {α : Type u_2} {β : Type u_3} [AddGroup α] [SubtractionMonoid β] [FunLike F α β] [AddMonoidHomClass F α β] (m : F) {s t : Set α} :
                                                                    m '' (s - t) = m '' s - m '' t
                                                                    theorem Set.div_subset_range {F : Type u_1} {α : Type u_2} {β : Type u_3} [Group α] [DivisionMonoid β] [FunLike F α β] [MonoidHomClass F α β] (m : F) {s t : Set β} (hs : s range m) (ht : t range m) :
                                                                    s / t range m
                                                                    theorem Set.sub_subset_range {F : Type u_1} {α : Type u_2} {β : Type u_3} [AddGroup α] [SubtractionMonoid β] [FunLike F α β] [AddMonoidHomClass F α β] (m : F) {s t : Set β} (hs : s range m) (ht : t range m) :
                                                                    s - t range m
                                                                    theorem Set.preimage_div_preimage_subset {F : Type u_1} {α : Type u_2} {β : Type u_3} [Group α] [DivisionMonoid β] [FunLike F α β] [MonoidHomClass F α β] (m : F) {s t : Set β} :
                                                                    m ⁻¹' s / m ⁻¹' t m ⁻¹' (s / t)
                                                                    theorem Set.preimage_sub_preimage_subset {F : Type u_1} {α : Type u_2} {β : Type u_3} [AddGroup α] [SubtractionMonoid β] [FunLike F α β] [AddMonoidHomClass F α β] (m : F) {s t : Set β} :
                                                                    m ⁻¹' s - m ⁻¹' t m ⁻¹' (s - t)
                                                                    theorem Set.preimage_div {F : Type u_1} {α : Type u_2} {β : Type u_3} [Group α] [DivisionMonoid β] [FunLike F α β] [MonoidHomClass F α β] (m : F) (hm : Function.Injective m) {s t : Set β} (hs : s range m) (ht : t range m) :
                                                                    m ⁻¹' (s / t) = m ⁻¹' s / m ⁻¹' t
                                                                    theorem Set.preimage_sub {F : Type u_1} {α : Type u_2} {β : Type u_3} [AddGroup α] [SubtractionMonoid β] [FunLike F α β] [AddMonoidHomClass F α β] (m : F) (hm : Function.Injective m) {s t : Set β} (hs : s range m) (ht : t range m) :
                                                                    m ⁻¹' (s - t) = m ⁻¹' s - m ⁻¹' t
                                                                    @[simp]
                                                                    theorem Set.inv_pi {ι : Type u_5} {α : ιType u_6} [(i : ι) → Inv (α i)] (s : Set ι) (t : (i : ι) → Set (α i)) :
                                                                    (s.pi t)⁻¹ = s.pi fun (i : ι) => (t i)⁻¹
                                                                    @[simp]
                                                                    theorem Set.neg_pi {ι : Type u_5} {α : ιType u_6} [(i : ι) → Neg (α i)] (s : Set ι) (t : (i : ι) → Set (α i)) :
                                                                    -s.pi t = s.pi fun (i : ι) => -t i
                                                                    theorem Set.MapsTo.mul {α : Type u_2} {β : Type u_3} [Mul β] {A : Set α} {B₁ B₂ : Set β} {f₁ f₂ : αβ} (h₁ : MapsTo f₁ A B₁) (h₂ : MapsTo f₂ A B₂) :
                                                                    MapsTo (f₁ * f₂) A (B₁ * B₂)
                                                                    theorem Set.MapsTo.add {α : Type u_2} {β : Type u_3} [Add β] {A : Set α} {B₁ B₂ : Set β} {f₁ f₂ : αβ} (h₁ : MapsTo f₁ A B₁) (h₂ : MapsTo f₂ A B₂) :
                                                                    MapsTo (f₁ + f₂) A (B₁ + B₂)
                                                                    theorem Set.MapsTo.inv {α : Type u_2} {β : Type u_3} [InvolutiveInv β] {A : Set α} {B : Set β} {f : αβ} (h : MapsTo f A B) :
                                                                    theorem Set.MapsTo.neg {α : Type u_2} {β : Type u_3} [InvolutiveNeg β] {A : Set α} {B : Set β} {f : αβ} (h : MapsTo f A B) :
                                                                    MapsTo (-f) A (-B)
                                                                    theorem Set.MapsTo.div {α : Type u_2} {β : Type u_3} [Div β] {A : Set α} {B₁ B₂ : Set β} {f₁ f₂ : αβ} (h₁ : MapsTo f₁ A B₁) (h₂ : MapsTo f₂ A B₂) :
                                                                    MapsTo (f₁ / f₂) A (B₁ / B₂)
                                                                    theorem Set.MapsTo.sub {α : Type u_2} {β : Type u_3} [Sub β] {A : Set α} {B₁ B₂ : Set β} {f₁ f₂ : αβ} (h₁ : MapsTo f₁ A B₁) (h₂ : MapsTo f₂ A B₂) :
                                                                    MapsTo (f₁ - f₂) A (B₁ - B₂)