1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: AffineMap.hasStrictDerivAt_lineMap
File: Mathlib/Analysis/Calculus/Deriv/AffineMap.lean

tactic: simpa using (lineMap a b : 𝕜 →ᵃ[𝕜] E).hasStrictDerivAt
state_before: 𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 →ᵃ[𝕜] E
a b : E
L : Filter 𝕜
s : Set 𝕜
x : 𝕜
⊢ HasStrictDerivAt (⇑(lineMap a b)) (b - a) x
state_after: no goals
Theorem: one_le_ite
File: Mathlib/Order/Basic.lean

tactic: split <;> assumption
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝² : One α
p : Prop
inst✝¹ : Decidable p
a b : α
inst✝ : LE α
ha : 1 ≤ a
hb : 1 ≤ b
⊢ 1 ≤ if p then a else b
state_after: no goals
Theorem: PFun.preimage_univ
File: Mathlib/Data/PFun.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f : α →. β
⊢ f.preimage Set.univ = f.Dom
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f : α →. β
x✝ : α
⊢ x✝ ∈ f.preimage Set.univ ↔ x✝ ∈ f.Dom

tactic: simp [mem_preimage, mem_dom]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f : α →. β
x✝ : α
⊢ x✝ ∈ f.preimage Set.univ ↔ x✝ ∈ f.Dom
state_after: no goals
Theorem: Metric.diam_union
File: Mathlib/Topology/MetricSpace/Bounded.lean

tactic: simp only [diam, dist_edist]
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
t : Set α
xs : x ∈ s
yt : y ∈ t
⊢ diam (s ∪ t) ≤ diam s + dist x y + diam t
state_after: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
t : Set α
xs : x ∈ s
yt : y ∈ t
⊢ (EMetric.diam (s ∪ t)).toReal ≤ (EMetric.diam s).toReal + (edist x y).toReal + (EMetric.diam t).toReal

tactic: refine (ENNReal.toReal_le_add' (EMetric.diam_union xs yt) ?_ ?_).trans
  (add_le_add_right ENNReal.toReal_add_le _)
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
t : Set α
xs : x ∈ s
yt : y ∈ t
⊢ (EMetric.diam (s ∪ t)).toReal ≤ (EMetric.diam s).toReal + (edist x y).toReal + (EMetric.diam t).toReal
state_after: case refine_1
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
t : Set α
xs : x ∈ s
yt : y ∈ t
⊢ EMetric.diam s + edist x y = ⊤ → EMetric.diam (s ∪ t) = ⊤

case refine_2
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
t : Set α
xs : x ∈ s
yt : y ∈ t
⊢ EMetric.diam t = ⊤ → EMetric.diam (s ∪ t) = ⊤

tactic: simp only [ENNReal.add_eq_top, edist_ne_top, or_false]
state_before: case refine_1
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
t : Set α
xs : x ∈ s
yt : y ∈ t
⊢ EMetric.diam s + edist x y = ⊤ → EMetric.diam (s ∪ t) = ⊤
state_after: case refine_1
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
t : Set α
xs : x ∈ s
yt : y ∈ t
⊢ EMetric.diam s = ⊤ → EMetric.diam (s ∪ t) = ⊤

tactic: exact fun h ↦ top_unique <| h ▸ EMetric.diam_mono subset_union_left
state_before: case refine_1
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
t : Set α
xs : x ∈ s
yt : y ∈ t
⊢ EMetric.diam s = ⊤ → EMetric.diam (s ∪ t) = ⊤
state_after: no goals

tactic: exact fun h ↦ top_unique <| h ▸ EMetric.diam_mono subset_union_right
state_before: case refine_2
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
x y z : α
t : Set α
xs : x ∈ s
yt : y ∈ t
⊢ EMetric.diam t = ⊤ → EMetric.diam (s ∪ t) = ⊤
state_after: no goals
Theorem: PreErgodic.ae_eq_const_of_ae_eq_comp
File: Mathlib/Dynamics/Ergodic/Function.lean

tactic: rw [← preimage_comp, hg_eq]
state_before: α : Type u_1
X : Type u_2
inst✝³ : MeasurableSpace α
μ : Measure α
inst✝² : Nonempty X
inst✝¹ : MeasurableSpace X
inst✝ : MeasurableSpace.CountablySeparated X
f : α → α
g : α → X
h : PreErgodic f μ
hgm : Measurable g
hg_eq : g ∘ f = g
U : Set X
hU : MeasurableSet U
⊢ f ⁻¹' (g ⁻¹' U) = g ⁻¹' U
state_after: no goals
Theorem: Profinite.NobelingProof.proj_comp_of_subset
File: Mathlib/Topology/Category/Profinite/Nobeling.lean

tactic: ext x i
state_before: I : Type u
inst✝⁴ : LinearOrder I
inst✝³ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
J K L : I → Prop
inst✝² : (i : I) → Decidable (J i)
inst✝¹ : (i : I) → Decidable (K i)
inst✝ : (i : I) → Decidable (L i)
h : ∀ (i : I), J i → K i
⊢ Proj J ∘ Proj K = Proj J
state_after: case h.h
I : Type u
inst✝⁴ : LinearOrder I
inst✝³ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
J K L : I → Prop
inst✝² : (i : I) → Decidable (J i)
inst✝¹ : (i : I) → Decidable (K i)
inst✝ : (i : I) → Decidable (L i)
h : ∀ (i : I), J i → K i
x : I → Bool
i : I
⊢ (Proj J ∘ Proj K) x i = Proj J x i

tactic: dsimp [Proj]
state_before: case h.h
I : Type u
inst✝⁴ : LinearOrder I
inst✝³ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
J K L : I → Prop
inst✝² : (i : I) → Decidable (J i)
inst✝¹ : (i : I) → Decidable (K i)
inst✝ : (i : I) → Decidable (L i)
h : ∀ (i : I), J i → K i
x : I → Bool
i : I
⊢ (Proj J ∘ Proj K) x i = Proj J x i
state_after: case h.h
I : Type u
inst✝⁴ : LinearOrder I
inst✝³ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
J K L : I → Prop
inst✝² : (i : I) → Decidable (J i)
inst✝¹ : (i : I) → Decidable (K i)
inst✝ : (i : I) → Decidable (L i)
h : ∀ (i : I), J i → K i
x : I → Bool
i : I
⊢ (if J i then if K i then x i else false else false) = if J i then x i else false

tactic: aesop
state_before: case h.h
I : Type u
inst✝⁴ : LinearOrder I
inst✝³ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
J K L : I → Prop
inst✝² : (i : I) → Decidable (J i)
inst✝¹ : (i : I) → Decidable (K i)
inst✝ : (i : I) → Decidable (L i)
h : ∀ (i : I), J i → K i
x : I → Bool
i : I
⊢ (if J i then if K i then x i else false else false) = if J i then x i else false
state_after: no goals
Theorem: Cardinal.card_typein_out_lt
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: rw [← lt_ord]
state_before: α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
c : Cardinal.{u_3}
x : (Quotient.out c.ord).α
⊢ (typein (fun x x_1 => x < x_1) x).card < c
state_after: α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
c : Cardinal.{u_3}
x : (Quotient.out c.ord).α
⊢ typein (fun x x_1 => x < x_1) x < c.ord

tactic: apply typein_lt_self
state_before: α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
c : Cardinal.{u_3}
x : (Quotient.out c.ord).α
⊢ typein (fun x x_1 => x < x_1) x < c.ord
state_after: no goals
Theorem: Ideal.mul_add_mem_pow_succ_unique
File: Mathlib/RingTheory/Ideal/Norm.lean

tactic: have h' : a * (d - d') ∈ P ^ (i + 1) := by
  convert Ideal.add_mem _ h (Ideal.sub_mem _ e'_mem e_mem) using 1
  ring
state_before: S : Type u_1
inst✝² : CommRing S
inst✝¹ : IsDomain S
P : Ideal S
P_prime : P.IsPrime
hP : P ≠ ⊥
inst✝ : IsDedekindDomain S
i : ℕ
a d d' e e' : S
a_not_mem : a ∉ P ^ (i + 1)
e_mem : e ∈ P ^ (i + 1)
e'_mem : e' ∈ P ^ (i + 1)
h : a * d + e - (a * d' + e') ∈ P ^ (i + 1)
⊢ d - d' ∈ P
state_after: S : Type u_1
inst✝² : CommRing S
inst✝¹ : IsDomain S
P : Ideal S
P_prime : P.IsPrime
hP : P ≠ ⊥
inst✝ : IsDedekindDomain S
i : ℕ
a d d' e e' : S
a_not_mem : a ∉ P ^ (i + 1)
e_mem : e ∈ P ^ (i + 1)
e'_mem : e' ∈ P ^ (i + 1)
h : a * d + e - (a * d' + e') ∈ P ^ (i + 1)
h' : a * (d - d') ∈ P ^ (i + 1)
⊢ d - d' ∈ P

tactic: exact Ideal.mem_prime_of_mul_mem_pow hP a_not_mem h'
state_before: S : Type u_1
inst✝² : CommRing S
inst✝¹ : IsDomain S
P : Ideal S
P_prime : P.IsPrime
hP : P ≠ ⊥
inst✝ : IsDedekindDomain S
i : ℕ
a d d' e e' : S
a_not_mem : a ∉ P ^ (i + 1)
e_mem : e ∈ P ^ (i + 1)
e'_mem : e' ∈ P ^ (i + 1)
h : a * d + e - (a * d' + e') ∈ P ^ (i + 1)
h' : a * (d - d') ∈ P ^ (i + 1)
⊢ d - d' ∈ P
state_after: no goals

tactic: convert Ideal.add_mem _ h (Ideal.sub_mem _ e'_mem e_mem) using 1
state_before: S : Type u_1
inst✝² : CommRing S
inst✝¹ : IsDomain S
P : Ideal S
P_prime : P.IsPrime
hP : P ≠ ⊥
inst✝ : IsDedekindDomain S
i : ℕ
a d d' e e' : S
a_not_mem : a ∉ P ^ (i + 1)
e_mem : e ∈ P ^ (i + 1)
e'_mem : e' ∈ P ^ (i + 1)
h : a * d + e - (a * d' + e') ∈ P ^ (i + 1)
⊢ a * (d - d') ∈ P ^ (i + 1)
state_after: case h.e'_4
S : Type u_1
inst✝² : CommRing S
inst✝¹ : IsDomain S
P : Ideal S
P_prime : P.IsPrime
hP : P ≠ ⊥
inst✝ : IsDedekindDomain S
i : ℕ
a d d' e e' : S
a_not_mem : a ∉ P ^ (i + 1)
e_mem : e ∈ P ^ (i + 1)
e'_mem : e' ∈ P ^ (i + 1)
h : a * d + e - (a * d' + e') ∈ P ^ (i + 1)
⊢ a * (d - d') = a * d + e - (a * d' + e') + (e' - e)

tactic: ring
state_before: case h.e'_4
S : Type u_1
inst✝² : CommRing S
inst✝¹ : IsDomain S
P : Ideal S
P_prime : P.IsPrime
hP : P ≠ ⊥
inst✝ : IsDedekindDomain S
i : ℕ
a d d' e e' : S
a_not_mem : a ∉ P ^ (i + 1)
e_mem : e ∈ P ^ (i + 1)
e'_mem : e' ∈ P ^ (i + 1)
h : a * d + e - (a * d' + e') ∈ P ^ (i + 1)
⊢ a * (d - d') = a * d + e - (a * d' + e') + (e' - e)
state_after: no goals
Theorem: MonoidAlgebra.mul_apply_right
File: Mathlib/Algebra/MonoidAlgebra/Basic.lean

tactic: rw [← Finsupp.sum_apply, ← Finsupp.mul_sum f g, g.sum_single]
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝¹ : Semiring k
inst✝ : Group G
f g : MonoidAlgebra k G
x : G
⊢ (f * g) x = sum g fun a b => (f * single a b) x
state_after: no goals

tactic: simp only [mul_single_apply, Finsupp.sum]
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝¹ : Semiring k
inst✝ : Group G
f g : MonoidAlgebra k G
x : G
⊢ (sum g fun a b => (f * single a b) x) = sum g fun a b => f (x * a⁻¹) * b
state_after: no goals
Theorem: FreeAbelianGroup.support_zero
File: Mathlib/GroupTheory/FreeAbelianGroupFinsupp.lean

tactic: simp only [support, Finsupp.support_zero, AddMonoidHom.map_zero]
state_before: X : Type u_1
⊢ support 0 = ∅
state_after: no goals
Theorem: IsSepClosed.exists_eq_mul_self
File: Mathlib/FieldTheory/IsSepClosed.lean

tactic: rcases exists_pow_nat_eq x 2 with ⟨z, rfl⟩
state_before: k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed k
x : k
h2 : NeZero 2
⊢ ∃ z, x = z * z
state_after: case intro
k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed k
h2 : NeZero 2
z : k
⊢ ∃ z_1, z ^ 2 = z_1 * z_1

tactic: exact ⟨z, sq z⟩
state_before: case intro
k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed k
h2 : NeZero 2
z : k
⊢ ∃ z_1, z ^ 2 = z_1 * z_1
state_after: no goals
Theorem: HomotopyGroup.transAt_indep
File: Mathlib/Topology/Homotopy/HomotopyGroup.lean

tactic: simp_rw [← fromLoop_trans_toLoop]
state_before: N : Type u_1
X : Type u_2
inst✝¹ : TopologicalSpace X
x : X
inst✝ : DecidableEq N
i j : N
f g : ↑(Ω^ N X x)
⊢ ⟦transAt i f g⟧ = ⟦transAt j f g⟧
state_after: N : Type u_1
X : Type u_2
inst✝¹ : TopologicalSpace X
x : X
inst✝ : DecidableEq N
i j : N
f g : ↑(Ω^ N X x)
⊢ ⟦fromLoop i (Path.trans (toLoop i f) (toLoop i g))⟧ = ⟦fromLoop j (Path.trans (toLoop j f) (toLoop j g))⟧

tactic: exact congr_fun₂ (congr_arg (m <| HomotopyGroup N X x) <| auxGroup_indep i j) ⟦g⟧ ⟦f⟧
state_before: N : Type u_1
X : Type u_2
inst✝¹ : TopologicalSpace X
x : X
inst✝ : DecidableEq N
i j : N
f g : ↑(Ω^ N X x)
m : (G : Type ?u.554789) → Group G → G → G → G := fun G x x_1 x_2 => x_1 * x_2
⊢ ⟦fromLoop i (Path.trans (toLoop i f) (toLoop i g))⟧ = ⟦fromLoop j (Path.trans (toLoop j f) (toLoop j g))⟧
state_after: no goals
Theorem: Int.sqrt_eq
File: Mathlib/Data/Int/Sqrt.lean

tactic: rw [sqrt, ← natAbs_mul_self, toNat_natCast, Nat.sqrt_eq]
state_before: n : ℤ
⊢ sqrt (n * n) = ↑n.natAbs
state_after: no goals
Theorem: ContinuousLinearEquiv.comp_contDiffOn_iff
File: Mathlib/Analysis/Calculus/ContDiff/Basic.lean

tactic: simp [ContDiffOn, e.comp_contDiffWithinAt_iff]
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type u_2
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
e : F ≃L[𝕜] G
⊢ ContDiffOn 𝕜 n (⇑e ∘ f) s ↔ ContDiffOn 𝕜 n f s
state_after: no goals
Theorem: coplanar_of_finrank_eq_two
File: Mathlib/LinearAlgebra/AffineSpace/FiniteDimensional.lean

tactic: have : FiniteDimensional k V := .of_finrank_eq_succ h
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
h : finrank k V = 2
⊢ Coplanar k s
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
h : finrank k V = 2
this : FiniteDimensional k V
⊢ Coplanar k s

tactic: rw [coplanar_iff_finrank_le_two, ← h]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
h : finrank k V = 2
this : FiniteDimensional k V
⊢ Coplanar k s
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
h : finrank k V = 2
this : FiniteDimensional k V
⊢ finrank k ↥(vectorSpan k s) ≤ finrank k V

tactic: exact Submodule.finrank_le _
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
h : finrank k V = 2
this : FiniteDimensional k V
⊢ finrank k ↥(vectorSpan k s) ≤ finrank k V
state_after: no goals
Theorem: Polynomial.eq_C_of_degree_le_zero
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: ext (_ | n)
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
h : p.degree ≤ 0
⊢ p = C (p.coeff 0)
state_after: case a.zero
R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
h : p.degree ≤ 0
⊢ p.coeff 0 = (C (p.coeff 0)).coeff 0

case a.succ
R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
h : p.degree ≤ 0
n : ℕ
⊢ p.coeff (n + 1) = (C (p.coeff 0)).coeff (n + 1)

tactic: rw [coeff_C, if_neg (Nat.succ_ne_zero _), coeff_eq_zero_of_degree_lt]
state_before: case a.succ
R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
h : p.degree ≤ 0
n : ℕ
⊢ p.coeff (n + 1) = (C (p.coeff 0)).coeff (n + 1)
state_after: case a.succ
R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
h : p.degree ≤ 0
n : ℕ
⊢ p.degree < ↑(n + 1)

tactic: exact h.trans_lt (WithBot.coe_lt_coe.2 n.succ_pos)
state_before: case a.succ
R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
h : p.degree ≤ 0
n : ℕ
⊢ p.degree < ↑(n + 1)
state_after: no goals

tactic: simp
state_before: case a.zero
R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
h : p.degree ≤ 0
⊢ p.coeff 0 = (C (p.coeff 0)).coeff 0
state_after: no goals
Theorem: NormedSpace.eq_zero_of_forall_dual_eq_zero
File: Mathlib/Analysis/NormedSpace/Dual.lean

tactic: simp [h f]
state_before: 𝕜 : Type v
inst✝² : RCLike 𝕜
E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
h : ∀ (f : Dual 𝕜 E), f x = 0
f : Dual 𝕜 E
⊢ ‖f x‖ ≤ 0 * ‖f‖
state_after: no goals
Theorem: AhlswedeZhang.infSum_eq_one
File: Mathlib/Combinatorics/SetFamily/AhlswedeZhang.lean

tactic: rw [← compls_compls 𝒜, eq_sub_of_add_eq (infSum_compls_add_supSum _),
  supSum_of_not_univ_mem h𝒜₁.compls, add_sub_cancel_left]
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
h𝒜₁ : 𝒜.Nonempty
h𝒜₀ : ∅ ∉ 𝒜
⊢ infSum 𝒜 = 1
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
h𝒜₁ : 𝒜.Nonempty
h𝒜₀ : ∅ ∉ 𝒜
⊢ univ ∉ 𝒜ᶜˢ

tactic: simpa
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
inst✝ : Nonempty α
h𝒜₁ : 𝒜.Nonempty
h𝒜₀ : ∅ ∉ 𝒜
⊢ univ ∉ 𝒜ᶜˢ
state_after: no goals
Theorem: Composition.card_boundaries_eq_succ_length
File: Mathlib/Combinatorics/Enumerative/Composition.lean

tactic: simp [boundaries]
state_before: n : ℕ
c : Composition n
⊢ c.boundaries.card = c.length + 1
state_after: no goals
Theorem: Polynomial.support_update_zero
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: rw [update_zero_eq_erase, support_erase]
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p✝ q p : R[X]
n : ℕ
⊢ (p.update n 0).support = p.support.erase n
state_after: no goals
Theorem: Real.Angle.eq_neg_self_iff
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: rw [← add_eq_zero_iff_eq_neg, ← two_nsmul, two_nsmul_eq_zero_iff]
state_before: θ : Angle
⊢ θ = -θ ↔ θ = 0 ∨ θ = ↑π
state_after: no goals
Theorem: PerfectPairing.reflexive_left
File: Mathlib/LinearAlgebra/PerfectPairing.lean

tactic: rw [← p.toDualRight_symm_comp_toDualLeft]
state_before: R : Type u_1
M : Type u_2
N : Type u_3
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
p : PerfectPairing R M N
⊢ Bijective ⇑(Dual.eval R M)
state_after: R : Type u_1
M : Type u_2
N : Type u_3
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
p : PerfectPairing R M N
⊢ Bijective ⇑(↑p.toDualRight.symm.dualMap ∘ₗ ↑p.toDualLeft)

tactic: exact p.bijective_toDualRight_symm_toDualLeft
state_before: R : Type u_1
M : Type u_2
N : Type u_3
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
p : PerfectPairing R M N
⊢ Bijective ⇑(↑p.toDualRight.symm.dualMap ∘ₗ ↑p.toDualLeft)
state_after: no goals
Theorem: Valued.integer_isOpen
File: Mathlib/Topology/Algebra/Valuation.lean

tactic: rw [isOpen_iff_mem_nhds]
state_before: R : Type u
inst✝¹ : Ring R
Γ₀ : Type v
inst✝ : LinearOrderedCommGroupWithZero Γ₀
_i : Valued R Γ₀
⊢ IsOpen ↑v.integer
state_after: R : Type u
inst✝¹ : Ring R
Γ₀ : Type v
inst✝ : LinearOrderedCommGroupWithZero Γ₀
_i : Valued R Γ₀
⊢ ∀ x ∈ ↑v.integer, ↑v.integer ∈ 𝓝 x

tactic: intro x hx
state_before: R : Type u
inst✝¹ : Ring R
Γ₀ : Type v
inst✝ : LinearOrderedCommGroupWithZero Γ₀
_i : Valued R Γ₀
⊢ ∀ x ∈ ↑v.integer, ↑v.integer ∈ 𝓝 x
state_after: R : Type u
inst✝¹ : Ring R
Γ₀ : Type v
inst✝ : LinearOrderedCommGroupWithZero Γ₀
_i : Valued R Γ₀
x : R
hx : x ∈ ↑v.integer
⊢ ↑v.integer ∈ 𝓝 x

tactic: rw [mem_nhds]
state_before: R : Type u
inst✝¹ : Ring R
Γ₀ : Type v
inst✝ : LinearOrderedCommGroupWithZero Γ₀
_i : Valued R Γ₀
x : R
hx : x ∈ ↑v.integer
⊢ ↑v.integer ∈ 𝓝 x
state_after: R : Type u
inst✝¹ : Ring R
Γ₀ : Type v
inst✝ : LinearOrderedCommGroupWithZero Γ₀
_i : Valued R Γ₀
x : R
hx : x ∈ ↑v.integer
⊢ ∃ γ, {y | v (y - x) < ↑γ} ⊆ ↑v.integer

tactic: exact ⟨1,
  fun y hy => (sub_add_cancel y x).symm ▸ le_trans (map_add _ _ _) (max_le (le_of_lt hy) hx)⟩
state_before: R : Type u
inst✝¹ : Ring R
Γ₀ : Type v
inst✝ : LinearOrderedCommGroupWithZero Γ₀
_i : Valued R Γ₀
x : R
hx : x ∈ ↑v.integer
⊢ ∃ γ, {y | v (y - x) < ↑γ} ⊆ ↑v.integer
state_after: no goals
Theorem: Finset.centerMass_of_sum_add_sum_eq_zero
File: Mathlib/Analysis/Convex/Combination.lean

tactic: simp [centerMass, eq_neg_of_add_eq_zero_right hw, eq_neg_of_add_eq_zero_left hz, ← neg_inv]
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 t : Finset ι
hw : ∑ i ∈ s, w i + ∑ i ∈ t, w i = 0
hz : ∑ i ∈ s, w i • z i + ∑ i ∈ t, w i • z i = 0
⊢ s.centerMass w z = t.centerMass w z
state_after: no goals
Theorem: Rat.mkRat_mul_mkRat
File: .lake/packages/batteries/Batteries/Data/Rat/Lemmas.lean

tactic: if z₁ : d₁ = 0 then simp [z₁] else if z₂ : d₂ = 0 then simp [z₂] else
rw [← normalize_eq_mkRat z₁, ← normalize_eq_mkRat z₂, normalize_mul_normalize, normalize_eq_mkRat]
state_before: n₁ n₂ : Int
d₁ d₂ : Nat
⊢ mkRat n₁ d₁ * mkRat n₂ d₂ = mkRat (n₁ * n₂) (d₁ * d₂)
state_after: no goals

tactic: simp [z₁]
state_before: n₁ n₂ : Int
d₁ d₂ : Nat
z₁ : d₁ = 0
⊢ mkRat n₁ d₁ * mkRat n₂ d₂ = mkRat (n₁ * n₂) (d₁ * d₂)
state_after: no goals

tactic: if z₂ : d₂ = 0 then simp [z₂] else
rw [← normalize_eq_mkRat z₁, ← normalize_eq_mkRat z₂, normalize_mul_normalize, normalize_eq_mkRat]
state_before: n₁ n₂ : Int
d₁ d₂ : Nat
z₁ : ¬d₁ = 0
⊢ mkRat n₁ d₁ * mkRat n₂ d₂ = mkRat (n₁ * n₂) (d₁ * d₂)
state_after: no goals

tactic: simp [z₂]
state_before: n₁ n₂ : Int
d₁ d₂ : Nat
z₁ : ¬d₁ = 0
z₂ : d₂ = 0
⊢ mkRat n₁ d₁ * mkRat n₂ d₂ = mkRat (n₁ * n₂) (d₁ * d₂)
state_after: no goals

tactic: rw [← normalize_eq_mkRat z₁, ← normalize_eq_mkRat z₂, normalize_mul_normalize, normalize_eq_mkRat]
state_before: n₁ n₂ : Int
d₁ d₂ : Nat
z₁ : ¬d₁ = 0
z₂ : ¬d₂ = 0
⊢ mkRat n₁ d₁ * mkRat n₂ d₂ = mkRat (n₁ * n₂) (d₁ * d₂)
state_after: no goals
Theorem: Polynomial.prime_X_sub_C
File: Mathlib/Algebra/Polynomial/RingDivision.lean

tactic: simp_rw [dvd_iff_isRoot, IsRoot.def, eval_mul, mul_eq_zero]
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
r : R
x✝¹ x✝ : R[X]
⊢ X - C r ∣ x✝¹ * x✝ → X - C r ∣ x✝¹ ∨ X - C r ∣ x✝
state_after: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
r : R
x✝¹ x✝ : R[X]
⊢ eval r x✝¹ = 0 ∨ eval r x✝ = 0 → eval r x✝¹ = 0 ∨ eval r x✝ = 0

tactic: exact id
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
r : R
x✝¹ x✝ : R[X]
⊢ eval r x✝¹ = 0 ∨ eval r x✝ = 0 → eval r x✝¹ = 0 ∨ eval r x✝ = 0
state_after: no goals
Theorem: WithBot.preimage_coe_Ioo_bot
File: Mathlib/Order/Interval/Set/WithBotTop.lean

tactic: simp [← Ioi_inter_Iio]
state_before: α : Type u_1
inst✝ : Preorder α
a b : α
⊢ some ⁻¹' Ioo ⊥ ↑a = Iio a
state_after: no goals
Theorem: Matrix.nnnorm_lt_iff
File: Mathlib/Analysis/Matrix.lean

tactic: simp_rw [nnnorm_def, pi_nnnorm_lt_iff hr]
state_before: R : Type u_1
l : Type u_2
m : Type u_3
n : Type u_4
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁵ : Fintype l
inst✝⁴ : Fintype m
inst✝³ : Fintype n
inst✝² : Unique ι
inst✝¹ : SeminormedAddCommGroup α
inst✝ : SeminormedAddCommGroup β
r : ℝ≥0
hr : 0 < r
A : Matrix m n α
⊢ ‖A‖₊ < r ↔ ∀ (i : m) (j : n), ‖A i j‖₊ < r
state_after: no goals
Theorem: inv_le_inv_of_le
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rwa [← one_div a, le_div_iff' ha, ← div_eq_mul_inv, div_le_iff (ha.trans_le h), one_mul]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 0 < a
h : a ≤ b
⊢ b⁻¹ ≤ a⁻¹
state_after: no goals
Theorem: MeasureTheory.lintegral_union_le
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: rw [← lintegral_add_measure]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s t : Set α
⊢ ∫⁻ (a : α) in s ∪ t, f a ∂μ ≤ ∫⁻ (a : α) in s, f a ∂μ + ∫⁻ (a : α) in t, f a ∂μ
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s t : Set α
⊢ ∫⁻ (a : α) in s ∪ t, f a ∂μ ≤ ∫⁻ (a : α), f a ∂(μ.restrict s + μ.restrict t)

tactic: exact lintegral_mono' (restrict_union_le _ _) le_rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
s t : Set α
⊢ ∫⁻ (a : α) in s ∪ t, f a ∂μ ≤ ∫⁻ (a : α), f a ∂(μ.restrict s + μ.restrict t)
state_after: no goals
Theorem: SetTheory.PGame.zero_lf_neg_iff
File: Mathlib/SetTheory/Game/PGame.lean

tactic: rw [lf_neg_iff, neg_zero]
state_before: xl xr : Type u
x : PGame
⊢ 0 ⧏ -x ↔ x ⧏ 0
state_after: no goals