1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: ContDiffBump.one_of_mem_closedBall
File: Mathlib/Analysis/Calculus/BumpFunction/Basic.lean

tactic: apply ContDiffBumpBase.eq_one _ _ f.one_lt_rOut_div_rIn
state_before: E : Type u_1
X : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c : E
f : ContDiffBump c
x : E
n : ℕ∞
hx : x ∈ closedBall c f.rIn
⊢ ↑f x = 1
state_after: case a
E : Type u_1
X : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c : E
f : ContDiffBump c
x : E
n : ℕ∞
hx : x ∈ closedBall c f.rIn
⊢ ‖(fun x => f.rIn⁻¹ • (x - c)) x‖ ≤ 1

tactic: simpa only [norm_smul, Real.norm_eq_abs, abs_inv, abs_of_nonneg f.rIn_pos.le, ← div_eq_inv_mul,
  div_le_one f.rIn_pos] using mem_closedBall_iff_norm.1 hx
state_before: case a
E : Type u_1
X : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c : E
f : ContDiffBump c
x : E
n : ℕ∞
hx : x ∈ closedBall c f.rIn
⊢ ‖(fun x => f.rIn⁻¹ • (x - c)) x‖ ≤ 1
state_after: no goals
Theorem: Rat.not_firstCountableTopology_opc
File: Mathlib/Topology/Instances/RatLemmas.lean

tactic: intro
state_before: p q : ℚ
s t : Set ℚ
⊢ ¬FirstCountableTopology ℚ∞
state_after: p q : ℚ
s t : Set ℚ
a✝ : FirstCountableTopology ℚ∞
⊢ False

tactic: exact not_countably_generated_nhds_infty_opc inferInstance
state_before: p q : ℚ
s t : Set ℚ
a✝ : FirstCountableTopology ℚ∞
⊢ False
state_after: no goals
Theorem: Polynomial.two_le_natDegree_of_nextCoeff_eraseLead
File: Mathlib/Algebra/Polynomial/EraseLead.lean

tactic: contrapose! hlead
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
hlead : f.eraseLead ≠ 0
hnext : f.nextCoeff = 0
⊢ 2 ≤ f.natDegree
state_after: R : Type u_1
inst✝ : Semiring R
f : R[X]
hnext : f.nextCoeff = 0
hlead : f.natDegree < 2
⊢ f.eraseLead = 0

tactic: rw [Nat.lt_succ_iff, Nat.le_one_iff_eq_zero_or_eq_one, natDegree_eq_zero, natDegree_eq_one]
  at hlead
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
hnext : f.nextCoeff = 0
hlead : f.natDegree < 2
⊢ f.eraseLead = 0
state_after: R : Type u_1
inst✝ : Semiring R
f : R[X]
hnext : f.nextCoeff = 0
hlead : (∃ x, C x = f) ∨ ∃ a, a ≠ 0 ∧ ∃ b, C a * X + C b = f
⊢ f.eraseLead = 0

tactic: obtain ⟨a, rfl⟩ | ⟨a, ha, b, rfl⟩ := hlead
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
hnext : f.nextCoeff = 0
hlead : (∃ x, C x = f) ∨ ∃ a, a ≠ 0 ∧ ∃ b, C a * X + C b = f
⊢ f.eraseLead = 0
state_after: case inl.intro
R : Type u_1
inst✝ : Semiring R
a : R
hnext : (C a).nextCoeff = 0
⊢ (C a).eraseLead = 0

case inr.intro.intro.intro
R : Type u_1
inst✝ : Semiring R
a : R
ha : a ≠ 0
b : R
hnext : (C a * X + C b).nextCoeff = 0
⊢ (C a * X + C b).eraseLead = 0

tactic: simp
state_before: case inl.intro
R : Type u_1
inst✝ : Semiring R
a : R
hnext : (C a).nextCoeff = 0
⊢ (C a).eraseLead = 0
state_after: no goals

tactic: rw [nextCoeff_C_mul_X_add_C ha] at hnext
state_before: case inr.intro.intro.intro
R : Type u_1
inst✝ : Semiring R
a : R
ha : a ≠ 0
b : R
hnext : (C a * X + C b).nextCoeff = 0
⊢ (C a * X + C b).eraseLead = 0
state_after: case inr.intro.intro.intro
R : Type u_1
inst✝ : Semiring R
a : R
ha : a ≠ 0
b : R
hnext : b = 0
⊢ (C a * X + C b).eraseLead = 0

tactic: subst b
state_before: case inr.intro.intro.intro
R : Type u_1
inst✝ : Semiring R
a : R
ha : a ≠ 0
b : R
hnext : b = 0
⊢ (C a * X + C b).eraseLead = 0
state_after: case inr.intro.intro.intro
R : Type u_1
inst✝ : Semiring R
a : R
ha : a ≠ 0
⊢ (C a * X + C 0).eraseLead = 0

tactic: simp
state_before: case inr.intro.intro.intro
R : Type u_1
inst✝ : Semiring R
a : R
ha : a ≠ 0
⊢ (C a * X + C 0).eraseLead = 0
state_after: no goals
Theorem: Complex.abs_eq_one_iff'
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

tactic: rw [abs_eq_one_iff]
state_before: a x z : ℂ
⊢ abs x = 1 ↔ ∃ θ ∈ Ioc (-π) π, cexp (↑θ * I) = x
state_after: a x z : ℂ
⊢ (∃ θ, cexp (↑θ * I) = x) ↔ ∃ θ ∈ Ioc (-π) π, cexp (↑θ * I) = x

tactic: constructor
state_before: a x z : ℂ
⊢ (∃ θ, cexp (↑θ * I) = x) ↔ ∃ θ ∈ Ioc (-π) π, cexp (↑θ * I) = x
state_after: case mp
a x z : ℂ
⊢ (∃ θ, cexp (↑θ * I) = x) → ∃ θ ∈ Ioc (-π) π, cexp (↑θ * I) = x

case mpr
a x z : ℂ
⊢ (∃ θ ∈ Ioc (-π) π, cexp (↑θ * I) = x) → ∃ θ, cexp (↑θ * I) = x

tactic: rintro ⟨θ, rfl⟩
state_before: case mp
a x z : ℂ
⊢ (∃ θ, cexp (↑θ * I) = x) → ∃ θ ∈ Ioc (-π) π, cexp (↑θ * I) = x
state_after: case mp.intro
a z : ℂ
θ : ℝ
⊢ ∃ θ_1 ∈ Ioc (-π) π, cexp (↑θ_1 * I) = cexp (↑θ * I)

tactic: refine ⟨toIocMod (mul_pos two_pos Real.pi_pos) (-π) θ, ?_, ?_⟩
state_before: case mp.intro
a z : ℂ
θ : ℝ
⊢ ∃ θ_1 ∈ Ioc (-π) π, cexp (↑θ_1 * I) = cexp (↑θ * I)
state_after: case mp.intro.refine_1
a z : ℂ
θ : ℝ
⊢ toIocMod ⋯ (-π) θ ∈ Ioc (-π) π

case mp.intro.refine_2
a z : ℂ
θ : ℝ
⊢ cexp (↑(toIocMod ⋯ (-π) θ) * I) = cexp (↑θ * I)

tactic: convert toIocMod_mem_Ioc _ _ _
state_before: case mp.intro.refine_1
a z : ℂ
θ : ℝ
⊢ toIocMod ⋯ (-π) θ ∈ Ioc (-π) π
state_after: case h.e'_5.h.e'_4
a z : ℂ
θ : ℝ
⊢ π = -π + 2 * π

tactic: ring
state_before: case h.e'_5.h.e'_4
a z : ℂ
θ : ℝ
⊢ π = -π + 2 * π
state_after: no goals

tactic: rw [eq_sub_of_add_eq $ toIocMod_add_toIocDiv_zsmul _ _ θ, ofReal_sub,
ofReal_zsmul, ofReal_mul, ofReal_ofNat, exp_mul_I_periodic.sub_zsmul_eq]
state_before: case mp.intro.refine_2
a z : ℂ
θ : ℝ
⊢ cexp (↑(toIocMod ⋯ (-π) θ) * I) = cexp (↑θ * I)
state_after: no goals

tactic: rintro ⟨θ, _, rfl⟩
state_before: case mpr
a x z : ℂ
⊢ (∃ θ ∈ Ioc (-π) π, cexp (↑θ * I) = x) → ∃ θ, cexp (↑θ * I) = x
state_after: case mpr.intro.intro
a z : ℂ
θ : ℝ
left✝ : θ ∈ Ioc (-π) π
⊢ ∃ θ_1, cexp (↑θ_1 * I) = cexp (↑θ * I)

tactic: exact ⟨θ, rfl⟩
state_before: case mpr.intro.intro
a z : ℂ
θ : ℝ
left✝ : θ ∈ Ioc (-π) π
⊢ ∃ θ_1, cexp (↑θ_1 * I) = cexp (↑θ * I)
state_after: no goals
Theorem: AlgebraicTopology.AlternatingFaceMapComplex.obj_d_eq
File: Mathlib/AlgebraicTopology/AlternatingFaceMapComplex.lean

tactic: apply ChainComplex.of_d
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X✝ Y X : SimplicialObject C
n : ℕ
⊢ (obj X).d (n + 1) n = ∑ i : Fin (n + 2), (-1) ^ ↑i • X.δ i
state_after: no goals
Theorem: ZMod.cast_zero
File: Mathlib/Data/ZMod/Basic.lean

tactic: delta ZMod.cast
state_before: n : ℕ
R : Type u_1
inst✝ : AddGroupWithOne R
⊢ cast 0 = 0
state_after: n : ℕ
R : Type u_1
inst✝ : AddGroupWithOne R
⊢ (match (motive := (x : ℕ) → ZMod x → R) n with
      | 0 => Int.cast
      | n.succ => fun i => ↑i.val)
      0 =
    0

tactic: cases n
state_before: n : ℕ
R : Type u_1
inst✝ : AddGroupWithOne R
⊢ (match (motive := (x : ℕ) → ZMod x → R) n with
      | 0 => Int.cast
      | n.succ => fun i => ↑i.val)
      0 =
    0
state_after: case zero
R : Type u_1
inst✝ : AddGroupWithOne R
⊢ (match (motive := (x : ℕ) → ZMod x → R) 0 with
      | 0 => Int.cast
      | n.succ => fun i => ↑i.val)
      0 =
    0

case succ
R : Type u_1
inst✝ : AddGroupWithOne R
n✝ : ℕ
⊢ (match (motive := (x : ℕ) → ZMod x → R) n✝ + 1 with
      | 0 => Int.cast
      | n.succ => fun i => ↑i.val)
      0 =
    0

tactic: exact Int.cast_zero
state_before: case zero
R : Type u_1
inst✝ : AddGroupWithOne R
⊢ (match (motive := (x : ℕ) → ZMod x → R) 0 with
      | 0 => Int.cast
      | n.succ => fun i => ↑i.val)
      0 =
    0
state_after: no goals

tactic: simp
state_before: case succ
R : Type u_1
inst✝ : AddGroupWithOne R
n✝ : ℕ
⊢ (match (motive := (x : ℕ) → ZMod x → R) n✝ + 1 with
      | 0 => Int.cast
      | n.succ => fun i => ↑i.val)
      0 =
    0
state_after: no goals
Theorem: CategoryTheory.yonedaEquiv_symm_map
File: Mathlib/CategoryTheory/Yoneda.lean

tactic: obtain ⟨u, rfl⟩ := yonedaEquiv.surjective t
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
X Y : Cᵒᵖ
f : X ⟶ Y
F : Cᵒᵖ ⥤ Type v₁
t : F.obj X
⊢ yonedaEquiv.symm (F.map f t) = yoneda.map f.unop ≫ yonedaEquiv.symm t
state_after: case intro
C : Type u₁
inst✝ : Category.{v₁, u₁} C
X Y : Cᵒᵖ
f : X ⟶ Y
F : Cᵒᵖ ⥤ Type v₁
u : yoneda.obj X.unop ⟶ F
⊢ yonedaEquiv.symm (F.map f (yonedaEquiv u)) = yoneda.map f.unop ≫ yonedaEquiv.symm (yonedaEquiv u)

tactic: rw [yonedaEquiv_naturality', Equiv.symm_apply_apply, Equiv.symm_apply_apply]
state_before: case intro
C : Type u₁
inst✝ : Category.{v₁, u₁} C
X Y : Cᵒᵖ
f : X ⟶ Y
F : Cᵒᵖ ⥤ Type v₁
u : yoneda.obj X.unop ⟶ F
⊢ yonedaEquiv.symm (F.map f (yonedaEquiv u)) = yoneda.map f.unop ≫ yonedaEquiv.symm (yonedaEquiv u)
state_after: no goals
Theorem: LieSubmodule.toEnd_restrict_eq_toEnd
File: Mathlib/Algebra/Lie/OfAssociative.lean

tactic: ext
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N : LieSubmodule R L M
x : L
h : optParam (∀ (m : M) (hm : m ∈ ↑N), ((toEnd R L M) x ∘ₗ (↑N).subtype) ⟨m, hm⟩ ∈ ↑N) ⋯
⊢ LinearMap.restrict ((toEnd R L M) x) h = (toEnd R L ↥↑N) x
state_after: case h.a
R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N : LieSubmodule R L M
x : L
h : optParam (∀ (m : M) (hm : m ∈ ↑N), ((toEnd R L M) x ∘ₗ (↑N).subtype) ⟨m, hm⟩ ∈ ↑N) ⋯
x✝ : ↥↑N
⊢ ↑((LinearMap.restrict ((toEnd R L M) x) h) x✝) = ↑(((toEnd R L ↥↑N) x) x✝)

tactic: simp [LinearMap.restrict_apply]
state_before: case h.a
R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N : LieSubmodule R L M
x : L
h : optParam (∀ (m : M) (hm : m ∈ ↑N), ((toEnd R L M) x ∘ₗ (↑N).subtype) ⟨m, hm⟩ ∈ ↑N) ⋯
x✝ : ↥↑N
⊢ ↑((LinearMap.restrict ((toEnd R L M) x) h) x✝) = ↑(((toEnd R L ↥↑N) x) x✝)
state_after: no goals
Theorem: Computation.LiftRelAux.ret_right
File: Mathlib/Data/Seq/Computation.lean

tactic: rw [← LiftRelAux.swap, LiftRelAux.ret_left]
state_before: α : Type u
β : Type v
γ : Type w
R✝ : α → β → Prop
C✝ : Computation α → Computation β → Prop
R : α → β → Prop
C : Computation α → Computation β → Prop
b : β
ca : Computation α
⊢ LiftRelAux R C ca.destruct (Sum.inl b) ↔ ∃ a, a ∈ ca ∧ R a b
state_after: no goals
Theorem: convexJoin_singletons
File: Mathlib/Analysis/Convex/Join.lean

tactic: simp
state_before: ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝² : OrderedSemiring 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : Module 𝕜 E
s t s₁ s₂ t₁ t₂ u : Set E
x✝ y x : E
⊢ convexJoin 𝕜 {x} {y} = segment 𝕜 x y
state_after: no goals
Theorem: Finset.noncommProd_cons
File: Mathlib/Data/Finset/NoncommProd.lean

tactic: simp_rw [noncommProd, Finset.cons_val, Multiset.map_cons, Multiset.noncommProd_cons]
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝¹ : Monoid β
inst✝ : Monoid γ
s : Finset α
a : α
f : α → β
ha : a ∉ s
comm : (↑(cons a s ha)).Pairwise fun a b => Commute (f a) (f b)
⊢ (cons a s ha).noncommProd f comm = f a * s.noncommProd f ⋯
state_after: no goals
Theorem: ProbabilityTheory.IsRatCondKernelCDF.mono
File: Mathlib/Probability/Kernel/Disintegration/CdfToKernel.lean

tactic: filter_upwards [hf.isRatStieltjesPoint_ae a] with b hb using hb.mono
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : ↥(kernel α (β × ℝ))
ν : ↥(kernel α β)
f : α × β → ℚ → ℝ
hf : IsRatCondKernelCDF f κ ν
a : α
⊢ ∀ᵐ (b : β) ∂ν a, Monotone (f (a, b))
state_after: no goals
Theorem: Rat.inv_natCast_den_of_pos
File: Mathlib/Data/Rat/Lemmas.lean

tactic: rw [← Int.ofNat_inj, ← Int.cast_natCast a, inv_intCast_den_of_pos]
state_before: a : ℕ
ha0 : 0 < a
⊢ (↑a)⁻¹.den = a
state_after: a : ℕ
ha0 : 0 < a
⊢ 0 < ↑a

tactic: rwa [Int.natCast_pos]
state_before: a : ℕ
ha0 : 0 < a
⊢ 0 < ↑a
state_after: no goals
Theorem: Basis.orientation_neg_single
File: Mathlib/LinearAlgebra/Orientation.lean

tactic: rw [orientation_unitsSMul, Finset.prod_update_of_mem (Finset.mem_univ _)]
state_before: R : Type u_1
inst✝⁴ : LinearOrderedCommRing R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
ι : Type u_3
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
e : Basis ι R M
i : ι
⊢ (e.unitsSMul (Function.update 1 i (-1))).orientation = -e.orientation
state_after: R : Type u_1
inst✝⁴ : LinearOrderedCommRing R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
ι : Type u_3
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
e : Basis ι R M
i : ι
⊢ (-1 * ∏ x ∈ Finset.univ \ {i}, 1 x)⁻¹ • e.orientation = -e.orientation

tactic: simp
state_before: R : Type u_1
inst✝⁴ : LinearOrderedCommRing R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
ι : Type u_3
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
e : Basis ι R M
i : ι
⊢ (-1 * ∏ x ∈ Finset.univ \ {i}, 1 x)⁻¹ • e.orientation = -e.orientation
state_after: no goals
Theorem: DihedralGroup.r_one_pow
File: Mathlib/GroupTheory/SpecificGroups/Dihedral.lean

tactic: induction' k with k IH
state_before: n k : ℕ
⊢ r 1 ^ k = r ↑k
state_after: case zero
n : ℕ
⊢ r 1 ^ 0 = r ↑0

case succ
n k : ℕ
IH : r 1 ^ k = r ↑k
⊢ r 1 ^ (k + 1) = r ↑(k + 1)

tactic: rw [Nat.cast_zero]
state_before: case zero
n : ℕ
⊢ r 1 ^ 0 = r ↑0
state_after: case zero
n : ℕ
⊢ r 1 ^ 0 = r 0

tactic: rfl
state_before: case zero
n : ℕ
⊢ r 1 ^ 0 = r 0
state_after: no goals

tactic: rw [pow_succ', IH, r_mul_r]
state_before: case succ
n k : ℕ
IH : r 1 ^ k = r ↑k
⊢ r 1 ^ (k + 1) = r ↑(k + 1)
state_after: case succ
n k : ℕ
IH : r 1 ^ k = r ↑k
⊢ r (1 + ↑k) = r ↑(k + 1)

tactic: congr 1
state_before: case succ
n k : ℕ
IH : r 1 ^ k = r ↑k
⊢ r (1 + ↑k) = r ↑(k + 1)
state_after: case succ.e_a
n k : ℕ
IH : r 1 ^ k = r ↑k
⊢ 1 + ↑k = ↑(k + 1)

tactic: norm_cast
state_before: case succ.e_a
n k : ℕ
IH : r 1 ^ k = r ↑k
⊢ 1 + ↑k = ↑(k + 1)
state_after: case succ.e_a
n k : ℕ
IH : r 1 ^ k = r ↑k
⊢ ↑(1 + k) = ↑(k + 1)

tactic: rw [Nat.one_add]
state_before: case succ.e_a
n k : ℕ
IH : r 1 ^ k = r ↑k
⊢ ↑(1 + k) = ↑(k + 1)
state_after: no goals
Theorem: Algebra.IsIntegral.finite
File: Mathlib/RingTheory/IntegralClosure.lean

tactic: apply hs ▸ fg_adjoin_of_finite s.finite_toSet fun x _ ↦ Algebra.IsIntegral.isIntegral x
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
inst✝ : Algebra.IsIntegral R A
h' : FiniteType R A
s : Finset A
hs : adjoin R ↑s = ⊤
⊢ ⊤.FG
state_after: no goals
Theorem: cfc_polynomial
File: Mathlib/Topology/ContinuousFunction/FunctionalCalculus.lean

tactic: rw [cfc_map_polynomial .., cfc_id' ..]
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : MetricSpace R
inst✝⁶ : TopologicalSemiring R
inst✝⁵ : ContinuousStar R
inst✝⁴ : TopologicalSpace A
inst✝³ : Ring A
inst✝² : StarRing A
inst✝¹ : Algebra R A
inst✝ : ContinuousFunctionalCalculus R p
f g : R → R
a✝ : A
ha✝ : autoParam (p a✝) _auto✝
hf : autoParam (ContinuousOn f (spectrum R a✝)) _auto✝
hg : autoParam (ContinuousOn g (spectrum R a✝)) _auto✝
q : R[X]
a : A
ha : autoParam (p a) _auto✝
⊢ cfc (fun a => eval a q) a = (aeval a) q
state_after: no goals
Theorem: AddCircle.ergodic_nsmul_add
File: Mathlib/Dynamics/Ergodic/AddCircle.lean

tactic: simp [h]
state_before: T : ℝ
hT : Fact (0 < T)
x : AddCircle T
n : ℕ
h : 1 < n
⊢ 1 < |↑n|
state_after: no goals
Theorem: SubgroupClass.subtype_comp_inclusion
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: ext
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁷ : Group G
inst✝⁶ : Group G'
inst✝⁵ : Group G''
A : Type u_4
inst✝⁴ : AddGroup A
M : Type u_5
S : Type u_6
inst✝³ : DivInvMonoid M
inst✝² : SetLike S M
hSM : SubgroupClass S M
H✝ K✝ : S
inst✝¹ : SetLike S G
inst✝ : SubgroupClass S G
H K : S
hH : H ≤ K
⊢ (↑K).comp (inclusion hH) = ↑H
state_after: case h
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁷ : Group G
inst✝⁶ : Group G'
inst✝⁵ : Group G''
A : Type u_4
inst✝⁴ : AddGroup A
M : Type u_5
S : Type u_6
inst✝³ : DivInvMonoid M
inst✝² : SetLike S M
hSM : SubgroupClass S M
H✝ K✝ : S
inst✝¹ : SetLike S G
inst✝ : SubgroupClass S G
H K : S
hH : H ≤ K
x✝ : ↥H
⊢ ((↑K).comp (inclusion hH)) x✝ = ↑H x✝

tactic: simp only [MonoidHom.comp_apply, coeSubtype, coe_inclusion]
state_before: case h
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁷ : Group G
inst✝⁶ : Group G'
inst✝⁵ : Group G''
A : Type u_4
inst✝⁴ : AddGroup A
M : Type u_5
S : Type u_6
inst✝³ : DivInvMonoid M
inst✝² : SetLike S M
hSM : SubgroupClass S M
H✝ K✝ : S
inst✝¹ : SetLike S G
inst✝ : SubgroupClass S G
H K : S
hH : H ≤ K
x✝ : ↥H
⊢ ((↑K).comp (inclusion hH)) x✝ = ↑H x✝
state_after: no goals
Theorem: finprod_mem_inter_mul_diff'
File: Mathlib/Algebra/BigOperators/Finprod.lean

tactic: rw [← finprod_mem_union', inter_union_diff]
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 g : α → M
a b : α
s t✝ t : Set α
h : (s ∩ mulSupport f).Finite
⊢ (∏ᶠ (i : α) (_ : i ∈ s ∩ t), f i) * ∏ᶠ (i : α) (_ : i ∈ s \ t), f i = ∏ᶠ (i : α) (_ : i ∈ s), f i
state_after: case hst
α : 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 g : α → M
a b : α
s t✝ t : Set α
h : (s ∩ mulSupport f).Finite
⊢ Disjoint (s ∩ t) (s \ t)

case hs
α : 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 g : α → M
a b : α
s t✝ t : Set α
h : (s ∩ mulSupport f).Finite
⊢ (s ∩ t ∩ mulSupport f).Finite

case ht
α : 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 g : α → M
a b : α
s t✝ t : Set α
h : (s ∩ mulSupport f).Finite
⊢ (s \ t ∩ mulSupport f).Finite

tactic: exacts [h.subset fun x hx => ⟨hx.1.1, hx.2⟩, h.subset fun x hx => ⟨hx.1.1, hx.2⟩]
state_before: case hs
α : 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 g : α → M
a b : α
s t✝ t : Set α
h : (s ∩ mulSupport f).Finite
⊢ (s ∩ t ∩ mulSupport f).Finite

case ht
α : 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 g : α → M
a b : α
s t✝ t : Set α
h : (s ∩ mulSupport f).Finite
⊢ (s \ t ∩ mulSupport f).Finite
state_after: no goals

tactic: rw [disjoint_iff_inf_le]
state_before: case hst
α : 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 g : α → M
a b : α
s t✝ t : Set α
h : (s ∩ mulSupport f).Finite
⊢ Disjoint (s ∩ t) (s \ t)
state_after: case hst
α : 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 g : α → M
a b : α
s t✝ t : Set α
h : (s ∩ mulSupport f).Finite
⊢ s ∩ t ⊓ s \ t ≤ ⊥

tactic: exact fun x hx => hx.2.2 hx.1.2
state_before: case hst
α : 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 g : α → M
a b : α
s t✝ t : Set α
h : (s ∩ mulSupport f).Finite
⊢ s ∩ t ⊓ s \ t ≤ ⊥
state_after: no goals
Theorem: Algebra.trace_complex_apply
File: Mathlib/RingTheory/Complex.lean

tactic: rw [Algebra.trace_eq_matrix_trace Complex.basisOneI, Algebra.leftMulMatrix_complex,
  Matrix.trace_fin_two]
state_before: z : ℂ
⊢ (trace ℝ ℂ) z = 2 * z.re
state_after: z : ℂ
⊢ Matrix.of ![![z.re, -z.im], ![z.im, z.re]] 0 0 + Matrix.of ![![z.re, -z.im], ![z.im, z.re]] 1 1 = 2 * z.re

tactic: exact (two_mul _).symm
state_before: z : ℂ
⊢ Matrix.of ![![z.re, -z.im], ![z.im, z.re]] 0 0 + Matrix.of ![![z.re, -z.im], ![z.im, z.re]] 1 1 = 2 * z.re
state_after: no goals
Theorem: Finset.zero_smul_finset
File: Mathlib/Data/Finset/Pointwise.lean

tactic: simpa using @Set.zero_smul_set α _ _ _ _ _ h
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Zero α
inst✝² : Zero β
inst✝¹ : SMulWithZero α β
inst✝ : DecidableEq β
s✝ : Finset α
t s : Finset β
h : s.Nonempty
⊢ ↑(0 • s) = ↑0
state_after: no goals
Theorem: Set.ite_inter
File: Mathlib/Data/Set/Basic.lean

tactic: rw [ite_inter_inter, ite_same]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s✝ s₁✝ s₂✝ t✝ t₁ t₂ u t s₁ s₂ s : Set α
⊢ t.ite (s₁ ∩ s) (s₂ ∩ s) = t.ite s₁ s₂ ∩ s
state_after: no goals
Theorem: integrableOn_exp_Iic
File: Mathlib/Analysis/SpecialFunctions/ImproperIntegrals.lean

tactic: refine
  integrableOn_Iic_of_intervalIntegral_norm_bounded (exp c) c
    (fun y => intervalIntegrable_exp.1) tendsto_id
    (eventually_of_mem (Iic_mem_atBot 0) fun y _ => ?_)
state_before: c : ℝ
⊢ IntegrableOn rexp (Iic c) volume
state_after: c y : ℝ
x✝ : y ∈ Iic 0
⊢ ∫ (x : ℝ) in id y..c, ‖rexp x‖ ≤ rexp c

tactic: simp_rw [norm_of_nonneg (exp_pos _).le, integral_exp, sub_le_self_iff]
state_before: c y : ℝ
x✝ : y ∈ Iic 0
⊢ ∫ (x : ℝ) in id y..c, ‖rexp x‖ ≤ rexp c
state_after: c y : ℝ
x✝ : y ∈ Iic 0
⊢ 0 ≤ rexp (id y)

tactic: exact (exp_pos _).le
state_before: c y : ℝ
x✝ : y ∈ Iic 0
⊢ 0 ≤ rexp (id y)
state_after: no goals
Theorem: tsum_mul_tsum_eq_tsum_sum_antidiagonal
File: Mathlib/Topology/Algebra/InfiniteSum/Ring.lean

tactic: conv_rhs => congr; ext; rw [← Finset.sum_finset_coe, ← tsum_fintype]
state_before: ι : Type u_1
κ : Type u_2
R : Type u_3
α : Type u_4
A : Type u_5
inst✝⁵ : AddCommMonoid A
inst✝⁴ : HasAntidiagonal A
inst✝³ : TopologicalSpace α
inst✝² : NonUnitalNonAssocSemiring α
f g : A → α
inst✝¹ : T3Space α
inst✝ : TopologicalSemiring α
hf : Summable f
hg : Summable g
hfg : Summable fun x => f x.1 * g x.2
⊢ (∑' (n : A), f n) * ∑' (n : A), g n = ∑' (n : A), ∑ kl ∈ antidiagonal n, f kl.1 * g kl.2
state_after: ι : Type u_1
κ : Type u_2
R : Type u_3
α : Type u_4
A : Type u_5
inst✝⁵ : AddCommMonoid A
inst✝⁴ : HasAntidiagonal A
inst✝³ : TopologicalSpace α
inst✝² : NonUnitalNonAssocSemiring α
f g : A → α
inst✝¹ : T3Space α
inst✝ : TopologicalSemiring α
hf : Summable f
hg : Summable g
hfg : Summable fun x => f x.1 * g x.2
⊢ (∑' (n : A), f n) * ∑' (n : A), g n = ∑' (x : A) (b : ↑↑(antidiagonal x)), f (↑b).1 * g (↑b).2

tactic: rw [tsum_mul_tsum hf hg hfg, ← sigmaAntidiagonalEquivProd.tsum_eq (_ : A × A → α)]
state_before: ι : Type u_1
κ : Type u_2
R : Type u_3
α : Type u_4
A : Type u_5
inst✝⁵ : AddCommMonoid A
inst✝⁴ : HasAntidiagonal A
inst✝³ : TopologicalSpace α
inst✝² : NonUnitalNonAssocSemiring α
f g : A → α
inst✝¹ : T3Space α
inst✝ : TopologicalSemiring α
hf : Summable f
hg : Summable g
hfg : Summable fun x => f x.1 * g x.2
⊢ (∑' (n : A), f n) * ∑' (n : A), g n = ∑' (x : A) (b : ↑↑(antidiagonal x)), f (↑b).1 * g (↑b).2
state_after: ι : Type u_1
κ : Type u_2
R : Type u_3
α : Type u_4
A : Type u_5
inst✝⁵ : AddCommMonoid A
inst✝⁴ : HasAntidiagonal A
inst✝³ : TopologicalSpace α
inst✝² : NonUnitalNonAssocSemiring α
f g : A → α
inst✝¹ : T3Space α
inst✝ : TopologicalSemiring α
hf : Summable f
hg : Summable g
hfg : Summable fun x => f x.1 * g x.2
⊢ ∑' (c : (n : A) × { x // x ∈ antidiagonal n }),
      f (sigmaAntidiagonalEquivProd c).1 * g (sigmaAntidiagonalEquivProd c).2 =
    ∑' (x : A) (b : ↑↑(antidiagonal x)), f (↑b).1 * g (↑b).2

tactic: exact
  tsum_sigma' (fun n ↦ (hasSum_fintype _).summable)
    (summable_mul_prod_iff_summable_mul_sigma_antidiagonal.mp hfg)
state_before: ι : Type u_1
κ : Type u_2
R : Type u_3
α : Type u_4
A : Type u_5
inst✝⁵ : AddCommMonoid A
inst✝⁴ : HasAntidiagonal A
inst✝³ : TopologicalSpace α
inst✝² : NonUnitalNonAssocSemiring α
f g : A → α
inst✝¹ : T3Space α
inst✝ : TopologicalSemiring α
hf : Summable f
hg : Summable g
hfg : Summable fun x => f x.1 * g x.2
⊢ ∑' (c : (n : A) × { x // x ∈ antidiagonal n }),
      f (sigmaAntidiagonalEquivProd c).1 * g (sigmaAntidiagonalEquivProd c).2 =
    ∑' (x : A) (b : ↑↑(antidiagonal x)), f (↑b).1 * g (↑b).2
state_after: no goals