1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Set.InjOn.image_biInter_eq
File: Mathlib/Data/Set/Lattice.lean

tactic: simp only [iInter, iInf_subtype']
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
p : ι → Prop
s : (i : ι) → p i → Set α
hp : ∃ i, p i
f : α → β
h : InjOn f (⋃ i, ⋃ (hi : p i), s i hi)
⊢ f '' ⋂ i, ⋂ (hi : p i), s i hi = ⋂ i, ⋂ (hi : p i), f '' s i hi
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
p : ι → Prop
s : (i : ι) → p i → Set α
hp : ∃ i, p i
f : α → β
h : InjOn f (⋃ i, ⋃ (hi : p i), s i hi)
⊢ f '' ⨅ x, s ↑x ⋯ = ⨅ x, f '' s ↑x ⋯

tactic: haveI : Nonempty { i // p i } := nonempty_subtype.2 hp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
p : ι → Prop
s : (i : ι) → p i → Set α
hp : ∃ i, p i
f : α → β
h : InjOn f (⋃ i, ⋃ (hi : p i), s i hi)
⊢ f '' ⨅ x, s ↑x ⋯ = ⨅ x, f '' s ↑x ⋯
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
p : ι → Prop
s : (i : ι) → p i → Set α
hp : ∃ i, p i
f : α → β
h : InjOn f (⋃ i, ⋃ (hi : p i), s i hi)
this : Nonempty { i // p i }
⊢ f '' ⨅ x, s ↑x ⋯ = ⨅ x, f '' s ↑x ⋯

tactic: apply InjOn.image_iInter_eq
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
p : ι → Prop
s : (i : ι) → p i → Set α
hp : ∃ i, p i
f : α → β
h : InjOn f (⋃ i, ⋃ (hi : p i), s i hi)
this : Nonempty { i // p i }
⊢ f '' ⨅ x, s ↑x ⋯ = ⨅ x, f '' s ↑x ⋯
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
p : ι → Prop
s : (i : ι) → p i → Set α
hp : ∃ i, p i
f : α → β
h : InjOn f (⋃ i, ⋃ (hi : p i), s i hi)
this : Nonempty { i // p i }
⊢ InjOn f (⋃ i, s ↑i ⋯)

tactic: simpa only [iUnion, iSup_subtype'] using h
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
p : ι → Prop
s : (i : ι) → p i → Set α
hp : ∃ i, p i
f : α → β
h : InjOn f (⋃ i, ⋃ (hi : p i), s i hi)
this : Nonempty { i // p i }
⊢ InjOn f (⋃ i, s ↑i ⋯)
state_after: no goals
Theorem: Real.add_one_le_exp
File: Mathlib/Data/Complex/Exponential.lean

tactic: obtain rfl | hx := eq_or_ne x 0
state_before: x : ℝ
⊢ x + 1 ≤ rexp x
state_after: case inl

⊢ 0 + 1 ≤ rexp 0

case inr
x : ℝ
hx : x ≠ 0
⊢ x + 1 ≤ rexp x

tactic: simp
state_before: case inl

⊢ 0 + 1 ≤ rexp 0
state_after: no goals

tactic: exact (add_one_lt_exp hx).le
state_before: case inr
x : ℝ
hx : x ≠ 0
⊢ x + 1 ≤ rexp x
state_after: no goals
Theorem: ProbabilityTheory.IsCondKernelCDF.integral
File: Mathlib/Probability/Kernel/Disintegration/CdfToKernel.lean

tactic: rw [← hf.setIntegral _ MeasurableSet.univ, Measure.restrict_univ]
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f✝ f : α × β → StieltjesFunction
hf : IsCondKernelCDF f κ ν
a : α
x : ℝ
⊢ ∫ (b : β), ↑(f (a, b)) x ∂ν a = ((κ a) (univ ×ˢ Iic x)).toReal
state_after: no goals
Theorem: Lists.equiv_atom
File: Mathlib/SetTheory/Lists.lean

tactic: cases h
state_before: α : Type u_1
a : α
l : Lists α
h : atom a ~ l
⊢ atom a = l
state_after: case refl
α : Type u_1
a : α
⊢ atom a = atom a

tactic: rfl
state_before: case refl
α : Type u_1
a : α
⊢ atom a = atom a
state_after: no goals
Theorem: Mathlib.Tactic.Ring.add_mul
File: Mathlib/Tactic/Ring/Basic.lean

tactic: subst_vars
state_before: u : Lean.Level
R : Type u_1
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a₁ b c₁ a₂ c₂ d : R
x✝² : a₁ * b = c₁
x✝¹ : a₂ * b = c₂
x✝ : c₁ + c₂ = d
⊢ (a₁ + a₂) * b = d
state_after: u : Lean.Level
R : Type u_1
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a₁ b a₂ : R
⊢ (a₁ + a₂) * b = a₁ * b + a₂ * b

tactic: simp [_root_.add_mul]
state_before: u : Lean.Level
R : Type u_1
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a₁ b a₂ : R
⊢ (a₁ + a₂) * b = a₁ * b + a₂ * b
state_after: no goals
Theorem: BoundedContinuousFunction.norm_lt_iff_of_compact
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

tactic: simp_rw [norm_def, ← dist_zero_right]
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : SeminormedAddCommGroup β
f✝ g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace α
f : α →ᵇ β
M : ℝ
M0 : 0 < M
⊢ ‖f‖ < M ↔ ∀ (x : α), ‖f x‖ < M
state_after: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : SeminormedAddCommGroup β
f✝ g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace α
f : α →ᵇ β
M : ℝ
M0 : 0 < M
⊢ dist f 0 < M ↔ ∀ (x : α), dist (f x) 0 < M

tactic: exact dist_lt_iff_of_compact M0
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : SeminormedAddCommGroup β
f✝ g : α →ᵇ β
x : α
C : ℝ
inst✝ : CompactSpace α
f : α →ᵇ β
M : ℝ
M0 : 0 < M
⊢ dist f 0 < M ↔ ∀ (x : α), dist (f x) 0 < M
state_after: no goals
Theorem: AlternatingMap.coe_alternatization
File: Mathlib/LinearAlgebra/Alternating/Basic.lean

tactic: apply AlternatingMap.coe_injective
state_before: R : Type u_1
inst✝¹² : Semiring R
M : Type u_2
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
N : Type u_3
inst✝⁹ : AddCommMonoid N
inst✝⁸ : Module R N
P : Type u_4
inst✝⁷ : AddCommMonoid P
inst✝⁶ : Module R P
M' : Type u_5
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
N' : Type u_6
inst✝³ : AddCommGroup N'
inst✝² : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
a : M [⋀^ι]→ₗ[R] N'
⊢ MultilinearMap.alternatization ↑a = (Fintype.card ι).factorial • a
state_after: case a
R : Type u_1
inst✝¹² : Semiring R
M : Type u_2
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
N : Type u_3
inst✝⁹ : AddCommMonoid N
inst✝⁸ : Module R N
P : Type u_4
inst✝⁷ : AddCommMonoid P
inst✝⁶ : Module R P
M' : Type u_5
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
N' : Type u_6
inst✝³ : AddCommGroup N'
inst✝² : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
a : M [⋀^ι]→ₗ[R] N'
⊢ ⇑(MultilinearMap.alternatization ↑a) = ⇑((Fintype.card ι).factorial • a)

tactic: simp_rw [MultilinearMap.alternatization_def, ← coe_domDomCongr, domDomCongr_perm, coe_smul,
  smul_smul, Int.units_mul_self, one_smul, Finset.sum_const, Finset.card_univ, Fintype.card_perm,
  ← coe_multilinearMap, coe_smul]
state_before: case a
R : Type u_1
inst✝¹² : Semiring R
M : Type u_2
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
N : Type u_3
inst✝⁹ : AddCommMonoid N
inst✝⁸ : Module R N
P : Type u_4
inst✝⁷ : AddCommMonoid P
inst✝⁶ : Module R P
M' : Type u_5
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
N' : Type u_6
inst✝³ : AddCommGroup N'
inst✝² : Module R N'
ι : Type u_7
ι' : Type u_8
ι'' : Type u_9
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
a : M [⋀^ι]→ₗ[R] N'
⊢ ⇑(MultilinearMap.alternatization ↑a) = ⇑((Fintype.card ι).factorial • a)
state_after: no goals
Theorem: Mathlib.Meta.NormNum.isInt_dvd_false
File: Mathlib/Tactic/NormNum/DivMod.lean

tactic: simpa using e
state_before: n✝¹ n✝ : ℤ
e : (n✝.mod n✝¹ != 0) = true
⊢ ¬(↑n✝).mod ↑n✝¹ = 0
state_after: no goals
Theorem: Finset.image_preimage
File: Mathlib/Data/Finset/Preimage.lean

tactic: simp only [coe_image, coe_preimage, coe_filter, Set.image_preimage_eq_inter_range,
  ← Set.sep_mem_eq]
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
inst✝¹ : DecidableEq β
f : α → β
s : Finset β
inst✝ : (x : β) → Decidable (x ∈ Set.range f)
hf : InjOn f (f ⁻¹' ↑s)
⊢ ↑(image f (s.preimage f hf)) = ↑(filter (fun x => x ∈ Set.range f) s)
state_after: α : Type u
β : Type v
ι : Sort w
γ : Type x
inst✝¹ : DecidableEq β
f : α → β
s : Finset β
inst✝ : (x : β) → Decidable (x ∈ Set.range f)
hf : InjOn f (f ⁻¹' ↑s)
⊢ {x | x ∈ ↑s ∧ x ∈ Set.range f} = {x | x ∈ s ∧ x ∈ Set.range f}

tactic: rfl
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
inst✝¹ : DecidableEq β
f : α → β
s : Finset β
inst✝ : (x : β) → Decidable (x ∈ Set.range f)
hf : InjOn f (f ⁻¹' ↑s)
⊢ {x | x ∈ ↑s ∧ x ∈ Set.range f} = {x | x ∈ s ∧ x ∈ Set.range f}
state_after: no goals
Theorem: Complex.Gammaℂ_add_one
File: Mathlib/Analysis/SpecialFunctions/Gamma/Deligne.lean

tactic: rw [Gammaℂ_def, Gammaℂ_def, Gamma_add_one _ hs, neg_add,
  cpow_add _ _ (mul_ne_zero two_ne_zero (ofReal_ne_zero.mpr pi_ne_zero)), cpow_neg_one]
state_before: s : ℂ
hs : s ≠ 0
⊢ (s + 1).Gammaℂ = s.Gammaℂ * s / 2 / ↑π
state_after: s : ℂ
hs : s ≠ 0
⊢ 2 * ((2 * ↑π) ^ (-s) * (2 * ↑π)⁻¹) * (s * Gamma s) = 2 * (2 * ↑π) ^ (-s) * Gamma s * s / 2 / ↑π

tactic: field_simp [pi_ne_zero]
state_before: s : ℂ
hs : s ≠ 0
⊢ 2 * ((2 * ↑π) ^ (-s) * (2 * ↑π)⁻¹) * (s * Gamma s) = 2 * (2 * ↑π) ^ (-s) * Gamma s * s / 2 / ↑π
state_after: s : ℂ
hs : s ≠ 0
⊢ 2 * (2 * ↑π) ^ (-s) * (s * Gamma s) = 2 * (2 * ↑π) ^ (-s) * Gamma s * s

tactic: ring
state_before: s : ℂ
hs : s ≠ 0
⊢ 2 * (2 * ↑π) ^ (-s) * (s * Gamma s) = 2 * (2 * ↑π) ^ (-s) * Gamma s * s
state_after: no goals
Theorem: CategoryTheory.Limits.colimit_map_colimitObjIsoColimitCompEvaluation_hom
File: Mathlib/CategoryTheory/Limits/FunctorCategory.lean

tactic: rw [← Iso.inv_comp_eq, ← Category.assoc, ← Iso.eq_comp_inv,
  colimitObjIsoColimitCompEvaluation_inv_colimit_map]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
D : Type u'
inst✝³ : Category.{v', u'} D
J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
inst✝ : HasColimitsOfShape J C
F : J ⥤ K ⥤ C
i j : K
f : i ⟶ j
⊢ (colimit F).map f ≫ (colimitObjIsoColimitCompEvaluation F j).hom =
    (colimitObjIsoColimitCompEvaluation F i).hom ≫ colimMap (whiskerLeft F ((evaluation K C).map f))
state_after: no goals
Theorem: RingEquiv.toRingHom_comp_symm_toRingHom
File: Mathlib/Algebra/Ring/Equiv.lean

tactic: ext
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
S : Type u_5
S' : Type u_6
inst✝² : NonAssocSemiring R
inst✝¹ : NonAssocSemiring S
inst✝ : NonAssocSemiring S'
e : R ≃+* S
⊢ e.toRingHom.comp e.symm.toRingHom = RingHom.id S
state_after: case a
F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
S : Type u_5
S' : Type u_6
inst✝² : NonAssocSemiring R
inst✝¹ : NonAssocSemiring S
inst✝ : NonAssocSemiring S'
e : R ≃+* S
x✝ : S
⊢ (e.toRingHom.comp e.symm.toRingHom) x✝ = (RingHom.id S) x✝

tactic: simp
state_before: case a
F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
S : Type u_5
S' : Type u_6
inst✝² : NonAssocSemiring R
inst✝¹ : NonAssocSemiring S
inst✝ : NonAssocSemiring S'
e : R ≃+* S
x✝ : S
⊢ (e.toRingHom.comp e.symm.toRingHom) x✝ = (RingHom.id S) x✝
state_after: no goals
Theorem: mul_left_eq_self
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [one_mul]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M✝ : Type u_4
M : Type u
inst✝ : RightCancelMonoid M
a b : M
⊢ a * b = b ↔ a * b = 1 * b
state_after: no goals
Theorem: Batteries.PairingHeapImp.Heap.size_deleteMin_lt
File: .lake/packages/batteries/Batteries/Data/PairingHeap.lean

tactic: cases s with cases eq | node a c => simp_arith [size_combine, size]
state_before: α : Type u_1
le : α → α → Bool
a : α
s' s : Heap α
eq : deleteMin le s = some (a, s')
⊢ s'.size < s.size
state_after: no goals

tactic: simp_arith [size_combine, size]
state_before: case node.refl
α : Type u_1
le : α → α → Bool
a : α
c sibling✝ : Heap α
⊢ (combine le c).size < (node a c sibling✝).size
state_after: no goals
Theorem: PartENat.lt_add_iff_pos_right
File: Mathlib/Data/Nat/PartENat.lean

tactic: conv_rhs => rw [← PartENat.add_lt_add_iff_left hx]
state_before: x y : PartENat
hx : x ≠ ⊤
⊢ x < x + y ↔ 0 < y
state_after: x y : PartENat
hx : x ≠ ⊤
⊢ x < x + y ↔ x + 0 < x + y

tactic: rw [add_zero]
state_before: x y : PartENat
hx : x ≠ ⊤
⊢ x < x + y ↔ x + 0 < x + y
state_after: no goals
Theorem: ProbabilityTheory.kernel.tendsto_densityProcess_atTop_of_antitone
File: Mathlib/Probability/Kernel/Disintegration/Density.lean

tactic: rw [← densityProcess_empty κ ν n a x]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ✝ : ↥(kernel α (γ × β))
ν✝ : ↥(kernel α γ)
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
inst✝ : IsFiniteKernel κ
n : ℕ
a : α
x : γ
seq : ℕ → Set β
hseq : Antitone seq
hseq_iInter : ⋂ i, seq i = ∅
hseq_meas : ∀ (m : ℕ), MeasurableSet (seq m)
⊢ Tendsto (fun m => densityProcess κ ν n a x (seq m)) atTop (𝓝 0)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ✝ : ↥(kernel α (γ × β))
ν✝ : ↥(kernel α γ)
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
inst✝ : IsFiniteKernel κ
n : ℕ
a : α
x : γ
seq : ℕ → Set β
hseq : Antitone seq
hseq_iInter : ⋂ i, seq i = ∅
hseq_meas : ∀ (m : ℕ), MeasurableSet (seq m)
⊢ Tendsto (fun m => densityProcess κ ν n a x (seq m)) atTop (𝓝 (densityProcess κ ν n a x ∅))

tactic: exact tendsto_densityProcess_atTop_empty_of_antitone κ ν n a x seq hseq hseq_iInter hseq_meas
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ✝ : ↥(kernel α (γ × β))
ν✝ : ↥(kernel α γ)
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
inst✝ : IsFiniteKernel κ
n : ℕ
a : α
x : γ
seq : ℕ → Set β
hseq : Antitone seq
hseq_iInter : ⋂ i, seq i = ∅
hseq_meas : ∀ (m : ℕ), MeasurableSet (seq m)
⊢ Tendsto (fun m => densityProcess κ ν n a x (seq m)) atTop (𝓝 (densityProcess κ ν n a x ∅))
state_after: no goals
Theorem: Basis.dvd_coord_smul
File: Mathlib/LinearAlgebra/Basis.lean

tactic: simp
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i✝ : ι
c : R
x : M
i : ι
m : M
r : R
⊢ (b.coord i) (r • m) = r * (b.coord i) m
state_after: no goals
Theorem: Set.mulIndicator_mul_eq_left
File: Mathlib/Algebra/Group/Indicator.lean

tactic: refine (mulIndicator_congr fun x hx => ?_).trans mulIndicator_mulSupport
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
M : Type u_4
N : Type u_5
inst✝ : MulOneClass M
s t : Set α
f✝ g✝ : α → M
a : α
f g : α → M
h : Disjoint (mulSupport f) (mulSupport g)
⊢ (mulSupport f).mulIndicator (f * g) = f
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
M : Type u_4
N : Type u_5
inst✝ : MulOneClass M
s t : Set α
f✝ g✝ : α → M
a : α
f g : α → M
h : Disjoint (mulSupport f) (mulSupport g)
x : α
hx : x ∈ mulSupport f
⊢ (f * g) x = f x

tactic: have : g x = 1 := nmem_mulSupport.1 (disjoint_left.1 h hx)
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
M : Type u_4
N : Type u_5
inst✝ : MulOneClass M
s t : Set α
f✝ g✝ : α → M
a : α
f g : α → M
h : Disjoint (mulSupport f) (mulSupport g)
x : α
hx : x ∈ mulSupport f
⊢ (f * g) x = f x
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
M : Type u_4
N : Type u_5
inst✝ : MulOneClass M
s t : Set α
f✝ g✝ : α → M
a : α
f g : α → M
h : Disjoint (mulSupport f) (mulSupport g)
x : α
hx : x ∈ mulSupport f
this : g x = 1
⊢ (f * g) x = f x

tactic: rw [Pi.mul_apply, this, mul_one]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
M : Type u_4
N : Type u_5
inst✝ : MulOneClass M
s t : Set α
f✝ g✝ : α → M
a : α
f g : α → M
h : Disjoint (mulSupport f) (mulSupport g)
x : α
hx : x ∈ mulSupport f
this : g x = 1
⊢ (f * g) x = f x
state_after: no goals
Theorem: Quiver.eq_reverse_iff
File: Mathlib/Combinatorics/Quiver/Symmetric.lean

tactic: rw [← reverse_inj, reverse_reverse]
state_before: U : Type u_1
V : Type u_2
W : Type u_3
inst✝² : Quiver U
inst✝¹ : Quiver V
inst✝ : Quiver W
h : HasInvolutiveReverse V
a b : V
f : a ⟶ b
g : b ⟶ a
⊢ f = reverse g ↔ reverse f = g
state_after: no goals
Theorem: AddCommGroup.div_modEq_div
File: Mathlib/Algebra/ModEq.lean

tactic: simp [ModEq, ← sub_div, div_eq_iff hc, mul_assoc]
state_before: α : Type u_1
inst✝ : DivisionRing α
a b c p : α
hc : c ≠ 0
⊢ a / c ≡ b / c [PMOD p] ↔ a ≡ b [PMOD p * c]
state_after: no goals
Theorem: RingCon.sSup_eq_ringConGen
File: Mathlib/RingTheory/Congruence/Basic.lean

tactic: rw [ringConGen_eq]
state_before: α : Type u_1
R : Type u_2
inst✝¹ : Add R
inst✝ : Mul R
S : Set (RingCon R)
⊢ sSup S = ringConGen fun x y => ∃ c ∈ S, c x y
state_after: α : Type u_1
R : Type u_2
inst✝¹ : Add R
inst✝ : Mul R
S : Set (RingCon R)
⊢ sSup S = sInf {s | ∀ (x y : R), (∃ c ∈ S, c x y) → s x y}

tactic: apply congr_arg sInf
state_before: α : Type u_1
R : Type u_2
inst✝¹ : Add R
inst✝ : Mul R
S : Set (RingCon R)
⊢ sSup S = sInf {s | ∀ (x y : R), (∃ c ∈ S, c x y) → s x y}
state_after: α : Type u_1
R : Type u_2
inst✝¹ : Add R
inst✝ : Mul R
S : Set (RingCon R)
⊢ upperBounds S = {s | ∀ (x y : R), (∃ c ∈ S, c x y) → s x y}

tactic: ext
state_before: α : Type u_1
R : Type u_2
inst✝¹ : Add R
inst✝ : Mul R
S : Set (RingCon R)
⊢ upperBounds S = {s | ∀ (x y : R), (∃ c ∈ S, c x y) → s x y}
state_after: case h
α : Type u_1
R : Type u_2
inst✝¹ : Add R
inst✝ : Mul R
S : Set (RingCon R)
x✝ : RingCon R
⊢ x✝ ∈ upperBounds S ↔ x✝ ∈ {s | ∀ (x y : R), (∃ c ∈ S, c x y) → s x y}

tactic: exact ⟨fun h _ _ ⟨r, hr⟩ => h hr.1 hr.2, fun h r hS _ _ hr => h _ _ ⟨r, hS, hr⟩⟩
state_before: case h
α : Type u_1
R : Type u_2
inst✝¹ : Add R
inst✝ : Mul R
S : Set (RingCon R)
x✝ : RingCon R
⊢ x✝ ∈ upperBounds S ↔ x✝ ∈ {s | ∀ (x y : R), (∃ c ∈ S, c x y) → s x y}
state_after: no goals
Theorem: Module.End.hasGenEigenvalue_of_hasGenEigenvalue_of_le
File: Mathlib/LinearAlgebra/Eigenspace/Basic.lean

tactic: unfold HasGenEigenvalue at *
state_before: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End R M
μ : R
k m : ℕ
hm : k ≤ m
hk : f.HasGenEigenvalue μ k
⊢ f.HasGenEigenvalue μ m
state_after: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End R M
μ : R
k m : ℕ
hm : k ≤ m
hk : (f.genEigenspace μ) k ≠ ⊥
⊢ (f.genEigenspace μ) m ≠ ⊥

tactic: contrapose! hk
state_before: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End R M
μ : R
k m : ℕ
hm : k ≤ m
hk : (f.genEigenspace μ) k ≠ ⊥
⊢ (f.genEigenspace μ) m ≠ ⊥
state_after: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End R M
μ : R
k m : ℕ
hm : k ≤ m
hk : (f.genEigenspace μ) m = ⊥
⊢ (f.genEigenspace μ) k = ⊥

tactic: rw [← le_bot_iff, ← hk]
state_before: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End R M
μ : R
k m : ℕ
hm : k ≤ m
hk : (f.genEigenspace μ) m = ⊥
⊢ (f.genEigenspace μ) k = ⊥
state_after: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End R M
μ : R
k m : ℕ
hm : k ≤ m
hk : (f.genEigenspace μ) m = ⊥
⊢ (f.genEigenspace μ) k ≤ (f.genEigenspace μ) m

tactic: exact (f.genEigenspace μ).monotone hm
state_before: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End R M
μ : R
k m : ℕ
hm : k ≤ m
hk : (f.genEigenspace μ) m = ⊥
⊢ (f.genEigenspace μ) k ≤ (f.genEigenspace μ) m
state_after: no goals
Theorem: Submodule.sup_eq_range
File: Mathlib/LinearAlgebra/Prod.lean

tactic: simp [Submodule.mem_sup, SetLike.exists]
state_before: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
M₅ : Type u_1
M₆ : Type u_2
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid M₂
inst✝¹ : Module R M
inst✝ : Module R M₂
p q : Submodule R M
x : M
⊢ x ∈ p ⊔ q ↔ x ∈ range (p.subtype.coprod q.subtype)
state_after: no goals
Theorem: cfc_comp_inv
File: Mathlib/Topology/ContinuousFunction/FunctionalCalculus.lean

tactic: rw [cfc_comp' .., cfc_inv_id _]
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹¹ : Semifield R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : HasContinuousInv₀ R
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra R A
inst✝¹ : ContinuousFunctionalCalculus R p
f✝ : R → R
a✝ : A
inst✝ : UniqueContinuousFunctionalCalculus R A
f : R → R
a : Aˣ
hf : autoParam (ContinuousOn f ((fun x => x⁻¹) '' spectrum R ↑a)) _auto✝
ha : autoParam (p ↑a) _auto✝
⊢ cfc (fun x => f x⁻¹) ↑a = cfc f ↑a⁻¹
state_after: no goals
Theorem: Matroid.exists_basis_union_inter_basis
File: Mathlib/Data/Matroid/Basic.lean

tactic: rwa [hI.2]
state_before: α : Type u_1
M✝ M : Matroid α
X Y : Set α
hX : autoParam (X ⊆ M.E) _auto✝
hY : autoParam (Y ⊆ M.E) _auto✝
J : Set α
hJ : M.Basis J Y
I : Set α
hI : M.Basis I (X ∪ Y) ∧ I ∩ Y = J
⊢ M.Basis (I ∩ Y) Y
state_after: no goals
Theorem: Surreal.nsmul_pow_two_powHalf'
File: Mathlib/SetTheory/Surreal/Dyadic.lean

tactic: induction' k with k hk
state_before: n k : ℕ
⊢ 2 ^ n * powHalf (n + k) = powHalf k
state_after: case zero
n : ℕ
⊢ 2 ^ n * powHalf (n + 0) = powHalf 0

case succ
n k : ℕ
hk : 2 ^ n * powHalf (n + k) = powHalf k
⊢ 2 ^ n * powHalf (n + (k + 1)) = powHalf (k + 1)

tactic: simp only [add_zero, Surreal.nsmul_pow_two_powHalf, Nat.zero_eq, eq_self_iff_true,
  Surreal.powHalf_zero]
state_before: case zero
n : ℕ
⊢ 2 ^ n * powHalf (n + 0) = powHalf 0
state_after: no goals

tactic: rw [← double_powHalf_succ_eq_powHalf (n + k), ← double_powHalf_succ_eq_powHalf k,
  ← mul_assoc, mul_comm (2 ^ n) 2, mul_assoc] at hk
state_before: case succ
n k : ℕ
hk : 2 ^ n * powHalf (n + k) = powHalf k
⊢ 2 ^ n * powHalf (n + (k + 1)) = powHalf (k + 1)
state_after: case succ
n k : ℕ
hk : 2 * (2 ^ n * powHalf (n + k + 1)) = 2 * powHalf (k + 1)
⊢ 2 ^ n * powHalf (n + (k + 1)) = powHalf (k + 1)

tactic: rw [← zsmul_eq_zsmul_iff' two_ne_zero]
state_before: case succ
n k : ℕ
hk : 2 * (2 ^ n * powHalf (n + k + 1)) = 2 * powHalf (k + 1)
⊢ 2 ^ n * powHalf (n + (k + 1)) = powHalf (k + 1)
state_after: case succ
n k : ℕ
hk : 2 * (2 ^ n * powHalf (n + k + 1)) = 2 * powHalf (k + 1)
⊢ 2 • (2 ^ n * powHalf (n + (k + 1))) = 2 • powHalf (k + 1)

tactic: simpa only [zsmul_eq_mul, Int.cast_ofNat]
state_before: case succ
n k : ℕ
hk : 2 * (2 ^ n * powHalf (n + k + 1)) = 2 * powHalf (k + 1)
⊢ 2 • (2 ^ n * powHalf (n + (k + 1))) = 2 • powHalf (k + 1)
state_after: no goals
Theorem: joinedIn_univ
File: Mathlib/Topology/Connected/PathConnected.lean

tactic: simp [JoinedIn, Joined, exists_true_iff_nonempty]
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
F : Set X
⊢ JoinedIn univ x y ↔ Joined x y
state_after: no goals