1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Multiset.prod_sum
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: induction' s using Finset.induction_on with a t hat ih
state_before: ι✝ : Type u_1
κ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α✝
a : α✝
f✝ g : α✝ → β
inst✝¹ : DecidableEq α✝
α : Type u_6
ι : Type u_7
inst✝ : CommMonoid α
f : ι → Multiset α
s : Finset ι
⊢ (∑ x ∈ s, f x).prod = ∏ x ∈ s, (f x).prod
state_after: case empty
ι✝ : Type u_1
κ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α✝
a : α✝
f✝ g : α✝ → β
inst✝¹ : DecidableEq α✝
α : Type u_6
ι : Type u_7
inst✝ : CommMonoid α
f : ι → Multiset α
⊢ (∑ x ∈ ∅, f x).prod = ∏ x ∈ ∅, (f x).prod

case insert
ι✝ : Type u_1
κ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α✝
a✝ : α✝
f✝ g : α✝ → β
inst✝¹ : DecidableEq α✝
α : Type u_6
ι : Type u_7
inst✝ : CommMonoid α
f : ι → Multiset α
a : ι
t : Finset ι
hat : a ∉ t
ih : (∑ x ∈ t, f x).prod = ∏ x ∈ t, (f x).prod
⊢ (∑ x ∈ insert a t, f x).prod = ∏ x ∈ insert a t, (f x).prod

tactic: rw [Finset.sum_empty, Finset.prod_empty, Multiset.prod_zero]
state_before: case empty
ι✝ : Type u_1
κ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α✝
a : α✝
f✝ g : α✝ → β
inst✝¹ : DecidableEq α✝
α : Type u_6
ι : Type u_7
inst✝ : CommMonoid α
f : ι → Multiset α
⊢ (∑ x ∈ ∅, f x).prod = ∏ x ∈ ∅, (f x).prod
state_after: no goals

tactic: rw [Finset.sum_insert hat, Finset.prod_insert hat, Multiset.prod_add, ih]
state_before: case insert
ι✝ : Type u_1
κ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α✝
a✝ : α✝
f✝ g : α✝ → β
inst✝¹ : DecidableEq α✝
α : Type u_6
ι : Type u_7
inst✝ : CommMonoid α
f : ι → Multiset α
a : ι
t : Finset ι
hat : a ∉ t
ih : (∑ x ∈ t, f x).prod = ∏ x ∈ t, (f x).prod
⊢ (∑ x ∈ insert a t, f x).prod = ∏ x ∈ insert a t, (f x).prod
state_after: no goals
Theorem: Set.not_subset
File: Mathlib/Data/Set/Basic.lean

tactic: simp only [subset_def, not_forall, exists_prop]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s s₁ s₂ t t₁ t₂ u : Set α
⊢ ¬s ⊆ t ↔ ∃ a ∈ s, a ∉ t
state_after: no goals
Theorem: Cardinal.lift_lt_univ
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: simpa only [lift.principalSeg_coe, lift_ord, lift_succ, ord_le, succ_le_iff] using
  le_of_lt (lift.principalSeg.{u, u + 1}.lt_top (succ c).ord)
state_before: α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
c : Cardinal.{u}
⊢ lift.{u + 1, u} c < univ.{u, u + 1}
state_after: no goals
Theorem: exists_unique_eq'
File: Mathlib/Logic/Basic.lean

tactic: simp only [ExistsUnique, and_self, forall_eq', exists_eq']
state_before: α : Sort u_1
β : Sort u_2
p q : α → Prop
a' : α
⊢ ∃! a, a' = a
state_after: no goals
Theorem: CategoryTheory.Pretriangulated.Triangle.isZero₃_of_isZero₁₂
File: Mathlib/CategoryTheory/Triangulated/Pretriangulated.lean

tactic: dsimp
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
hC : Pretriangulated C
T : Triangle C
hT : T ∈ distinguishedTriangles
h₁ : IsZero T.obj₁
h₂ : IsZero T.obj₂
⊢ IsZero T.rotate.obj₃
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
hC : Pretriangulated C
T : Triangle C
hT : T ∈ distinguishedTriangles
h₁ : IsZero T.obj₁
h₂ : IsZero T.obj₂
⊢ IsZero ((CategoryTheory.shiftFunctor C 1).obj T.obj₁)

tactic: simp only [IsZero.iff_id_eq_zero] at h₁ ⊢
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
hC : Pretriangulated C
T : Triangle C
hT : T ∈ distinguishedTriangles
h₁ : IsZero T.obj₁
h₂ : IsZero T.obj₂
⊢ IsZero ((CategoryTheory.shiftFunctor C 1).obj T.obj₁)
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
hC : Pretriangulated C
T : Triangle C
hT : T ∈ distinguishedTriangles
h₂ : IsZero T.obj₂
h₁ : 𝟙 T.obj₁ = 0
⊢ 𝟙 ((CategoryTheory.shiftFunctor C 1).obj T.obj₁) = 0

tactic: rw [← Functor.map_id, h₁, Functor.map_zero]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroObject C
inst✝² : HasShift C ℤ
inst✝¹ : Preadditive C
inst✝ : ∀ (n : ℤ), (CategoryTheory.shiftFunctor C n).Additive
hC : Pretriangulated C
T : Triangle C
hT : T ∈ distinguishedTriangles
h₂ : IsZero T.obj₂
h₁ : 𝟙 T.obj₁ = 0
⊢ 𝟙 ((CategoryTheory.shiftFunctor C 1).obj T.obj₁) = 0
state_after: no goals
Theorem: MeasureTheory.IsStoppingTime.measurableSet_eq
File: Mathlib/Probability/Process/Stopping.lean

tactic: have : {ω | τ ω = i} = {ω | τ ω ≤ i} ∩ {ω | τ ω ≥ i} := by
  ext1 ω; simp only [Set.mem_setOf_eq, ge_iff_le, Set.mem_inter_iff, le_antisymm_iff]
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : LinearOrder ι
f : Filtration ι m
τ : Ω → ι
inst✝² : TopologicalSpace ι
inst✝¹ : OrderTopology ι
inst✝ : FirstCountableTopology ι
hτ : IsStoppingTime f τ
i : ι
⊢ MeasurableSet {ω | τ ω = i}
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : LinearOrder ι
f : Filtration ι m
τ : Ω → ι
inst✝² : TopologicalSpace ι
inst✝¹ : OrderTopology ι
inst✝ : FirstCountableTopology ι
hτ : IsStoppingTime f τ
i : ι
this : {ω | τ ω = i} = {ω | τ ω ≤ i} ∩ {ω | τ ω ≥ i}
⊢ MeasurableSet {ω | τ ω = i}

tactic: rw [this]
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : LinearOrder ι
f : Filtration ι m
τ : Ω → ι
inst✝² : TopologicalSpace ι
inst✝¹ : OrderTopology ι
inst✝ : FirstCountableTopology ι
hτ : IsStoppingTime f τ
i : ι
this : {ω | τ ω = i} = {ω | τ ω ≤ i} ∩ {ω | τ ω ≥ i}
⊢ MeasurableSet {ω | τ ω = i}
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : LinearOrder ι
f : Filtration ι m
τ : Ω → ι
inst✝² : TopologicalSpace ι
inst✝¹ : OrderTopology ι
inst✝ : FirstCountableTopology ι
hτ : IsStoppingTime f τ
i : ι
this : {ω | τ ω = i} = {ω | τ ω ≤ i} ∩ {ω | τ ω ≥ i}
⊢ MeasurableSet ({ω | τ ω ≤ i} ∩ {ω | τ ω ≥ i})

tactic: exact (hτ.measurableSet_le i).inter (hτ.measurableSet_ge i)
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : LinearOrder ι
f : Filtration ι m
τ : Ω → ι
inst✝² : TopologicalSpace ι
inst✝¹ : OrderTopology ι
inst✝ : FirstCountableTopology ι
hτ : IsStoppingTime f τ
i : ι
this : {ω | τ ω = i} = {ω | τ ω ≤ i} ∩ {ω | τ ω ≥ i}
⊢ MeasurableSet ({ω | τ ω ≤ i} ∩ {ω | τ ω ≥ i})
state_after: no goals

tactic: ext1 ω
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : LinearOrder ι
f : Filtration ι m
τ : Ω → ι
inst✝² : TopologicalSpace ι
inst✝¹ : OrderTopology ι
inst✝ : FirstCountableTopology ι
hτ : IsStoppingTime f τ
i : ι
⊢ {ω | τ ω = i} = {ω | τ ω ≤ i} ∩ {ω | τ ω ≥ i}
state_after: case h
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : LinearOrder ι
f : Filtration ι m
τ : Ω → ι
inst✝² : TopologicalSpace ι
inst✝¹ : OrderTopology ι
inst✝ : FirstCountableTopology ι
hτ : IsStoppingTime f τ
i : ι
ω : Ω
⊢ ω ∈ {ω | τ ω = i} ↔ ω ∈ {ω | τ ω ≤ i} ∩ {ω | τ ω ≥ i}

tactic: simp only [Set.mem_setOf_eq, ge_iff_le, Set.mem_inter_iff, le_antisymm_iff]
state_before: case h
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝³ : LinearOrder ι
f : Filtration ι m
τ : Ω → ι
inst✝² : TopologicalSpace ι
inst✝¹ : OrderTopology ι
inst✝ : FirstCountableTopology ι
hτ : IsStoppingTime f τ
i : ι
ω : Ω
⊢ ω ∈ {ω | τ ω = i} ↔ ω ∈ {ω | τ ω ≤ i} ∩ {ω | τ ω ≥ i}
state_after: no goals
Theorem: ManyOneReducible.trans
File: Mathlib/Computability/Reduce.lean

tactic: erw [← h₂, ← h₁]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : Primcodable α
inst✝¹ : Primcodable β
inst✝ : Primcodable γ
p : α → Prop
q : β → Prop
r : γ → Prop
f : α → β
c₁ : Computable f
h₁ : ∀ (a : α), p a ↔ q (f a)
g : β → γ
c₂ : Computable g
h₂ : ∀ (a : β), q a ↔ r (g a)
a : α
h : p a
⊢ r ((g ∘ f) a)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : Primcodable α
inst✝¹ : Primcodable β
inst✝ : Primcodable γ
p : α → Prop
q : β → Prop
r : γ → Prop
f : α → β
c₁ : Computable f
h₁ : ∀ (a : α), p a ↔ q (f a)
g : β → γ
c₂ : Computable g
h₂ : ∀ (a : β), q a ↔ r (g a)
a : α
h : p a
⊢ p a

tactic: assumption
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : Primcodable α
inst✝¹ : Primcodable β
inst✝ : Primcodable γ
p : α → Prop
q : β → Prop
r : γ → Prop
f : α → β
c₁ : Computable f
h₁ : ∀ (a : α), p a ↔ q (f a)
g : β → γ
c₂ : Computable g
h₂ : ∀ (a : β), q a ↔ r (g a)
a : α
h : p a
⊢ p a
state_after: no goals

tactic: rwa [h₁, h₂]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : Primcodable α
inst✝¹ : Primcodable β
inst✝ : Primcodable γ
p : α → Prop
q : β → Prop
r : γ → Prop
f : α → β
c₁ : Computable f
h₁ : ∀ (a : α), p a ↔ q (f a)
g : β → γ
c₂ : Computable g
h₂ : ∀ (a : β), q a ↔ r (g a)
a : α
h : r ((g ∘ f) a)
⊢ p a
state_after: no goals
Theorem: map_le_lineMap_iff_slope_le_slope
File: Mathlib/LinearAlgebra/AffineSpace/Ordered.lean

tactic: rw [map_le_lineMap_iff_slope_le_slope_left (mul_pos h₀ (sub_pos.2 hab)), ←
  lineMap_slope_lineMap_slope_lineMap f a b r, right_le_lineMap_iff_le h₁]
state_before: k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : LinearOrderedField k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
f : k → E
a b r : k
hab : a < b
h₀ : 0 < r
h₁ : r < 1
⊢ f ((lineMap a b) r) ≤ (lineMap (f a) (f b)) r ↔ slope f a ((lineMap a b) r) ≤ slope f ((lineMap a b) r) b
state_after: no goals
Theorem: schnirelmannDensity_congr
File: Mathlib/Combinatorics/Schnirelmann.lean

tactic: aesop
state_before: A : Set ℕ
inst✝¹ : DecidablePred fun x => x ∈ A
B : Set ℕ
inst✝ : DecidablePred fun x => x ∈ B
h : A = B
⊢ ∀ n > 0, n ∈ A ↔ n ∈ B
state_after: no goals
Theorem: EckmannHilton.one
File: Mathlib/GroupTheory/EckmannHilton.lean

tactic: simpa only [h₁.left_id, h₁.right_id, h₂.left_id, h₂.right_id] using distrib e₂ e₁ e₁ e₂
state_before: X : Type u
m₁ m₂ : X → X → X
e₁ e₂ : X
h₁ : IsUnital m₁ e₁
h₂ : IsUnital m₂ e₂
distrib : ∀ (a b c d : X), m₁ (m₂ a b) (m₂ c d) = m₂ (m₁ a c) (m₁ b d)
⊢ e₁ = e₂
state_after: no goals
Theorem: gauge_gaugeRescale_le
File: Mathlib/Analysis/Convex/GaugeRescale.lean

tactic: by_cases hx : gauge t x = 0
state_before: E : Type u_1
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : T1Space E
s t : Set E
x : E
⊢ gauge t (gaugeRescale s t x) ≤ gauge s x
state_after: case pos
E : Type u_1
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : T1Space E
s t : Set E
x : E
hx : gauge t x = 0
⊢ gauge t (gaugeRescale s t x) ≤ gauge s x

case neg
E : Type u_1
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : T1Space E
s t : Set E
x : E
hx : ¬gauge t x = 0
⊢ gauge t (gaugeRescale s t x) ≤ gauge s x

tactic: simp [gaugeRescale, hx, gauge_nonneg]
state_before: case pos
E : Type u_1
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : T1Space E
s t : Set E
x : E
hx : gauge t x = 0
⊢ gauge t (gaugeRescale s t x) ≤ gauge s x
state_after: no goals

tactic: exact (gauge_gaugeRescale' s hx).le
state_before: case neg
E : Type u_1
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : T1Space E
s t : Set E
x : E
hx : ¬gauge t x = 0
⊢ gauge t (gaugeRescale s t x) ≤ gauge s x
state_after: no goals
Theorem: Cardinal.mk_quaternionAlgebra_of_infinite
File: Mathlib/Algebra/Quaternion.lean

tactic: rw [mk_quaternionAlgebra, pow_four]
state_before: R : Type u_1
c₁ c₂ : R
inst✝ : Infinite R
⊢ #ℍ[R,c₁,c₂] = #R
state_after: no goals
Theorem: MeasureTheory.ae_eq_dirac
File: Mathlib/MeasureTheory/Measure/Dirac.lean

tactic: simp [Filter.EventuallyEq]
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
s : Set α
a✝ : α
inst✝ : MeasurableSingletonClass α
a : α
f : α → δ
⊢ f =ᶠ[ae (dirac a)] const α (f a)
state_after: no goals
Theorem: ENNReal.rpow_add_le_add_rpow
File: Mathlib/Analysis/MeanInequalitiesPow.lean

tactic: rcases hp.eq_or_lt with (rfl | hp_pos)
state_before: ι : Type u
s : Finset ι
p : ℝ
a b : ℝ≥0∞
hp : 0 ≤ p
hp1 : p ≤ 1
⊢ (a + b) ^ p ≤ a ^ p + b ^ p
state_after: case inl
ι : Type u
s : Finset ι
a b : ℝ≥0∞
hp : 0 ≤ 0
hp1 : 0 ≤ 1
⊢ (a + b) ^ 0 ≤ a ^ 0 + b ^ 0

case inr
ι : Type u
s : Finset ι
p : ℝ
a b : ℝ≥0∞
hp : 0 ≤ p
hp1 : p ≤ 1
hp_pos : 0 < p
⊢ (a + b) ^ p ≤ a ^ p + b ^ p

tactic: have h := rpow_add_rpow_le a b hp_pos hp1
state_before: case inr
ι : Type u
s : Finset ι
p : ℝ
a b : ℝ≥0∞
hp : 0 ≤ p
hp1 : p ≤ 1
hp_pos : 0 < p
⊢ (a + b) ^ p ≤ a ^ p + b ^ p
state_after: case inr
ι : Type u
s : Finset ι
p : ℝ
a b : ℝ≥0∞
hp : 0 ≤ p
hp1 : p ≤ 1
hp_pos : 0 < p
h : (a ^ 1 + b ^ 1) ^ (1 / 1) ≤ (a ^ p + b ^ p) ^ (1 / p)
⊢ (a + b) ^ p ≤ a ^ p + b ^ p

tactic: rw [one_div_one] at h
state_before: case inr
ι : Type u
s : Finset ι
p : ℝ
a b : ℝ≥0∞
hp : 0 ≤ p
hp1 : p ≤ 1
hp_pos : 0 < p
h : (a ^ 1 + b ^ 1) ^ (1 / 1) ≤ (a ^ p + b ^ p) ^ (1 / p)
⊢ (a + b) ^ p ≤ a ^ p + b ^ p
state_after: case inr
ι : Type u
s : Finset ι
p : ℝ
a b : ℝ≥0∞
hp : 0 ≤ p
hp1 : p ≤ 1
hp_pos : 0 < p
h : (a ^ 1 + b ^ 1) ^ 1 ≤ (a ^ p + b ^ p) ^ (1 / p)
⊢ (a + b) ^ p ≤ a ^ p + b ^ p

tactic: repeat' rw [ENNReal.rpow_one] at h
state_before: case inr
ι : Type u
s : Finset ι
p : ℝ
a b : ℝ≥0∞
hp : 0 ≤ p
hp1 : p ≤ 1
hp_pos : 0 < p
h : (a ^ 1 + b ^ 1) ^ 1 ≤ (a ^ p + b ^ p) ^ (1 / p)
⊢ (a + b) ^ p ≤ a ^ p + b ^ p
state_after: case inr
ι : Type u
s : Finset ι
p : ℝ
a b : ℝ≥0∞
hp : 0 ≤ p
hp1 : p ≤ 1
hp_pos : 0 < p
h : a + b ≤ (a ^ p + b ^ p) ^ (1 / p)
⊢ (a + b) ^ p ≤ a ^ p + b ^ p

tactic: exact (ENNReal.le_rpow_one_div_iff hp_pos).mp h
state_before: case inr
ι : Type u
s : Finset ι
p : ℝ
a b : ℝ≥0∞
hp : 0 ≤ p
hp1 : p ≤ 1
hp_pos : 0 < p
h : a + b ≤ (a ^ p + b ^ p) ^ (1 / p)
⊢ (a + b) ^ p ≤ a ^ p + b ^ p
state_after: no goals

tactic: simp
state_before: case inl
ι : Type u
s : Finset ι
a b : ℝ≥0∞
hp : 0 ≤ 0
hp1 : 0 ≤ 1
⊢ (a + b) ^ 0 ≤ a ^ 0 + b ^ 0
state_after: no goals

tactic: rw [ENNReal.rpow_one] at h
state_before: case inr
ι : Type u
s : Finset ι
p : ℝ
a b : ℝ≥0∞
hp : 0 ≤ p
hp1 : p ≤ 1
hp_pos : 0 < p
h : a + b ^ 1 ≤ (a ^ p + b ^ p) ^ (1 / p)
⊢ (a + b) ^ p ≤ a ^ p + b ^ p
state_after: case inr
ι : Type u
s : Finset ι
p : ℝ
a b : ℝ≥0∞
hp : 0 ≤ p
hp1 : p ≤ 1
hp_pos : 0 < p
h : a + b ≤ (a ^ p + b ^ p) ^ (1 / p)
⊢ (a + b) ^ p ≤ a ^ p + b ^ p
Theorem: tprod_fintype
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

tactic: apply tprod_eq_prod
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : CommMonoid α
inst✝¹ : TopologicalSpace α
f✝ g : β → α
a a₁ a₂ : α
inst✝ : Fintype β
f : β → α
⊢ ∏' (b : β), f b = ∏ b : β, f b
state_after: case hf
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : CommMonoid α
inst✝¹ : TopologicalSpace α
f✝ g : β → α
a a₁ a₂ : α
inst✝ : Fintype β
f : β → α
⊢ ∀ b ∉ univ, f b = 1

tactic: simp
state_before: case hf
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : CommMonoid α
inst✝¹ : TopologicalSpace α
f✝ g : β → α
a a₁ a₂ : α
inst✝ : Fintype β
f : β → α
⊢ ∀ b ∉ univ, f b = 1
state_after: no goals
Theorem: realPart_apply_coe
File: Mathlib/Data/Complex/Module.lean

tactic: unfold realPart
state_before: A : Type u_1
inst✝³ : AddCommGroup A
inst✝² : Module ℂ A
inst✝¹ : StarAddMonoid A
inst✝ : StarModule ℂ A
a : A
⊢ ↑(ℜ a) = 2⁻¹ • (a + star a)
state_after: A : Type u_1
inst✝³ : AddCommGroup A
inst✝² : Module ℂ A
inst✝¹ : StarAddMonoid A
inst✝ : StarModule ℂ A
a : A
⊢ ↑((selfAdjointPart ℝ) a) = 2⁻¹ • (a + star a)

tactic: simp only [selfAdjointPart_apply_coe, invOf_eq_inv]
state_before: A : Type u_1
inst✝³ : AddCommGroup A
inst✝² : Module ℂ A
inst✝¹ : StarAddMonoid A
inst✝ : StarModule ℂ A
a : A
⊢ ↑((selfAdjointPart ℝ) a) = 2⁻¹ • (a + star a)
state_after: no goals
Theorem: CategoryTheory.ShortComplex.Splitting.epi_g
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

tactic: have := s.isSplitEpi_g
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.83321, u_2} D
inst✝¹ : Preadditive C
inst✝ : Preadditive D
S : ShortComplex C
s : S.Splitting
⊢ Epi S.g
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.83321, u_2} D
inst✝¹ : Preadditive C
inst✝ : Preadditive D
S : ShortComplex C
s : S.Splitting
this : IsSplitEpi S.g
⊢ Epi S.g

tactic: infer_instance
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.83321, u_2} D
inst✝¹ : Preadditive C
inst✝ : Preadditive D
S : ShortComplex C
s : S.Splitting
this : IsSplitEpi S.g
⊢ Epi S.g
state_after: no goals
Theorem: EMetric.tendsto_atTop
File: Mathlib/Topology/EMetricSpace/Basic.lean

tactic: simp only [exists_prop, true_and_iff, mem_Ici, mem_ball]
state_before: α : Type u
β : Type v
X : Type u_1
inst✝² : PseudoEMetricSpace α
x y z : α
ε ε₁ ε₂ : ℝ≥0∞
s t : Set α
inst✝¹ : Nonempty β
inst✝ : SemilatticeSup β
u : β → α
a : α
⊢ (∀ (ib : ℝ≥0∞), 0 < ib → ∃ ia, True ∧ ∀ x ∈ Ici ia, u x ∈ ball a ib) ↔ ∀ ε > 0, ∃ N, ∀ n ≥ N, edist (u n) a < ε
state_after: no goals
Theorem: IsClosed.setOf_mapsTo
File: Mathlib/Topology/Constructions.lean

tactic: simpa only [MapsTo, setOf_forall] using isClosed_biInter fun y hy ↦ ht.preimage (hf y hy)
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : TopologicalSpace W
inst✝¹ : TopologicalSpace ε
inst✝ : TopologicalSpace ζ
α : Type u_5
f : X → α → Z
s : Set α
t : Set Z
ht : IsClosed t
hf : ∀ a ∈ s, Continuous fun x => f x a
⊢ IsClosed {x | MapsTo (f x) s t}
state_after: no goals
Theorem: div_eq_of_eq_mul''
File: Mathlib/Algebra/Group/Basic.lean

tactic: simp [h]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Group G
a b c d : G
n : ℤ
h : a = c * b
⊢ a / b = c
state_after: no goals
Theorem: Submonoid.LocalizationMap.lift_unique
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: ext
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
j : N →* P
hj : ∀ (x : M), j (f.toMap x) = g x
⊢ f.lift hg = j
state_after: case h
M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
j : N →* P
hj : ∀ (x : M), j (f.toMap x) = g x
x✝ : N
⊢ (f.lift hg) x✝ = j x✝

tactic: rw [lift_spec, ← hj, ← hj, ← j.map_mul]
state_before: case h
M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
j : N →* P
hj : ∀ (x : M), j (f.toMap x) = g x
x✝ : N
⊢ (f.lift hg) x✝ = j x✝
state_after: case h
M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
j : N →* P
hj : ∀ (x : M), j (f.toMap x) = g x
x✝ : N
⊢ j (f.toMap (f.sec x✝).1) = j (f.toMap ↑(f.sec x✝).2 * x✝)

tactic: apply congr_arg
state_before: case h
M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
j : N →* P
hj : ∀ (x : M), j (f.toMap x) = g x
x✝ : N
⊢ j (f.toMap (f.sec x✝).1) = j (f.toMap ↑(f.sec x✝).2 * x✝)
state_after: case h.h
M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
j : N →* P
hj : ∀ (x : M), j (f.toMap x) = g x
x✝ : N
⊢ f.toMap (f.sec x✝).1 = f.toMap ↑(f.sec x✝).2 * x✝

tactic: rw [← sec_spec']
state_before: case h.h
M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
j : N →* P
hj : ∀ (x : M), j (f.toMap x) = g x
x✝ : N
⊢ f.toMap (f.sec x✝).1 = f.toMap ↑(f.sec x✝).2 * x✝
state_after: no goals
Theorem: NonUnitalAlgebra.coe_bot
File: Mathlib/Algebra/Algebra/NonUnitalSubalgebra.lean

tactic: simp [Set.ext_iff, NonUnitalAlgebra.mem_bot]
state_before: F : Type u_1
R : Type u
A : Type v
B : Type w
inst✝¹⁰ : CommSemiring R
inst✝⁹ : NonUnitalNonAssocSemiring A
inst✝⁸ : Module R A
inst✝⁷ : IsScalarTower R A A
inst✝⁶ : SMulCommClass R A A
inst✝⁵ : NonUnitalNonAssocSemiring B
inst✝⁴ : Module R B
inst✝³ : IsScalarTower R B B
inst✝² : SMulCommClass R B B
inst✝¹ : FunLike F A B
inst✝ : NonUnitalAlgHomClass F R A B
⊢ ↑⊥ = {0}
state_after: no goals
Theorem: exterior_eq_empty
File: Mathlib/Topology/AlexandrovDiscrete.lean

tactic: rintro rfl
state_before: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
a x y : α
⊢ s = ∅ → exterior s = ∅
state_after: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
t : Set α
a x y : α
⊢ exterior ∅ = ∅

tactic: exact exterior_empty
state_before: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
t : Set α
a x y : α
⊢ exterior ∅ = ∅
state_after: no goals
Theorem: Finsupp.neLocus_self_add_right
File: Mathlib/Data/Finsupp/NeLocus.lean

tactic: rw [← neLocus_zero_left, ← neLocus_add_left f 0 g, add_zero]
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq N
inst✝ : AddGroup N
f f₁ f₂ g g₁ g₂ : α →₀ N
⊢ f.neLocus (f + g) = g.support
state_after: no goals
Theorem: Int.ceil_eq_zero_iff
File: Mathlib/Algebra/Order/Floor.lean

tactic: simp [ceil_eq_iff]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a : α
⊢ ⌈a⌉ = 0 ↔ a ∈ Ioc (-1) 0
state_after: no goals