1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: WittVector.ghostComponent_teichmullerFun
File: Mathlib/RingTheory/WittVector/Teichmuller.lean

tactic: rw [ghostComponent_apply, aeval_wittPolynomial, Finset.sum_eq_single 0, pow_zero, one_mul,
  tsub_zero]
state_before: p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
r : R
n : ℕ
⊢ (ghostComponent n) (teichmullerFun p r) = r ^ p ^ n
state_after: p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
r : R
n : ℕ
⊢ (teichmullerFun p r).coeff 0 ^ p ^ n = r ^ p ^ n

case h₀
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
r : R
n : ℕ
⊢ ∀ b ∈ Finset.range (n + 1), b ≠ 0 → ↑p ^ b * (teichmullerFun p r).coeff b ^ p ^ (n - b) = 0

case h₁
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
r : R
n : ℕ
⊢ 0 ∉ Finset.range (n + 1) → ↑p ^ 0 * (teichmullerFun p r).coeff 0 ^ p ^ (n - 0) = 0

tactic: rfl
state_before: p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
r : R
n : ℕ
⊢ (teichmullerFun p r).coeff 0 ^ p ^ n = r ^ p ^ n
state_after: no goals

tactic: intro i _ h0
state_before: case h₀
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
r : R
n : ℕ
⊢ ∀ b ∈ Finset.range (n + 1), b ≠ 0 → ↑p ^ b * (teichmullerFun p r).coeff b ^ p ^ (n - b) = 0
state_after: case h₀
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
r : R
n i : ℕ
a✝ : i ∈ Finset.range (n + 1)
h0 : i ≠ 0
⊢ ↑p ^ i * (teichmullerFun p r).coeff i ^ p ^ (n - i) = 0

tactic: simp [teichmullerFun, h0, hp.1.ne_zero]
state_before: case h₀
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
r : R
n i : ℕ
a✝ : i ∈ Finset.range (n + 1)
h0 : i ≠ 0
⊢ ↑p ^ i * (teichmullerFun p r).coeff i ^ p ^ (n - i) = 0
state_after: no goals

tactic: rw [Finset.mem_range]
state_before: case h₁
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
r : R
n : ℕ
⊢ 0 ∉ Finset.range (n + 1) → ↑p ^ 0 * (teichmullerFun p r).coeff 0 ^ p ^ (n - 0) = 0
state_after: case h₁
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
r : R
n : ℕ
⊢ ¬0 < n + 1 → ↑p ^ 0 * (teichmullerFun p r).coeff 0 ^ p ^ (n - 0) = 0

tactic: intro h
state_before: case h₁
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
r : R
n : ℕ
⊢ ¬0 < n + 1 → ↑p ^ 0 * (teichmullerFun p r).coeff 0 ^ p ^ (n - 0) = 0
state_after: case h₁
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
r : R
n : ℕ
h : ¬0 < n + 1
⊢ ↑p ^ 0 * (teichmullerFun p r).coeff 0 ^ p ^ (n - 0) = 0

tactic: exact (h (Nat.succ_pos n)).elim
state_before: case h₁
p : ℕ
R : Type u_1
S : Type u_2
hp : Fact (Nat.Prime p)
inst✝¹ : CommRing R
inst✝ : CommRing S
r : R
n : ℕ
h : ¬0 < n + 1
⊢ ↑p ^ 0 * (teichmullerFun p r).coeff 0 ^ p ^ (n - 0) = 0
state_after: no goals
Theorem: Coheyting.boundary_inf
File: Mathlib/Order/Heyting/Boundary.lean

tactic: unfold boundary
state_before: α : Type u_1
inst✝ : CoheytingAlgebra α
a✝ b✝ a b : α
⊢ ∂ (a ⊓ b) = ∂ a ⊓ b ⊔ a ⊓ ∂ b
state_after: α : Type u_1
inst✝ : CoheytingAlgebra α
a✝ b✝ a b : α
⊢ a ⊓ b ⊓ ￢(a ⊓ b) = a ⊓ ￢a ⊓ b ⊔ a ⊓ (b ⊓ ￢b)

tactic: rw [hnot_inf_distrib, inf_sup_left, inf_right_comm, ← inf_assoc]
state_before: α : Type u_1
inst✝ : CoheytingAlgebra α
a✝ b✝ a b : α
⊢ a ⊓ b ⊓ ￢(a ⊓ b) = a ⊓ ￢a ⊓ b ⊔ a ⊓ (b ⊓ ￢b)
state_after: no goals
Theorem: Equiv.arrowCongr_comp
File: Mathlib/Logic/Equiv/Defs.lean

tactic: ext
state_before: α : Sort u
β : Sort v
γ : Sort w
α₁ : Sort u_1
β₁ : Sort u_2
γ₁ : Sort u_3
α₂ : Sort u_4
β₂ : Sort u_5
γ₂ : Sort u_6
ea : α₁ ≃ α₂
eb : β₁ ≃ β₂
ec : γ₁ ≃ γ₂
f : α₁ → β₁
g : β₁ → γ₁
⊢ (ea.arrowCongr ec) (g ∘ f) = (eb.arrowCongr ec) g ∘ (ea.arrowCongr eb) f
state_after: case h
α : Sort u
β : Sort v
γ : Sort w
α₁ : Sort u_1
β₁ : Sort u_2
γ₁ : Sort u_3
α₂ : Sort u_4
β₂ : Sort u_5
γ₂ : Sort u_6
ea : α₁ ≃ α₂
eb : β₁ ≃ β₂
ec : γ₁ ≃ γ₂
f : α₁ → β₁
g : β₁ → γ₁
x✝ : α₂
⊢ (ea.arrowCongr ec) (g ∘ f) x✝ = ((eb.arrowCongr ec) g ∘ (ea.arrowCongr eb) f) x✝

tactic: simp only [comp, arrowCongr_apply, eb.symm_apply_apply]
state_before: case h
α : Sort u
β : Sort v
γ : Sort w
α₁ : Sort u_1
β₁ : Sort u_2
γ₁ : Sort u_3
α₂ : Sort u_4
β₂ : Sort u_5
γ₂ : Sort u_6
ea : α₁ ≃ α₂
eb : β₁ ≃ β₂
ec : γ₁ ≃ γ₂
f : α₁ → β₁
g : β₁ → γ₁
x✝ : α₂
⊢ (ea.arrowCongr ec) (g ∘ f) x✝ = ((eb.arrowCongr ec) g ∘ (ea.arrowCongr eb) f) x✝
state_after: no goals
Theorem: List.cons_perm_iff_perm_erase
File: .lake/packages/batteries/Batteries/Data/List/Perm.lean

tactic: refine ⟨fun h => ?_, fun ⟨m, h⟩ => (h.cons a).trans (perm_cons_erase m).symm⟩
state_before: α : Type u_1
inst✝ : DecidableEq α
a : α
l₁ l₂ : List α
⊢ a :: l₁ ~ l₂ ↔ a ∈ l₂ ∧ l₁ ~ l₂.erase a
state_after: α : Type u_1
inst✝ : DecidableEq α
a : α
l₁ l₂ : List α
h : a :: l₁ ~ l₂
⊢ a ∈ l₂ ∧ l₁ ~ l₂.erase a

tactic: have : a ∈ l₂ := h.subset (mem_cons_self a l₁)
state_before: α : Type u_1
inst✝ : DecidableEq α
a : α
l₁ l₂ : List α
h : a :: l₁ ~ l₂
⊢ a ∈ l₂ ∧ l₁ ~ l₂.erase a
state_after: α : Type u_1
inst✝ : DecidableEq α
a : α
l₁ l₂ : List α
h : a :: l₁ ~ l₂
this : a ∈ l₂
⊢ a ∈ l₂ ∧ l₁ ~ l₂.erase a

tactic: exact ⟨this, (h.trans <| perm_cons_erase this).cons_inv⟩
state_before: α : Type u_1
inst✝ : DecidableEq α
a : α
l₁ l₂ : List α
h : a :: l₁ ~ l₂
this : a ∈ l₂
⊢ a ∈ l₂ ∧ l₁ ~ l₂.erase a
state_after: no goals
Theorem: AddCommGroup.modEq_neg
File: Mathlib/Algebra/ModEq.lean

tactic: simp [ModEq, ← neg_eq_iff_eq_neg]
state_before: α : Type u_1
inst✝ : AddCommGroup α
p a a₁ a₂ b b₁ b₂ c : α
n : ℕ
z : ℤ
⊢ b ≡ a [PMOD -p] ↔ a ≡ b [PMOD p]
state_after: no goals
Theorem: gramSchmidt_orthonormal'
File: Mathlib/Analysis/InnerProductSpace/GramSchmidtOrtho.lean

tactic: refine ⟨fun i => gramSchmidtNormed_unit_length' i.prop, ?_⟩
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
⊢ Orthonormal 𝕜 fun i => gramSchmidtNormed 𝕜 f ↑i
state_after: 𝕜 : Type u_1
E : Type u_2
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
⊢ Pairwise fun i j => ⟪(fun i => gramSchmidtNormed 𝕜 f ↑i) i, (fun i => gramSchmidtNormed 𝕜 f ↑i) j⟫_𝕜 = 0

tactic: rintro i j (hij : ¬_)
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
⊢ Pairwise fun i j => ⟪(fun i => gramSchmidtNormed 𝕜 f ↑i) i, (fun i => gramSchmidtNormed 𝕜 f ↑i) j⟫_𝕜 = 0
state_after: 𝕜 : Type u_1
E : Type u_2
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
i j : ↑{i | gramSchmidtNormed 𝕜 f i ≠ 0}
hij : ¬i = j
⊢ ⟪(fun i => gramSchmidtNormed 𝕜 f ↑i) i, (fun i => gramSchmidtNormed 𝕜 f ↑i) j⟫_𝕜 = 0

tactic: rw [Subtype.ext_iff] at hij
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
i j : ↑{i | gramSchmidtNormed 𝕜 f i ≠ 0}
hij : ¬i = j
⊢ ⟪(fun i => gramSchmidtNormed 𝕜 f ↑i) i, (fun i => gramSchmidtNormed 𝕜 f ↑i) j⟫_𝕜 = 0
state_after: 𝕜 : Type u_1
E : Type u_2
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
i j : ↑{i | gramSchmidtNormed 𝕜 f i ≠ 0}
hij : ¬↑i = ↑j
⊢ ⟪(fun i => gramSchmidtNormed 𝕜 f ↑i) i, (fun i => gramSchmidtNormed 𝕜 f ↑i) j⟫_𝕜 = 0

tactic: simp [gramSchmidtNormed, inner_smul_left, inner_smul_right, gramSchmidt_orthogonal 𝕜 f hij]
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
ι : Type u_3
inst✝² : LinearOrder ι
inst✝¹ : LocallyFiniteOrderBot ι
inst✝ : IsWellOrder ι fun x x_1 => x < x_1
f : ι → E
i j : ↑{i | gramSchmidtNormed 𝕜 f i ≠ 0}
hij : ¬↑i = ↑j
⊢ ⟪(fun i => gramSchmidtNormed 𝕜 f ↑i) i, (fun i => gramSchmidtNormed 𝕜 f ↑i) j⟫_𝕜 = 0
state_after: no goals
Theorem: Pell.yn_one
File: Mathlib/NumberTheory/PellMatiyasevic.lean

tactic: simp
state_before: a : ℕ
a1 : 1 < a
⊢ yn a1 1 = 1
state_after: no goals
Theorem: CauSeq.Completion.cau_seq_zero_ne_one
File: Mathlib/Algebra/Order/CauSeq/Completion.lean

tactic: simpa
state_before: α : Type u_1
inst✝² : LinearOrderedField α
β : Type u_2
inst✝¹ : DivisionRing β
abv : β → α
inst✝ : IsAbsoluteValue abv
h : 0 ≈ 1
this : (1 - 0).LimZero
⊢ LimZero 1
state_after: no goals

tactic: apply one_ne_zero <| const_limZero.1 this
state_before: α : Type u_1
inst✝² : LinearOrderedField α
β : Type u_2
inst✝¹ : DivisionRing β
abv : β → α
inst✝ : IsAbsoluteValue abv
h : 0 ≈ 1
this✝ : (1 - 0).LimZero
this : LimZero 1
⊢ False
state_after: no goals
Theorem: IntermediateField.finSepDegree_adjoin_simple_le_finrank
File: Mathlib/FieldTheory/SeparableDegree.lean

tactic: haveI := adjoin.finiteDimensional halg.isIntegral
state_before: F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
α : E
halg : IsAlgebraic F α
⊢ finSepDegree F ↥F⟮α⟯ ≤ finrank F ↥F⟮α⟯
state_after: F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
α : E
halg : IsAlgebraic F α
this : FiniteDimensional F ↥F⟮α⟯
⊢ finSepDegree F ↥F⟮α⟯ ≤ finrank F ↥F⟮α⟯

tactic: exact Nat.le_of_dvd finrank_pos <| finSepDegree_adjoin_simple_dvd_finrank F E α
state_before: F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
α : E
halg : IsAlgebraic F α
this : FiniteDimensional F ↥F⟮α⟯
⊢ finSepDegree F ↥F⟮α⟯ ≤ finrank F ↥F⟮α⟯
state_after: no goals
Theorem: Nat.coprime_multiset_prod_right_iff
File: Mathlib/Data/Nat/GCD/BigOperators.lean

tactic: induction m using Quotient.inductionOn
state_before: ι : Type u_1
k : ℕ
m : Multiset ℕ
⊢ k.Coprime m.prod ↔ ∀ n ∈ m, k.Coprime n
state_after: case h
ι : Type u_1
k : ℕ
a✝ : List ℕ
⊢ k.Coprime (Multiset.prod ⟦a✝⟧) ↔ ∀ n ∈ ⟦a✝⟧, k.Coprime n

tactic: simpa using coprime_list_prod_right_iff
state_before: case h
ι : Type u_1
k : ℕ
a✝ : List ℕ
⊢ k.Coprime (Multiset.prod ⟦a✝⟧) ↔ ∀ n ∈ ⟦a✝⟧, k.Coprime n
state_after: no goals
Theorem: FractionalIdeal.fg_of_isNoetherianRing
File: Mathlib/RingTheory/FractionalIdeal/Basic.lean

tactic: have := hR.noetherian I.num
state_before: R✝ : Type u_1
inst✝⁸ : CommRing R✝
S✝ : Submonoid R✝
P✝ : Type u_2
inst✝⁷ : CommRing P✝
inst✝⁶ : Algebra R✝ P✝
loc : IsLocalization S✝ P✝
R : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : Nontrivial R
S : Submonoid R
P : Type u_4
inst✝³ : Nontrivial P
inst✝² : CommRing P
inst✝¹ : Algebra R P
inst✝ : NoZeroSMulDivisors R P
hR : IsNoetherianRing R
hS : S ≤ R⁰
I : FractionalIdeal S P
⊢ (↑I).FG
state_after: R✝ : Type u_1
inst✝⁸ : CommRing R✝
S✝ : Submonoid R✝
P✝ : Type u_2
inst✝⁷ : CommRing P✝
inst✝⁶ : Algebra R✝ P✝
loc : IsLocalization S✝ P✝
R : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : Nontrivial R
S : Submonoid R
P : Type u_4
inst✝³ : Nontrivial P
inst✝² : CommRing P
inst✝¹ : Algebra R P
inst✝ : NoZeroSMulDivisors R P
hR : IsNoetherianRing R
hS : S ≤ R⁰
I : FractionalIdeal S P
this : FG I.num
⊢ (↑I).FG

tactic: rw [← fg_top] at this ⊢
state_before: R✝ : Type u_1
inst✝⁸ : CommRing R✝
S✝ : Submonoid R✝
P✝ : Type u_2
inst✝⁷ : CommRing P✝
inst✝⁶ : Algebra R✝ P✝
loc : IsLocalization S✝ P✝
R : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : Nontrivial R
S : Submonoid R
P : Type u_4
inst✝³ : Nontrivial P
inst✝² : CommRing P
inst✝¹ : Algebra R P
inst✝ : NoZeroSMulDivisors R P
hR : IsNoetherianRing R
hS : S ≤ R⁰
I : FractionalIdeal S P
this : FG I.num
⊢ (↑I).FG
state_after: R✝ : Type u_1
inst✝⁸ : CommRing R✝
S✝ : Submonoid R✝
P✝ : Type u_2
inst✝⁷ : CommRing P✝
inst✝⁶ : Algebra R✝ P✝
loc : IsLocalization S✝ P✝
R : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : Nontrivial R
S : Submonoid R
P : Type u_4
inst✝³ : Nontrivial P
inst✝² : CommRing P
inst✝¹ : Algebra R P
inst✝ : NoZeroSMulDivisors R P
hR : IsNoetherianRing R
hS : S ≤ R⁰
I : FractionalIdeal S P
this : ⊤.FG
⊢ ⊤.FG

tactic: exact fg_of_linearEquiv (I.equivNum <| coe_ne_zero ⟨(I.den : R), hS (SetLike.coe_mem I.den)⟩) this
state_before: R✝ : Type u_1
inst✝⁸ : CommRing R✝
S✝ : Submonoid R✝
P✝ : Type u_2
inst✝⁷ : CommRing P✝
inst✝⁶ : Algebra R✝ P✝
loc : IsLocalization S✝ P✝
R : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : Nontrivial R
S : Submonoid R
P : Type u_4
inst✝³ : Nontrivial P
inst✝² : CommRing P
inst✝¹ : Algebra R P
inst✝ : NoZeroSMulDivisors R P
hR : IsNoetherianRing R
hS : S ≤ R⁰
I : FractionalIdeal S P
this : ⊤.FG
⊢ ⊤.FG
state_after: no goals
Theorem: GroupFilterBasis.nhds_one_eq
File: Mathlib/Topology/Algebra/FilterBasis.lean

tactic: rw [B.nhds_eq]
state_before: G : Type u
inst✝ : Group G
B✝ B : GroupFilterBasis G
⊢ 𝓝 1 = toFilterBasis.filter
state_after: G : Type u
inst✝ : Group G
B✝ B : GroupFilterBasis G
⊢ B.N 1 = toFilterBasis.filter

tactic: simp only [N, one_mul]
state_before: G : Type u
inst✝ : Group G
B✝ B : GroupFilterBasis G
⊢ B.N 1 = toFilterBasis.filter
state_after: G : Type u
inst✝ : Group G
B✝ B : GroupFilterBasis G
⊢ map (fun y => y) toFilterBasis.filter = toFilterBasis.filter

tactic: exact map_id
state_before: G : Type u
inst✝ : Group G
B✝ B : GroupFilterBasis G
⊢ map (fun y => y) toFilterBasis.filter = toFilterBasis.filter
state_after: no goals
Theorem: Real.two_mul_arctan
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Arctan.lean

tactic: rw [two_mul, arctan_add (by nlinarith)]
state_before: x : ℝ
h₁ : -1 < x
h₂ : x < 1
⊢ 2 * arctan x = arctan (2 * x / (1 - x ^ 2))
state_after: x : ℝ
h₁ : -1 < x
h₂ : x < 1
⊢ arctan ((x + x) / (1 - x * x)) = arctan (2 * x / (1 - x ^ 2))

tactic: congr 1
state_before: x : ℝ
h₁ : -1 < x
h₂ : x < 1
⊢ arctan ((x + x) / (1 - x * x)) = arctan (2 * x / (1 - x ^ 2))
state_after: case e_x
x : ℝ
h₁ : -1 < x
h₂ : x < 1
⊢ (x + x) / (1 - x * x) = 2 * x / (1 - x ^ 2)

tactic: ring
state_before: case e_x
x : ℝ
h₁ : -1 < x
h₂ : x < 1
⊢ (x + x) / (1 - x * x) = 2 * x / (1 - x ^ 2)
state_after: no goals

tactic: nlinarith
state_before: x : ℝ
h₁ : -1 < x
h₂ : x < 1
⊢ x * x < 1
state_after: no goals
Theorem: List.join_splitWrtCompositionAux
File: Mathlib/Combinatorics/Enumerative/Composition.lean

tactic: induction' ns with n ns IH <;> intro l h <;> simp at h
state_before: n : ℕ
α : Type u_1
ns : List ℕ
⊢ ∀ {l : List α}, ns.sum = l.length → (l.splitWrtCompositionAux ns).join = l
state_after: case nil
n : ℕ
α : Type u_1
l : List α
h : 0 = l.length
⊢ (l.splitWrtCompositionAux []).join = l

case cons
n✝ : ℕ
α : Type u_1
n : ℕ
ns : List ℕ
IH : ∀ {l : List α}, ns.sum = l.length → (l.splitWrtCompositionAux ns).join = l
l : List α
h : n + ns.sum = l.length
⊢ (l.splitWrtCompositionAux (n :: ns)).join = l

tactic: simp only [splitWrtCompositionAux_cons]
state_before: case cons
n✝ : ℕ
α : Type u_1
n : ℕ
ns : List ℕ
IH : ∀ {l : List α}, ns.sum = l.length → (l.splitWrtCompositionAux ns).join = l
l : List α
h : n + ns.sum = l.length
⊢ (l.splitWrtCompositionAux (n :: ns)).join = l
state_after: case cons
n✝ : ℕ
α : Type u_1
n : ℕ
ns : List ℕ
IH : ∀ {l : List α}, ns.sum = l.length → (l.splitWrtCompositionAux ns).join = l
l : List α
h : n + ns.sum = l.length
⊢ (take n l :: (drop n l).splitWrtCompositionAux ns).join = l

tactic: dsimp
state_before: case cons
n✝ : ℕ
α : Type u_1
n : ℕ
ns : List ℕ
IH : ∀ {l : List α}, ns.sum = l.length → (l.splitWrtCompositionAux ns).join = l
l : List α
h : n + ns.sum = l.length
⊢ (take n l :: (drop n l).splitWrtCompositionAux ns).join = l
state_after: case cons
n✝ : ℕ
α : Type u_1
n : ℕ
ns : List ℕ
IH : ∀ {l : List α}, ns.sum = l.length → (l.splitWrtCompositionAux ns).join = l
l : List α
h : n + ns.sum = l.length
⊢ take n l ++ ((drop n l).splitWrtCompositionAux ns).join = l

tactic: rw [IH]
state_before: case cons
n✝ : ℕ
α : Type u_1
n : ℕ
ns : List ℕ
IH : ∀ {l : List α}, ns.sum = l.length → (l.splitWrtCompositionAux ns).join = l
l : List α
h : n + ns.sum = l.length
⊢ take n l ++ ((drop n l).splitWrtCompositionAux ns).join = l
state_after: case cons
n✝ : ℕ
α : Type u_1
n : ℕ
ns : List ℕ
IH : ∀ {l : List α}, ns.sum = l.length → (l.splitWrtCompositionAux ns).join = l
l : List α
h : n + ns.sum = l.length
⊢ take n l ++ drop n l = l

case cons
n✝ : ℕ
α : Type u_1
n : ℕ
ns : List ℕ
IH : ∀ {l : List α}, ns.sum = l.length → (l.splitWrtCompositionAux ns).join = l
l : List α
h : n + ns.sum = l.length
⊢ ns.sum = (drop n l).length

tactic: exact (length_eq_zero.1 h.symm).symm
state_before: case nil
n : ℕ
α : Type u_1
l : List α
h : 0 = l.length
⊢ (l.splitWrtCompositionAux []).join = l
state_after: no goals

tactic: simp
state_before: case cons
n✝ : ℕ
α : Type u_1
n : ℕ
ns : List ℕ
IH : ∀ {l : List α}, ns.sum = l.length → (l.splitWrtCompositionAux ns).join = l
l : List α
h : n + ns.sum = l.length
⊢ take n l ++ drop n l = l
state_after: no goals

tactic: rw [length_drop, ← h, add_tsub_cancel_left]
state_before: case cons
n✝ : ℕ
α : Type u_1
n : ℕ
ns : List ℕ
IH : ∀ {l : List α}, ns.sum = l.length → (l.splitWrtCompositionAux ns).join = l
l : List α
h : n + ns.sum = l.length
⊢ ns.sum = (drop n l).length
state_after: no goals
Theorem: SetTheory.PGame.birthday_add_zero
File: Mathlib/SetTheory/Game/Birthday.lean

tactic: simp
state_before: a b x : PGame
⊢ (a + 0).birthday = a.birthday
state_after: no goals
Theorem: Nat.add_sub_one_le_mul
File: Mathlib/Data/Nat/Defs.lean

tactic: cases a
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
ha : a ≠ 0
hb : b ≠ 0
⊢ a + b - 1 ≤ a * b
state_after: case zero
b c d m n k : ℕ
p q : ℕ → Prop
hb : b ≠ 0
ha : 0 ≠ 0
⊢ 0 + b - 1 ≤ 0 * b

case succ
b c d m n k : ℕ
p q : ℕ → Prop
hb : b ≠ 0
n✝ : ℕ
ha : n✝ + 1 ≠ 0
⊢ n✝ + 1 + b - 1 ≤ (n✝ + 1) * b

tactic: cases ha rfl
state_before: case zero
b c d m n k : ℕ
p q : ℕ → Prop
hb : b ≠ 0
ha : 0 ≠ 0
⊢ 0 + b - 1 ≤ 0 * b
state_after: no goals

tactic: rw [succ_add, Nat.add_one_sub_one, succ_mul]
state_before: case succ
b c d m n k : ℕ
p q : ℕ → Prop
hb : b ≠ 0
n✝ : ℕ
ha : n✝ + 1 ≠ 0
⊢ n✝ + 1 + b - 1 ≤ (n✝ + 1) * b
state_after: case succ
b c d m n k : ℕ
p q : ℕ → Prop
hb : b ≠ 0
n✝ : ℕ
ha : n✝ + 1 ≠ 0
⊢ n✝ + b ≤ n✝ * b + b

tactic: exact Nat.add_le_add_right (Nat.le_mul_of_pos_right _ $ Nat.pos_iff_ne_zero.2 hb) _
state_before: case succ
b c d m n k : ℕ
p q : ℕ → Prop
hb : b ≠ 0
n✝ : ℕ
ha : n✝ + 1 ≠ 0
⊢ n✝ + b ≤ n✝ * b + b
state_after: no goals
Theorem: Sym2.fromRel_ne
File: Mathlib/Data/Sym/Sym2.lean

tactic: ext z
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
e : Sym2 α
f : α → β
r : α → α → Prop
⊢ fromRel ⋯ = {z | ¬z.IsDiag}
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
e : Sym2 α
f : α → β
r : α → α → Prop
z : Sym2 α
⊢ z ∈ fromRel ⋯ ↔ z ∈ {z | ¬z.IsDiag}

tactic: exact z.ind (by simp)
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
e : Sym2 α
f : α → β
r : α → α → Prop
z : Sym2 α
⊢ z ∈ fromRel ⋯ ↔ z ∈ {z | ¬z.IsDiag}
state_after: no goals

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
e : Sym2 α
f : α → β
r : α → α → Prop
z : Sym2 α
⊢ ∀ (x y : α), s(x, y) ∈ fromRel ⋯ ↔ s(x, y) ∈ {z | ¬z.IsDiag}
state_after: no goals
Theorem: compact_basis_nhds
File: Mathlib/Topology/Compactness/LocallyCompact.lean

tactic: simpa only [and_comm] using LocallyCompactSpace.local_compact_nhds x
state_before: X : Type u_1
Y : Type u_2
ι : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t : Set X
inst✝ : LocallyCompactSpace X
x : X
⊢ ∀ t ∈ 𝓝 x, ∃ r ∈ 𝓝 x, IsCompact r ∧ r ⊆ t
state_after: no goals
Theorem: AlgebraicGeometry.StructureSheaf.comap_const
File: Mathlib/AlgebraicGeometry/StructureSheaf.lean

tactic: rw [comap_apply, const_apply, const_apply]
state_before: R : Type u
inst✝² : CommRing R
S : Type u
inst✝¹ : CommRing S
P : Type u
inst✝ : CommRing P
f : R →+* S
U : Opens ↑(PrimeSpectrum.Top R)
V : Opens ↑(PrimeSpectrum.Top S)
hUV : V.carrier ⊆ ⇑(PrimeSpectrum.comap f) ⁻¹' U.carrier
a b : R
hb : ∀ x ∈ U, b ∈ x.asIdeal.primeCompl
p : ↥{ unop := V }.unop
⊢ ↑((comap f U V hUV) (const R a b U hb)) p = ↑(const S (f a) (f b) V ⋯) p
state_after: R : Type u
inst✝² : CommRing R
S : Type u
inst✝¹ : CommRing S
P : Type u
inst✝ : CommRing P
f : R →+* S
U : Opens ↑(PrimeSpectrum.Top R)
V : Opens ↑(PrimeSpectrum.Top S)
hUV : V.carrier ⊆ ⇑(PrimeSpectrum.comap f) ⁻¹' U.carrier
a b : R
hb : ∀ x ∈ U, b ∈ x.asIdeal.primeCompl
p : ↥{ unop := V }.unop
⊢ (Localization.localRingHom ((PrimeSpectrum.comap f) ↑p).asIdeal (↑p).asIdeal f ⋯)
      (IsLocalization.mk' (Localizations R ↑⟨(PrimeSpectrum.comap f) ↑p, ⋯⟩) a ⟨b, ⋯⟩) =
    IsLocalization.mk' (Localizations S ↑p) (f a) ⟨f b, ⋯⟩

tactic: erw [Localization.localRingHom_mk']
state_before: R : Type u
inst✝² : CommRing R
S : Type u
inst✝¹ : CommRing S
P : Type u
inst✝ : CommRing P
f : R →+* S
U : Opens ↑(PrimeSpectrum.Top R)
V : Opens ↑(PrimeSpectrum.Top S)
hUV : V.carrier ⊆ ⇑(PrimeSpectrum.comap f) ⁻¹' U.carrier
a b : R
hb : ∀ x ∈ U, b ∈ x.asIdeal.primeCompl
p : ↥{ unop := V }.unop
⊢ (Localization.localRingHom ((PrimeSpectrum.comap f) ↑p).asIdeal (↑p).asIdeal f ⋯)
      (IsLocalization.mk' (Localizations R ↑⟨(PrimeSpectrum.comap f) ↑p, ⋯⟩) a ⟨b, ⋯⟩) =
    IsLocalization.mk' (Localizations S ↑p) (f a) ⟨f b, ⋯⟩
state_after: R : Type u
inst✝² : CommRing R
S : Type u
inst✝¹ : CommRing S
P : Type u
inst✝ : CommRing P
f : R →+* S
U : Opens ↑(PrimeSpectrum.Top R)
V : Opens ↑(PrimeSpectrum.Top S)
hUV : V.carrier ⊆ ⇑(PrimeSpectrum.comap f) ⁻¹' U.carrier
a b : R
hb : ∀ x ∈ U, b ∈ x.asIdeal.primeCompl
p : ↥{ unop := V }.unop
⊢ IsLocalization.mk' (Localization.AtPrime (↑p).asIdeal) (f a) ⟨f ↑⟨b, ⋯⟩, ⋯⟩ =
    IsLocalization.mk' (Localizations S ↑p) (f a) ⟨f b, ⋯⟩

tactic: rfl
state_before: R : Type u
inst✝² : CommRing R
S : Type u
inst✝¹ : CommRing S
P : Type u
inst✝ : CommRing P
f : R →+* S
U : Opens ↑(PrimeSpectrum.Top R)
V : Opens ↑(PrimeSpectrum.Top S)
hUV : V.carrier ⊆ ⇑(PrimeSpectrum.comap f) ⁻¹' U.carrier
a b : R
hb : ∀ x ∈ U, b ∈ x.asIdeal.primeCompl
p : ↥{ unop := V }.unop
⊢ IsLocalization.mk' (Localization.AtPrime (↑p).asIdeal) (f a) ⟨f ↑⟨b, ⋯⟩, ⋯⟩ =
    IsLocalization.mk' (Localizations S ↑p) (f a) ⟨f b, ⋯⟩
state_after: no goals
Theorem: Encodable.decode₂_ne_none_iff
File: Mathlib/Logic/Encodable/Basic.lean

tactic: simp_rw [Set.range, Set.mem_setOf_eq, Ne, Option.eq_none_iff_forall_not_mem,
  Encodable.mem_decode₂, not_forall, not_not]
state_before: α : Type u_1
β : Type u_2
inst✝ : Encodable α
n : ℕ
⊢ decode₂ α n ≠ none ↔ n ∈ Set.range encode
state_after: no goals
Theorem: TrivSqZeroExt.inl_pow
File: Mathlib/Algebra/TrivSqZeroExt.lean

tactic: simp [snd_pow_eq_sum, List.map_const']
state_before: R : Type u
M : Type v
inst✝³ : Monoid R
inst✝² : AddMonoid M
inst✝¹ : DistribMulAction R M
inst✝ : DistribMulAction Rᵐᵒᵖ M
r : R
n : ℕ
⊢ (inl r ^ n).snd = (inl (r ^ n)).snd
state_after: no goals
Theorem: OnePoint.compl_image_coe
File: Mathlib/Topology/Compactification/OnePoint.lean

tactic: rw [coe_injective.compl_image_eq, compl_range_coe]
state_before: X : Type u_1
s : Set X
⊢ (some '' s)ᶜ = some '' sᶜ ∪ {∞}
state_after: no goals
Theorem: Multiset.inter_eq_zero_iff_disjoint
File: Mathlib/Data/Multiset/Basic.lean

tactic: rw [← subset_zero]
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s t : Multiset α
⊢ s ∩ t = 0 ↔ s.Disjoint t
state_after: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s t : Multiset α
⊢ s ∩ t ⊆ 0 ↔ s.Disjoint t

tactic: simp [subset_iff, Disjoint]
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s t : Multiset α
⊢ s ∩ t ⊆ 0 ↔ s.Disjoint t
state_after: no goals