1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: LipschitzOnWith.ae_differentiableWithinAt_of_mem_of_real
File: Mathlib/Analysis/Calculus/Rademacher.lean

tactic: obtain ⟨g, g_lip, hg⟩ : ∃ (g : E → ℝ), LipschitzWith C g ∧ EqOn f g s := hf.extend_real
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : FiniteDimensional ℝ E
inst✝⁵ : MeasurableSpace E
inst✝⁴ : BorelSpace E
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
C D : ℝ≥0
f g : E → ℝ
s : Set E
μ : Measure E
inst✝¹ : μ.IsAddHaarMeasure
inst✝ : FiniteDimensional ℝ F
hf : LipschitzOnWith C f s
⊢ ∀ᵐ (x : E) ∂μ, x ∈ s → DifferentiableWithinAt ℝ f s x
state_after: case intro.intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : FiniteDimensional ℝ E
inst✝⁵ : MeasurableSpace E
inst✝⁴ : BorelSpace E
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
C D : ℝ≥0
f g✝ : E → ℝ
s : Set E
μ : Measure E
inst✝¹ : μ.IsAddHaarMeasure
inst✝ : FiniteDimensional ℝ F
hf : LipschitzOnWith C f s
g : E → ℝ
g_lip : LipschitzWith C g
hg : EqOn f g s
⊢ ∀ᵐ (x : E) ∂μ, x ∈ s → DifferentiableWithinAt ℝ f s x

tactic: filter_upwards [g_lip.ae_differentiableAt_of_real] with x hx xs
state_before: case intro.intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : FiniteDimensional ℝ E
inst✝⁵ : MeasurableSpace E
inst✝⁴ : BorelSpace E
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
C D : ℝ≥0
f g✝ : E → ℝ
s : Set E
μ : Measure E
inst✝¹ : μ.IsAddHaarMeasure
inst✝ : FiniteDimensional ℝ F
hf : LipschitzOnWith C f s
g : E → ℝ
g_lip : LipschitzWith C g
hg : EqOn f g s
⊢ ∀ᵐ (x : E) ∂μ, x ∈ s → DifferentiableWithinAt ℝ f s x
state_after: case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : FiniteDimensional ℝ E
inst✝⁵ : MeasurableSpace E
inst✝⁴ : BorelSpace E
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
C D : ℝ≥0
f g✝ : E → ℝ
s : Set E
μ : Measure E
inst✝¹ : μ.IsAddHaarMeasure
inst✝ : FiniteDimensional ℝ F
hf : LipschitzOnWith C f s
g : E → ℝ
g_lip : LipschitzWith C g
hg : EqOn f g s
x : E
hx : DifferentiableAt ℝ g x
xs : x ∈ s
⊢ DifferentiableWithinAt ℝ f s x

tactic: exact hx.differentiableWithinAt.congr hg (hg xs)
state_before: case h
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : FiniteDimensional ℝ E
inst✝⁵ : MeasurableSpace E
inst✝⁴ : BorelSpace E
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
C D : ℝ≥0
f g✝ : E → ℝ
s : Set E
μ : Measure E
inst✝¹ : μ.IsAddHaarMeasure
inst✝ : FiniteDimensional ℝ F
hf : LipschitzOnWith C f s
g : E → ℝ
g_lip : LipschitzWith C g
hg : EqOn f g s
x : E
hx : DifferentiableAt ℝ g x
xs : x ∈ s
⊢ DifferentiableWithinAt ℝ f s x
state_after: no goals
Theorem: Metric.lipschitz_infDist_set
File: Mathlib/Topology/MetricSpace/Closeds.lean

tactic: rw [dist_comm]
state_before: α : Type u
inst✝ : MetricSpace α
x : α
s t : NonemptyCompacts α
⊢ infDist x ↑s ≤ infDist x ↑t + dist s t
state_after: α : Type u
inst✝ : MetricSpace α
x : α
s t : NonemptyCompacts α
⊢ infDist x ↑s ≤ infDist x ↑t + dist t s

tactic: exact infDist_le_infDist_add_hausdorffDist (edist_ne_top t s)
state_before: α : Type u
inst✝ : MetricSpace α
x : α
s t : NonemptyCompacts α
⊢ infDist x ↑s ≤ infDist x ↑t + dist t s
state_after: no goals
Theorem: CategoryTheory.FinallySmall.exists_small_weakly_terminal_set
File: Mathlib/CategoryTheory/Limits/FinallySmall.lean

tactic: refine ⟨Set.range (fromFinalModel J).obj, inferInstance, fun i => ?_⟩
state_before: J : Type u
inst✝¹ : Category.{v, u} J
inst✝ : FinallySmall J
⊢ ∃ s, ∃ (_ : Small.{w, u} ↑s), ∀ (i : J), ∃ j ∈ s, Nonempty (i ⟶ j)
state_after: J : Type u
inst✝¹ : Category.{v, u} J
inst✝ : FinallySmall J
i : J
⊢ ∃ j ∈ Set.range (fromFinalModel J).obj, Nonempty (i ⟶ j)

tactic: obtain ⟨f⟩ : Nonempty (StructuredArrow i (fromFinalModel J)) := IsConnected.is_nonempty
state_before: J : Type u
inst✝¹ : Category.{v, u} J
inst✝ : FinallySmall J
i : J
⊢ ∃ j ∈ Set.range (fromFinalModel J).obj, Nonempty (i ⟶ j)
state_after: case intro
J : Type u
inst✝¹ : Category.{v, u} J
inst✝ : FinallySmall J
i : J
f : StructuredArrow i (fromFinalModel J)
⊢ ∃ j ∈ Set.range (fromFinalModel J).obj, Nonempty (i ⟶ j)

tactic: exact ⟨(fromFinalModel J).obj f.right, Set.mem_range_self _, ⟨f.hom⟩⟩
state_before: case intro
J : Type u
inst✝¹ : Category.{v, u} J
inst✝ : FinallySmall J
i : J
f : StructuredArrow i (fromFinalModel J)
⊢ ∃ j ∈ Set.range (fromFinalModel J).obj, Nonempty (i ⟶ j)
state_after: no goals
Theorem: LinearMap.toMvPolynomial_eval_eq_apply
File: Mathlib/Algebra/Module/LinearMap/Polynomial.lean

tactic: rw [toMvPolynomial, Matrix.toMvPolynomial_eval_eq_apply,
  ← LinearMap.toMatrix_mulVec_repr b₁ b₂, LinearEquiv.apply_symm_apply]
state_before: R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
ι₁ : Type u_4
ι₂ : Type u_5
inst✝⁷ : CommRing R
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : AddCommGroup M₂
inst✝⁴ : Module R M₁
inst✝³ : Module R M₂
inst✝² : Fintype ι₁
inst✝¹ : Finite ι₂
inst✝ : DecidableEq ι₁
b₁ : Basis ι₁ R M₁
b₂ : Basis ι₂ R M₂
f : M₁ →ₗ[R] M₂
i : ι₂
c : ι₁ →₀ R
⊢ (eval ⇑c) (toMvPolynomial b₁ b₂ f i) = (b₂.repr (f (b₁.repr.symm c))) i
state_after: no goals
Theorem: Encodable.decode_prod_val
File: Mathlib/Logic/Encodable/Basic.lean

tactic: simp only [decode_ofEquiv, Equiv.symm_symm, decode_sigma_val]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Encodable α
inst✝ : Encodable β
i : Encodable α
n : ℕ
⊢ decode n = (decode (unpair n).1).bind fun a => Option.map (Prod.mk a) (decode (unpair n).2)
state_after: α : Type u_1
β : Type u_2
inst✝¹ : Encodable α
inst✝ : Encodable β
i : Encodable α
n : ℕ
⊢ Option.map (⇑(Equiv.sigmaEquivProd α β))
      ((decode (unpair n).1).bind fun a => Option.map (Sigma.mk a) (decode (unpair n).2)) =
    (decode (unpair n).1).bind fun a => Option.map (Prod.mk a) (decode (unpair n).2)

tactic: cases (decode n.unpair.1 : Option α) <;> cases (decode n.unpair.2 : Option β)
<;> rfl
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Encodable α
inst✝ : Encodable β
i : Encodable α
n : ℕ
⊢ Option.map (⇑(Equiv.sigmaEquivProd α β))
      ((decode (unpair n).1).bind fun a => Option.map (Sigma.mk a) (decode (unpair n).2)) =
    (decode (unpair n).1).bind fun a => Option.map (Prod.mk a) (decode (unpair n).2)
state_after: no goals
Theorem: continuousWithinAt_Ico_iff_Ici
File: Mathlib/Topology/Order/OrderClosed.lean

tactic: simp only [ContinuousWithinAt, nhdsWithin_Ico_eq_nhdsWithin_Ici h]
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : ClosedIciTopology α
inst✝ : TopologicalSpace β
a b c : α
f : α → β
h : a < b
⊢ ContinuousWithinAt f (Ico a b) a ↔ ContinuousWithinAt f (Ici a) a
state_after: no goals
Theorem: Int.le_induction_down
File: Mathlib/Data/Int/Defs.lean

tactic: omega
state_before: a b c d m✝ n✝ : ℤ
P : ℤ → Prop
m : ℤ
h0 : P m
h1 : ∀ (n : ℤ), n ≤ m → P n → P (n - 1)
n k : ℤ
hle : m ≤ k
x✝ : k ≤ m → P k
hle' : k + 1 ≤ m
⊢ P (k + 1)
state_after: no goals
Theorem: εNFA.εClosure_empty
File: Mathlib/Computability/EpsilonNFA.lean

tactic: induction hs <;> assumption
state_before: α : Type u
σ σ' : Type v
M : εNFA α σ
S : Set σ
x : List α
s✝ : σ
a : α
s : σ
hs : s ∈ M.εClosure ∅
⊢ False
state_after: no goals
Theorem: LinearMap.surjective_of_iterate_surjective
File: Mathlib/Algebra/Module/LinearMap/End.lean

tactic: rw [← Nat.succ_pred_eq_of_pos (pos_iff_ne_zero.mpr hn), pow_succ', coe_mul] at h
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
S : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
N : Type u_9
N₁ : Type u_10
N₂ : Type u_11
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommGroup N₁
inst✝⁴ : Module R M
inst✝³ : Module R N₁
inst✝² : Monoid S
inst✝¹ : DistribMulAction S M
inst✝ : SMulCommClass R S M
f' : M →ₗ[R] M
n : ℕ
hn : n ≠ 0
h : Surjective ⇑(f' ^ n)
⊢ Surjective ⇑f'
state_after: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
S : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
N : Type u_9
N₁ : Type u_10
N₂ : Type u_11
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommGroup N₁
inst✝⁴ : Module R M
inst✝³ : Module R N₁
inst✝² : Monoid S
inst✝¹ : DistribMulAction S M
inst✝ : SMulCommClass R S M
f' : M →ₗ[R] M
n : ℕ
hn : n ≠ 0
h : Surjective (⇑f' ∘ ⇑(f' ^ n.pred))
⊢ Surjective ⇑f'

tactic: exact Surjective.of_comp h
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
S : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
N : Type u_9
N₁ : Type u_10
N₂ : Type u_11
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommGroup N₁
inst✝⁴ : Module R M
inst✝³ : Module R N₁
inst✝² : Monoid S
inst✝¹ : DistribMulAction S M
inst✝ : SMulCommClass R S M
f' : M →ₗ[R] M
n : ℕ
hn : n ≠ 0
h : Surjective (⇑f' ∘ ⇑(f' ^ n.pred))
⊢ Surjective ⇑f'
state_after: no goals
Theorem: AddCircle.liftIco_eq_lift_Icc
File: Mathlib/Topology/Instances/AddCircle.lean

tactic: rintro _ _ ⟨_⟩
state_before: 𝕜 : Type u_1
B : Type u_2
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p a : 𝕜
hp : Fact (0 < p)
inst✝ : Archimedean 𝕜
f : 𝕜 → B
h : f a = f (a + p)
⊢ ∀ (a_1 b : ↑(Icc a (a + p))), EndpointIdent p a a_1 b → (Icc a (a + p)).restrict f a_1 = (Icc a (a + p)).restrict f b
state_after: case mk
𝕜 : Type u_1
B : Type u_2
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p a : 𝕜
hp : Fact (0 < p)
inst✝ : Archimedean 𝕜
f : 𝕜 → B
h : f a = f (a + p)
⊢ (Icc a (a + p)).restrict f ⟨a, ⋯⟩ = (Icc a (a + p)).restrict f ⟨a + p, ⋯⟩

tactic: exact h
state_before: case mk
𝕜 : Type u_1
B : Type u_2
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p a : 𝕜
hp : Fact (0 < p)
inst✝ : Archimedean 𝕜
f : 𝕜 → B
h : f a = f (a + p)
⊢ (Icc a (a + p)).restrict f ⟨a, ⋯⟩ = (Icc a (a + p)).restrict f ⟨a + p, ⋯⟩
state_after: no goals
Theorem: Nat.max_eq_zero_iff
File: Mathlib/Data/Nat/Defs.lean

tactic: omega
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ max m n = 0 ↔ m = 0 ∧ n = 0
state_after: no goals
Theorem: MeasureTheory.Measure.ext_iff'
File: Mathlib/MeasureTheory/Measure/MeasureSpaceDef.lean

tactic: rintro rfl s
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
inst✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s s₁ s₂ t : Set α
⊢ μ₁ = μ₂ → ∀ (s : Set α), μ₁ s = μ₂ s
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
inst✝ : MeasurableSpace α
μ μ₁ : Measure α
s✝ s₁ s₂ t s : Set α
⊢ μ₁ s = μ₁ s

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
inst✝ : MeasurableSpace α
μ μ₁ : Measure α
s✝ s₁ s₂ t s : Set α
⊢ μ₁ s = μ₁ s
state_after: no goals
Theorem: Associated.refl
File: Mathlib/Algebra/Associated.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
x : α
⊢ x * ↑1 = x
state_after: no goals
Theorem: UpperSet.Ici_iSup
File: Mathlib/Order/UpperLower/Basic.lean

tactic: simp only [mem_Ici_iff, mem_iSup_iff, iSup_le_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝ : CompleteLattice α
f : ι → α
c : α
⊢ c ∈ Ici (⨆ i, f i) ↔ c ∈ ⨆ i, Ici (f i)
state_after: no goals
Theorem: CategoryTheory.Functor.IsCoverDense.Types.appHom_valid_glue
File: Mathlib/CategoryTheory/Sites/DenseSubsite.lean

tactic: ext
state_before: C : Type u_1
inst✝⁵ : Category.{u_6, u_1} C
D : Type u_2
inst✝⁴ : Category.{u_5, u_2} D
E : Type u_3
inst✝³ : Category.{?u.44817, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝² : Category.{?u.44869, u_4} A
G : C ⥤ D
inst✝¹ : G.IsCoverDense K
inst✝ : G.Full
ℱ : Dᵒᵖ ⥤ Type v
ℱ' : SheafOfTypes K
α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val
X : D
Y : C
f : { unop := X } ⟶ { unop := G.obj Y }
⊢ appHom α X ≫ ℱ'.val.map f = ℱ.map f ≫ α.app { unop := Y }
state_after: case h
C : Type u_1
inst✝⁵ : Category.{u_6, u_1} C
D : Type u_2
inst✝⁴ : Category.{u_5, u_2} D
E : Type u_3
inst✝³ : Category.{?u.44817, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝² : Category.{?u.44869, u_4} A
G : C ⥤ D
inst✝¹ : G.IsCoverDense K
inst✝ : G.Full
ℱ : Dᵒᵖ ⥤ Type v
ℱ' : SheafOfTypes K
α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val
X : D
Y : C
f : { unop := X } ⟶ { unop := G.obj Y }
a✝ : ℱ.obj { unop := X }
⊢ (appHom α X ≫ ℱ'.val.map f) a✝ = (ℱ.map f ≫ α.app { unop := Y }) a✝

tactic: apply appHom_restrict
state_before: case h
C : Type u_1
inst✝⁵ : Category.{u_6, u_1} C
D : Type u_2
inst✝⁴ : Category.{u_5, u_2} D
E : Type u_3
inst✝³ : Category.{?u.44817, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
A : Type u_4
inst✝² : Category.{?u.44869, u_4} A
G : C ⥤ D
inst✝¹ : G.IsCoverDense K
inst✝ : G.Full
ℱ : Dᵒᵖ ⥤ Type v
ℱ' : SheafOfTypes K
α : G.op ⋙ ℱ ⟶ G.op ⋙ ℱ'.val
X : D
Y : C
f : { unop := X } ⟶ { unop := G.obj Y }
a✝ : ℱ.obj { unop := X }
⊢ (appHom α X ≫ ℱ'.val.map f) a✝ = (ℱ.map f ≫ α.app { unop := Y }) a✝
state_after: no goals
Theorem: IsLocalization.coeSubmodule_span
File: Mathlib/RingTheory/Localization/Submodule.lean

tactic: rw [IsLocalization.coeSubmodule, Ideal.span, Submodule.map_span]
state_before: R : Type u_1
inst✝³ : CommRing R
M : Submonoid R
S : Type u_2
inst✝² : CommRing S
inst✝¹ : Algebra R S
P : Type u_3
inst✝ : CommRing P
s : Set R
⊢ coeSubmodule S (Ideal.span s) = Submodule.span R (⇑(algebraMap R S) '' s)
state_after: R : Type u_1
inst✝³ : CommRing R
M : Submonoid R
S : Type u_2
inst✝² : CommRing S
inst✝¹ : Algebra R S
P : Type u_3
inst✝ : CommRing P
s : Set R
⊢ Submodule.span R (⇑(Algebra.linearMap R S) '' s) = Submodule.span R (⇑(algebraMap R S) '' s)

tactic: rfl
state_before: R : Type u_1
inst✝³ : CommRing R
M : Submonoid R
S : Type u_2
inst✝² : CommRing S
inst✝¹ : Algebra R S
P : Type u_3
inst✝ : CommRing P
s : Set R
⊢ Submodule.span R (⇑(Algebra.linearMap R S) '' s) = Submodule.span R (⇑(algebraMap R S) '' s)
state_after: no goals
Theorem: CategoryTheory.Preadditive.IsIso.comp_left_eq_zero
File: Mathlib/CategoryTheory/Preadditive/Basic.lean

tactic: rw [← IsIso.eq_inv_comp, Limits.comp_zero]
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : Preadditive C
P Q R : C
f f' : P ⟶ Q
g g' : Q ⟶ R
inst✝ : IsIso f
⊢ f ≫ g = 0 ↔ g = 0
state_after: no goals
Theorem: Nat.mul_dvd_of_dvd_div
File: Mathlib/Data/Nat/Defs.lean

tactic: simpa [Nat.mul_comm, Nat.mul_left_comm] using Nat.eq_mul_of_div_eq_left hcb hd
state_before: a b c d✝ m n k : ℕ
p q : ℕ → Prop
hcb : c ∣ b
h : a ∣ b / c
d : ℕ
hd : b / c = a * d
⊢ b = c * a * d
state_after: no goals
Theorem: ExistsUnique.intro₂
File: Mathlib/Logic/Basic.lean

tactic: simp only [exists_unique_iff_exists]
state_before: α✝ : Sort u_1
β : Sort u_2
p✝ q✝ : α✝ → Prop
α : Sort u_3
p : α → Sort u_4
inst✝ : ∀ (x : α), Subsingleton (p x)
q : (x : α) → p x → Prop
w : α
hp : p w
hq : q w hp
H : ∀ (y : α) (hy : p y), q y hy → y = w
⊢ ∃! x, ∃! hx, q x hx
state_after: α✝ : Sort u_1
β : Sort u_2
p✝ q✝ : α✝ → Prop
α : Sort u_3
p : α → Sort u_4
inst✝ : ∀ (x : α), Subsingleton (p x)
q : (x : α) → p x → Prop
w : α
hp : p w
hq : q w hp
H : ∀ (y : α) (hy : p y), q y hy → y = w
⊢ ∃! x, ∃ hx, q x hx

tactic: exact ExistsUnique.intro w ⟨hp, hq⟩ fun y ⟨hyp, hyq⟩ ↦ H y hyp hyq
state_before: α✝ : Sort u_1
β : Sort u_2
p✝ q✝ : α✝ → Prop
α : Sort u_3
p : α → Sort u_4
inst✝ : ∀ (x : α), Subsingleton (p x)
q : (x : α) → p x → Prop
w : α
hp : p w
hq : q w hp
H : ∀ (y : α) (hy : p y), q y hy → y = w
⊢ ∃! x, ∃ hx, q x hx
state_after: no goals
Theorem: Finset.prod_multiset_map_count
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: refine Quot.induction_on s fun l => ?_
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✝² : CommMonoid β
inst✝¹ : DecidableEq α
s : Multiset α
M : Type u_6
inst✝ : CommMonoid M
f : α → M
⊢ (Multiset.map f s).prod = ∏ m ∈ s.toFinset, f m ^ Multiset.count m s
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝² : CommMonoid β
inst✝¹ : DecidableEq α
s : Multiset α
M : Type u_6
inst✝ : CommMonoid M
f : α → M
l : List α
⊢ (Multiset.map f (Quot.mk Setoid.r l)).prod =
    ∏ m ∈ Multiset.toFinset (Quot.mk Setoid.r l), f m ^ Multiset.count m (Quot.mk Setoid.r l)

tactic: simp [prod_list_map_count l f]
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✝² : CommMonoid β
inst✝¹ : DecidableEq α
s : Multiset α
M : Type u_6
inst✝ : CommMonoid M
f : α → M
l : List α
⊢ (Multiset.map f (Quot.mk Setoid.r l)).prod =
    ∏ m ∈ Multiset.toFinset (Quot.mk Setoid.r l), f m ^ Multiset.count m (Quot.mk Setoid.r l)
state_after: no goals
Theorem: HomologicalComplex₂.totalAux.d₁_eq'
File: Mathlib/Algebra/Homology/TotalComplex.lean

tactic: obtain rfl := c₁.next_eq' h
state_before: C : Type u_1
inst✝⁴ : Category.{u_5, u_1} C
inst✝³ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝² : DecidableEq I₁₂
inst✝¹ : TotalComplexShape c₁ c₂ c₁₂
inst✝ : K.HasTotal c₁₂
i₁ i₁' : I₁
h : c₁.Rel i₁ i₁'
i₂ : I₂
i₁₂ : I₁₂
⊢ K.d₁ c₁₂ i₁ i₂ i₁₂ =
    c₁.ε₁ c₂ c₁₂ (i₁, i₂) • (K.d i₁ i₁').f i₂ ≫ K.toGradedObject.ιMapObjOrZero (c₁.π c₂ c₁₂) (i₁', i₂) i₁₂
state_after: C : Type u_1
inst✝⁴ : Category.{u_5, u_1} C
inst✝³ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝² : DecidableEq I₁₂
inst✝¹ : TotalComplexShape c₁ c₂ c₁₂
inst✝ : K.HasTotal c₁₂
i₁ : I₁
i₂ : I₂
i₁₂ : I₁₂
h : c₁.Rel i₁ (c₁.next i₁)
⊢ K.d₁ c₁₂ i₁ i₂ i₁₂ =
    c₁.ε₁ c₂ c₁₂ (i₁, i₂) •
      (K.d i₁ (c₁.next i₁)).f i₂ ≫ K.toGradedObject.ιMapObjOrZero (c₁.π c₂ c₁₂) (c₁.next i₁, i₂) i₁₂

tactic: rfl
state_before: C : Type u_1
inst✝⁴ : Category.{u_5, u_1} C
inst✝³ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝² : DecidableEq I₁₂
inst✝¹ : TotalComplexShape c₁ c₂ c₁₂
inst✝ : K.HasTotal c₁₂
i₁ : I₁
i₂ : I₂
i₁₂ : I₁₂
h : c₁.Rel i₁ (c₁.next i₁)
⊢ K.d₁ c₁₂ i₁ i₂ i₁₂ =
    c₁.ε₁ c₂ c₁₂ (i₁, i₂) •
      (K.d i₁ (c₁.next i₁)).f i₂ ≫ K.toGradedObject.ιMapObjOrZero (c₁.π c₂ c₁₂) (c₁.next i₁, i₂) i₁₂
state_after: no goals
Theorem: Nat.choose_le_pow
File: Mathlib/Data/Nat/Choose/Bounds.lean

tactic: rw [le_div_iff']
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ ↑(n.choose r) ≤ ↑n ^ r / ↑r !
state_after: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ ↑r ! * ↑(n.choose r) ≤ ↑n ^ r

α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ 0 < ↑r !

tactic: exact mod_cast r.factorial_pos
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ 0 < ↑r !
state_after: no goals

tactic: norm_cast
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ ↑r ! * ↑(n.choose r) ≤ ↑n ^ r
state_after: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ r ! * n.choose r ≤ n ^ r

tactic: rw [← Nat.descFactorial_eq_factorial_mul_choose]
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ r ! * n.choose r ≤ n ^ r
state_after: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ n.descFactorial r ≤ n ^ r

tactic: exact n.descFactorial_le_pow r
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
r n : ℕ
⊢ n.descFactorial r ≤ n ^ r
state_after: no goals
Theorem: Finset.sum_div
File: Mathlib/Algebra/BigOperators/Ring.lean

tactic: simp only [div_eq_mul_inv, sum_mul]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
κ : ι → Type u_5
s✝ s₁ s₂ : Finset ι
i : ι
a✝ : α
f✝ g : ι → α
inst✝ : DivisionSemiring α
s : Finset ι
f : ι → α
a : α
⊢ (∑ i ∈ s, f i) / a = ∑ i ∈ s, f i / a
state_after: no goals
Theorem: FractionalIdeal.le_div_iff_mul_le
File: Mathlib/RingTheory/FractionalIdeal/Operations.lean

tactic: rw [div_nonzero hJ']
state_before: R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁵ : CommRing P
inst✝⁴ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_3
inst✝³ : CommRing R₁
K : Type u_4
inst✝² : Field K
inst✝¹ : Algebra R₁ K
frac : IsFractionRing R₁ K
inst✝ : IsDomain R₁
I✝ J✝ I J J' : FractionalIdeal R₁⁰ K
hJ' : J' ≠ 0
⊢ I ≤ J / J' ↔ I * J' ≤ J
state_after: R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁵ : CommRing P
inst✝⁴ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_3
inst✝³ : CommRing R₁
K : Type u_4
inst✝² : Field K
inst✝¹ : Algebra R₁ K
frac : IsFractionRing R₁ K
inst✝ : IsDomain R₁
I✝ J✝ I J J' : FractionalIdeal R₁⁰ K
hJ' : J' ≠ 0
⊢ I ≤ ⟨↑J / ↑J', ⋯⟩ ↔ I * J' ≤ J

tactic: rw [← coe_le_coe (I := I * J') (J := J), coe_mul]
state_before: R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁵ : CommRing P
inst✝⁴ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_3
inst✝³ : CommRing R₁
K : Type u_4
inst✝² : Field K
inst✝¹ : Algebra R₁ K
frac : IsFractionRing R₁ K
inst✝ : IsDomain R₁
I✝ J✝ I J J' : FractionalIdeal R₁⁰ K
hJ' : J' ≠ 0
⊢ I ≤ ⟨↑J / ↑J', ⋯⟩ ↔ I * J' ≤ J
state_after: R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁵ : CommRing P
inst✝⁴ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_3
inst✝³ : CommRing R₁
K : Type u_4
inst✝² : Field K
inst✝¹ : Algebra R₁ K
frac : IsFractionRing R₁ K
inst✝ : IsDomain R₁
I✝ J✝ I J J' : FractionalIdeal R₁⁰ K
hJ' : J' ≠ 0
⊢ I ≤ ⟨↑J / ↑J', ⋯⟩ ↔ ↑I * ↑J' ≤ ↑J

tactic: exact Submodule.le_div_iff_mul_le
state_before: R : Type u_1
inst✝⁶ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁵ : CommRing P
inst✝⁴ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_3
inst✝³ : CommRing R₁
K : Type u_4
inst✝² : Field K
inst✝¹ : Algebra R₁ K
frac : IsFractionRing R₁ K
inst✝ : IsDomain R₁
I✝ J✝ I J J' : FractionalIdeal R₁⁰ K
hJ' : J' ≠ 0
⊢ I ≤ ⟨↑J / ↑J', ⋯⟩ ↔ ↑I * ↑J' ≤ ↑J
state_after: no goals
Theorem: Set.toFinset_insert
File: Mathlib/Data/Fintype/Basic.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s✝ t : Set α
inst✝² : DecidableEq α
a : α
s : Set α
inst✝¹ : Fintype ↑(insert a s)
inst✝ : Fintype ↑s
⊢ (insert a s).toFinset = insert a s.toFinset
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ t : Set α
inst✝² : DecidableEq α
a : α
s : Set α
inst✝¹ : Fintype ↑(insert a s)
inst✝ : Fintype ↑s
a✝ : α
⊢ a✝ ∈ (insert a s).toFinset ↔ a✝ ∈ insert a s.toFinset

tactic: simp
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ t : Set α
inst✝² : DecidableEq α
a : α
s : Set α
inst✝¹ : Fintype ↑(insert a s)
inst✝ : Fintype ↑s
a✝ : α
⊢ a✝ ∈ (insert a s).toFinset ↔ a✝ ∈ insert a s.toFinset
state_after: no goals
Theorem: SchwartzMap.integralCLM_apply
File: Mathlib/Analysis/Distribution/SchwartzSpace.lean

tactic: rfl
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace ℝ E
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace ℝ F
inst✝⁸ : _root_.RCLike 𝕜
inst✝⁷ : NormedAddCommGroup D
inst✝⁶ : NormedSpace ℝ D
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedSpace ℝ V
inst✝³ : NormedSpace 𝕜 V
inst✝² : MeasurableSpace D
inst✝¹ : BorelSpace D
inst✝ : SecondCountableTopology D
μ : Measure D
hμ : μ.HasTemperateGrowth
f : 𝓢(D, V)
⊢ (integralCLM 𝕜 μ) f = ∫ (x : D), f x ∂μ
state_after: no goals
Theorem: BoundedContinuousFunction.sum_apply
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

tactic: simp
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : PseudoMetricSpace β
inst✝² : AddCommMonoid β
inst✝¹ : BoundedAdd β
inst✝ : ContinuousAdd β
ι : Type u_2
s : Finset ι
f : ι → α →ᵇ β
a : α
⊢ (∑ i ∈ s, f i) a = ∑ i ∈ s, (f i) a
state_after: no goals