1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Antitone.cauchySeq_alternating_series_of_tendsto_zero
File: Mathlib/Analysis/SpecificLimits/Normed.lean

tactic: simp_rw [mul_comm]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
b : ℝ
f : ℕ → ℝ
z : ℕ → E
hfa : Antitone f
hf0 : Tendsto f atTop (𝓝 0)
⊢ CauchySeq fun n => ∑ i ∈ Finset.range n, (-1) ^ i * f i
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
b : ℝ
f : ℕ → ℝ
z : ℕ → E
hfa : Antitone f
hf0 : Tendsto f atTop (𝓝 0)
⊢ CauchySeq fun n => ∑ x ∈ Finset.range n, f x * (-1) ^ x

tactic: exact hfa.cauchySeq_series_mul_of_tendsto_zero_of_bounded hf0 norm_sum_neg_one_pow_le
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
b : ℝ
f : ℕ → ℝ
z : ℕ → E
hfa : Antitone f
hf0 : Tendsto f atTop (𝓝 0)
⊢ CauchySeq fun n => ∑ x ∈ Finset.range n, f x * (-1) ^ x
state_after: no goals
Theorem: Submodule.mem_sSup_of_directed
File: Mathlib/LinearAlgebra/Span.lean

tactic: have : Nonempty s := hs.to_subtype
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
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₂
F : Type u_8
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F σ₁₂ M M₂
s✝ t : Set M
s : Set (Submodule R M)
z : M
hs : s.Nonempty
hdir : DirectedOn (fun x x_1 => x ≤ x_1) s
⊢ z ∈ sSup s ↔ ∃ y ∈ s, z ∈ y
state_after: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
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₂
F : Type u_8
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F σ₁₂ M M₂
s✝ t : Set M
s : Set (Submodule R M)
z : M
hs : s.Nonempty
hdir : DirectedOn (fun x x_1 => x ≤ x_1) s
this : Nonempty ↑s
⊢ z ∈ sSup s ↔ ∃ y ∈ s, z ∈ y

tactic: simp only [sSup_eq_iSup', mem_iSup_of_directed _ hdir.directed_val, SetCoe.exists, Subtype.coe_mk,
  exists_prop]
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
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₂
F : Type u_8
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F σ₁₂ M M₂
s✝ t : Set M
s : Set (Submodule R M)
z : M
hs : s.Nonempty
hdir : DirectedOn (fun x x_1 => x ≤ x_1) s
this : Nonempty ↑s
⊢ z ∈ sSup s ↔ ∃ y ∈ s, z ∈ y
state_after: no goals
Theorem: completeSpace_iff_ultrafilter
File: Mathlib/Topology/UniformSpace/Cauchy.lean

tactic: simp [completeSpace_iff_isComplete_univ, isComplete_iff_ultrafilter]
state_before: α : Type u
β : Type v
uniformSpace : UniformSpace α
⊢ CompleteSpace α ↔ ∀ (l : Ultrafilter α), Cauchy ↑l → ∃ x, ↑l ≤ 𝓝 x
state_after: no goals
Theorem: PadicInt.denseRange_natCast
File: Mathlib/NumberTheory/Padics/RingHoms.lean

tactic: intro x
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x : ℤ_[p]
⊢ DenseRange Nat.cast
state_after: p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
⊢ x ∈ closure (Set.range Nat.cast)

tactic: rw [Metric.mem_closure_range_iff]
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
⊢ x ∈ closure (Set.range Nat.cast)
state_after: p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
⊢ ∀ ε > 0, ∃ k, dist x ↑k < ε

tactic: intro ε hε
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
⊢ ∀ ε > 0, ∃ k, dist x ↑k < ε
state_after: p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
ε : ℝ
hε : ε > 0
⊢ ∃ k, dist x ↑k < ε

tactic: obtain ⟨n, hn⟩ := exists_pow_neg_lt p hε
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
ε : ℝ
hε : ε > 0
⊢ ∃ k, dist x ↑k < ε
state_after: case intro
p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
ε : ℝ
hε : ε > 0
n : ℕ
hn : ↑p ^ (-↑n) < ε
⊢ ∃ k, dist x ↑k < ε

tactic: use x.appr n
state_before: case intro
p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
ε : ℝ
hε : ε > 0
n : ℕ
hn : ↑p ^ (-↑n) < ε
⊢ ∃ k, dist x ↑k < ε
state_after: case h
p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
ε : ℝ
hε : ε > 0
n : ℕ
hn : ↑p ^ (-↑n) < ε
⊢ dist x ↑(x.appr n) < ε

tactic: rw [dist_eq_norm]
state_before: case h
p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
ε : ℝ
hε : ε > 0
n : ℕ
hn : ↑p ^ (-↑n) < ε
⊢ dist x ↑(x.appr n) < ε
state_after: case h
p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
ε : ℝ
hε : ε > 0
n : ℕ
hn : ↑p ^ (-↑n) < ε
⊢ ‖x - ↑(x.appr n)‖ < ε

tactic: apply lt_of_le_of_lt _ hn
state_before: case h
p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
ε : ℝ
hε : ε > 0
n : ℕ
hn : ↑p ^ (-↑n) < ε
⊢ ‖x - ↑(x.appr n)‖ < ε
state_after: p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
ε : ℝ
hε : ε > 0
n : ℕ
hn : ↑p ^ (-↑n) < ε
⊢ ‖x - ↑(x.appr n)‖ ≤ ↑p ^ (-↑n)

tactic: rw [norm_le_pow_iff_mem_span_pow]
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
ε : ℝ
hε : ε > 0
n : ℕ
hn : ↑p ^ (-↑n) < ε
⊢ ‖x - ↑(x.appr n)‖ ≤ ↑p ^ (-↑n)
state_after: p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
ε : ℝ
hε : ε > 0
n : ℕ
hn : ↑p ^ (-↑n) < ε
⊢ x - ↑(x.appr n) ∈ Ideal.span {↑p ^ n}

tactic: apply appr_spec
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
ε : ℝ
hε : ε > 0
n : ℕ
hn : ↑p ^ (-↑n) < ε
⊢ x - ↑(x.appr n) ∈ Ideal.span {↑p ^ n}
state_after: no goals
Theorem: SimpleGraph.minDegree_le_degree
File: Mathlib/Combinatorics/SimpleGraph/Finite.lean

tactic: obtain ⟨t, ht⟩ := Finset.min_of_mem (mem_image_of_mem (fun v => G.degree v) (mem_univ v))
state_before: V : Type u_1
G : SimpleGraph V
e : Sym2 V
inst✝¹ : Fintype V
inst✝ : DecidableRel G.Adj
v : V
⊢ G.minDegree ≤ G.degree v
state_after: case intro
V : Type u_1
G : SimpleGraph V
e : Sym2 V
inst✝¹ : Fintype V
inst✝ : DecidableRel G.Adj
v : V
t : ℕ
ht : (image (fun v => G.degree v) univ).min = ↑t
⊢ G.minDegree ≤ G.degree v

tactic: have := Finset.min_le_of_eq (mem_image_of_mem _ (mem_univ v)) ht
state_before: case intro
V : Type u_1
G : SimpleGraph V
e : Sym2 V
inst✝¹ : Fintype V
inst✝ : DecidableRel G.Adj
v : V
t : ℕ
ht : (image (fun v => G.degree v) univ).min = ↑t
⊢ G.minDegree ≤ G.degree v
state_after: case intro
V : Type u_1
G : SimpleGraph V
e : Sym2 V
inst✝¹ : Fintype V
inst✝ : DecidableRel G.Adj
v : V
t : ℕ
ht : (image (fun v => G.degree v) univ).min = ↑t
this : t ≤ G.degree v
⊢ G.minDegree ≤ G.degree v

tactic: rwa [minDegree, ht]
state_before: case intro
V : Type u_1
G : SimpleGraph V
e : Sym2 V
inst✝¹ : Fintype V
inst✝ : DecidableRel G.Adj
v : V
t : ℕ
ht : (image (fun v => G.degree v) univ).min = ↑t
this : t ≤ G.degree v
⊢ G.minDegree ≤ G.degree v
state_after: no goals
Theorem: Cycle.next_mem
File: Mathlib/Data/List/Cycle.lean

tactic: induction s using Quot.inductionOn
state_before: α : Type u_1
inst✝ : DecidableEq α
s : Cycle α
hs : s.Nodup
x : α
hx : x ∈ s
⊢ s.next hs x hx ∈ s
state_after: case h
α : Type u_1
inst✝ : DecidableEq α
x : α
a✝ : List α
hs : Nodup (Quot.mk Setoid.r a✝)
hx : x ∈ Quot.mk Setoid.r a✝
⊢ next (Quot.mk Setoid.r a✝) hs x hx ∈ Quot.mk Setoid.r a✝

tactic: apply next_mem
state_before: case h
α : Type u_1
inst✝ : DecidableEq α
x : α
a✝ : List α
hs : Nodup (Quot.mk Setoid.r a✝)
hx : x ∈ Quot.mk Setoid.r a✝
⊢ next (Quot.mk Setoid.r a✝) hs x hx ∈ Quot.mk Setoid.r a✝
state_after: case h.h
α : Type u_1
inst✝ : DecidableEq α
x : α
a✝ : List α
hs : Nodup (Quot.mk Setoid.r a✝)
hx : x ∈ Quot.mk Setoid.r a✝
⊢ x ∈ a✝

tactic: assumption
state_before: case h.h
α : Type u_1
inst✝ : DecidableEq α
x : α
a✝ : List α
hs : Nodup (Quot.mk Setoid.r a✝)
hx : x ∈ Quot.mk Setoid.r a✝
⊢ x ∈ a✝
state_after: no goals
Theorem: SimpleGraph.cliqueFinset_map
File: Mathlib/Combinatorics/SimpleGraph/Clique.lean

tactic: simp_rw [coe_cliqueFinset, cliqueSet_map hn, coe_map, coe_cliqueFinset, Embedding.coeFn_mk]
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
inst✝⁵ : Fintype α
inst✝⁴ : DecidableEq α
inst✝³ : DecidableRel G.Adj
n : ℕ
a b c : α
s : Finset α
inst✝² : DecidableRel H.Adj
inst✝¹ : Fintype β
inst✝ : DecidableEq β
f : α ↪ β
hn : n ≠ 1
⊢ ↑((SimpleGraph.map f G).cliqueFinset n) = ↑(map { toFun := map f, inj' := ⋯ } (G.cliqueFinset n))
state_after: no goals
Theorem: Submodule.fg_span
File: Mathlib/RingTheory/Finiteness.lean

tactic: rw [hs.coe_toFinset]
state_before: R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
s : Set M
hs : s.Finite
⊢ span R ↑hs.toFinset = span R s
state_after: no goals
Theorem: CochainComplex.HomComplex.Cochain.leftShift_rightShift_eq_negOnePow_rightShift_leftShift
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplexShift.lean

tactic: rw [leftShift_rightShift, rightShift_leftShift, smul_smul, ← hn'', add_comm n a, mul_add,
  Int.negOnePow_add, Int.negOnePow_add, Int.negOnePow_add, Int.negOnePow_mul_self,
  ← mul_assoc, ← mul_assoc, Int.units_mul_self, one_mul]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a n' n'' : ℤ
hn' : n' + a = n
hn'' : n + a = n''
⊢ (γ.rightShift a n' hn').leftShift a n hn' = a.negOnePow • (γ.leftShift a n'' hn'').rightShift a n hn''
state_after: no goals
Theorem: Polynomial.coeff_hermite_of_even_add
File: Mathlib/RingTheory/Polynomial/Hermite/Basic.lean

tactic: rcases le_or_lt k n with h_le | h_lt
state_before: n k : ℕ
hnk : Even (n + k)
⊢ (hermite n).coeff k = (-1) ^ ((n - k) / 2) * ↑(n - k - 1)‼ * ↑(n.choose k)
state_after: case inl
n k : ℕ
hnk : Even (n + k)
h_le : k ≤ n
⊢ (hermite n).coeff k = (-1) ^ ((n - k) / 2) * ↑(n - k - 1)‼ * ↑(n.choose k)

case inr
n k : ℕ
hnk : Even (n + k)
h_lt : n < k
⊢ (hermite n).coeff k = (-1) ^ ((n - k) / 2) * ↑(n - k - 1)‼ * ↑(n.choose k)

tactic: rw [Nat.even_add, ← Nat.even_sub h_le] at hnk
state_before: case inl
n k : ℕ
hnk : Even (n + k)
h_le : k ≤ n
⊢ (hermite n).coeff k = (-1) ^ ((n - k) / 2) * ↑(n - k - 1)‼ * ↑(n.choose k)
state_after: case inl
n k : ℕ
hnk : Even (n - k)
h_le : k ≤ n
⊢ (hermite n).coeff k = (-1) ^ ((n - k) / 2) * ↑(n - k - 1)‼ * ↑(n.choose k)

tactic: obtain ⟨m, hm⟩ := hnk
state_before: case inl
n k : ℕ
hnk : Even (n - k)
h_le : k ≤ n
⊢ (hermite n).coeff k = (-1) ^ ((n - k) / 2) * ↑(n - k - 1)‼ * ↑(n.choose k)
state_after: case inl.intro
n k : ℕ
h_le : k ≤ n
m : ℕ
hm : n - k = m + m
⊢ (hermite n).coeff k = (-1) ^ ((n - k) / 2) * ↑(n - k - 1)‼ * ↑(n.choose k)

tactic: rw [(by omega : n = 2 * m + k),
  Nat.add_sub_cancel, Nat.mul_div_cancel_left _ (Nat.succ_pos 1), coeff_hermite_explicit]
state_before: case inl.intro
n k : ℕ
h_le : k ≤ n
m : ℕ
hm : n - k = m + m
⊢ (hermite n).coeff k = (-1) ^ ((n - k) / 2) * ↑(n - k - 1)‼ * ↑(n.choose k)
state_after: no goals

tactic: omega
state_before: n k : ℕ
h_le : k ≤ n
m : ℕ
hm : n - k = m + m
⊢ n = 2 * m + k
state_after: no goals

tactic: simp [Nat.choose_eq_zero_of_lt h_lt, coeff_hermite_of_lt h_lt]
state_before: case inr
n k : ℕ
hnk : Even (n + k)
h_lt : n < k
⊢ (hermite n).coeff k = (-1) ^ ((n - k) / 2) * ↑(n - k - 1)‼ * ↑(n.choose k)
state_after: no goals
Theorem: Ideal.FG.map
File: Mathlib/RingTheory/Finiteness.lean

tactic: classical
  obtain ⟨s, hs⟩ := h
  refine ⟨s.image f, ?_⟩
  rw [Finset.coe_image, ← Ideal.map_span, hs]
state_before: R✝ : Type u_1
M : Type u_2
inst✝⁴ : Semiring R✝
inst✝³ : AddCommMonoid M
inst✝² : Module R✝ M
R : Type u_3
S : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
I : Ideal R
h : I.FG
f : R →+* S
⊢ (Ideal.map f I).FG
state_after: no goals

tactic: obtain ⟨s, hs⟩ := h
state_before: R✝ : Type u_1
M : Type u_2
inst✝⁴ : Semiring R✝
inst✝³ : AddCommMonoid M
inst✝² : Module R✝ M
R : Type u_3
S : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
I : Ideal R
h : I.FG
f : R →+* S
⊢ (Ideal.map f I).FG
state_after: case intro
R✝ : Type u_1
M : Type u_2
inst✝⁴ : Semiring R✝
inst✝³ : AddCommMonoid M
inst✝² : Module R✝ M
R : Type u_3
S : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
I : Ideal R
f : R →+* S
s : Finset R
hs : span ↑s = I
⊢ (Ideal.map f I).FG

tactic: refine ⟨s.image f, ?_⟩
state_before: case intro
R✝ : Type u_1
M : Type u_2
inst✝⁴ : Semiring R✝
inst✝³ : AddCommMonoid M
inst✝² : Module R✝ M
R : Type u_3
S : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
I : Ideal R
f : R →+* S
s : Finset R
hs : span ↑s = I
⊢ (Ideal.map f I).FG
state_after: case intro
R✝ : Type u_1
M : Type u_2
inst✝⁴ : Semiring R✝
inst✝³ : AddCommMonoid M
inst✝² : Module R✝ M
R : Type u_3
S : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
I : Ideal R
f : R →+* S
s : Finset R
hs : span ↑s = I
⊢ span ↑(Finset.image (⇑f) s) = Ideal.map f I

tactic: rw [Finset.coe_image, ← Ideal.map_span, hs]
state_before: case intro
R✝ : Type u_1
M : Type u_2
inst✝⁴ : Semiring R✝
inst✝³ : AddCommMonoid M
inst✝² : Module R✝ M
R : Type u_3
S : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
I : Ideal R
f : R →+* S
s : Finset R
hs : span ↑s = I
⊢ span ↑(Finset.image (⇑f) s) = Ideal.map f I
state_after: no goals
Theorem: ModularForm.is_invariant_const
File: Mathlib/NumberTheory/ModularForms/SlashActions.lean

tactic: have : ((↑ₘ(A : GL(2, ℝ)⁺)).det : ℝ) = 1 := det_coe'
state_before: Γ : Subgroup SL(2, ℤ)
k : ℤ
f : ℍ → ℂ
A : SL(2, ℤ)
x : ℂ
⊢ Function.const ℍ x ∣[0] A = Function.const ℍ x
state_after: Γ : Subgroup SL(2, ℤ)
k : ℤ
f : ℍ → ℂ
A : SL(2, ℤ)
x : ℂ
this : (↑↑↑A).det = 1
⊢ Function.const ℍ x ∣[0] A = Function.const ℍ x

tactic: funext
state_before: Γ : Subgroup SL(2, ℤ)
k : ℤ
f : ℍ → ℂ
A : SL(2, ℤ)
x : ℂ
this : (↑↑↑A).det = 1
⊢ Function.const ℍ x ∣[0] A = Function.const ℍ x
state_after: case h
Γ : Subgroup SL(2, ℤ)
k : ℤ
f : ℍ → ℂ
A : SL(2, ℤ)
x : ℂ
this : (↑↑↑A).det = 1
x✝ : ℍ
⊢ (Function.const ℍ x ∣[0] A) x✝ = Function.const ℍ x x✝

tactic: rw [SL_slash, slash_def, slash, zero_sub, this]
state_before: case h
Γ : Subgroup SL(2, ℤ)
k : ℤ
f : ℍ → ℂ
A : SL(2, ℤ)
x : ℂ
this : (↑↑↑A).det = 1
x✝ : ℍ
⊢ (Function.const ℍ x ∣[0] A) x✝ = Function.const ℍ x x✝
state_after: case h
Γ : Subgroup SL(2, ℤ)
k : ℤ
f : ℍ → ℂ
A : SL(2, ℤ)
x : ℂ
this : (↑↑↑A).det = 1
x✝ : ℍ
⊢ Function.const ℍ x (↑A • x✝) * ↑1 ^ (-1) * denom (↑A) x✝ ^ (-0) = Function.const ℍ x x✝

tactic: simp
state_before: case h
Γ : Subgroup SL(2, ℤ)
k : ℤ
f : ℍ → ℂ
A : SL(2, ℤ)
x : ℂ
this : (↑↑↑A).det = 1
x✝ : ℍ
⊢ Function.const ℍ x (↑A • x✝) * ↑1 ^ (-1) * denom (↑A) x✝ ^ (-0) = Function.const ℍ x x✝
state_after: no goals
Theorem: t2Space_iff_nhds
File: Mathlib/Topology/Separation.lean

tactic: simp only [t2Space_iff_disjoint_nhds, Filter.disjoint_iff, Pairwise]
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : FirstCountableTopology X
⊢ T2Space X ↔ Pairwise fun x y => ∃ U ∈ 𝓝 x, ∃ V ∈ 𝓝 y, Disjoint U V
state_after: no goals
Theorem: HasProd.of_nat_of_neg
File: Mathlib/Topology/Algebra/InfiniteSum/NatInt.lean

tactic: refine mul_div_assoc' g .. ▸ hf₁.of_nat_of_neg_add_one (m' := g' / f 0) ?_
state_before: M : Type u_1
inst✝⁴ : CommMonoid M
inst✝³ : TopologicalSpace M
m m' : M
G : Type u_2
inst✝² : CommGroup G
g g' : G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
f : ℤ → G
hf₁ : HasProd (fun n => f ↑n) g
hf₂ : HasProd (fun n => f (-↑n)) g'
⊢ HasProd f (g * g' / f 0)
state_after: M : Type u_1
inst✝⁴ : CommMonoid M
inst✝³ : TopologicalSpace M
m m' : M
G : Type u_2
inst✝² : CommGroup G
g g' : G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
f : ℤ → G
hf₁ : HasProd (fun n => f ↑n) g
hf₂ : HasProd (fun n => f (-↑n)) g'
⊢ HasProd (fun n => f (-(↑n + 1))) (g' / f 0)

tactic: rwa [← hasProd_nat_add_iff' 1, prod_range_one, Nat.cast_zero, neg_zero] at hf₂
state_before: M : Type u_1
inst✝⁴ : CommMonoid M
inst✝³ : TopologicalSpace M
m m' : M
G : Type u_2
inst✝² : CommGroup G
g g' : G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
f : ℤ → G
hf₁ : HasProd (fun n => f ↑n) g
hf₂ : HasProd (fun n => f (-↑n)) g'
⊢ HasProd (fun n => f (-(↑n + 1))) (g' / f 0)
state_after: no goals
Theorem: Submodule.le_pow_toAddSubmonoid
File: Mathlib/Algebra/Algebra/Operations.lean

tactic: obtain rfl | hn := Decidable.eq_or_ne n 0
state_before: ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n✝ : A
n : ℕ
⊢ M.toAddSubmonoid ^ n ≤ (M ^ n).toAddSubmonoid
state_after: case inl
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
⊢ M.toAddSubmonoid ^ 0 ≤ (M ^ 0).toAddSubmonoid

case inr
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n✝ : A
n : ℕ
hn : n ≠ 0
⊢ M.toAddSubmonoid ^ n ≤ (M ^ n).toAddSubmonoid

tactic: rw [pow_zero, pow_zero]
state_before: case inl
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
⊢ M.toAddSubmonoid ^ 0 ≤ (M ^ 0).toAddSubmonoid
state_after: case inl
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
⊢ 1 ≤ toAddSubmonoid 1

tactic: exact le_one_toAddSubmonoid
state_before: case inl
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
⊢ 1 ≤ toAddSubmonoid 1
state_after: no goals

tactic: exact (pow_toAddSubmonoid M hn).ge
state_before: case inr
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n✝ : A
n : ℕ
hn : n ≠ 0
⊢ M.toAddSubmonoid ^ n ≤ (M ^ n).toAddSubmonoid
state_after: no goals
Theorem: IsClosed.intrinsicClosure
File: Mathlib/Analysis/Convex/Intrinsic.lean

tactic: rw [intrinsicClosure, hs.closure_eq, image_preimage_eq_of_subset]
state_before: 𝕜 : Type u_1
V : Type u_2
W : Type u_3
Q : Type u_4
P : Type u_5
inst✝⁴ : Ring 𝕜
inst✝³ : AddCommGroup V
inst✝² : Module 𝕜 V
inst✝¹ : TopologicalSpace P
inst✝ : AddTorsor V P
s t : Set P
x : P
hs : IsClosed (Subtype.val ⁻¹' s)
⊢ intrinsicClosure 𝕜 s = s
state_after: 𝕜 : Type u_1
V : Type u_2
W : Type u_3
Q : Type u_4
P : Type u_5
inst✝⁴ : Ring 𝕜
inst✝³ : AddCommGroup V
inst✝² : Module 𝕜 V
inst✝¹ : TopologicalSpace P
inst✝ : AddTorsor V P
s t : Set P
x : P
hs : IsClosed (Subtype.val ⁻¹' s)
⊢ s ⊆ range Subtype.val

tactic: exact (subset_affineSpan _ _).trans Subtype.range_coe.superset
state_before: 𝕜 : Type u_1
V : Type u_2
W : Type u_3
Q : Type u_4
P : Type u_5
inst✝⁴ : Ring 𝕜
inst✝³ : AddCommGroup V
inst✝² : Module 𝕜 V
inst✝¹ : TopologicalSpace P
inst✝ : AddTorsor V P
s t : Set P
x : P
hs : IsClosed (Subtype.val ⁻¹' s)
⊢ s ⊆ range Subtype.val
state_after: no goals
Theorem: UpperHalfPlane.modular_T_zpow_smul
File: Mathlib/Analysis/Complex/UpperHalfPlane/Basic.lean

tactic: rw [← ext_iff, coe_vadd, add_comm, specialLinearGroup_apply, coe_mk]
state_before: z : ℍ
n : ℤ
⊢ ModularGroup.T ^ n • z = ↑n +ᵥ z
state_after: z : ℍ
n : ℤ
⊢ (↑((algebraMap ℤ ℝ) (↑↑(ModularGroup.T ^ n) 0 0)) * ↑z + ↑((algebraMap ℤ ℝ) (↑↑(ModularGroup.T ^ n) 0 1))) /
      (↑((algebraMap ℤ ℝ) (↑↑(ModularGroup.T ^ n) 1 0)) * ↑z + ↑((algebraMap ℤ ℝ) (↑↑(ModularGroup.T ^ n) 1 1))) =
    ↑z + ↑↑n

tactic: simp [coeToGL, ModularGroup.coe_T_zpow,
  of_apply, cons_val_zero, algebraMap.coe_one, Complex.ofReal_one, one_mul, cons_val_one,
  head_cons, algebraMap.coe_zero, zero_mul, zero_add, div_one]
state_before: z : ℍ
n : ℤ
⊢ (↑((algebraMap ℤ ℝ) (↑↑(ModularGroup.T ^ n) 0 0)) * ↑z + ↑((algebraMap ℤ ℝ) (↑↑(ModularGroup.T ^ n) 0 1))) /
      (↑((algebraMap ℤ ℝ) (↑↑(ModularGroup.T ^ n) 1 0)) * ↑z + ↑((algebraMap ℤ ℝ) (↑↑(ModularGroup.T ^ n) 1 1))) =
    ↑z + ↑↑n
state_after: no goals
Theorem: HNNExtension.ReducedWord.toList_eq_nil_of_mem_of_range
File: Mathlib/GroupTheory/HNNExtension.lean

tactic: rcases hw with ⟨g, hg⟩
state_before: G : Type u_1
inst✝² : Group G
A B : Subgroup G
φ : ↥A ≃* ↥B
H : Type u_2
inst✝¹ : Group H
M : Type u_3
inst✝ : Monoid M
w : ReducedWord G A B
hw : ReducedWord.prod φ w ∈ of.range
⊢ w.toList = []
state_after: case intro
G : Type u_1
inst✝² : Group G
A B : Subgroup G
φ : ↥A ≃* ↥B
H : Type u_2
inst✝¹ : Group H
M : Type u_3
inst✝ : Monoid M
w : ReducedWord G A B
g : G
hg : of g = ReducedWord.prod φ w
⊢ w.toList = []

tactic: let w' : ReducedWord G A B := { ReducedWord.empty G A B with head := g }
state_before: case intro
G : Type u_1
inst✝² : Group G
A B : Subgroup G
φ : ↥A ≃* ↥B
H : Type u_2
inst✝¹ : Group H
M : Type u_3
inst✝ : Monoid M
w : ReducedWord G A B
g : G
hg : of g = ReducedWord.prod φ w
⊢ w.toList = []
state_after: case intro
G : Type u_1
inst✝² : Group G
A B : Subgroup G
φ : ↥A ≃* ↥B
H : Type u_2
inst✝¹ : Group H
M : Type u_3
inst✝ : Monoid M
w : ReducedWord G A B
g : G
hg : of g = ReducedWord.prod φ w
w' : ReducedWord G A B :=
  let __src := ReducedWord.empty G A B;
  { head := g, toList := __src.toList, chain := ⋯ }
⊢ w.toList = []

tactic: have : w.prod φ = w'.prod φ := by simp [ReducedWord.prod, hg]
state_before: case intro
G : Type u_1
inst✝² : Group G
A B : Subgroup G
φ : ↥A ≃* ↥B
H : Type u_2
inst✝¹ : Group H
M : Type u_3
inst✝ : Monoid M
w : ReducedWord G A B
g : G
hg : of g = ReducedWord.prod φ w
w' : ReducedWord G A B :=
  let __src := ReducedWord.empty G A B;
  { head := g, toList := __src.toList, chain := ⋯ }
⊢ w.toList = []
state_after: case intro
G : Type u_1
inst✝² : Group G
A B : Subgroup G
φ : ↥A ≃* ↥B
H : Type u_2
inst✝¹ : Group H
M : Type u_3
inst✝ : Monoid M
w : ReducedWord G A B
g : G
hg : of g = ReducedWord.prod φ w
w' : ReducedWord G A B :=
  let __src := ReducedWord.empty G A B;
  { head := g, toList := __src.toList, chain := ⋯ }
this : ReducedWord.prod φ w = ReducedWord.prod φ w'
⊢ w.toList = []

tactic: simpa using (map_fst_eq_and_of_prod_eq φ this).1
state_before: case intro
G : Type u_1
inst✝² : Group G
A B : Subgroup G
φ : ↥A ≃* ↥B
H : Type u_2
inst✝¹ : Group H
M : Type u_3
inst✝ : Monoid M
w : ReducedWord G A B
g : G
hg : of g = ReducedWord.prod φ w
w' : ReducedWord G A B :=
  let __src := ReducedWord.empty G A B;
  { head := g, toList := __src.toList, chain := ⋯ }
this : ReducedWord.prod φ w = ReducedWord.prod φ w'
⊢ w.toList = []
state_after: no goals

tactic: simp [ReducedWord.prod, hg]
state_before: G : Type u_1
inst✝² : Group G
A B : Subgroup G
φ : ↥A ≃* ↥B
H : Type u_2
inst✝¹ : Group H
M : Type u_3
inst✝ : Monoid M
w : ReducedWord G A B
g : G
hg : of g = ReducedWord.prod φ w
w' : ReducedWord G A B :=
  let __src := ReducedWord.empty G A B;
  { head := g, toList := __src.toList, chain := ⋯ }
⊢ ReducedWord.prod φ w = ReducedWord.prod φ w'
state_after: no goals
Theorem: Polynomial.sub_one_pow_totient_le_cyclotomic_eval
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Eval.lean

tactic: simp only [totient_zero, _root_.pow_zero, cyclotomic_zero, eval_one, le_refl]
state_before: q : ℝ
hq' : 1 < q
⊢ (q - 1) ^ φ 0 ≤ eval q (cyclotomic 0 ℝ)
state_after: no goals

tactic: simp only [totient_one, pow_one, cyclotomic_one, eval_sub, eval_X, eval_one, le_refl]
state_before: q : ℝ
hq' : 1 < q
⊢ (q - 1) ^ φ 1 ≤ eval q (cyclotomic 1 ℝ)
state_after: no goals
Theorem: SemidirectProduct.rightHom_comp_inl
File: Mathlib/GroupTheory/SemidirectProduct.lean

tactic: ext
state_before: N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
⊢ rightHom.comp inl = 1
state_after: case h
N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
x✝ : N
⊢ (rightHom.comp inl) x✝ = 1 x✝

tactic: simp [rightHom]
state_before: case h
N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
x✝ : N
⊢ (rightHom.comp inl) x✝ = 1 x✝
state_after: no goals
Theorem: WithLp.prod_edist_eq_card
File: Mathlib/Analysis/NormedSpace/ProdLp.lean

tactic: convert if_pos rfl
state_before: p : ℝ≥0∞
𝕜 : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : EDist α
inst✝ : EDist β
x y : WithLp p (α × β)
x' : α × β
f g : WithLp 0 (α × β)
⊢ edist f g = (if edist f.1 g.1 = 0 then 0 else 1) + if edist f.2 g.2 = 0 then 0 else 1
state_after: no goals