1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Prefunctor.IsCovering.of_comp_left
File: Mathlib/Combinatorics/Quiver/Covering.lean

tactic: refine ⟨fun v => ?_, fun v => ?_⟩ <;> obtain ⟨u, rfl⟩ := φsur v
state_before: U : Type u_1
inst✝² : Quiver U
V : Type u_2
inst✝¹ : Quiver V
φ : U ⥤q V
W : Type u_3
inst✝ : Quiver W
ψ : V ⥤q W
hφ : φ.IsCovering
hφψ : (φ ⋙q ψ).IsCovering
φsur : Surjective φ.obj
⊢ ψ.IsCovering
state_after: case refine_1.intro
U : Type u_1
inst✝² : Quiver U
V : Type u_2
inst✝¹ : Quiver V
φ : U ⥤q V
W : Type u_3
inst✝ : Quiver W
ψ : V ⥤q W
hφ : φ.IsCovering
hφψ : (φ ⋙q ψ).IsCovering
φsur : Surjective φ.obj
u : U
⊢ Bijective (ψ.star (φ.obj u))

case refine_2.intro
U : Type u_1
inst✝² : Quiver U
V : Type u_2
inst✝¹ : Quiver V
φ : U ⥤q V
W : Type u_3
inst✝ : Quiver W
ψ : V ⥤q W
hφ : φ.IsCovering
hφψ : (φ ⋙q ψ).IsCovering
φsur : Surjective φ.obj
u : U
⊢ Bijective (ψ.costar (φ.obj u))

tactic: exacts [(Bijective.of_comp_iff _ (hφ.star_bijective u)).mp (hφψ.star_bijective u),
  (Bijective.of_comp_iff _ (hφ.costar_bijective u)).mp (hφψ.costar_bijective u)]
state_before: case refine_1.intro
U : Type u_1
inst✝² : Quiver U
V : Type u_2
inst✝¹ : Quiver V
φ : U ⥤q V
W : Type u_3
inst✝ : Quiver W
ψ : V ⥤q W
hφ : φ.IsCovering
hφψ : (φ ⋙q ψ).IsCovering
φsur : Surjective φ.obj
u : U
⊢ Bijective (ψ.star (φ.obj u))

case refine_2.intro
U : Type u_1
inst✝² : Quiver U
V : Type u_2
inst✝¹ : Quiver V
φ : U ⥤q V
W : Type u_3
inst✝ : Quiver W
ψ : V ⥤q W
hφ : φ.IsCovering
hφψ : (φ ⋙q ψ).IsCovering
φsur : Surjective φ.obj
u : U
⊢ Bijective (ψ.costar (φ.obj u))
state_after: no goals
Theorem: MeasureTheory.Submartingale.setIntegral_le
File: Mathlib/Probability/Martingale/Basic.lean

tactic: rw [← neg_le_neg_iff, ← integral_neg, ← integral_neg]
state_before: Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : SigmaFiniteFiltration μ ℱ
f : ι → Ω → ℝ
hf : Submartingale f ℱ μ
i j : ι
hij : i ≤ j
s : Set Ω
hs : MeasurableSet s
⊢ ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f j ω ∂μ
state_after: Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : SigmaFiniteFiltration μ ℱ
f : ι → Ω → ℝ
hf : Submartingale f ℱ μ
i j : ι
hij : i ≤ j
s : Set Ω
hs : MeasurableSet s
⊢ ∫ (a : Ω) in s, -f j a ∂μ ≤ ∫ (a : Ω) in s, -f i a ∂μ

tactic: exact Supermartingale.setIntegral_le hf.neg hij hs
state_before: Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : SigmaFiniteFiltration μ ℱ
f : ι → Ω → ℝ
hf : Submartingale f ℱ μ
i j : ι
hij : i ≤ j
s : Set Ω
hs : MeasurableSet s
⊢ ∫ (a : Ω) in s, -f j a ∂μ ≤ ∫ (a : Ω) in s, -f i a ∂μ
state_after: no goals
Theorem: List.finRange_succ_eq_map
File: Mathlib/Data/List/FinRange.lean

tactic: apply map_injective_iff.mpr Fin.val_injective
state_before: α : Type u
n : ℕ
⊢ finRange n.succ = 0 :: map Fin.succ (finRange n)
state_after: case a
α : Type u
n : ℕ
⊢ map Fin.val (finRange n.succ) = map Fin.val (0 :: map Fin.succ (finRange n))

tactic: rw [map_cons, map_coe_finRange, range_succ_eq_map, Fin.val_zero, ← map_coe_finRange, map_map,
  map_map]
state_before: case a
α : Type u
n : ℕ
⊢ map Fin.val (finRange n.succ) = map Fin.val (0 :: map Fin.succ (finRange n))
state_after: case a
α : Type u
n : ℕ
⊢ 0 :: map (Nat.succ ∘ Fin.val) (finRange n) = 0 :: map (Fin.val ∘ Fin.succ) (finRange n)

tactic: simp only [Function.comp, Fin.val_succ]
state_before: case a
α : Type u
n : ℕ
⊢ 0 :: map (Nat.succ ∘ Fin.val) (finRange n) = 0 :: map (Fin.val ∘ Fin.succ) (finRange n)
state_after: no goals
Theorem: Finite.one_lt_card_iff_nontrivial
File: Mathlib/Data/Finite/Card.lean

tactic: haveI := Fintype.ofFinite α
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
⊢ 1 < Nat.card α ↔ Nontrivial α
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
this : Fintype α
⊢ 1 < Nat.card α ↔ Nontrivial α

tactic: simp only [Nat.card_eq_fintype_card, Fintype.one_lt_card_iff_nontrivial]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
this : Fintype α
⊢ 1 < Nat.card α ↔ Nontrivial α
state_after: no goals
Theorem: Real.sin_sub
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [sub_eq_add_neg, sin_add, sin_neg, cos_neg]
state_before: x y : ℝ
⊢ sin (x - y) = sin x * cos y - cos x * sin y
state_after: no goals
Theorem: Set.image_const_add_Iio
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [add_comm]
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
⊢ (fun x => a + x) '' Iio b = Iio (a + b)
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.add_smul_of_not_equiv
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: have smul : P ≈ Q ↔ u • P ≈ v • Q := by
  erw [← Quotient.eq, ← Quotient.eq, smul_eq P hu, smul_eq Q hv]
  rfl
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
h : ¬P ≈ Q
u v : R
hu : IsUnit u
hv : IsUnit v
⊢ W'.add (u • P) (v • Q) = (u * v) ^ 2 • W'.add P Q
state_after: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
h : ¬P ≈ Q
u v : R
hu : IsUnit u
hv : IsUnit v
smul : P ≈ Q ↔ u • P ≈ v • Q
⊢ W'.add (u • P) (v • Q) = (u * v) ^ 2 • W'.add P Q

tactic: rw [add_of_not_equiv <| h.comp smul.mpr, addXYZ_smul, add_of_not_equiv h]
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
h : ¬P ≈ Q
u v : R
hu : IsUnit u
hv : IsUnit v
smul : P ≈ Q ↔ u • P ≈ v • Q
⊢ W'.add (u • P) (v • Q) = (u * v) ^ 2 • W'.add P Q
state_after: no goals

tactic: erw [← Quotient.eq, ← Quotient.eq, smul_eq P hu, smul_eq Q hv]
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
h : ¬P ≈ Q
u v : R
hu : IsUnit u
hv : IsUnit v
⊢ P ≈ Q ↔ u • P ≈ v • Q
state_after: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
h : ¬P ≈ Q
u v : R
hu : IsUnit u
hv : IsUnit v
⊢ ⟦P⟧ = ⟦Q⟧ ↔ ⟦P⟧ = ⟦Q⟧

tactic: rfl
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
h : ¬P ≈ Q
u v : R
hu : IsUnit u
hv : IsUnit v
⊢ ⟦P⟧ = ⟦Q⟧ ↔ ⟦P⟧ = ⟦Q⟧
state_after: no goals
Theorem: ModelWithCorners.symm_map_nhdsWithin_range
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: rw [← I.map_nhds_eq, map_map, I.symm_comp_self, map_id]
state_before: 𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_3
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
x : H
⊢ map (↑I.symm) (𝓝[range ↑I] ↑I x) = 𝓝 x
state_after: no goals
Theorem: MulAction.isBlock_singleton
File: Mathlib/GroupTheory/GroupAction/Blocks.lean

tactic: simp [IsBlock.def, Classical.or_iff_not_imp_left]
state_before: G : Type u_1
X : Type u_2
inst✝ : SMul G X
a : X
⊢ IsBlock G {a}
state_after: no goals
Theorem: FirstOrder.Language.Theory.CompleteType.formula_mem_typeOf
File: Mathlib/ModelTheory/Types.lean

tactic: simp
state_before: L : Language
T : L.Theory
α : Type w
M : Type w'
inst✝² : L.Structure M
inst✝¹ : Nonempty M
inst✝ : M ⊨ T
v : α → M
φ : L.Formula α
⊢ Formula.equivSentence φ ∈ T.typeOf v ↔ φ.Realize v
state_after: no goals
Theorem: Real.pi_gt_3141592
File: Mathlib/Data/Real/Pi/Bounds.lean

tactic: pi_lower_bound
    [11482 / 8119, 7792 / 4217, 54055 / 27557, 949247 / 476920, 3310126 / 1657059,
      2635492 / 1318143, 1580265 / 790192, 1221775 / 610899, 3612247 / 1806132, 849943 / 424972]
state_before: ⊢ 3.141592 < π
state_after: no goals
Theorem: exists_or_forall_not
File: Mathlib/Logic/Basic.lean

tactic: rw [← not_exists]
state_before: α : Sort u_1
β : Sort u_2
p q P : α → Prop
⊢ (∃ a, P a) ∨ ∀ (a : α), ¬P a
state_after: α : Sort u_1
β : Sort u_2
p q P : α → Prop
⊢ (∃ a, P a) ∨ ¬∃ x, P x

tactic: exact em _
state_before: α : Sort u_1
β : Sort u_2
p q P : α → Prop
⊢ (∃ a, P a) ∨ ¬∃ x, P x
state_after: no goals
Theorem: ENNReal.hasSum_toReal
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: lift f to α → ℝ≥0 using ENNReal.ne_top_of_tsum_ne_top hsum
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f : α → ℝ≥0∞
hsum : ∑' (x : α), f x ≠ ⊤
⊢ HasSum (fun x => (f x).toReal) (∑' (x : α), (f x).toReal)
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f : α → ℝ≥0
hsum : ∑' (x : α), (fun i => ↑(f i)) x ≠ ⊤
⊢ HasSum (fun x => ((fun i => ↑(f i)) x).toReal) (∑' (x : α), ((fun i => ↑(f i)) x).toReal)

tactic: simp only [coe_toReal, ← NNReal.coe_tsum, NNReal.hasSum_coe]
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f : α → ℝ≥0
hsum : ∑' (x : α), (fun i => ↑(f i)) x ≠ ⊤
⊢ HasSum (fun x => ((fun i => ↑(f i)) x).toReal) (∑' (x : α), ((fun i => ↑(f i)) x).toReal)
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f : α → ℝ≥0
hsum : ∑' (x : α), (fun i => ↑(f i)) x ≠ ⊤
⊢ HasSum f (∑' (a : α), f a)

tactic: exact (tsum_coe_ne_top_iff_summable.1 hsum).hasSum
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f : α → ℝ≥0
hsum : ∑' (x : α), (fun i => ↑(f i)) x ≠ ⊤
⊢ HasSum f (∑' (a : α), f a)
state_after: no goals
Theorem: CochainComplex.HomComplex.Cochain.comp_add
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplex.lean

tactic: ext p q hpq
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m n₁ n₂ n₁₂ : ℤ
z₁ : Cochain F G n₁
z₂ z₂' : Cochain G K n₂
h : n₁ + n₂ = n₁₂
⊢ z₁.comp (z₂ + z₂') h = z₁.comp z₂ h + z₁.comp z₂' h
state_after: case h
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m n₁ n₂ n₁₂ : ℤ
z₁ : Cochain F G n₁
z₂ z₂' : Cochain G K n₂
h : n₁ + n₂ = n₁₂
p q : ℤ
hpq : p + n₁₂ = q
⊢ (z₁.comp (z₂ + z₂') h).v p q hpq = (z₁.comp z₂ h + z₁.comp z₂' h).v p q hpq

tactic: simp only [comp_v _ _ h p _ q rfl (by omega), add_v, comp_add]
state_before: case h
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m n₁ n₂ n₁₂ : ℤ
z₁ : Cochain F G n₁
z₂ z₂' : Cochain G K n₂
h : n₁ + n₂ = n₁₂
p q : ℤ
hpq : p + n₁₂ = q
⊢ (z₁.comp (z₂ + z₂') h).v p q hpq = (z₁.comp z₂ h + z₁.comp z₂' h).v p q hpq
state_after: no goals

tactic: omega
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m n₁ n₂ n₁₂ : ℤ
z₁ : Cochain F G n₁
z₂ z₂' : Cochain G K n₂
h : n₁ + n₂ = n₁₂
p q : ℤ
hpq : p + n₁₂ = q
⊢ p + n₁ + n₂ = q
state_after: no goals
Theorem: Sigma.nhds_eq
File: Mathlib/Topology/Constructions.lean

tactic: cases x
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
ι : Type u_5
κ : Type u_6
σ : ι → Type u_7
τ : κ → Type u_8
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace X
x : Sigma σ
⊢ 𝓝 x = Filter.map (mk x.fst) (𝓝 x.snd)
state_after: case mk
X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
ι : Type u_5
κ : Type u_6
σ : ι → Type u_7
τ : κ → Type u_8
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace X
fst✝ : ι
snd✝ : σ fst✝
⊢ 𝓝 ⟨fst✝, snd✝⟩ = Filter.map (mk ⟨fst✝, snd✝⟩.fst) (𝓝 ⟨fst✝, snd✝⟩.snd)

tactic: apply Sigma.nhds_mk
state_before: case mk
X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
ι : Type u_5
κ : Type u_6
σ : ι → Type u_7
τ : κ → Type u_8
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace X
fst✝ : ι
snd✝ : σ fst✝
⊢ 𝓝 ⟨fst✝, snd✝⟩ = Filter.map (mk ⟨fst✝, snd✝⟩.fst) (𝓝 ⟨fst✝, snd✝⟩.snd)
state_after: no goals
Theorem: div_mul_eq_div_mul_one_div
File: Mathlib/Algebra/Group/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : DivisionCommMonoid α
a b c d : α
⊢ a / (b * c) = a / b * (1 / c)
state_after: no goals
Theorem: CompHaus.finiteCoproduct.hom_ext
File: Mathlib/Topology/Category/CompHaus/Limits.lean

tactic: ext ⟨a,x⟩
state_before: α : Type w
inst✝ : Finite α
X : α → CompHaus
B : CompHaus
f g : finiteCoproduct X ⟶ B
h : ∀ (a : α), ι X a ≫ f = ι X a ≫ g
⊢ f = g
state_after: case w.mk
α : Type w
inst✝ : Finite α
X : α → CompHaus
B : CompHaus
f g : finiteCoproduct X ⟶ B
h : ∀ (a : α), ι X a ≫ f = ι X a ≫ g
a : α
x : ↑(X a).toTop
⊢ f ⟨a, x⟩ = g ⟨a, x⟩

tactic: specialize h a
state_before: case w.mk
α : Type w
inst✝ : Finite α
X : α → CompHaus
B : CompHaus
f g : finiteCoproduct X ⟶ B
h : ∀ (a : α), ι X a ≫ f = ι X a ≫ g
a : α
x : ↑(X a).toTop
⊢ f ⟨a, x⟩ = g ⟨a, x⟩
state_after: case w.mk
α : Type w
inst✝ : Finite α
X : α → CompHaus
B : CompHaus
f g : finiteCoproduct X ⟶ B
a : α
x : ↑(X a).toTop
h : ι X a ≫ f = ι X a ≫ g
⊢ f ⟨a, x⟩ = g ⟨a, x⟩

tactic: apply_fun (fun q => q x) at h
state_before: case w.mk
α : Type w
inst✝ : Finite α
X : α → CompHaus
B : CompHaus
f g : finiteCoproduct X ⟶ B
a : α
x : ↑(X a).toTop
h : ι X a ≫ f = ι X a ≫ g
⊢ f ⟨a, x⟩ = g ⟨a, x⟩
state_after: case w.mk
α : Type w
inst✝ : Finite α
X : α → CompHaus
B : CompHaus
f g : finiteCoproduct X ⟶ B
a : α
x : ↑(X a).toTop
h : (ι X a ≫ f) x = (ι X a ≫ g) x
⊢ f ⟨a, x⟩ = g ⟨a, x⟩

tactic: exact h
state_before: case w.mk
α : Type w
inst✝ : Finite α
X : α → CompHaus
B : CompHaus
f g : finiteCoproduct X ⟶ B
a : α
x : ↑(X a).toTop
h : (ι X a ≫ f) x = (ι X a ≫ g) x
⊢ f ⟨a, x⟩ = g ⟨a, x⟩
state_after: no goals
Theorem: EReal.embedding_coe
File: Mathlib/Topology/Instances/EReal.lean

tactic: rw [range_coe_eq_Ioo]
state_before: α : Type u_1
inst✝ : TopologicalSpace α
⊢ (range Real.toEReal).OrdConnected
state_after: α : Type u_1
inst✝ : TopologicalSpace α
⊢ (Ioo ⊥ ⊤).OrdConnected

tactic: exact ordConnected_Ioo
state_before: α : Type u_1
inst✝ : TopologicalSpace α
⊢ (Ioo ⊥ ⊤).OrdConnected
state_after: no goals
Theorem: finprod_mem_eq_one_of_infinite
File: Mathlib/Algebra/BigOperators/Finprod.lean

tactic: rw [finprod_mem_def]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
s : Set α
hs : (s ∩ mulSupport f).Infinite
⊢ ∏ᶠ (i : α) (_ : i ∈ s), f i = 1
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
s : Set α
hs : (s ∩ mulSupport f).Infinite
⊢ ∏ᶠ (a : α), s.mulIndicator f a = 1

tactic: apply finprod_of_infinite_mulSupport
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
s : Set α
hs : (s ∩ mulSupport f).Infinite
⊢ ∏ᶠ (a : α), s.mulIndicator f a = 1
state_after: case hf
α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
s : Set α
hs : (s ∩ mulSupport f).Infinite
⊢ (mulSupport (s.mulIndicator f)).Infinite

tactic: rwa [← mulSupport_mulIndicator] at hs
state_before: case hf
α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
s : Set α
hs : (s ∩ mulSupport f).Infinite
⊢ (mulSupport (s.mulIndicator f)).Infinite
state_after: no goals
Theorem: Real.mul_log_eq_log_iff
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rintro rfl
state_before: x✝ y✝ z✝ : ℝ
n : ℕ
x y z : ℝ
hx : 0 < x
hz : 0 < z
⊢ x ^ y = z → y * log x = log z
state_after: x✝ y✝ z : ℝ
n : ℕ
x y : ℝ
hx : 0 < x
hz : 0 < x ^ y
⊢ y * log x = log (x ^ y)

tactic: rw [log_rpow hx]
state_before: x✝ y✝ z : ℝ
n : ℕ
x y : ℝ
hx : 0 < x
hz : 0 < x ^ y
⊢ y * log x = log (x ^ y)
state_after: no goals
Theorem: Set.biUnion_insert
File: Mathlib/Data/Set/Lattice.lean

tactic: simp
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
a : α
s : Set α
t : α → Set β
⊢ ⋃ x ∈ insert a s, t x = t a ∪ ⋃ x ∈ s, t x
state_after: no goals
Theorem: Set.preimage_const_mul_Ioo
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [← Ioi_inter_Iio, h]
state_before: α : Type u_1
inst✝ : LinearOrderedField α
a✝ a b c : α
h : 0 < c
⊢ (fun x => c * x) ⁻¹' Ioo a b = Ioo (a / c) (b / c)
state_after: no goals
Theorem: IsIntegral.det
File: Mathlib/RingTheory/IntegralClosure.lean

tactic: rw [Matrix.det_apply]
state_before: R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁷ : CommRing R
inst✝⁶ : CommRing A
inst✝⁵ : Ring B
inst✝⁴ : CommRing S
inst✝³ : Algebra R A
inst✝² : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
n : Type u_5
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n A
h : ∀ (i j : n), IsIntegral R (M i j)
⊢ IsIntegral R M.det
state_after: R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁷ : CommRing R
inst✝⁶ : CommRing A
inst✝⁵ : Ring B
inst✝⁴ : CommRing S
inst✝³ : Algebra R A
inst✝² : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
n : Type u_5
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n A
h : ∀ (i j : n), IsIntegral R (M i j)
⊢ IsIntegral R (∑ σ : Equiv.Perm n, Equiv.Perm.sign σ • ∏ i : n, M (σ i) i)

tactic: exact IsIntegral.sum _ fun σ _hσ ↦ (IsIntegral.prod _ fun i _hi => h _ _).zsmul _
state_before: R : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝⁷ : CommRing R
inst✝⁶ : CommRing A
inst✝⁵ : Ring B
inst✝⁴ : CommRing S
inst✝³ : Algebra R A
inst✝² : Algebra R B
f✝¹ : R →+* S
f✝ : R →+* B
f : R →+* S
n : Type u_5
inst✝¹ : Fintype n
inst✝ : DecidableEq n
M : Matrix n n A
h : ∀ (i j : n), IsIntegral R (M i j)
⊢ IsIntegral R (∑ σ : Equiv.Perm n, Equiv.Perm.sign σ • ∏ i : n, M (σ i) i)
state_after: no goals
Theorem: Nat.sum_divisors_filter_squarefree
File: Mathlib/Data/Nat/Squarefree.lean

tactic: rw [Finset.sum_eq_multiset_sum, divisors_filter_squarefree h0, Multiset.map_map,
  Finset.sum_eq_multiset_sum]
state_before: s : Finset ℕ
m n✝ p n : ℕ
h0 : n ≠ 0
α : Type u_1
inst✝ : AddCommMonoid α
f : ℕ → α
⊢ ∑ i ∈ filter Squarefree n.divisors, f i = ∑ i ∈ (normalizedFactors n).toFinset.powerset, f i.val.prod
state_after: s : Finset ℕ
m n✝ p n : ℕ
h0 : n ≠ 0
α : Type u_1
inst✝ : AddCommMonoid α
f : ℕ → α
⊢ (Multiset.map (f ∘ fun x => x.val.prod) (normalizedFactors n).toFinset.powerset.val).sum =
    (Multiset.map (fun i => f i.val.prod) (normalizedFactors n).toFinset.powerset.val).sum

tactic: rfl
state_before: s : Finset ℕ
m n✝ p n : ℕ
h0 : n ≠ 0
α : Type u_1
inst✝ : AddCommMonoid α
f : ℕ → α
⊢ (Multiset.map (f ∘ fun x => x.val.prod) (normalizedFactors n).toFinset.powerset.val).sum =
    (Multiset.map (fun i => f i.val.prod) (normalizedFactors n).toFinset.powerset.val).sum
state_after: no goals
Theorem: Finset.mul_le_prod
File: Mathlib/Algebra/Order/BigOperators/Group/Finset.lean

tactic: simpa
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝¹ : CommMonoid M
inst✝ : OrderedCommMonoid N
f g : ι → N
s t : Finset ι
i j : ι
hf : ∀ i ∈ s, 1 ≤ f i
hi : i ∈ s
hj : j ∈ s
hne : i ≠ j
⊢ i ∉ {j}
state_after: no goals

tactic: rw [prod_cons, prod_singleton]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝¹ : CommMonoid M
inst✝ : OrderedCommMonoid N
f g : ι → N
s t : Finset ι
i j : ι
hf : ∀ i ∈ s, 1 ≤ f i
hi : i ∈ s
hj : j ∈ s
hne : i ≠ j
⊢ f i * f j = ∏ k ∈ cons i {j} ⋯, f k
state_after: no goals

tactic: refine prod_le_prod_of_subset_of_one_le' ?_ fun k hk _ ↦ hf k hk
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝¹ : CommMonoid M
inst✝ : OrderedCommMonoid N
f g : ι → N
s t : Finset ι
i j : ι
hf : ∀ i ∈ s, 1 ≤ f i
hi : i ∈ s
hj : j ∈ s
hne : i ≠ j
⊢ ∏ k ∈ cons i {j} ⋯, f k ≤ ∏ k ∈ s, f k
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝¹ : CommMonoid M
inst✝ : OrderedCommMonoid N
f g : ι → N
s t : Finset ι
i j : ι
hf : ∀ i ∈ s, 1 ≤ f i
hi : i ∈ s
hj : j ∈ s
hne : i ≠ j
⊢ cons i {j} ⋯ ⊆ s

tactic: simp [cons_subset, *]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
k : Type u_7
R : Type u_8
inst✝¹ : CommMonoid M
inst✝ : OrderedCommMonoid N
f g : ι → N
s t : Finset ι
i j : ι
hf : ∀ i ∈ s, 1 ≤ f i
hi : i ∈ s
hj : j ∈ s
hne : i ≠ j
⊢ cons i {j} ⋯ ⊆ s
state_after: no goals
Theorem: le_mul_of_one_le_left
File: Mathlib/Algebra/Order/GroupWithZero/Unbundled.lean

tactic: simpa only [one_mul] using mul_le_mul_of_nonneg_right h hb
state_before: α : Type u_1
a b c d : α
inst✝³ : MulOneClass α
inst✝² : Zero α
inst✝¹ : Preorder α
inst✝ : MulPosMono α
hb : 0 ≤ b
h : 1 ≤ a
⊢ b ≤ a * b
state_after: no goals
Theorem: Part.bind_assoc
File: Mathlib/Data/Part.lean

tactic: simp only [mem_bind_iff]
state_before: α : Type u_1
β : Type u_2
γ✝ : Type u_3
γ : Type u_4
f : Part α
g : α → Part β
k : β → Part γ
a : γ
⊢ a ∈ (f.bind g).bind k ↔ a ∈ f.bind fun x => (g x).bind k
state_after: α : Type u_1
β : Type u_2
γ✝ : Type u_3
γ : Type u_4
f : Part α
g : α → Part β
k : β → Part γ
a : γ
⊢ (∃ a_1, (∃ a ∈ f, a_1 ∈ g a) ∧ a ∈ k a_1) ↔ ∃ a_1 ∈ f, ∃ a_2 ∈ g a_1, a ∈ k a_2

tactic: exact ⟨fun ⟨_, ⟨_, h₁, h₂⟩, h₃⟩ => ⟨_, h₁, _, h₂, h₃⟩,
       fun ⟨_, h₁, _, h₂, h₃⟩ => ⟨_, ⟨_, h₁, h₂⟩, h₃⟩⟩
state_before: α : Type u_1
β : Type u_2
γ✝ : Type u_3
γ : Type u_4
f : Part α
g : α → Part β
k : β → Part γ
a : γ
⊢ (∃ a_1, (∃ a ∈ f, a_1 ∈ g a) ∧ a ∈ k a_1) ↔ ∃ a_1 ∈ f, ∃ a_2 ∈ g a_1, a ∈ k a_2
state_after: no goals
Theorem: map_nnratCast
File: Mathlib/Data/Rat/Cast/Defs.lean

tactic: simp_rw [NNRat.cast_def, map_div₀, map_natCast]
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
inst✝³ : FunLike F α β
inst✝² : DivisionSemiring α
inst✝¹ : DivisionSemiring β
inst✝ : RingHomClass F α β
f : F
q : ℚ≥0
⊢ f ↑q = ↑q
state_after: no goals
Theorem: Polynomial.derivative_intCast
File: Mathlib/Algebra/Polynomial/Derivative.lean

tactic: rw [← C_eq_intCast n]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n✝ : ℕ
inst✝ : Ring R
n : ℤ
⊢ derivative ↑n = 0
state_after: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n✝ : ℕ
inst✝ : Ring R
n : ℤ
⊢ derivative (C ↑n) = 0

tactic: exact derivative_C
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n✝ : ℕ
inst✝ : Ring R
n : ℤ
⊢ derivative (C ↑n) = 0
state_after: no goals
Theorem: isClosed_sUnion
File: Mathlib/Topology/AlexandrovDiscrete.lean

tactic: simp only [← isOpen_compl_iff, compl_sUnion] at hS ⊢
state_before: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : AlexandrovDiscrete α
S : Set (Set α)
f : ι → Set α
hS : ∀ s ∈ S, IsClosed s
⊢ IsClosed (⋃₀ S)
state_after: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : AlexandrovDiscrete α
S : Set (Set α)
f : ι → Set α
hS : ∀ s ∈ S, IsOpen sᶜ
⊢ IsOpen (⋂₀ (compl '' S))

tactic: exact isOpen_sInter <| forall_mem_image.2 hS
state_before: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : AlexandrovDiscrete α
S : Set (Set α)
f : ι → Set α
hS : ∀ s ∈ S, IsOpen sᶜ
⊢ IsOpen (⋂₀ (compl '' S))
state_after: no goals