File: Mathlib/Data/Set/Semiring.lean

full_name: SetSemiring
code: /-- An alias for `Set α`, which has a semiring structure given by `∪` as "addition" and pointwise
  multiplication `*` as "multiplication". -/
def SetSemiring (α : Type*) : Type _ 
goal: Type u_3

full_name: instInhabitedSetSemiring
code: noncomputable instance (α : Type*) : Inhabited (SetSemiring α) 
goal: Inhabited (SetSemiring α)

full_name: instPartialOrderSetSemiring
code: instance (α : Type*) : PartialOrder (SetSemiring α) 
goal: PartialOrder (SetSemiring α)

full_name: instOrderBotSetSemiring
code: instance (α : Type*) : OrderBot (SetSemiring α) 
goal: OrderBot (SetSemiring α)

full_name: Set.up
code: /-- The identity function `Set α → SetSemiring α`. -/
protected def Set.up : Set α ≃ SetSemiring α 
goal: Set α ≃ SetSemiring α

full_name: SetSemiring.down
code: /-- The identity function `SetSemiring α → Set α`. -/
protected def down : SetSemiring α ≃ Set α 
goal: SetSemiring α ≃ Set α

full_name: SetSemiring.down_up
code: @[simp]
protected theorem down_up (s : Set α) : SetSemiring.down (Set.up s) = s 
goal: SetSemiring.down (Set.up s) = s

full_name: SetSemiring.up_down
code: @[simp]
protected theorem up_down (s : SetSemiring α) : Set.up (SetSemiring.down s) = s 
goal: Set.up (SetSemiring.down s) = s

full_name: SetSemiring.up_le_up
code: theorem up_le_up {s t : Set α} : Set.up s ≤ Set.up t ↔ s ⊆ t 
goal: Set.up s ≤ Set.up t ↔ s ⊆ t

full_name: SetSemiring.up_lt_up
code: theorem up_lt_up {s t : Set α} : Set.up s < Set.up t ↔ s ⊂ t 
goal: Set.up s < Set.up t ↔ s ⊂ t

full_name: SetSemiring.down_subset_down
code: @[simp]
theorem down_subset_down {s t : SetSemiring α} : SetSemiring.down s ⊆ SetSemiring.down t ↔ s ≤ t 
goal: SetSemiring.down s ⊆ SetSemiring.down t ↔ s ≤ t

full_name: SetSemiring.down_ssubset_down
code: @[simp]
theorem down_ssubset_down {s t : SetSemiring α} : SetSemiring.down s ⊂ SetSemiring.down t ↔ s < t 
goal: SetSemiring.down s ⊂ SetSemiring.down t ↔ s < t

full_name: SetSemiring.instZero
code: instance : Zero (SetSemiring α) 
goal: Zero (SetSemiring α)

full_name: SetSemiring.instAdd
code: instance : Add (SetSemiring α) 
goal: Add (SetSemiring α)

full_name: SetSemiring.instAddCommMonoid
code: instance : AddCommMonoid (SetSemiring α) 
goal: AddCommMonoid (SetSemiring α)

full_name: SetSemiring.zero_def
code: theorem zero_def : (0 : SetSemiring α) = Set.up ∅ 
goal: 0 = Set.up ∅

full_name: SetSemiring.down_zero
code: @[simp]
theorem down_zero : down (0 : SetSemiring α) = ∅ 
goal: SetSemiring.down 0 = ∅

full_name: Set.up_empty
code: @[simp]
theorem _root_.Set.up_empty : Set.up (∅ : Set α) = 0 
goal: Set.up ∅ = 0

full_name: SetSemiring.add_def
code: theorem add_def (s t : SetSemiring α) : s + t = up (down s ∪ down t) 
goal: s + t = Set.up (SetSemiring.down s ∪ SetSemiring.down t)

full_name: SetSemiring.down_add
code: @[simp]
theorem down_add (s t : SetSemiring α) : down (s + t) = down s ∪ down t 
goal: SetSemiring.down (s + t) = SetSemiring.down s ∪ SetSemiring.down t

full_name: Set.up_union
code: @[simp]
theorem _root_.Set.up_union (s t : Set α) : up (s ∪ t) = up s + up t 
goal: Set.up (s ∪ t) = Set.up s + Set.up t

full_name: SetSemiring.covariantClass_add
code: instance covariantClass_add : CovariantClass (SetSemiring α) (SetSemiring α) (· + ·) (· ≤ ·) 
goal: CovariantClass (SetSemiring α) (SetSemiring α) (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1

full_name: SetSemiring.instNonUnitalNonAssocSemiring
code: instance : NonUnitalNonAssocSemiring (SetSemiring α) 
goal: NonUnitalNonAssocSemiring (SetSemiring α)

full_name: SetSemiring.mul_def
code: theorem mul_def (s t : SetSemiring α) : s * t = up (down s * down t) 
goal: s * t = Set.up (SetSemiring.down s * SetSemiring.down t)

full_name: SetSemiring.down_mul
code: @[simp]
theorem down_mul (s t : SetSemiring α) : down (s * t) = down s * down t 
goal: SetSemiring.down (s * t) = SetSemiring.down s * SetSemiring.down t

full_name: Set.up_mul
code: @[simp]
theorem _root_.Set.up_mul (s t : Set α) : up (s * t) = up s * up t 
goal: Set.up (s * t) = Set.up s * Set.up t

full_name: SetSemiring.instNoZeroDivisors
code: instance : NoZeroDivisors (SetSemiring α) 
goal: NoZeroDivisors (SetSemiring α)

full_name: SetSemiring.covariantClass_mul_left
code: instance covariantClass_mul_left :
    CovariantClass (SetSemiring α) (SetSemiring α) (· * ·) (· ≤ ·) 
goal: CovariantClass (SetSemiring α) (SetSemiring α) (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1

full_name: SetSemiring.covariantClass_mul_right
code: instance covariantClass_mul_right :
    CovariantClass (SetSemiring α) (SetSemiring α) (swap (· * ·)) (· ≤ ·) 
goal: CovariantClass (SetSemiring α) (SetSemiring α) (Function.swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1

full_name: SetSemiring.instOne
code: instance : One (SetSemiring α) 
goal: One (SetSemiring α)

full_name: SetSemiring.one_def
code: theorem one_def : (1 : SetSemiring α) = Set.up 1 
goal: 1 = Set.up 1

full_name: SetSemiring.down_one
code: @[simp]
theorem down_one : down (1 : SetSemiring α) = 1 
goal: SetSemiring.down 1 = 1

full_name: Set.up_one
code: @[simp]
theorem _root_.Set.up_one : up (1 : Set α) = 1 
goal: Set.up 1 = 1

full_name: SetSemiring.instNonAssocSemiringOfMulOneClass
code: instance [MulOneClass α] : NonAssocSemiring (SetSemiring α) 
goal: NonAssocSemiring (SetSemiring α)

full_name: SetSemiring.instNonUnitalSemiringOfSemigroup
code: instance [Semigroup α] : NonUnitalSemiring (SetSemiring α) 
goal: NonUnitalSemiring (SetSemiring α)

full_name: SetSemiring.instIdemSemiringOfMonoid
code: instance [Monoid α] : IdemSemiring (SetSemiring α) 
goal: IdemSemiring (SetSemiring α)

full_name: SetSemiring.instNonUnitalCommSemiringOfCommSemigroup
code: instance [CommSemigroup α] : NonUnitalCommSemiring (SetSemiring α) 
goal: NonUnitalCommSemiring (SetSemiring α)

full_name: SetSemiring.instIdemCommSemiringOfCommMonoid
code: instance [CommMonoid α] : IdemCommSemiring (SetSemiring α) 
goal: IdemCommSemiring (SetSemiring α)

full_name: SetSemiring.instCommMonoid
code: instance [CommMonoid α] : CommMonoid (SetSemiring α) 
goal: CommMonoid (SetSemiring α)

full_name: SetSemiring.instCanonicallyOrderedCommSemiringOfCommMonoid
code: instance [CommMonoid α] : CanonicallyOrderedCommSemiring (SetSemiring α) 
goal: CanonicallyOrderedCommSemiring (SetSemiring α)

full_name: SetSemiring.imageHom
code: /-- The image of a set under a multiplicative homomorphism is a ring homomorphism
with respect to the pointwise operations on sets. -/
def imageHom [MulOneClass α] [MulOneClass β] (f : α →* β) : SetSemiring α →+* SetSemiring β 
goal: SetSemiring α →+* SetSemiring β

full_name: SetSemiring.imageHom_def
code: lemma imageHom_def [MulOneClass α] [MulOneClass β] (f : α →* β) (s : SetSemiring α) :
    imageHom f s = up (image f (down s)) 
goal: (SetSemiring.imageHom f) s = Set.up (⇑f '' SetSemiring.down s)

full_name: SetSemiring.down_imageHom
code: @[simp]
lemma down_imageHom [MulOneClass α] [MulOneClass β] (f : α →* β) (s : SetSemiring α) :
    down (imageHom f s) = f '' down s 
goal: SetSemiring.down ((SetSemiring.imageHom f) s) = ⇑f '' SetSemiring.down s

full_name: Set.up_image
code: @[simp]
lemma _root_.Set.up_image [MulOneClass α] [MulOneClass β] (f : α →* β) (s : Set α) :
    up (f '' s) = imageHom f (up s) 
goal: Set.up (⇑f '' s) = (SetSemiring.imageHom f) (Set.up s)