File: Mathlib/Data/Set/Sups.lean

full_name: HasSups.sups
code: /-- Notation typeclass for pointwise supremum `⊻`. -/
class HasSups (α : Type*) where
  /-- The point-wise supremum `a ⊔ b` of `a, b : α`. -/
  sups : α → α → α
goal: α → α → α

full_name: HasSups
code: /-- Notation typeclass for pointwise supremum `⊻`. -/
class HasSups (α : Type*) where
  /-- The point-wise supremum `a ⊔ b` of `a, b : α`. -/
  sups : α → α → α
goal: Type u_4

full_name: HasInfs.infs
code: /-- Notation typeclass for pointwise infimum `⊼`. -/
class HasInfs (α : Type*) where
  /-- The point-wise infimum `a ⊓ b` of `a, b : α`. -/
  infs : α → α → α
goal: α → α → α

full_name: HasInfs
code: /-- Notation typeclass for pointwise infimum `⊼`. -/
class HasInfs (α : Type*) where
  /-- The point-wise infimum `a ⊓ b` of `a, b : α`. -/
  infs : α → α → α
goal: Type u_4

full_name: «_aux_Mathlib_Data_Set_Sups___macroRules_term_⊻__1»
code: @[inherit_doc]
infixl:74 " ⊻ " => HasSups.sups
goal: Lean.Macro

full_name: _aux_Mathlib_Data_Set_Sups___unexpand_HasSups_sups_1
code: @[inherit_doc]
infixl:74 " ⊻ " => HasSups.sups
goal: Lean.PrettyPrinter.Unexpander

full_name: _aux_Mathlib_Data_Set_Sups___unexpand_HasInfs_infs_1
code: @[inherit_doc]
infixl:75 " ⊼ " => HasInfs.infs
goal: Lean.PrettyPrinter.Unexpander

full_name: «_aux_Mathlib_Data_Set_Sups___macroRules_term_⊼__1»
code: @[inherit_doc]
infixl:75 " ⊼ " => HasInfs.infs
goal: Lean.Macro

full_name: Set.hasSups
code: /-- `s ⊻ t` is the set of elements of the form `a ⊔ b` where `a ∈ s`, `b ∈ t`. -/
protected def hasSups : HasSups (Set α) 
goal: HasSups (Set α)

full_name: Set.mem_sups
code: @[simp]
theorem mem_sups : c ∈ s ⊻ t ↔ ∃ a ∈ s, ∃ b ∈ t, a ⊔ b = c 
goal: c ∈ s ⊻ t ↔ ∃ a ∈ s, ∃ b ∈ t, a ⊔ b = c

full_name: Set.sup_mem_sups
code: theorem sup_mem_sups : a ∈ s → b ∈ t → a ⊔ b ∈ s ⊻ t 
goal: a ∈ s → b ∈ t → a ⊔ b ∈ s ⊻ t

full_name: Set.sups_subset
code: theorem sups_subset : s₁ ⊆ s₂ → t₁ ⊆ t₂ → s₁ ⊻ t₁ ⊆ s₂ ⊻ t₂ 
goal: s₁ ⊆ s₂ → t₁ ⊆ t₂ → s₁ ⊻ t₁ ⊆ s₂ ⊻ t₂

full_name: Set.sups_subset_left
code: theorem sups_subset_left : t₁ ⊆ t₂ → s ⊻ t₁ ⊆ s ⊻ t₂ 
goal: t₁ ⊆ t₂ → s ⊻ t₁ ⊆ s ⊻ t₂

full_name: Set.sups_subset_right
code: theorem sups_subset_right : s₁ ⊆ s₂ → s₁ ⊻ t ⊆ s₂ ⊻ t 
goal: s₁ ⊆ s₂ → s₁ ⊻ t ⊆ s₂ ⊻ t

full_name: Set.image_subset_sups_left
code: theorem image_subset_sups_left : b ∈ t → (fun a => a ⊔ b) '' s ⊆ s ⊻ t 
goal: b ∈ t → (fun a => a ⊔ b) '' s ⊆ s ⊻ t

full_name: Set.image_subset_sups_right
code: theorem image_subset_sups_right : a ∈ s → (· ⊔ ·) a '' t ⊆ s ⊻ t 
goal: a ∈ s → (fun x x_1 => x ⊔ x_1) a '' t ⊆ s ⊻ t

full_name: Set.forall_sups_iff
code: theorem forall_sups_iff {p : α → Prop} : (∀ c ∈ s ⊻ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, p (a ⊔ b) 
goal: (∀ c ∈ s ⊻ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, p (a ⊔ b)

full_name: Set.sups_subset_iff
code: @[simp]
theorem sups_subset_iff : s ⊻ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a ⊔ b ∈ u 
goal: s ⊻ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a ⊔ b ∈ u

full_name: Set.sups_nonempty
code: @[simp]
theorem sups_nonempty : (s ⊻ t).Nonempty ↔ s.Nonempty ∧ t.Nonempty 
goal: (s ⊻ t).Nonempty ↔ s.Nonempty ∧ t.Nonempty

full_name: Set.Nonempty.sups
code: protected theorem Nonempty.sups : s.Nonempty → t.Nonempty → (s ⊻ t).Nonempty 
goal: s.Nonempty → t.Nonempty → (s ⊻ t).Nonempty

full_name: Set.Nonempty.of_sups_left
code: theorem Nonempty.of_sups_left : (s ⊻ t).Nonempty → s.Nonempty 
goal: (s ⊻ t).Nonempty → s.Nonempty

full_name: Set.Nonempty.of_sups_right
code: theorem Nonempty.of_sups_right : (s ⊻ t).Nonempty → t.Nonempty 
goal: (s ⊻ t).Nonempty → t.Nonempty

full_name: Set.empty_sups
code: @[simp]
theorem empty_sups : ∅ ⊻ t = ∅ 
goal: ∅ ⊻ t = ∅

full_name: Set.sups_empty
code: @[simp]
theorem sups_empty : s ⊻ ∅ = ∅ 
goal: s ⊻ ∅ = ∅

full_name: Set.sups_eq_empty
code: @[simp]
theorem sups_eq_empty : s ⊻ t = ∅ ↔ s = ∅ ∨ t = ∅ 
goal: s ⊻ t = ∅ ↔ s = ∅ ∨ t = ∅

full_name: Set.singleton_sups
code: @[simp]
theorem singleton_sups : {a} ⊻ t = t.image fun b => a ⊔ b 
goal: {a} ⊻ t = (fun b => a ⊔ b) '' t

full_name: Set.sups_singleton
code: @[simp]
theorem sups_singleton : s ⊻ {b} = s.image fun a => a ⊔ b 
goal: s ⊻ {b} = (fun a => a ⊔ b) '' s

full_name: Set.singleton_sups_singleton
code: theorem singleton_sups_singleton : ({a} ⊻ {b} : Set α) = {a ⊔ b} 
goal: {a} ⊻ {b} = {a ⊔ b}

full_name: Set.sups_union_left
code: theorem sups_union_left : (s₁ ∪ s₂) ⊻ t = s₁ ⊻ t ∪ s₂ ⊻ t 
goal: (s₁ ∪ s₂) ⊻ t = s₁ ⊻ t ∪ s₂ ⊻ t

full_name: Set.sups_union_right
code: theorem sups_union_right : s ⊻ (t₁ ∪ t₂) = s ⊻ t₁ ∪ s ⊻ t₂ 
goal: s ⊻ (t₁ ∪ t₂) = s ⊻ t₁ ∪ s ⊻ t₂

full_name: Set.sups_inter_subset_left
code: theorem sups_inter_subset_left : (s₁ ∩ s₂) ⊻ t ⊆ s₁ ⊻ t ∩ s₂ ⊻ t 
goal: (s₁ ∩ s₂) ⊻ t ⊆ s₁ ⊻ t ∩ s₂ ⊻ t

full_name: Set.sups_inter_subset_right
code: theorem sups_inter_subset_right : s ⊻ (t₁ ∩ t₂) ⊆ s ⊻ t₁ ∩ s ⊻ t₂ 
goal: s ⊻ (t₁ ∩ t₂) ⊆ s ⊻ t₁ ∩ s ⊻ t₂

full_name: Set.image_sups
code: lemma image_sups (f : F) (s t : Set α) : f '' (s ⊻ t) = f '' s ⊻ f '' t 
goal: ⇑f '' (s ⊻ t) = ⇑f '' s ⊻ ⇑f '' t

full_name: Set.subset_sups_self
code: lemma subset_sups_self : s ⊆ s ⊻ s 
goal: s ⊆ s ⊻ s

full_name: Set.sups_subset_self
code: lemma sups_subset_self : s ⊻ s ⊆ s ↔ SupClosed s 
goal: s ⊻ s ⊆ s ↔ SupClosed s

full_name: Set.sups_eq_self
code: @[simp] lemma sups_eq_self : s ⊻ s = s ↔ SupClosed s 
goal: s ⊻ s = s ↔ SupClosed s

full_name: Set.sep_sups_le
code: lemma sep_sups_le (s t : Set α) (a : α) :
    {b ∈ s ⊻ t | b ≤ a} = {b ∈ s | b ≤ a} ⊻ {b ∈ t | b ≤ a} 
goal: {b | b ∈ s ⊻ t ∧ b ≤ a} = {b | b ∈ s ∧ b ≤ a} ⊻ {b | b ∈ t ∧ b ≤ a}

full_name: Set.iUnion_image_sup_left
code: theorem iUnion_image_sup_left : ⋃ a ∈ s, (· ⊔ ·) a '' t = s ⊻ t 
goal: ⋃ a ∈ s, (fun x x_1 => x ⊔ x_1) a '' t = s ⊻ t

full_name: Set.iUnion_image_sup_right
code: theorem iUnion_image_sup_right : ⋃ b ∈ t, (· ⊔ b) '' s = s ⊻ t 
goal: ⋃ b ∈ t, (fun x => x ⊔ b) '' s = s ⊻ t

full_name: Set.image_sup_prod
code: @[simp]
theorem image_sup_prod (s t : Set α) : Set.image2 (· ⊔ ·) s t = s ⊻ t 
goal: Set.image2 (fun x x_1 => x ⊔ x_1) s t = s ⊻ t

full_name: Set.sups_assoc
code: theorem sups_assoc : s ⊻ t ⊻ u = s ⊻ (t ⊻ u) 
goal: s ⊻ t ⊻ u = s ⊻ (t ⊻ u)

full_name: Set.sups_comm
code: theorem sups_comm : s ⊻ t = t ⊻ s 
goal: s ⊻ t = t ⊻ s

full_name: Set.sups_left_comm
code: theorem sups_left_comm : s ⊻ (t ⊻ u) = t ⊻ (s ⊻ u) 
goal: s ⊻ (t ⊻ u) = t ⊻ (s ⊻ u)

full_name: Set.sups_right_comm
code: theorem sups_right_comm : s ⊻ t ⊻ u = s ⊻ u ⊻ t 
goal: s ⊻ t ⊻ u = s ⊻ u ⊻ t

full_name: Set.sups_sups_sups_comm
code: theorem sups_sups_sups_comm : s ⊻ t ⊻ (u ⊻ v) = s ⊻ u ⊻ (t ⊻ v) 
goal: s ⊻ t ⊻ (u ⊻ v) = s ⊻ u ⊻ (t ⊻ v)

full_name: Set.hasInfs
code: /-- `s ⊼ t` is the set of elements of the form `a ⊓ b` where `a ∈ s`, `b ∈ t`. -/
protected def hasInfs : HasInfs (Set α) 
goal: HasInfs (Set α)

full_name: Set.mem_infs
code: @[simp]
theorem mem_infs : c ∈ s ⊼ t ↔ ∃ a ∈ s, ∃ b ∈ t, a ⊓ b = c 
goal: c ∈ s ⊼ t ↔ ∃ a ∈ s, ∃ b ∈ t, a ⊓ b = c

full_name: Set.inf_mem_infs
code: theorem inf_mem_infs : a ∈ s → b ∈ t → a ⊓ b ∈ s ⊼ t 
goal: a ∈ s → b ∈ t → a ⊓ b ∈ s ⊼ t

full_name: Set.infs_subset
code: theorem infs_subset : s₁ ⊆ s₂ → t₁ ⊆ t₂ → s₁ ⊼ t₁ ⊆ s₂ ⊼ t₂ 
goal: s₁ ⊆ s₂ → t₁ ⊆ t₂ → s₁ ⊼ t₁ ⊆ s₂ ⊼ t₂

full_name: Set.infs_subset_left
code: theorem infs_subset_left : t₁ ⊆ t₂ → s ⊼ t₁ ⊆ s ⊼ t₂ 
goal: t₁ ⊆ t₂ → s ⊼ t₁ ⊆ s ⊼ t₂

full_name: Set.infs_subset_right
code: theorem infs_subset_right : s₁ ⊆ s₂ → s₁ ⊼ t ⊆ s₂ ⊼ t 
goal: s₁ ⊆ s₂ → s₁ ⊼ t ⊆ s₂ ⊼ t

full_name: Set.image_subset_infs_left
code: theorem image_subset_infs_left : b ∈ t → (fun a => a ⊓ b) '' s ⊆ s ⊼ t 
goal: b ∈ t → (fun a => a ⊓ b) '' s ⊆ s ⊼ t

full_name: Set.image_subset_infs_right
code: theorem image_subset_infs_right : a ∈ s → (a ⊓ ·) '' t ⊆ s ⊼ t 
goal: a ∈ s → (fun x => a ⊓ x) '' t ⊆ s ⊼ t

full_name: Set.forall_infs_iff
code: theorem forall_infs_iff {p : α → Prop} : (∀ c ∈ s ⊼ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, p (a ⊓ b) 
goal: (∀ c ∈ s ⊼ t, p c) ↔ ∀ a ∈ s, ∀ b ∈ t, p (a ⊓ b)

full_name: Set.infs_subset_iff
code: @[simp]
theorem infs_subset_iff : s ⊼ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a ⊓ b ∈ u 
goal: s ⊼ t ⊆ u ↔ ∀ a ∈ s, ∀ b ∈ t, a ⊓ b ∈ u

full_name: Set.infs_nonempty
code: @[simp]
theorem infs_nonempty : (s ⊼ t).Nonempty ↔ s.Nonempty ∧ t.Nonempty 
goal: (s ⊼ t).Nonempty ↔ s.Nonempty ∧ t.Nonempty

full_name: Set.Nonempty.infs
code: protected theorem Nonempty.infs : s.Nonempty → t.Nonempty → (s ⊼ t).Nonempty 
goal: s.Nonempty → t.Nonempty → (s ⊼ t).Nonempty

full_name: Set.Nonempty.of_infs_left
code: theorem Nonempty.of_infs_left : (s ⊼ t).Nonempty → s.Nonempty 
goal: (s ⊼ t).Nonempty → s.Nonempty

full_name: Set.Nonempty.of_infs_right
code: theorem Nonempty.of_infs_right : (s ⊼ t).Nonempty → t.Nonempty 
goal: (s ⊼ t).Nonempty → t.Nonempty

full_name: Set.empty_infs
code: @[simp]
theorem empty_infs : ∅ ⊼ t = ∅ 
goal: ∅ ⊼ t = ∅

full_name: Set.infs_empty
code: @[simp]
theorem infs_empty : s ⊼ ∅ = ∅ 
goal: s ⊼ ∅ = ∅

full_name: Set.infs_eq_empty
code: @[simp]
theorem infs_eq_empty : s ⊼ t = ∅ ↔ s = ∅ ∨ t = ∅ 
goal: s ⊼ t = ∅ ↔ s = ∅ ∨ t = ∅

full_name: Set.singleton_infs
code: @[simp]
theorem singleton_infs : {a} ⊼ t = t.image fun b => a ⊓ b 
goal: {a} ⊼ t = (fun b => a ⊓ b) '' t

full_name: Set.infs_singleton
code: @[simp]
theorem infs_singleton : s ⊼ {b} = s.image fun a => a ⊓ b 
goal: s ⊼ {b} = (fun a => a ⊓ b) '' s

full_name: Set.singleton_infs_singleton
code: theorem singleton_infs_singleton : ({a} ⊼ {b} : Set α) = {a ⊓ b} 
goal: {a} ⊼ {b} = {a ⊓ b}

full_name: Set.infs_union_left
code: theorem infs_union_left : (s₁ ∪ s₂) ⊼ t = s₁ ⊼ t ∪ s₂ ⊼ t 
goal: (s₁ ∪ s₂) ⊼ t = s₁ ⊼ t ∪ s₂ ⊼ t

full_name: Set.infs_union_right
code: theorem infs_union_right : s ⊼ (t₁ ∪ t₂) = s ⊼ t₁ ∪ s ⊼ t₂ 
goal: s ⊼ (t₁ ∪ t₂) = s ⊼ t₁ ∪ s ⊼ t₂

full_name: Set.infs_inter_subset_left
code: theorem infs_inter_subset_left : (s₁ ∩ s₂) ⊼ t ⊆ s₁ ⊼ t ∩ s₂ ⊼ t 
goal: (s₁ ∩ s₂) ⊼ t ⊆ s₁ ⊼ t ∩ s₂ ⊼ t

full_name: Set.infs_inter_subset_right
code: theorem infs_inter_subset_right : s ⊼ (t₁ ∩ t₂) ⊆ s ⊼ t₁ ∩ s ⊼ t₂ 
goal: s ⊼ (t₁ ∩ t₂) ⊆ s ⊼ t₁ ∩ s ⊼ t₂

full_name: Set.image_infs
code: lemma image_infs (f : F) (s t : Set α) : f '' (s ⊼ t) = f '' s ⊼ f '' t 
goal: ⇑f '' (s ⊼ t) = ⇑f '' s ⊼ ⇑f '' t

full_name: Set.subset_infs_self
code: lemma subset_infs_self : s ⊆ s ⊼ s 
goal: s ⊆ s ⊼ s

full_name: Set.infs_self_subset
code: lemma infs_self_subset : s ⊼ s ⊆ s ↔ InfClosed s 
goal: s ⊼ s ⊆ s ↔ InfClosed s

full_name: Set.infs_self
code: @[simp] lemma infs_self : s ⊼ s = s ↔ InfClosed s 
goal: s ⊼ s = s ↔ InfClosed s

full_name: Set.sep_infs_le
code: lemma sep_infs_le (s t : Set α) (a : α) :
    {b ∈ s ⊼ t | a ≤ b} = {b ∈ s | a ≤ b} ⊼ {b ∈ t | a ≤ b} 
goal: {b | b ∈ s ⊼ t ∧ a ≤ b} = {b | b ∈ s ∧ a ≤ b} ⊼ {b | b ∈ t ∧ a ≤ b}

full_name: Set.iUnion_image_inf_left
code: theorem iUnion_image_inf_left : ⋃ a ∈ s, (a ⊓ ·) '' t = s ⊼ t 
goal: ⋃ a ∈ s, (fun x => a ⊓ x) '' t = s ⊼ t

full_name: Set.iUnion_image_inf_right
code: theorem iUnion_image_inf_right : ⋃ b ∈ t, (· ⊓ b) '' s = s ⊼ t 
goal: ⋃ b ∈ t, (fun x => x ⊓ b) '' s = s ⊼ t

full_name: Set.image_inf_prod
code: @[simp]
theorem image_inf_prod (s t : Set α) : Set.image2 (fun x x_1 => x ⊓ x_1) s t = s ⊼ t 
goal: Set.image2 (fun x x_1 => x ⊓ x_1) s t = s ⊼ t

full_name: Set.infs_assoc
code: theorem infs_assoc : s ⊼ t ⊼ u = s ⊼ (t ⊼ u) 
goal: s ⊼ t ⊼ u = s ⊼ (t ⊼ u)

full_name: Set.infs_comm
code: theorem infs_comm : s ⊼ t = t ⊼ s 
goal: s ⊼ t = t ⊼ s

full_name: Set.infs_left_comm
code: theorem infs_left_comm : s ⊼ (t ⊼ u) = t ⊼ (s ⊼ u) 
goal: s ⊼ (t ⊼ u) = t ⊼ (s ⊼ u)

full_name: Set.infs_right_comm
code: theorem infs_right_comm : s ⊼ t ⊼ u = s ⊼ u ⊼ t 
goal: s ⊼ t ⊼ u = s ⊼ u ⊼ t

full_name: Set.infs_infs_infs_comm
code: theorem infs_infs_infs_comm : s ⊼ t ⊼ (u ⊼ v) = s ⊼ u ⊼ (t ⊼ v) 
goal: s ⊼ t ⊼ (u ⊼ v) = s ⊼ u ⊼ (t ⊼ v)

full_name: Set.sups_infs_subset_left
code: theorem sups_infs_subset_left : s ⊻ t ⊼ u ⊆ (s ⊻ t) ⊼ (s ⊻ u) 
goal: s ⊻ t ⊼ u ⊆ (s ⊻ t) ⊼ (s ⊻ u)

full_name: Set.sups_infs_subset_right
code: theorem sups_infs_subset_right : t ⊼ u ⊻ s ⊆ (t ⊻ s) ⊼ (u ⊻ s) 
goal: t ⊼ u ⊻ s ⊆ (t ⊻ s) ⊼ (u ⊻ s)

full_name: Set.infs_sups_subset_left
code: theorem infs_sups_subset_left : s ⊼ (t ⊻ u) ⊆ s ⊼ t ⊻ s ⊼ u 
goal: s ⊼ (t ⊻ u) ⊆ s ⊼ t ⊻ s ⊼ u

full_name: Set.infs_sups_subset_right
code: theorem infs_sups_subset_right : (t ⊻ u) ⊼ s ⊆ t ⊼ s ⊻ u ⊼ s 
goal: (t ⊻ u) ⊼ s ⊆ t ⊼ s ⊻ u ⊼ s

full_name: upperClosure_sups
code: @[simp]
theorem upperClosure_sups [SemilatticeSup α] (s t : Set α) :
    upperClosure (s ⊻ t) = upperClosure s ⊔ upperClosure t 
goal: upperClosure (s ⊻ t) = upperClosure s ⊔ upperClosure t

full_name: lowerClosure_infs
code: @[simp]
theorem lowerClosure_infs [SemilatticeInf α] (s t : Set α) :
    lowerClosure (s ⊼ t) = lowerClosure s ⊓ lowerClosure t 
goal: lowerClosure (s ⊼ t) = lowerClosure s ⊓ lowerClosure t