1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Nat.bit0_inj
File: Mathlib/Init/Data/Nat/Lemmas.lean

tactic: contradiction
state_before: m : ℕ
h : bit0 0 = bit0 (m + 1)
⊢ 0 = m + 1
state_after: no goals

tactic: contradiction
state_before: n : ℕ
h : bit0 (n + 1) = bit0 0
⊢ n + 1 = 0
state_after: no goals

tactic: have : succ (succ (n + n)) = succ (succ (m + m)) := by
  unfold bit0 at h; simp only [add_one, add_succ, succ_add, succ_inj'] at h
  rw [h]
state_before: n m : ℕ
h : bit0 (n + 1) = bit0 (m + 1)
⊢ n + 1 = m + 1
state_after: n m : ℕ
h : bit0 (n + 1) = bit0 (m + 1)
this : (n + n).succ.succ = (m + m).succ.succ
⊢ n + 1 = m + 1

tactic: have : n + n = m + m := by repeat injection this with this
state_before: n m : ℕ
h : bit0 (n + 1) = bit0 (m + 1)
this : (n + n).succ.succ = (m + m).succ.succ
⊢ n + 1 = m + 1
state_after: n m : ℕ
h : bit0 (n + 1) = bit0 (m + 1)
this✝ : (n + n).succ.succ = (m + m).succ.succ
this : n + n = m + m
⊢ n + 1 = m + 1

tactic: have : n = m := Nat.bit0_inj this
state_before: n m : ℕ
h : bit0 (n + 1) = bit0 (m + 1)
this✝ : (n + n).succ.succ = (m + m).succ.succ
this : n + n = m + m
⊢ n + 1 = m + 1
state_after: n m : ℕ
h : bit0 (n + 1) = bit0 (m + 1)
this✝¹ : (n + n).succ.succ = (m + m).succ.succ
this✝ : n + n = m + m
this : n = m
⊢ n + 1 = m + 1

tactic: rw [this]
state_before: n m : ℕ
h : bit0 (n + 1) = bit0 (m + 1)
this✝¹ : (n + n).succ.succ = (m + m).succ.succ
this✝ : n + n = m + m
this : n = m
⊢ n + 1 = m + 1
state_after: no goals

tactic: unfold bit0 at h
state_before: n m : ℕ
h : bit0 (n + 1) = bit0 (m + 1)
⊢ (n + n).succ.succ = (m + m).succ.succ
state_after: n m : ℕ
h : n + 1 + (n + 1) = m + 1 + (m + 1)
⊢ (n + n).succ.succ = (m + m).succ.succ

tactic: simp only [add_one, add_succ, succ_add, succ_inj'] at h
state_before: n m : ℕ
h : n + 1 + (n + 1) = m + 1 + (m + 1)
⊢ (n + n).succ.succ = (m + m).succ.succ
state_after: n m : ℕ
h : n + n = m + m
⊢ (n + n).succ.succ = (m + m).succ.succ

tactic: rw [h]
state_before: n m : ℕ
h : n + n = m + m
⊢ (n + n).succ.succ = (m + m).succ.succ
state_after: no goals

tactic: repeat injection this with this
state_before: n m : ℕ
h : bit0 (n + 1) = bit0 (m + 1)
this : (n + n).succ.succ = (m + m).succ.succ
⊢ n + n = m + m
state_after: no goals

tactic: injection this with this
state_before: n m : ℕ
h : bit0 (n + 1) = bit0 (m + 1)
this : n + n + 1 = m + m + 1
⊢ n + n = m + m
state_after: no goals
Theorem: LocallyConvexSpace.ofBasisZero
File: Mathlib/Topology/Algebra/Module/LocallyConvex.lean

tactic: rw [← map_add_left_nhds_zero]
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : TopologicalSpace E
inst✝ : TopologicalAddGroup E
ι : Type u_3
b : ι → Set E
p : ι → Prop
hbasis : (𝓝 0).HasBasis p b
hconvex : ∀ (i : ι), p i → Convex 𝕜 (b i)
x : E
⊢ (𝓝 x).HasBasis ((fun x => p) x) ((fun x i => (fun x_1 => x + x_1) '' b i) x)
state_after: 𝕜 : Type u_1
E : Type u_2
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : TopologicalSpace E
inst✝ : TopologicalAddGroup E
ι : Type u_3
b : ι → Set E
p : ι → Prop
hbasis : (𝓝 0).HasBasis p b
hconvex : ∀ (i : ι), p i → Convex 𝕜 (b i)
x : E
⊢ (map (fun x_1 => x + x_1) (𝓝 0)).HasBasis ((fun x => p) x) ((fun x i => (fun x_1 => x + x_1) '' b i) x)

tactic: exact hbasis.map _
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : TopologicalSpace E
inst✝ : TopologicalAddGroup E
ι : Type u_3
b : ι → Set E
p : ι → Prop
hbasis : (𝓝 0).HasBasis p b
hconvex : ∀ (i : ι), p i → Convex 𝕜 (b i)
x : E
⊢ (map (fun x_1 => x + x_1) (𝓝 0)).HasBasis ((fun x => p) x) ((fun x i => (fun x_1 => x + x_1) '' b i) x)
state_after: no goals
Theorem: IsLocalMin.inv
File: Mathlib/Topology/Algebra/Field.lean

tactic: filter_upwards [h1, h2] with z h3 h4 using(inv_le_inv h4 h2.self_of_nhds).mpr h3
state_before: K : Type u_1
inst✝³ : DivisionRing K
inst✝² : TopologicalSpace K
α : Type u_2
β : Type u_3
inst✝¹ : TopologicalSpace α
inst✝ : LinearOrderedSemifield β
a✝ : α
f : α → β
a : α
h1 : IsLocalMin f a
h2 : ∀ᶠ (z : α) in 𝓝 a, 0 < f z
⊢ IsLocalMax f⁻¹ a
state_after: no goals
Theorem: MeasureTheory.Lp.lipschitzWith_pos_part
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: simp [Real.dist_eq, abs_max_sub_max_le_abs]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
g : E → F
c : ℝ≥0
x y : ℝ
⊢ dist (max x 0) (max y 0) ≤ ↑1 * dist x y
state_after: no goals
Theorem: RatFunc.denom_div
File: Mathlib/FieldTheory/RatFunc/Basic.lean

tactic: rw [denom, numDenom_div _ hq]
state_before: K : Type u
inst✝ : Field K
p q : K[X]
hq : q ≠ 0
⊢ ((algebraMap K[X] (RatFunc K)) p / (algebraMap K[X] (RatFunc K)) q).denom =
    C (q / gcd p q).leadingCoeff⁻¹ * (q / gcd p q)
state_after: no goals
Theorem: SimpleGraph.adj_replaceVertex_iff_of_ne_left
File: Mathlib/Combinatorics/SimpleGraph/Operations.lean

tactic: simp [replaceVertex, hw]
state_before: V : Type u_1
inst✝ : DecidableEq V
G : SimpleGraph V
s t w : V
hw : w ≠ t
⊢ (G.replaceVertex s t).Adj s w ↔ G.Adj s w
state_after: no goals
Theorem: AnalyticAt.sub
File: Mathlib/Analysis/Analytic/Basic.lean

tactic: simpa only [sub_eq_add_neg] using hf.add hg.neg
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : AnalyticAt 𝕜 f x
hg : AnalyticAt 𝕜 g x
⊢ AnalyticAt 𝕜 (f - g) x
state_after: no goals
Theorem: MeasurableSet.biUnion
File: Mathlib/MeasureTheory/MeasurableSpace/Defs.lean

tactic: rw [biUnion_eq_iUnion]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort u_6
s✝ t u : Set α
m : MeasurableSpace α
f : β → Set α
s : Set β
hs : s.Countable
h : ∀ b ∈ s, MeasurableSet (f b)
⊢ MeasurableSet (⋃ b ∈ s, f b)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort u_6
s✝ t u : Set α
m : MeasurableSpace α
f : β → Set α
s : Set β
hs : s.Countable
h : ∀ b ∈ s, MeasurableSet (f b)
⊢ MeasurableSet (⋃ x, f ↑x)

tactic: have := hs.to_subtype
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort u_6
s✝ t u : Set α
m : MeasurableSpace α
f : β → Set α
s : Set β
hs : s.Countable
h : ∀ b ∈ s, MeasurableSet (f b)
⊢ MeasurableSet (⋃ x, f ↑x)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort u_6
s✝ t u : Set α
m : MeasurableSpace α
f : β → Set α
s : Set β
hs : s.Countable
h : ∀ b ∈ s, MeasurableSet (f b)
this : Countable ↑s
⊢ MeasurableSet (⋃ x, f ↑x)

tactic: exact MeasurableSet.iUnion (by simpa using h)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort u_6
s✝ t u : Set α
m : MeasurableSpace α
f : β → Set α
s : Set β
hs : s.Countable
h : ∀ b ∈ s, MeasurableSet (f b)
this : Countable ↑s
⊢ MeasurableSet (⋃ x, f ↑x)
state_after: no goals

tactic: simpa using h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort u_6
s✝ t u : Set α
m : MeasurableSpace α
f : β → Set α
s : Set β
hs : s.Countable
h : ∀ b ∈ s, MeasurableSet (f b)
this : Countable ↑s
⊢ ∀ (b : ↑s), MeasurableSet (f ↑b)
state_after: no goals
Theorem: Finset.inf_le_centerMass
File: Mathlib/Analysis/Convex/Combination.lean

tactic: rintro rfl
state_before: R : Type u_1
R' : Type u_2
E : Type u_3
F : Type u_4
ι : Type u_5
ι' : Type u_6
α : Type u_7
inst✝⁸ : LinearOrderedField R
inst✝⁷ : LinearOrderedField R'
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s✝ : Set E
i j : ι
c : R
t : Finset ι
w✝ : ι → R
z : ι → E
s : Finset ι
f : ι → α
w : ι → R
hw₀ : ∀ i ∈ s, 0 ≤ w i
hw₁ : 0 < ∑ i ∈ s, w i
⊢ s ≠ ∅
state_after: R : Type u_1
R' : Type u_2
E : Type u_3
F : Type u_4
ι : Type u_5
ι' : Type u_6
α : Type u_7
inst✝⁸ : LinearOrderedField R
inst✝⁷ : LinearOrderedField R'
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s : Set E
i j : ι
c : R
t : Finset ι
w✝ : ι → R
z : ι → E
f : ι → α
w : ι → R
hw₀ : ∀ i ∈ ∅, 0 ≤ w i
hw₁ : 0 < ∑ i ∈ ∅, w i
⊢ False

tactic: simp at hw₁
state_before: R : Type u_1
R' : Type u_2
E : Type u_3
F : Type u_4
ι : Type u_5
ι' : Type u_6
α : Type u_7
inst✝⁸ : LinearOrderedField R
inst✝⁷ : LinearOrderedField R'
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s : Set E
i j : ι
c : R
t : Finset ι
w✝ : ι → R
z : ι → E
f : ι → α
w : ι → R
hw₀ : ∀ i ∈ ∅, 0 ≤ w i
hw₁ : 0 < ∑ i ∈ ∅, w i
⊢ False
state_after: no goals
Theorem: CategoryTheory.Arrow.inv_left_hom_right
File: Mathlib/CategoryTheory/Comma/Arrow.lean

tactic: simp only [w, IsIso.inv_comp_eq]
state_before: T : Type u
inst✝¹ : Category.{v, u} T
f g : Arrow T
sq : f ⟶ g
inst✝ : IsIso sq
⊢ inv sq.left ≫ f.hom ≫ sq.right = g.hom
state_after: no goals
Theorem: smul_sphere'
File: Mathlib/Analysis/NormedSpace/Pointwise.lean

tactic: ext y
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c : 𝕜
hc : c ≠ 0
x : E
r : ℝ
⊢ c • sphere x r = sphere (c • x) (‖c‖ * r)
state_after: case h
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c : 𝕜
hc : c ≠ 0
x : E
r : ℝ
y : E
⊢ y ∈ c • sphere x r ↔ y ∈ sphere (c • x) (‖c‖ * r)

tactic: rw [mem_smul_set_iff_inv_smul_mem₀ hc]
state_before: case h
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c : 𝕜
hc : c ≠ 0
x : E
r : ℝ
y : E
⊢ y ∈ c • sphere x r ↔ y ∈ sphere (c • x) (‖c‖ * r)
state_after: case h
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c : 𝕜
hc : c ≠ 0
x : E
r : ℝ
y : E
⊢ c⁻¹ • y ∈ sphere x r ↔ y ∈ sphere (c • x) (‖c‖ * r)

tactic: conv_lhs => rw [← inv_smul_smul₀ hc x]
state_before: case h
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c : 𝕜
hc : c ≠ 0
x : E
r : ℝ
y : E
⊢ c⁻¹ • y ∈ sphere x r ↔ y ∈ sphere (c • x) (‖c‖ * r)
state_after: case h
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c : 𝕜
hc : c ≠ 0
x : E
r : ℝ
y : E
⊢ c⁻¹ • y ∈ sphere (c⁻¹ • c • x) r ↔ y ∈ sphere (c • x) (‖c‖ * r)

tactic: simp only [mem_sphere, dist_smul₀, norm_inv, ← div_eq_inv_mul, div_eq_iff (norm_pos_iff.2 hc).ne',
  mul_comm r]
state_before: case h
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
c : 𝕜
hc : c ≠ 0
x : E
r : ℝ
y : E
⊢ c⁻¹ • y ∈ sphere (c⁻¹ • c • x) r ↔ y ∈ sphere (c • x) (‖c‖ * r)
state_after: no goals
Theorem: Multiset.Ico_sub_Ico_left
File: Mathlib/Order/Interval/Multiset.lean

tactic: rw [Ico, Ico, Ico, ← Finset.sdiff_val, Finset.Ico_diff_Ico_left]
state_before: α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ c✝ d a b c : α
⊢ Ico a b - Ico a c = Ico (max a c) b
state_after: no goals
Theorem: IsCoprime.of_add_mul_left_right
File: Mathlib/RingTheory/Coprime/Basic.lean

tactic: rw [isCoprime_comm] at h ⊢
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
h : IsCoprime x (y + x * z)
⊢ IsCoprime x y
state_after: R : Type u
inst✝ : CommSemiring R
x y z : R
h : IsCoprime (y + x * z) x
⊢ IsCoprime y x

tactic: exact h.of_add_mul_left_left
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
h : IsCoprime (y + x * z) x
⊢ IsCoprime y x
state_after: no goals
Theorem: CategoryTheory.Adjunction.localization_unit_app
File: Mathlib/CategoryTheory/Localization/Adjunction.lean

tactic: apply Localization.ε_app
state_before: C₁ : Type u_1
C₂ : Type u_2
D₁ : Type u_3
D₂ : Type u_4
inst✝⁷ : Category.{u_6, u_1} C₁
inst✝⁶ : Category.{u_8, u_2} C₂
inst✝⁵ : Category.{u_5, u_3} D₁
inst✝⁴ : Category.{u_7, u_4} D₂
G : C₁ ⥤ C₂
F : C₂ ⥤ C₁
adj : G ⊣ F
L₁ : C₁ ⥤ D₁
W₁ : MorphismProperty C₁
inst✝³ : L₁.IsLocalization W₁
L₂ : C₂ ⥤ D₂
W₂ : MorphismProperty C₂
inst✝² : L₂.IsLocalization W₂
G' : D₁ ⥤ D₂
F' : D₂ ⥤ D₁
inst✝¹ : CatCommSq G L₁ L₂ G'
inst✝ : CatCommSq F L₂ L₁ F'
X₁ : C₁
⊢ (adj.localization L₁ W₁ L₂ W₂ G' F').unit.app (L₁.obj X₁) =
    L₁.map (adj.unit.app X₁) ≫
      (CatCommSq.iso F L₂ L₁ F').hom.app (G.obj X₁) ≫ F'.map ((CatCommSq.iso G L₁ L₂ G').hom.app X₁)
state_after: no goals
Theorem: WeierstrassCurve.map_preΨ
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

tactic: simp only [preΨ, map_Ψ₂Sq, map_Ψ₃, map_preΨ₄, ← coe_mapRingHom, map_preNormEDS]
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
f : R →+* S
n : ℤ
⊢ (W.map f).preΨ n = Polynomial.map f (W.preΨ n)
state_after: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
f : R →+* S
n : ℤ
⊢ preNormEDS ((mapRingHom f) W.Ψ₂Sq ^ 2) ((mapRingHom f) W.Ψ₃) ((mapRingHom f) W.preΨ₄) n =
    preNormEDS ((mapRingHom f) (W.Ψ₂Sq ^ 2)) ((mapRingHom f) W.Ψ₃) ((mapRingHom f) W.preΨ₄) n

tactic: map_simp
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
f : R →+* S
n : ℤ
⊢ preNormEDS ((mapRingHom f) W.Ψ₂Sq ^ 2) ((mapRingHom f) W.Ψ₃) ((mapRingHom f) W.preΨ₄) n =
    preNormEDS ((mapRingHom f) (W.Ψ₂Sq ^ 2)) ((mapRingHom f) W.Ψ₃) ((mapRingHom f) W.preΨ₄) n
state_after: no goals
Theorem: Matrix.det_add_col_mul_row
File: Mathlib/LinearAlgebra/Matrix/SchurComplement.lean

tactic: nth_rewrite 1 [← Matrix.mul_one A]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁷ : Fintype l
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : CommRing α
ι : Type u_5
inst✝ : Unique ι
A : Matrix m m α
hA : IsUnit A.det
u v : m → α
⊢ (A + col ι u * row ι v).det = A.det * (1 + row ι v * A⁻¹ * col ι u).det
state_after: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁷ : Fintype l
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : CommRing α
ι : Type u_5
inst✝ : Unique ι
A : Matrix m m α
hA : IsUnit A.det
u v : m → α
⊢ (A * 1 + col ι u * row ι v).det = A.det * (1 + row ι v * A⁻¹ * col ι u).det

tactic: rwa [← Matrix.mul_nonsing_inv_cancel_left A (col ι u * row ι v),
  ← Matrix.mul_add, det_mul, ← Matrix.mul_assoc, det_one_add_mul_comm,
  ← Matrix.mul_assoc]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁷ : Fintype l
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : CommRing α
ι : Type u_5
inst✝ : Unique ι
A : Matrix m m α
hA : IsUnit A.det
u v : m → α
⊢ (A * 1 + col ι u * row ι v).det = A.det * (1 + row ι v * A⁻¹ * col ι u).det
state_after: no goals
Theorem: Complex.sin_add_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: simp [sin_add]
state_before: x : ℂ
⊢ sin (x + ↑π / 2) = cos x
state_after: no goals
Theorem: Real.cos_arctan
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Arctan.lean

tactic: rw_mod_cast [one_div, ← inv_sqrt_one_add_tan_sq (cos_arctan_pos x), tan_arctan]
state_before: x : ℝ
⊢ cos (arctan x) = 1 / √(1 + x ^ 2)
state_after: no goals
Theorem: Multiset.Ico_filter_lt_of_le_left
File: Mathlib/Order/Interval/Multiset.lean

tactic: rw [Ico, ← Finset.filter_val, Finset.Ico_filter_lt_of_le_left hca]
state_before: α : Type u_1
inst✝² : Preorder α
inst✝¹ : LocallyFiniteOrder α
a b c : α
inst✝ : DecidablePred fun x => x < c
hca : c ≤ a
⊢ filter (fun x => x < c) (Ico a b) = ∅
state_after: α : Type u_1
inst✝² : Preorder α
inst✝¹ : LocallyFiniteOrder α
a b c : α
inst✝ : DecidablePred fun x => x < c
hca : c ≤ a
⊢ ∅.val = ∅

tactic: rfl
state_before: α : Type u_1
inst✝² : Preorder α
inst✝¹ : LocallyFiniteOrder α
a b c : α
inst✝ : DecidablePred fun x => x < c
hca : c ≤ a
⊢ ∅.val = ∅
state_after: no goals
Theorem: Int.ne_of_odd_add
File: Mathlib/Algebra/Ring/Int.lean

tactic: simp [hnot, parity_simps] at h
state_before: m n : ℤ
h : Odd (m + n)
hnot : m = n
⊢ False
state_after: no goals
Theorem: CochainComplex.HomComplex.Cochain.ofHoms_comp
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplex.lean

tactic: aesop_cat
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
φ : (p : ℤ) → F.X p ⟶ G.X p
ψ : (p : ℤ) → G.X p ⟶ K.X p
⊢ (ofHoms φ).comp (ofHoms ψ) ⋯ = ofHoms fun p => φ p ≫ ψ p
state_after: no goals
Theorem: Mathlib.Meta.NormNum.jacobiSymNat.double_even
File: Mathlib/Tactic/NormNum/LegendreSymbol.lean

tactic: simp only [jacobiSymNat, ← hr, ← hc, Int.ofNat_ediv, Nat.cast_ofNat]
state_before: a b c : ℕ
r : ℤ
ha : a % 4 = 0
hb : b % 2 = 1
hc : a / 4 = c
hr : jacobiSymNat c b = r
⊢ jacobiSymNat a b = r
state_after: a b c : ℕ
r : ℤ
ha : a % 4 = 0
hb : b % 2 = 1
hc : a / 4 = c
hr : jacobiSymNat c b = r
⊢ jacobiSym (↑a) b = jacobiSym (↑a / 4) b

tactic: exact (jacobiSym.div_four_left (mod_cast ha) hb).symm
state_before: a b c : ℕ
r : ℤ
ha : a % 4 = 0
hb : b % 2 = 1
hc : a / 4 = c
hr : jacobiSymNat c b = r
⊢ jacobiSym (↑a) b = jacobiSym (↑a / 4) b
state_after: no goals
Theorem: CategoryTheory.MorphismProperty.FunctorialFactorizationData.fac_app
File: Mathlib/CategoryTheory/MorphismProperty/Factorization.lean

tactic: rw [← NatTrans.comp_app, fac,Arrow.leftToRight_app]
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
W₁ W₂ : MorphismProperty C
data : W₁.FunctorialFactorizationData W₂
f : Arrow C
⊢ data.i.app f ≫ data.p.app f = f.hom
state_after: no goals
Theorem: deriv_mem_iff
File: Mathlib/Analysis/Calculus/Deriv/Basic.lean

tactic: by_cases hx : DifferentiableAt 𝕜 f x <;> simp [deriv_zero_of_not_differentiableAt, *]
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f✝ f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x✝ : 𝕜
s✝ t : Set 𝕜
L L₁ L₂ : Filter 𝕜
f : 𝕜 → F
s : Set F
x : 𝕜
⊢ deriv f x ∈ s ↔ DifferentiableAt 𝕜 f x ∧ deriv f x ∈ s ∨ ¬DifferentiableAt 𝕜 f x ∧ 0 ∈ s
state_after: no goals
Theorem: MeasureTheory.SimpleFunc.FinMeasSupp.add
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

tactic: rw [add_eq_map₂]
state_before: α : Type u_1
β✝ : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
inst✝² : Zero β✝
inst✝¹ : Zero γ
μ : Measure α
f✝ : α →ₛ β✝
β : Type u_5
inst✝ : AddMonoid β
f g : α →ₛ β
hf : f.FinMeasSupp μ
hg : g.FinMeasSupp μ
⊢ (f + g).FinMeasSupp μ
state_after: α : Type u_1
β✝ : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
inst✝² : Zero β✝
inst✝¹ : Zero γ
μ : Measure α
f✝ : α →ₛ β✝
β : Type u_5
inst✝ : AddMonoid β
f g : α →ₛ β
hf : f.FinMeasSupp μ
hg : g.FinMeasSupp μ
⊢ (map (fun p => p.1 + p.2) (f.pair g)).FinMeasSupp μ

tactic: exact hf.map₂ hg (zero_add 0)
state_before: α : Type u_1
β✝ : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
inst✝² : Zero β✝
inst✝¹ : Zero γ
μ : Measure α
f✝ : α →ₛ β✝
β : Type u_5
inst✝ : AddMonoid β
f g : α →ₛ β
hf : f.FinMeasSupp μ
hg : g.FinMeasSupp μ
⊢ (map (fun p => p.1 + p.2) (f.pair g)).FinMeasSupp μ
state_after: no goals
Theorem: FirstOrder.Language.Theory.CompleteType.nonempty_iff
File: Mathlib/ModelTheory/Types.lean

tactic: rw [← isSatisfiable_onTheory_iff (lhomWithConstants_injective L α)]
state_before: L : Language
T : L.Theory
α : Type w
⊢ Nonempty (T.CompleteType α) ↔ T.IsSatisfiable
state_after: L : Language
T : L.Theory
α : Type w
⊢ Nonempty (T.CompleteType α) ↔ ((L.lhomWithConstants α).onTheory T).IsSatisfiable

tactic: rw [nonempty_iff_univ_nonempty, nonempty_iff_ne_empty, Ne, not_iff_comm,
  ← union_empty ((L.lhomWithConstants α).onTheory T), ← setOf_subset_eq_empty_iff]
state_before: L : Language
T : L.Theory
α : Type w
⊢ Nonempty (T.CompleteType α) ↔ ((L.lhomWithConstants α).onTheory T).IsSatisfiable
state_after: L : Language
T : L.Theory
α : Type w
⊢ {p | ∅ ⊆ ↑p} = ∅ ↔ Set.univ = ∅

tactic: simp
state_before: L : Language
T : L.Theory
α : Type w
⊢ {p | ∅ ⊆ ↑p} = ∅ ↔ Set.univ = ∅
state_after: no goals
Theorem: HasDerivAt.smul_const
File: Mathlib/Analysis/Calculus/Deriv/Mul.lean

tactic: rw [← hasDerivWithinAt_univ] at *
state_before: 𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
E : Type w
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
G : Type u_1
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
f✝ f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_2
inst✝³ : NontriviallyNormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
c : 𝕜 → 𝕜'
c' : 𝕜'
hc : HasDerivAt c c' x
f : F
⊢ HasDerivAt (fun y => c y • f) (c' • f) x
state_after: 𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
E : Type w
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
G : Type u_1
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
f✝ f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_2
inst✝³ : NontriviallyNormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
c : 𝕜 → 𝕜'
c' : 𝕜'
hc : HasDerivWithinAt c c' univ x
f : F
⊢ HasDerivWithinAt (fun y => c y • f) (c' • f) univ x

tactic: exact hc.smul_const f
state_before: 𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
E : Type w
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
G : Type u_1
inst✝⁵ : NormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
f✝ f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_2
inst✝³ : NontriviallyNormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
c : 𝕜 → 𝕜'
c' : 𝕜'
hc : HasDerivWithinAt c c' univ x
f : F
⊢ HasDerivWithinAt (fun y => c y • f) (c' • f) univ x
state_after: no goals
Theorem: Nat.Subtype.toFunAux_eq
File: Mathlib/Logic/Denumerable.lean

tactic: rw [toFunAux, List.countP_eq_length_filter]
state_before: α : Type u_1
β : Type u_2
s : Set ℕ
inst✝¹ : Infinite ↑s
inst✝ : DecidablePred fun x => x ∈ s
x : ↑s
⊢ Nat.Subtype.toFunAux x = (Finset.filter (fun x => x ∈ s) (Finset.range ↑x)).card
state_after: α : Type u_1
β : Type u_2
s : Set ℕ
inst✝¹ : Infinite ↑s
inst✝ : DecidablePred fun x => x ∈ s
x : ↑s
⊢ (List.filter (fun x => decide (x ∈ s)) (List.range ↑x)).length =
    (Finset.filter (fun x => x ∈ s) (Finset.range ↑x)).card

tactic: rfl
state_before: α : Type u_1
β : Type u_2
s : Set ℕ
inst✝¹ : Infinite ↑s
inst✝ : DecidablePred fun x => x ∈ s
x : ↑s
⊢ (List.filter (fun x => decide (x ∈ s)) (List.range ↑x)).length =
    (Finset.filter (fun x => x ∈ s) (Finset.range ↑x)).card
state_after: no goals
Theorem: HahnSeries.SummableFamily.embDomain_notin_range
File: Mathlib/RingTheory/HahnSeries/Summable.lean

tactic: rw [embDomain_apply, dif_neg h]
state_before: Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
β : Type u_4
s : SummableFamily Γ R α
f : α ↪ β
a : α
b : β
h : b ∉ Set.range ⇑f
⊢ (s.embDomain f) b = 0
state_after: no goals
Theorem: Gamma0_det
File: Mathlib/NumberTheory/ModularForms/CongruenceSubgroups.lean

tactic: simp [A.1.property]
state_before: N✝ N : ℕ
A : ↥(Gamma0 N)
⊢ ↑(↑↑A).det = 1
state_after: no goals