File: Mathlib/Algebra/GCDMonoid/Multiset.lean

full_name: Multiset.lcm
code: /-- Least common multiple of a multiset -/
def lcm (s : Multiset α) : α 
goal: α

full_name: Multiset.lcm_zero
code: @[simp]
theorem lcm_zero : (0 : Multiset α).lcm = 1 
goal: Multiset.lcm 0 = 1

full_name: Multiset.lcm_cons
code: @[simp]
theorem lcm_cons (a : α) (s : Multiset α) : (a ::ₘ s).lcm = GCDMonoid.lcm a s.lcm 
goal: (a ::ₘ s).lcm = lcm a s.lcm

full_name: Multiset.lcm_singleton
code: @[simp]
theorem lcm_singleton {a : α} : ({a} : Multiset α).lcm = normalize a 
goal: {a}.lcm = normalize a

full_name: Multiset.lcm_add
code: @[simp]
theorem lcm_add (s₁ s₂ : Multiset α) : (s₁ + s₂).lcm = GCDMonoid.lcm s₁.lcm s₂.lcm 
goal: (s₁ + s₂).lcm = lcm s₁.lcm s₂.lcm

full_name: Multiset.lcm_dvd
code: theorem lcm_dvd {s : Multiset α} {a : α} : s.lcm ∣ a ↔ ∀ b ∈ s, b ∣ a 
goal: s.lcm ∣ a ↔ ∀ b ∈ s, b ∣ a

full_name: Multiset.dvd_lcm
code: theorem dvd_lcm {s : Multiset α} {a : α} (h : a ∈ s) : a ∣ s.lcm 
goal: a ∣ s.lcm

full_name: Multiset.lcm_mono
code: theorem lcm_mono {s₁ s₂ : Multiset α} (h : s₁ ⊆ s₂) : s₁.lcm ∣ s₂.lcm 
goal: s₁.lcm ∣ s₂.lcm

full_name: Multiset.normalize_lcm
code: @[simp 1100]
theorem normalize_lcm (s : Multiset α) : normalize s.lcm = s.lcm 
goal: normalize s.lcm = s.lcm

full_name: Multiset.lcm_eq_zero_iff
code: @[simp]
nonrec theorem lcm_eq_zero_iff [Nontrivial α] (s : Multiset α) : s.lcm = 0 ↔ (0 : α) ∈ s 
goal: s.lcm = 0 ↔ 0 ∈ s

full_name: Multiset.lcm_dedup
code: @[simp]
theorem lcm_dedup (s : Multiset α) : (dedup s).lcm = s.lcm 
goal: s.dedup.lcm = s.lcm

full_name: Multiset.lcm_ndunion
code: @[simp]
theorem lcm_ndunion (s₁ s₂ : Multiset α) : (ndunion s₁ s₂).lcm = GCDMonoid.lcm s₁.lcm s₂.lcm 
goal: (s₁.ndunion s₂).lcm = lcm s₁.lcm s₂.lcm

full_name: Multiset.lcm_union
code: @[simp]
theorem lcm_union (s₁ s₂ : Multiset α) : (s₁ ∪ s₂).lcm = GCDMonoid.lcm s₁.lcm s₂.lcm 
goal: (s₁ ∪ s₂).lcm = lcm s₁.lcm s₂.lcm

full_name: Multiset.lcm_ndinsert
code: @[simp]
theorem lcm_ndinsert (a : α) (s : Multiset α) : (ndinsert a s).lcm = GCDMonoid.lcm a s.lcm 
goal: (Multiset.ndinsert a s).lcm = lcm a s.lcm

full_name: Multiset.gcd
code: /-- Greatest common divisor of a multiset -/
def gcd (s : Multiset α) : α 
goal: α

full_name: Multiset.gcd_zero
code: @[simp]
theorem gcd_zero : (0 : Multiset α).gcd = 0 
goal: Multiset.gcd 0 = 0

full_name: Multiset.gcd_cons
code: @[simp]
theorem gcd_cons (a : α) (s : Multiset α) : (a ::ₘ s).gcd = GCDMonoid.gcd a s.gcd 
goal: (a ::ₘ s).gcd = gcd a s.gcd

full_name: Multiset.gcd_singleton
code: @[simp]
theorem gcd_singleton {a : α} : ({a} : Multiset α).gcd = normalize a 
goal: {a}.gcd = normalize a

full_name: Multiset.gcd_add
code: @[simp]
theorem gcd_add (s₁ s₂ : Multiset α) : (s₁ + s₂).gcd = GCDMonoid.gcd s₁.gcd s₂.gcd 
goal: (s₁ + s₂).gcd = gcd s₁.gcd s₂.gcd

full_name: Multiset.dvd_gcd
code: theorem dvd_gcd {s : Multiset α} {a : α} : a ∣ s.gcd ↔ ∀ b ∈ s, a ∣ b 
goal: a ∣ s.gcd ↔ ∀ b ∈ s, a ∣ b

full_name: Multiset.gcd_dvd
code: theorem gcd_dvd {s : Multiset α} {a : α} (h : a ∈ s) : s.gcd ∣ a 
goal: s.gcd ∣ a

full_name: Multiset.gcd_mono
code: theorem gcd_mono {s₁ s₂ : Multiset α} (h : s₁ ⊆ s₂) : s₂.gcd ∣ s₁.gcd 
goal: s₂.gcd ∣ s₁.gcd

full_name: Multiset.normalize_gcd
code: @[simp 1100]
theorem normalize_gcd (s : Multiset α) : normalize s.gcd = s.gcd 
goal: normalize s.gcd = s.gcd

full_name: Multiset.gcd_eq_zero_iff
code: theorem gcd_eq_zero_iff (s : Multiset α) : s.gcd = 0 ↔ ∀ x : α, x ∈ s → x = 0 
goal: s.gcd = 0 ↔ ∀ x ∈ s, x = 0

full_name: Multiset.gcd_map_mul
code: theorem gcd_map_mul (a : α) (s : Multiset α) : (s.map (a * ·)).gcd = normalize a * s.gcd 
goal: (Multiset.map (fun x => a * x) s).gcd = normalize a * s.gcd

full_name: Multiset.gcd_dedup
code: @[simp]
theorem gcd_dedup (s : Multiset α) : (dedup s).gcd = s.gcd 
goal: s.dedup.gcd = s.gcd

full_name: Multiset.gcd_ndunion
code: @[simp]
theorem gcd_ndunion (s₁ s₂ : Multiset α) : (ndunion s₁ s₂).gcd = GCDMonoid.gcd s₁.gcd s₂.gcd 
goal: (s₁.ndunion s₂).gcd = gcd s₁.gcd s₂.gcd

full_name: Multiset.gcd_union
code: @[simp]
theorem gcd_union (s₁ s₂ : Multiset α) : (s₁ ∪ s₂).gcd = GCDMonoid.gcd s₁.gcd s₂.gcd 
goal: (s₁ ∪ s₂).gcd = gcd s₁.gcd s₂.gcd

full_name: Multiset.gcd_ndinsert
code: @[simp]
theorem gcd_ndinsert (a : α) (s : Multiset α) : (ndinsert a s).gcd = GCDMonoid.gcd a s.gcd 
goal: (Multiset.ndinsert a s).gcd = gcd a s.gcd

full_name: Multiset.extract_gcd'
code: theorem extract_gcd' (s t : Multiset α) (hs : ∃ x, x ∈ s ∧ x ≠ (0 : α))
    (ht : s = t.map (s.gcd * ·)) : t.gcd = 1 
goal: t.gcd = 1

full_name: Multiset.extract_gcd
code: theorem extract_gcd (s : Multiset α) (hs : s ≠ 0) :
    ∃ t : Multiset α, s = t.map (s.gcd * ·) ∧ t.gcd = 1 
goal: ∃ t, s = Multiset.map (fun x => s.gcd * x) t ∧ t.gcd = 1