tasksource/leandojo huggingface dataset:
Theorem: MonoidAlgebra.support_mul_single_eq_image
File: Mathlib/Algebra/MonoidAlgebra/Support.lean

tactic: refine' subset_antisymm (support_mul_single_subset f _ _) fun y hy => _
state_before: k : Type u₁
G : Type u₂
inst✝² : Semiring k
inst✝¹ : DecidableEq G
inst✝ : Mul G
f : MonoidAlgebra k G
r : k
hr : ∀ (y : k), y * r = 0 ↔ y = 0
x : G
rx : IsRightRegular x
⊢ (f * single x r).support = image (fun x_1 => x_1 * x) f.support

tactic: obtain ⟨y, yf, rfl⟩ : ∃ a : G, a ∈ f.support ∧ a * x = y := by
  simpa only [Finset.mem_image, exists_prop] using hy
state_before: k : Type u₁
G : Type u₂
inst✝² : Semiring k
inst✝¹ : DecidableEq G
inst✝ : Mul G
f : MonoidAlgebra k G
r : k
hr : ∀ (y : k), y * r = 0 ↔ y = 0
x : G
rx : IsRightRegular x
y : G
hy : y ∈ image (fun x_1 => x_1 * x) f.support
⊢ y ∈ (f * single x r).support

tactic: simp only [mul_apply, mem_support_iff.mp yf, hr, mem_support_iff, sum_single_index,
  Finsupp.sum_ite_eq', Ne.def, not_false_iff, if_true, mul_zero, ite_self, sum_zero, rx.eq_iff]
state_before: case intro.intro
k : Type u₁
G : Type u₂
inst✝² : Semiring k
inst✝¹ : DecidableEq G
inst✝ : Mul G
f : MonoidAlgebra k G
r : k
hr : ∀ (y : k), y * r = 0 ↔ y = 0
x : G
rx : IsRightRegular x
y : G
yf : y ∈ f.support
hy : y * x ∈ image (fun x_1 => x_1 * x) f.support
⊢ y * x ∈ (f * single x r).support

tactic: simpa only [Finset.mem_image, exists_prop] using hy
state_before: k : Type u₁
G : Type u₂
inst✝² : Semiring k
inst✝¹ : DecidableEq G
inst✝ : Mul G
f : MonoidAlgebra k G
r : k
hr : ∀ (y : k), y * r = 0 ↔ y = 0
x : G
rx : IsRightRegular x
y : G
hy : y ∈ image (fun x_1 => x_1 * x) f.support
⊢ ∃ a, a ∈ f.support ∧ a * x = y
Theorem: UniformSpace.mem_closure_iff_ball
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: simp [mem_closure_iff_nhds_basis' (nhds_basis_uniformity' (𝓤 α).basis_sets)]
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.68219
inst✝ : UniformSpace α
s : Set α
x : α
⊢ x ∈ closure s ↔ ∀ {V : Set (α × α)}, V ∈ 𝓤 α → Set.Nonempty (ball x V ∩ s)
Theorem: PowerSeries.coeff_cos_bit0
File: Mathlib/RingTheory/PowerSeries/WellKnown.lean

tactic: rw [cos, coeff_mk, if_pos (even_bit0 n), Nat.bit0_div_two, ← mul_one_div, map_mul, map_pow,
  map_neg, map_one, coeff_exp]
state_before: A : Type u_1
A' : Type ?u.368339
inst✝⁷ : Ring A
inst✝⁶ : Ring A'
inst✝⁵ : Algebra ℚ A
inst✝⁴ : Algebra ℚ A'
inst✝³ : Ring A
inst✝² : Ring A'
inst✝¹ : Algebra ℚ A
inst✝ : Algebra ℚ A'
n : ℕ
f : A →+* A'
⊢ ↑(coeff A (bit0 n)) (cos A) = (-1) ^ n * ↑(coeff A (bit0 n)) (exp A)
Theorem: List.exists_lt_of_prod_lt'
File: Mathlib/Data/List/BigOperators/Basic.lean

tactic: contrapose! h
state_before: ι : Type u_2
α : Type ?u.97864
M : Type u_1
N : Type ?u.97870
P : Type ?u.97873
M₀ : Type ?u.97876
G : Type ?u.97879
R : Type ?u.97882
inst✝⁵ : Monoid M
inst✝⁴ : Monoid N
inst✝³ : Monoid P
l✝ l₁ l₂ : List M
a : M
inst✝² : LinearOrder M
inst✝¹ : CovariantClass M M (Function.swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
l : List ι
f g : ι → M
h : prod (map f l) < prod (map g l)
⊢ ∃ i, i ∈ l ∧ f i < g i

tactic: exact prod_le_prod' h
state_before: ι : Type u_2
α : Type ?u.97864
M : Type u_1
N : Type ?u.97870
P : Type ?u.97873
M₀ : Type ?u.97876
G : Type ?u.97879
R : Type ?u.97882
inst✝⁵ : Monoid M
inst✝⁴ : Monoid N
inst✝³ : Monoid P
l✝ l₁ l₂ : List M
a : M
inst✝² : LinearOrder M
inst✝¹ : CovariantClass M M (Function.swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
l : List ι
f g : ι → M
h : ∀ (i : ι), i ∈ l → g i ≤ f i
⊢ prod (map g l) ≤ prod (map f l)
Theorem: frontier_eq_inter_compl_interior
File: Mathlib/Topology/Basic.lean

tactic: rw [← frontier_compl, ← closure_compl]
state_before: α : Type u
β : Type v
ι : Sort w
a : α
s✝ s₁ s₂ t : Set α
p p₁ p₂ : α → Prop
inst✝ : TopologicalSpace α
s : Set α
⊢ frontier s = interior sᶜ ∩ interior (sᶜ)ᶜ

tactic: rfl
state_before: α : Type u
β : Type v
ι : Sort w
a : α
s✝ s₁ s₂ t : Set α
p p₁ p₂ : α → Prop
inst✝ : TopologicalSpace α
s : Set α
⊢ frontier (sᶜ) = closure (sᶜ) ∩ interior (sᶜ)ᶜ
Theorem: PadicSeq.norm_values_discrete
File: Mathlib/NumberTheory/Padics/PadicNumbers.lean

tactic: let ⟨k, hk, hk'⟩ := norm_eq_norm_app_of_nonzero ha
state_before: p : ℕ
hp : Fact (Nat.Prime p)
a : PadicSeq p
ha : ¬a ≈ 0
⊢ ∃ z, norm a = ↑p ^ (-z)

tactic: simpa [hk] using padicNorm.values_discrete hk'
state_before: p : ℕ
hp : Fact (Nat.Prime p)
a : PadicSeq p
ha : ¬a ≈ 0
k : ℚ
hk : norm a = padicNorm p k
hk' : k ≠ 0
⊢ ∃ z, norm a = ↑p ^ (-z)
Theorem: NormedField.nhdsWithin_isUnit_neBot
File: Mathlib/Analysis/Normed/Field/Basic.lean

tactic: simpa only [isUnit_iff_ne_zero] using punctured_nhds_neBot (0 : α)
state_before: α : Type u_1
β : Type ?u.376392
γ : Type ?u.376395
ι : Type ?u.376398
inst✝ : NontriviallyNormedField α
⊢ NeBot (𝓝[{x | IsUnit x}] 0)
Theorem: Multiset.disjoint_cons_right
File: Mathlib/Data/Multiset/Basic.lean

tactic: rw [disjoint_comm, disjoint_cons_left]
state_before: α : Type u_1
β : Type ?u.492563
γ : Type ?u.492566
a : α
s t : Multiset α
⊢ Disjoint s (a ::ₘ t) ↔ ¬a ∈ s ∧ Disjoint s t

tactic: tauto
state_before: α : Type u_1
β : Type ?u.492563
γ : Type ?u.492566
a : α
s t : Multiset α
⊢ ¬a ∈ s ∧ Disjoint t s ↔ ¬a ∈ s ∧ Disjoint s t
Theorem: StrictConvexOn.convex_lt
File: Mathlib/Analysis/Convex/Function.lean

tactic: gcongr
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.194768
α : Type ?u.194771
β : Type u_3
ι : Type ?u.194777
inst✝⁷ : OrderedSemiring 𝕜
inst✝⁶ : AddCommMonoid E
inst✝⁵ : AddCommMonoid F
inst✝⁴ : OrderedAddCommMonoid α
inst✝³ : OrderedAddCommMonoid β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f : E → β
hf : StrictConvexOn 𝕜 s f
r : β
x : E
hx : x ∈ {x | x ∈ s ∧ f x < r}
y : E
hy : y ∈ {x | x ∈ s ∧ f x < r}
hxy : x ≠ y
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ a • f x + b • f y ≤ a • r + b • r

tactic: exact hx.2.le
state_before: case h₁.h₁
𝕜 : Type u_1
E : Type u_2
F : Type ?u.194768
α : Type ?u.194771
β : Type u_3
ι : Type ?u.194777
inst✝⁷ : OrderedSemiring 𝕜
inst✝⁶ : AddCommMonoid E
inst✝⁵ : AddCommMonoid F
inst✝⁴ : OrderedAddCommMonoid α
inst✝³ : OrderedAddCommMonoid β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f : E → β
hf : StrictConvexOn 𝕜 s f
r : β
x : E
hx : x ∈ {x | x ∈ s ∧ f x < r}
y : E
hy : y ∈ {x | x ∈ s ∧ f x < r}
hxy : x ≠ y
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ f x ≤ r

case h₂.h₁
𝕜 : Type u_1
E : Type u_2
F : Type ?u.194768
α : Type ?u.194771
β : Type u_3
ι : Type ?u.194777
inst✝⁷ : OrderedSemiring 𝕜
inst✝⁶ : AddCommMonoid E
inst✝⁵ : AddCommMonoid F
inst✝⁴ : OrderedAddCommMonoid α
inst✝³ : OrderedAddCommMonoid β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f : E → β
hf : StrictConvexOn 𝕜 s f
r : β
x : E
hx : x ∈ {x | x ∈ s ∧ f x < r}
y : E
hy : y ∈ {x | x ∈ s ∧ f x < r}
hxy : x ≠ y
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ f y ≤ r

tactic: exact hy.2.le
state_before: case h₂.h₁
𝕜 : Type u_1
E : Type u_2
F : Type ?u.194768
α : Type ?u.194771
β : Type u_3
ι : Type ?u.194777
inst✝⁷ : OrderedSemiring 𝕜
inst✝⁶ : AddCommMonoid E
inst✝⁵ : AddCommMonoid F
inst✝⁴ : OrderedAddCommMonoid α
inst✝³ : OrderedAddCommMonoid β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f : E → β
hf : StrictConvexOn 𝕜 s f
r : β
x : E
hx : x ∈ {x | x ∈ s ∧ f x < r}
y : E
hy : y ∈ {x | x ∈ s ∧ f x < r}
hxy : x ≠ y
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ f y ≤ r
Theorem: ENNReal.tendsto_rpow_at_top
File: Mathlib/Analysis/SpecialFunctions/Pow/Asymptotics.lean

tactic: rw [ENNReal.tendsto_nhds_top_iff_nnreal]
state_before: y : ℝ
hy : 0 < y
⊢ Tendsto (fun x => x ^ y) (𝓝 ⊤) (𝓝 ⊤)

tactic: intro x
state_before: y : ℝ
hy : 0 < y
⊢ ∀ (x : ℝ≥0), ∀ᶠ (a : ℝ≥0∞) in 𝓝 ⊤, ↑x < a ^ y

tactic: obtain ⟨c, _, hc⟩ :=
  (atTop_basis_Ioi.tendsto_iff atTop_basis_Ioi).mp (NNReal.tendsto_rpow_atTop hy) x trivial
state_before: y : ℝ
hy : 0 < y
x : ℝ≥0
⊢ ∀ᶠ (a : ℝ≥0∞) in 𝓝 ⊤, ↑x < a ^ y

tactic: have hc' : Set.Ioi ↑c ∈ 𝓝 (⊤ : ℝ≥0∞) := Ioi_mem_nhds ENNReal.coe_lt_top
state_before: case intro.intro
y : ℝ
hy : 0 < y
x c : ℝ≥0
left✝ : True
hc : ∀ (x_1 : ℝ≥0), x_1 ∈ Set.Ioi c → ↑x_1 ^ y ∈ Set.Ioi ↑x
⊢ ∀ᶠ (a : ℝ≥0∞) in 𝓝 ⊤, ↑x < a ^ y

tactic: refine' eventually_of_mem hc' _
state_before: case intro.intro
y : ℝ
hy : 0 < y
x c : ℝ≥0
left✝ : True
hc : ∀ (x_1 : ℝ≥0), x_1 ∈ Set.Ioi c → ↑x_1 ^ y ∈ Set.Ioi ↑x
hc' : Set.Ioi ↑c ∈ 𝓝 ⊤
⊢ ∀ᶠ (a : ℝ≥0∞) in 𝓝 ⊤, ↑x < a ^ y

tactic: intro a ha
state_before: case intro.intro
y : ℝ
hy : 0 < y
x c : ℝ≥0
left✝ : True
hc : ∀ (x_1 : ℝ≥0), x_1 ∈ Set.Ioi c → ↑x_1 ^ y ∈ Set.Ioi ↑x
hc' : Set.Ioi ↑c ∈ 𝓝 ⊤
⊢ ∀ (x_1 : ℝ≥0∞), x_1 ∈ Set.Ioi ↑c → ↑x < x_1 ^ y

tactic: by_cases ha' : a = ⊤
state_before: case intro.intro
y : ℝ
hy : 0 < y
x c : ℝ≥0
left✝ : True
hc : ∀ (x_1 : ℝ≥0), x_1 ∈ Set.Ioi c → ↑x_1 ^ y ∈ Set.Ioi ↑x
hc' : Set.Ioi ↑c ∈ 𝓝 ⊤
a : ℝ≥0∞
ha : a ∈ Set.Ioi ↑c
⊢ ↑x < a ^ y

tactic: lift a to ℝ≥0 using ha'
state_before: case neg
y : ℝ
hy : 0 < y
x c : ℝ≥0
left✝ : True
hc : ∀ (x_1 : ℝ≥0), x_1 ∈ Set.Ioi c → ↑x_1 ^ y ∈ Set.Ioi ↑x
hc' : Set.Ioi ↑c ∈ 𝓝 ⊤
a : ℝ≥0∞
ha : a ∈ Set.Ioi ↑c
ha' : ¬a = ⊤
⊢ ↑x < a ^ y

tactic: simp only [Set.mem_Ioi, coe_lt_coe] at ha hc
state_before: case neg.intro
y : ℝ
hy : 0 < y
x c : ℝ≥0
left✝ : True
hc : ∀ (x_1 : ℝ≥0), x_1 ∈ Set.Ioi c → ↑x_1 ^ y ∈ Set.Ioi ↑x
hc' : Set.Ioi ↑c ∈ 𝓝 ⊤
a : ℝ≥0
ha : ↑a ∈ Set.Ioi ↑c
⊢ ↑x < ↑a ^ y

tactic: rw [ENNReal.coe_rpow_of_nonneg _ hy.le]
state_before: case neg.intro
y : ℝ
hy : 0 < y
x c : ℝ≥0
left✝ : True
hc' : Set.Ioi ↑c ∈ 𝓝 ⊤
a : ℝ≥0
ha : c < a
hc : ∀ (x_1 : ℝ≥0), c < x_1 → ↑x < ↑x_1 ^ y
⊢ ↑x < ↑a ^ y

tactic: exact_mod_cast hc a ha
state_before: case neg.intro
y : ℝ
hy : 0 < y
x c : ℝ≥0
left✝ : True
hc' : Set.Ioi ↑c ∈ 𝓝 ⊤
a : ℝ≥0
ha : c < a
hc : ∀ (x_1 : ℝ≥0), c < x_1 → ↑x < ↑x_1 ^ y
⊢ ↑x < ↑(a ^ y)

tactic: simp [ha', hy]
state_before: case pos
y : ℝ
hy : 0 < y
x c : ℝ≥0
left✝ : True
hc : ∀ (x_1 : ℝ≥0), x_1 ∈ Set.Ioi c → ↑x_1 ^ y ∈ Set.Ioi ↑x
hc' : Set.Ioi ↑c ∈ 𝓝 ⊤
a : ℝ≥0∞
ha : a ∈ Set.Ioi ↑c
ha' : a = ⊤
⊢ ↑x < a ^ y
Theorem: Nat.Linear.ExprCnstr.eq_false_of_isUnsat
File: src/lean/Init/Data/Nat/Linear.lean

tactic: have := PolyCnstr.eq_false_of_isUnsat ctx h
state_before: ctx : Context
c : ExprCnstr
h : PolyCnstr.isUnsat (toNormPoly c) = true
⊢ denote ctx c = False

tactic: simp at this
state_before: ctx : Context
c : ExprCnstr
h : PolyCnstr.isUnsat (toNormPoly c) = true
this : PolyCnstr.denote ctx (toNormPoly c) = False
⊢ denote ctx c = False

tactic: assumption
state_before: ctx : Context
c : ExprCnstr
h : PolyCnstr.isUnsat (toNormPoly c) = true
this : denote ctx c = False
⊢ denote ctx c = False
Theorem: BoundedContinuousFunction.inducing_coeFn
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

tactic: rw [inducing_iff_nhds]
state_before: F : Type ?u.310540
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : PseudoMetricSpace β
inst✝ : PseudoMetricSpace γ
f g : α →ᵇ β
x : α
C : ℝ
⊢ Inducing (↑UniformFun.ofFun ∘ FunLike.coe)

tactic: refine' fun f => eq_of_forall_le_iff fun l => _
state_before: F : Type ?u.310540
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : PseudoMetricSpace β
inst✝ : PseudoMetricSpace γ
f g : α →ᵇ β
x : α
C : ℝ
⊢ ∀ (a : α →ᵇ β), 𝓝 a = comap (↑UniformFun.ofFun ∘ FunLike.coe) (𝓝 ((↑UniformFun.ofFun ∘ FunLike.coe) a))

tactic: rw [← tendsto_iff_comap, ← tendsto_id', tendsto_iff_tendstoUniformly,
  UniformFun.tendsto_iff_tendstoUniformly]
state_before: F : Type ?u.310540
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : PseudoMetricSpace β
inst✝ : PseudoMetricSpace γ
f✝ g : α →ᵇ β
x : α
C : ℝ
f : α →ᵇ β
l : Filter (α →ᵇ β)
⊢ l ≤ 𝓝 f ↔ l ≤ comap (↑UniformFun.ofFun ∘ FunLike.coe) (𝓝 ((↑UniformFun.ofFun ∘ FunLike.coe) f))

tactic: rfl
state_before: F : Type ?u.310540
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : PseudoMetricSpace β
inst✝ : PseudoMetricSpace γ
f✝ g : α →ᵇ β
x : α
C : ℝ
f : α →ᵇ β
l : Filter (α →ᵇ β)
⊢ TendstoUniformly (fun i => ↑(id i)) (↑f) l ↔
    TendstoUniformly (↑UniformFun.ofFun ∘ FunLike.coe) ((↑UniformFun.ofFun ∘ FunLike.coe) f) l
Theorem: Nat.pred_one_add
File: Mathlib/Data/Nat/Basic.lean

tactic: rw [add_comm, add_one, Nat.pred_succ]
state_before: m n✝ k n : ℕ
⊢ pred (1 + n) = n
Theorem: Finset.image_add_left_Ico
File: Mathlib/Data/Finset/LocallyFinite.lean

tactic: rw [← map_add_left_Ico, map_eq_image]
state_before: ι : Type ?u.236116
α : Type u_1
inst✝³ : OrderedCancelAddCommMonoid α
inst✝² : ExistsAddOfLE α
inst✝¹ : LocallyFiniteOrder α
inst✝ : DecidableEq α
a b c : α
⊢ image ((fun x x_1 => x + x_1) c) (Ico a b) = Ico (c + a) (c + b)

tactic: rfl
state_before: ι : Type ?u.236116
α : Type u_1
inst✝³ : OrderedCancelAddCommMonoid α
inst✝² : ExistsAddOfLE α
inst✝¹ : LocallyFiniteOrder α
inst✝ : DecidableEq α
a b c : α
⊢ image ((fun x x_1 => x + x_1) c) (Ico a b) = image (↑(addLeftEmbedding c)) (Ico a b)
Theorem: polynomialFunctions_coe
File: Mathlib/Topology/ContinuousFunction/Polynomial.lean

tactic: ext
state_before: R : Type u_1
inst✝² : CommSemiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
X : Set R
⊢ ↑(polynomialFunctions X) = Set.range ↑(toContinuousMapOnAlgHom X)

tactic: simp [polynomialFunctions]
state_before: case h
R : Type u_1
inst✝² : CommSemiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
X : Set R
x✝ : C(↑X, R)
⊢ x✝ ∈ ↑(polynomialFunctions X) ↔ x✝ ∈ Set.range ↑(toContinuousMapOnAlgHom X)
Theorem: lowerCentralSeries_pi_le
File: Mathlib/GroupTheory/Nilpotent.lean

tactic: let pi := fun f : ∀ i, Subgroup (Gs i) => Subgroup.pi Set.univ f
state_before: G : Type ?u.336571
inst✝² : Group G
H : Subgroup G
inst✝¹ : Normal H
η : Type u_1
Gs : η → Type u_2
inst✝ : (i : η) → Group (Gs i)
n : ℕ
⊢ lowerCentralSeries ((i : η) → Gs i) n ≤ pi Set.univ fun i => lowerCentralSeries (Gs i) n

tactic: induction' n with n ih
state_before: G : Type ?u.336571
inst✝² : Group G
H : Subgroup G
inst✝¹ : Normal H
η : Type u_1
Gs : η → Type u_2
inst✝ : (i : η) → Group (Gs i)
n : ℕ
pi : ((i : η) → Subgroup (Gs i)) → Subgroup ((i : η) → Gs i) := fun f => Subgroup.pi Set.univ f
⊢ lowerCentralSeries ((i : η) → Gs i) n ≤ Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) n

tactic: simp [pi_top]
state_before: case zero
G : Type ?u.336571
inst✝² : Group G
H : Subgroup G
inst✝¹ : Normal H
η : Type u_1
Gs : η → Type u_2
inst✝ : (i : η) → Group (Gs i)
pi : ((i : η) → Subgroup (Gs i)) → Subgroup ((i : η) → Gs i) := fun f => Subgroup.pi Set.univ f
⊢ lowerCentralSeries ((i : η) → Gs i) Nat.zero ≤ Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) Nat.zero

tactic: calc
  lowerCentralSeries (∀ i, Gs i) n.succ = ⁅lowerCentralSeries (∀ i, Gs i) n, ⊤⁆ := rfl
  _ ≤ ⁅pi fun i => lowerCentralSeries (Gs i) n, ⊤⁆ := (commutator_mono ih (le_refl _))
  _ = ⁅pi fun i => lowerCentralSeries (Gs i) n, pi fun i => ⊤⁆ := by simp [pi_top]
  _ ≤ pi fun i => ⁅lowerCentralSeries (Gs i) n, ⊤⁆ := (commutator_pi_pi_le _ _)
  _ = pi fun i => lowerCentralSeries (Gs i) n.succ := rfl
state_before: case succ
G : Type ?u.336571
inst✝² : Group G
H : Subgroup G
inst✝¹ : Normal H
η : Type u_1
Gs : η → Type u_2
inst✝ : (i : η) → Group (Gs i)
pi : ((i : η) → Subgroup (Gs i)) → Subgroup ((i : η) → Gs i) := fun f => Subgroup.pi Set.univ f
n : ℕ
ih : lowerCentralSeries ((i : η) → Gs i) n ≤ Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) n
⊢ lowerCentralSeries ((i : η) → Gs i) (Nat.succ n) ≤
    Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) (Nat.succ n)

tactic: simp [pi_top]
state_before: G : Type ?u.336571
inst✝² : Group G
H : Subgroup G
inst✝¹ : Normal H
η : Type u_1
Gs : η → Type u_2
inst✝ : (i : η) → Group (Gs i)
pi : ((i : η) → Subgroup (Gs i)) → Subgroup ((i : η) → Gs i) := fun f => Subgroup.pi Set.univ f
n : ℕ
ih : lowerCentralSeries ((i : η) → Gs i) n ≤ Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) n
⊢ ⁅pi fun i => lowerCentralSeries (Gs i) n, ⊤⁆ = ⁅pi fun i => lowerCentralSeries (Gs i) n, pi fun i => ⊤⁆
Theorem: Fin.le_sub_one_iff
File: Mathlib/Data/Fin/Basic.lean

tactic: cases n
state_before: n✝ m n : ℕ
k : Fin (n + 1)
⊢ k ≤ k - 1 ↔ k = 0

tactic: rw [← lt_sub_one_iff, le_iff_lt_or_eq, lt_sub_one_iff, or_iff_left_iff_imp, eq_comm,
  sub_eq_iff_eq_add]
state_before: case succ
n m n✝ : ℕ
k : Fin (Nat.succ n✝ + 1)
⊢ k ≤ k - 1 ↔ k = 0

tactic: simp
state_before: case succ
n m n✝ : ℕ
k : Fin (Nat.succ n✝ + 1)
⊢ k = k + 1 → k = 0

tactic: simp [fin_one_eq_zero k]
state_before: case zero
n m : ℕ
k : Fin (zero + 1)
⊢ k ≤ k - 1 ↔ k = 0
Theorem: AlgebraicGeometry.RingedSpace.basicOpen_le
File: Mathlib/AlgebraicGeometry/RingedSpace.lean

tactic: rintro _ ⟨x, _, rfl⟩
state_before: X : RingedSpace
U : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj U.op)
⊢ basicOpen X f ≤ U

tactic: exact x.2
state_before: case intro.intro
X : RingedSpace
U : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj U.op)
x : { x // x ∈ U }
left✝ : x ∈ {x | IsUnit (↑(germ X.presheaf x) f)}
⊢ ↑x ∈ ↑U
Theorem: Multiset.card_Ioc
File: Mathlib/Data/Multiset/Interval.lean

tactic: rw [card_Ioc_eq_card_Icc_sub_one, card_Icc]
state_before: α : Type u_1
β : α → Type ?u.46128
inst✝ : DecidableEq α
f g : Multiset α
⊢ Finset.card (Finset.Ioc f g) = ∏ i in toFinset f ∪ toFinset g, (count i g + 1 - count i f) - 1
Theorem: one_le_of_le_mul_right
File: Mathlib/Algebra/Order/Monoid/Lemmas.lean

tactic: simpa only [mul_one]
state_before: α : Type u_1
β : Type ?u.15461
inst✝² : MulOneClass α
inst✝¹ : LE α
inst✝ : ContravariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b : α
h : a ≤ a * b
⊢ ?m.15810 h * 1 ≤ ?m.15810 h * b
Theorem: IsPrimitiveRoot.zmodEquivZpowers_symm_apply_zpow
File: Mathlib/RingTheory/RootsOfUnity/Basic.lean

tactic: rw [← h.zmodEquivZpowers.symm_apply_apply i, zmodEquivZpowers_apply_coe_int]
state_before: M : Type ?u.2986528
N : Type ?u.2986531
G : Type ?u.2986534
R : Type u_1
S : Type ?u.2986540
F : Type ?u.2986543
inst✝³ : CommMonoid M
inst✝² : CommMonoid N
inst✝¹ : DivisionCommMonoid G
k l : ℕ
inst✝ : CommRing R
ζ : Rˣ
h : IsPrimitiveRoot ζ k
i : ℤ
⊢ ↑(AddEquiv.symm (zmodEquivZpowers h))
      (↑Additive.ofMul { val := ζ ^ i, property := (_ : ∃ y, (fun x x_1 => x ^ x_1) ζ y = ζ ^ i) }) =
    ↑i
Theorem: Std.RBNode.Path.Ordered.fill
File: Std/Data/RBMap/Alter.lean

tactic: simp [Ordered.fill, RBNode.Ordered, Ordered, RootOrdered, All_and]
state_before: α : Type u_1
cmp : α → α → Ordering
c✝ : RBColor
parent✝ : Path α
v✝ : α
r✝ x✝ : RBNode α
⊢ RBNode.Ordered cmp (fill (left c✝ parent✝ v✝ r✝) x✝) ↔
    Ordered cmp (left c✝ parent✝ v✝ r✝) ∧ RBNode.Ordered cmp x✝ ∧ All (RootOrdered cmp (left c✝ parent✝ v✝ r✝)) x✝

tactic: exact ⟨
  fun ⟨hp, ⟨ax, xb, ha, hb⟩, ⟨xp, ap, bp⟩⟩ => ⟨⟨hp, xb, xp, bp, hb⟩, ha, ⟨ax, ap⟩⟩,
  fun ⟨⟨hp, xb, xp, bp, hb⟩, ha, ⟨ax, ap⟩⟩ => ⟨hp, ⟨ax, xb, ha, hb⟩, ⟨xp, ap, bp⟩⟩⟩
state_before: α : Type u_1
cmp : α → α → Ordering
c✝ : RBColor
parent✝ : Path α
v✝ : α
r✝ x✝ : RBNode α
⊢ Ordered cmp parent✝ ∧
      (All (fun x => cmpLT cmp x v✝) x✝ ∧
          All (fun x => cmpLT cmp v✝ x) r✝ ∧ RBNode.Ordered cmp x✝ ∧ RBNode.Ordered cmp r✝) ∧
        RootOrdered cmp parent✝ v✝ ∧ All (RootOrdered cmp parent✝) x✝ ∧ All (RootOrdered cmp parent✝) r✝ ↔
    (Ordered cmp parent✝ ∧
        All (fun x => cmpLT cmp v✝ x) r✝ ∧
          RootOrdered cmp parent✝ v✝ ∧ All (RootOrdered cmp parent✝) r✝ ∧ RBNode.Ordered cmp r✝) ∧
      RBNode.Ordered cmp x✝ ∧ All (fun x => cmpLT cmp x v✝) x✝ ∧ All (fun a => RootOrdered cmp parent✝ a) x✝

tactic: simp [Ordered.fill, RBNode.Ordered, Ordered, RootOrdered, All_and]
state_before: α : Type u_1
cmp : α → α → Ordering
c✝ : RBColor
l✝ : RBNode α
v✝ : α
parent✝ : Path α
x✝ : RBNode α
⊢ RBNode.Ordered cmp (fill (right c✝ l✝ v✝ parent✝) x✝) ↔
    Ordered cmp (right c✝ l✝ v✝ parent✝) ∧ RBNode.Ordered cmp x✝ ∧ All (RootOrdered cmp (right c✝ l✝ v✝ parent✝)) x✝

tactic: exact ⟨
  fun ⟨hp, ⟨ax, xb, ha, hb⟩, ⟨xp, ap, bp⟩⟩ => ⟨⟨hp, ax, xp, ap, ha⟩, hb, ⟨xb, bp⟩⟩,
  fun ⟨⟨hp, ax, xp, ap, ha⟩, hb, ⟨xb, bp⟩⟩ => ⟨hp, ⟨ax, xb, ha, hb⟩, ⟨xp, ap, bp⟩⟩⟩
state_before: α : Type u_1
cmp : α → α → Ordering
c✝ : RBColor
l✝ : RBNode α
v✝ : α
parent✝ : Path α
x✝ : RBNode α
⊢ Ordered cmp parent✝ ∧
      (All (fun x => cmpLT cmp x v✝) l✝ ∧
          All (fun x => cmpLT cmp v✝ x) x✝ ∧ RBNode.Ordered cmp l✝ ∧ RBNode.Ordered cmp x✝) ∧
        RootOrdered cmp parent✝ v✝ ∧ All (RootOrdered cmp parent✝) l✝ ∧ All (RootOrdered cmp parent✝) x✝ ↔
    (Ordered cmp parent✝ ∧
        All (fun x => cmpLT cmp x v✝) l✝ ∧
          RootOrdered cmp parent✝ v✝ ∧ All (RootOrdered cmp parent✝) l✝ ∧ RBNode.Ordered cmp l✝) ∧
      RBNode.Ordered cmp x✝ ∧ All (fun x => cmpLT cmp v✝ x) x✝ ∧ All (fun a => RootOrdered cmp parent✝ a) x✝
Theorem: bit0_le_bit0
File: Mathlib/Algebra/Order/Ring/Defs.lean

tactic: rw [bit0, bit0, ← two_mul, ← two_mul, mul_le_mul_left (zero_lt_two : 0 < (2 : α))]
state_before: α : Type u
β : Type ?u.120170
inst✝ : LinearOrderedSemiring α
a b c d : α
⊢ bit0 a ≤ bit0 b ↔ a ≤ b
Theorem: Submodule.finset_span_isCompactElement
File: Mathlib/LinearAlgebra/Span.lean

tactic: rw [span_eq_iSup_of_singleton_spans]
state_before: R : Type u_2
R₂ : Type ?u.224705
K : Type ?u.224708
M : Type u_1
M₂ : Type ?u.224714
V : Type ?u.224717
S✝ : Type ?u.224720
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t : Set M
S : Finset M
⊢ CompleteLattice.IsCompactElement (span R ↑S)

tactic: simp only [Finset.mem_coe]
state_before: R : Type u_2
R₂ : Type ?u.224705
K : Type ?u.224708
M : Type u_1
M₂ : Type ?u.224714
V : Type ?u.224717
S✝ : Type ?u.224720
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t : Set M
S : Finset M
⊢ CompleteLattice.IsCompactElement (⨆ (x : M) (_ : x ∈ ↑S), span R {x})

tactic: rw [← Finset.sup_eq_iSup]
state_before: R : Type u_2
R₂ : Type ?u.224705
K : Type ?u.224708
M : Type u_1
M₂ : Type ?u.224714
V : Type ?u.224717
S✝ : Type ?u.224720
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t : Set M
S : Finset M
⊢ CompleteLattice.IsCompactElement (⨆ (x : M) (_ : x ∈ S), span R {x})

tactic: exact
  CompleteLattice.finset_sup_compact_of_compact S fun x _ => singleton_span_isCompactElement x
state_before: R : Type u_2
R₂ : Type ?u.224705
K : Type ?u.224708
M : Type u_1
M₂ : Type ?u.224714
V : Type ?u.224717
S✝ : Type ?u.224720
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t : Set M
S : Finset M
⊢ CompleteLattice.IsCompactElement (Finset.sup S fun x => span R {x})