1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Fintype.card_subtype_or
File: Mathlib/Data/Fintype/Sum.lean

tactic: classical
  convert Fintype.card_le_of_embedding (subtypeOrLeftEmbedding p q)
  rw [Fintype.card_sum]
state_before: α : Type u_1
β : Type u_2
p q : α → Prop
inst✝² : Fintype { x // p x }
inst✝¹ : Fintype { x // q x }
inst✝ : Fintype { x // p x ∨ q x }
⊢ card { x // p x ∨ q x } ≤ card { x // p x } + card { x // q x }
state_after: no goals

tactic: convert Fintype.card_le_of_embedding (subtypeOrLeftEmbedding p q)
state_before: α : Type u_1
β : Type u_2
p q : α → Prop
inst✝² : Fintype { x // p x }
inst✝¹ : Fintype { x // q x }
inst✝ : Fintype { x // p x ∨ q x }
⊢ card { x // p x ∨ q x } ≤ card { x // p x } + card { x // q x }
state_after: case h.e'_4
α : Type u_1
β : Type u_2
p q : α → Prop
inst✝² : Fintype { x // p x }
inst✝¹ : Fintype { x // q x }
inst✝ : Fintype { x // p x ∨ q x }
⊢ card { x // p x } + card { x // q x } = card ({ x // p x } ⊕ { x // q x })

tactic: rw [Fintype.card_sum]
state_before: case h.e'_4
α : Type u_1
β : Type u_2
p q : α → Prop
inst✝² : Fintype { x // p x }
inst✝¹ : Fintype { x // q x }
inst✝ : Fintype { x // p x ∨ q x }
⊢ card { x // p x } + card { x // q x } = card ({ x // p x } ⊕ { x // q x })
state_after: no goals
Theorem: hasStrictDerivAt_exp_smul_const_of_mem_ball
File: Mathlib/Analysis/SpecialFunctions/Exponential.lean

tactic: simpa using (hasStrictFDerivAt_exp_smul_const_of_mem_ball 𝕂 x t htx).hasStrictDerivAt
state_before: 𝕂 : Type u_1
𝕊 : Type u_2
𝔸 : Type u_3
inst✝⁹ : NontriviallyNormedField 𝕂
inst✝⁸ : CharZero 𝕂
inst✝⁷ : NormedCommRing 𝕊
inst✝⁶ : NormedRing 𝔸
inst✝⁵ : NormedSpace 𝕂 𝕊
inst✝⁴ : NormedAlgebra 𝕂 𝔸
inst✝³ : Algebra 𝕊 𝔸
inst✝² : ContinuousSMul 𝕊 𝔸
inst✝¹ : IsScalarTower 𝕂 𝕊 𝔸
inst✝ : CompleteSpace 𝔸
x : 𝔸
t : 𝕂
htx : t • x ∈ EMetric.ball 0 (expSeries 𝕂 𝔸).radius
⊢ HasStrictDerivAt (fun u => exp 𝕂 (u • x)) (exp 𝕂 (t • x) * x) t
state_after: no goals
Theorem: Polynomial.mul_scaleRoots'
File: Mathlib/RingTheory/Polynomial/ScaleRoots.lean

tactic: rw [← mul_scaleRoots, natDegree_mul' h, tsub_self, pow_zero, one_smul]
state_before: R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝³ : Semiring S
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Field K
p q : R[X]
r : R
h : p.leadingCoeff * q.leadingCoeff ≠ 0
⊢ (p * q).scaleRoots r = p.scaleRoots r * q.scaleRoots r
state_after: no goals
Theorem: autEquivZmod_symm_apply_intCast
File: Mathlib/FieldTheory/KummerExtension.lean

tactic: have hn := Nat.pos_iff_ne_zero.mpr (ne_zero_of_irreducible_X_pow_sub_C H)
state_before: K : Type u
inst✝³ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
hα : α ^ n = (algebraMap K L) a
ζ : K
hζ : IsPrimitiveRoot ζ n
m : ℤ
⊢ ((autEquivZmod H L hζ).symm (Multiplicative.ofAdd ↑m)) α = ζ ^ m • α
state_after: K : Type u
inst✝³ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn✝ : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
hα : α ^ n = (algebraMap K L) a
ζ : K
hζ : IsPrimitiveRoot ζ n
m : ℤ
hn : 0 < n
⊢ ((autEquivZmod H L hζ).symm (Multiplicative.ofAdd ↑m)) α = ζ ^ m • α

tactic: rw [← autEquivRootsOfUnity_smul ⟨ζ, (mem_primitiveRoots hn).mpr hζ⟩ hn H L hα]
state_before: K : Type u
inst✝³ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn✝ : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
hα : α ^ n = (algebraMap K L) a
ζ : K
hζ : IsPrimitiveRoot ζ n
m : ℤ
hn : 0 < n
⊢ ((autEquivZmod H L hζ).symm (Multiplicative.ofAdd ↑m)) α = ζ ^ m • α
state_after: K : Type u
inst✝³ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn✝ : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
hα : α ^ n = (algebraMap K L) a
ζ : K
hζ : IsPrimitiveRoot ζ n
m : ℤ
hn : 0 < n
⊢ (autEquivRootsOfUnity ⋯ hn H L) ((autEquivZmod H L hζ).symm (Multiplicative.ofAdd ↑m)) • α = ζ ^ m • α

tactic: simp [MulEquiv.subgroupCongr_symm_apply, Subgroup.smul_def, Units.smul_def, autEquivZmod]
state_before: K : Type u
inst✝³ : Field K
n : ℕ
hζ✝ : (primitiveRoots n K).Nonempty
hn✝ : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
α : L
hα : α ^ n = (algebraMap K L) a
ζ : K
hζ : IsPrimitiveRoot ζ n
m : ℤ
hn : 0 < n
⊢ (autEquivRootsOfUnity ⋯ hn H L) ((autEquivZmod H L hζ).symm (Multiplicative.ofAdd ↑m)) • α = ζ ^ m • α
state_after: no goals
Theorem: concaveOn_of_deriv2_nonpos
File: Mathlib/Analysis/Convex/Deriv.lean

tactic: rwa [interior_interior]
state_before: D : Set ℝ
hD : Convex ℝ D
f : ℝ → ℝ
hf : ContinuousOn f D
hf' : DifferentiableOn ℝ f (interior D)
hf'' : DifferentiableOn ℝ (deriv f) (interior D)
hf''_nonpos : ∀ x ∈ interior D, deriv^[2] f x ≤ 0
⊢ DifferentiableOn ℝ (deriv f) (interior (interior D))
state_after: no goals

tactic: rwa [interior_interior]
state_before: D : Set ℝ
hD : Convex ℝ D
f : ℝ → ℝ
hf : ContinuousOn f D
hf' : DifferentiableOn ℝ f (interior D)
hf'' : DifferentiableOn ℝ (deriv f) (interior D)
hf''_nonpos : ∀ x ∈ interior D, deriv^[2] f x ≤ 0
⊢ ∀ x ∈ interior (interior D), deriv (deriv f) x ≤ 0
state_after: no goals
Theorem: CategoryTheory.Limits.lift_comp_kernelIsoOfEq_inv
File: Mathlib/CategoryTheory/Limits/Shapes/Kernels.lean

tactic: simp [h, he]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
X Y : C
f✝ : X ⟶ Y
inst✝² : HasKernel f✝
Z : C
f g : X ⟶ Y
inst✝¹ : HasKernel f
inst✝ : HasKernel g
h : f = g
e : Z ⟶ X
he : e ≫ g = 0
⊢ e ≫ f = 0
state_after: no goals

tactic: cases h
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
X Y : C
f✝ : X ⟶ Y
inst✝² : HasKernel f✝
Z : C
f g : X ⟶ Y
inst✝¹ : HasKernel f
inst✝ : HasKernel g
h : f = g
e : Z ⟶ X
he : e ≫ g = 0
⊢ kernel.lift g e he ≫ (kernelIsoOfEq h).inv = kernel.lift f e ⋯
state_after: case refl
C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
X Y : C
f✝ : X ⟶ Y
inst✝² : HasKernel f✝
Z : C
f : X ⟶ Y
inst✝¹ : HasKernel f
e : Z ⟶ X
inst✝ : HasKernel f
he : e ≫ f = 0
⊢ kernel.lift f e he ≫ (kernelIsoOfEq ⋯).inv = kernel.lift f e ⋯

tactic: simp
state_before: case refl
C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
X Y : C
f✝ : X ⟶ Y
inst✝² : HasKernel f✝
Z : C
f : X ⟶ Y
inst✝¹ : HasKernel f
e : Z ⟶ X
inst✝ : HasKernel f
he : e ≫ f = 0
⊢ kernel.lift f e he ≫ (kernelIsoOfEq ⋯).inv = kernel.lift f e ⋯
state_after: no goals
Theorem: Nat.sum_four_squares
File: Mathlib/NumberTheory/SumFourSquares.lean

tactic: induction n using Nat.recOnMul with
| h0 => exact ⟨0, 0, 0, 0, rfl⟩
| h1 => exact ⟨1, 0, 0, 0, rfl⟩
| hp p hp => exact hp.sum_four_squares
| h m n hm hn =>
  rcases hm with ⟨a, b, c, d, rfl⟩
  rcases hn with ⟨w, x, y, z, rfl⟩
  exact ⟨_, _, _, _, euler_four_squares _ _ _ _ _ _ _ _⟩
state_before: n : ℕ
⊢ ∃ a b c d, a ^ 2 + b ^ 2 + c ^ 2 + d ^ 2 = n
state_after: no goals

tactic: exact ⟨0, 0, 0, 0, rfl⟩
state_before: case h0

⊢ ∃ a b c d, a ^ 2 + b ^ 2 + c ^ 2 + d ^ 2 = 0
state_after: no goals

tactic: exact ⟨1, 0, 0, 0, rfl⟩
state_before: case h1

⊢ ∃ a b c d, a ^ 2 + b ^ 2 + c ^ 2 + d ^ 2 = 1
state_after: no goals

tactic: exact hp.sum_four_squares
state_before: case hp
p : ℕ
hp : Prime p
⊢ ∃ a b c d, a ^ 2 + b ^ 2 + c ^ 2 + d ^ 2 = p
state_after: no goals

tactic: rcases hm with ⟨a, b, c, d, rfl⟩
state_before: case h
m n : ℕ
hm : ∃ a b c d, a ^ 2 + b ^ 2 + c ^ 2 + d ^ 2 = m
hn : ∃ a b c d, a ^ 2 + b ^ 2 + c ^ 2 + d ^ 2 = n
⊢ ∃ a b c d, a ^ 2 + b ^ 2 + c ^ 2 + d ^ 2 = m * n
state_after: case h.intro.intro.intro.intro
n : ℕ
hn : ∃ a b c d, a ^ 2 + b ^ 2 + c ^ 2 + d ^ 2 = n
a b c d : ℕ
⊢ ∃ a_1 b_1 c_1 d_1, a_1 ^ 2 + b_1 ^ 2 + c_1 ^ 2 + d_1 ^ 2 = (a ^ 2 + b ^ 2 + c ^ 2 + d ^ 2) * n

tactic: rcases hn with ⟨w, x, y, z, rfl⟩
state_before: case h.intro.intro.intro.intro
n : ℕ
hn : ∃ a b c d, a ^ 2 + b ^ 2 + c ^ 2 + d ^ 2 = n
a b c d : ℕ
⊢ ∃ a_1 b_1 c_1 d_1, a_1 ^ 2 + b_1 ^ 2 + c_1 ^ 2 + d_1 ^ 2 = (a ^ 2 + b ^ 2 + c ^ 2 + d ^ 2) * n
state_after: case h.intro.intro.intro.intro.intro.intro.intro.intro
a b c d w x y z : ℕ
⊢ ∃ a_1 b_1 c_1 d_1,
    a_1 ^ 2 + b_1 ^ 2 + c_1 ^ 2 + d_1 ^ 2 = (a ^ 2 + b ^ 2 + c ^ 2 + d ^ 2) * (w ^ 2 + x ^ 2 + y ^ 2 + z ^ 2)

tactic: exact ⟨_, _, _, _, euler_four_squares _ _ _ _ _ _ _ _⟩
state_before: case h.intro.intro.intro.intro.intro.intro.intro.intro
a b c d w x y z : ℕ
⊢ ∃ a_1 b_1 c_1 d_1,
    a_1 ^ 2 + b_1 ^ 2 + c_1 ^ 2 + d_1 ^ 2 = (a ^ 2 + b ^ 2 + c ^ 2 + d ^ 2) * (w ^ 2 + x ^ 2 + y ^ 2 + z ^ 2)
state_after: no goals
Theorem: zero_mem_preCantorSet
File: Mathlib/Topology/Instances/CantorSet.lean

tactic: induction n with
| zero =>
  simp [preCantorSet]
| succ n ih =>
  exact Or.inl ⟨0, ih, by simp only [zero_div]⟩
state_before: n : ℕ
⊢ 0 ∈ preCantorSet n
state_after: no goals

tactic: simp [preCantorSet]
state_before: case zero

⊢ 0 ∈ preCantorSet 0
state_after: no goals

tactic: exact Or.inl ⟨0, ih, by simp only [zero_div]⟩
state_before: case succ
n : ℕ
ih : 0 ∈ preCantorSet n
⊢ 0 ∈ preCantorSet (n + 1)
state_after: no goals

tactic: simp only [zero_div]
state_before: n : ℕ
ih : 0 ∈ preCantorSet n
⊢ (fun x => x / 3) 0 = 0
state_after: no goals
Theorem: MonoidAlgebra.finiteType_iff_group_fg
File: Mathlib/RingTheory/FiniteType.lean

tactic: simpa [Group.fg_iff_monoid_fg] using finiteType_iff_fg
state_before: R : Type u_1
M : Type u_2
inst✝³ : Monoid M
G : Type u_3
inst✝² : Group G
inst✝¹ : CommRing R
inst✝ : Nontrivial R
⊢ FiniteType R (MonoidAlgebra R G) ↔ Group.FG G
state_after: no goals
Theorem: Nat.fib_bit1_succ
File: Mathlib/Data/Nat/Fib/Basic.lean

tactic: rw [Nat.bit1_eq_succ_bit0, bit0_eq_two_mul, fib_two_mul_add_two]
state_before: n : ℕ
⊢ fib (bit1 n + 1) = fib (n + 1) * (2 * fib n + fib (n + 1))
state_after: no goals
Theorem: Fintype.prod_fiberwise
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: rw [← Finset.prod_fiberwise _ g 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✝ : α✝ → β
ι : Type u_6
κ : Type u_7
α : Type u_8
inst✝³ : Fintype ι
inst✝² : Fintype κ
inst✝¹ : CommMonoid α
inst✝ : DecidableEq κ
g : ι → κ
f : ι → α
⊢ ∏ j : κ, ∏ i : { i // g i = j }, f ↑i = ∏ i : ι, f i
state_after: ι✝ : Type u_1
κ✝ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α✝
a : α✝
f✝ g✝ : α✝ → β
ι : Type u_6
κ : Type u_7
α : Type u_8
inst✝³ : Fintype ι
inst✝² : Fintype κ
inst✝¹ : CommMonoid α
inst✝ : DecidableEq κ
g : ι → κ
f : ι → α
⊢ ∏ j : κ, ∏ i : { i // g i = j }, f ↑i = ∏ j : κ, ∏ i ∈ filter (fun i => g i = j) univ, f i

tactic: congr with j
state_before: ι✝ : Type u_1
κ✝ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α✝
a : α✝
f✝ g✝ : α✝ → β
ι : Type u_6
κ : Type u_7
α : Type u_8
inst✝³ : Fintype ι
inst✝² : Fintype κ
inst✝¹ : CommMonoid α
inst✝ : DecidableEq κ
g : ι → κ
f : ι → α
⊢ ∏ j : κ, ∏ i : { i // g i = j }, f ↑i = ∏ j : κ, ∏ i ∈ filter (fun i => g i = j) univ, f i
state_after: case e_f.h
ι✝ : Type u_1
κ✝ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α✝
a : α✝
f✝ g✝ : α✝ → β
ι : Type u_6
κ : Type u_7
α : Type u_8
inst✝³ : Fintype ι
inst✝² : Fintype κ
inst✝¹ : CommMonoid α
inst✝ : DecidableEq κ
g : ι → κ
f : ι → α
j : κ
⊢ ∏ i : { i // g i = j }, f ↑i = ∏ i ∈ filter (fun i => g i = j) univ, f i

tactic: exact (prod_subtype _ (by simp) _).symm
state_before: case e_f.h
ι✝ : Type u_1
κ✝ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α✝
a : α✝
f✝ g✝ : α✝ → β
ι : Type u_6
κ : Type u_7
α : Type u_8
inst✝³ : Fintype ι
inst✝² : Fintype κ
inst✝¹ : CommMonoid α
inst✝ : DecidableEq κ
g : ι → κ
f : ι → α
j : κ
⊢ ∏ i : { i // g i = j }, f ↑i = ∏ i ∈ filter (fun i => g i = j) univ, f i
state_after: no goals

tactic: simp
state_before: ι✝ : Type u_1
κ✝ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α✝
a : α✝
f✝ g✝ : α✝ → β
ι : Type u_6
κ : Type u_7
α : Type u_8
inst✝³ : Fintype ι
inst✝² : Fintype κ
inst✝¹ : CommMonoid α
inst✝ : DecidableEq κ
g : ι → κ
f : ι → α
j : κ
⊢ ∀ (x : ι), x ∈ filter (fun i => g i = j) univ ↔ g x = j
state_after: no goals
Theorem: IsLocalizedModule.lift_comp
File: Mathlib/Algebra/Module/LocalizedModule.lean

tactic: dsimp only [IsLocalizedModule.lift]
state_before: R : Type u_1
inst✝¹² : CommSemiring R
S : Submonoid R
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
A : Type u_5
inst✝⁸ : CommSemiring A
inst✝⁷ : Algebra R A
inst✝⁶ : Module A M'
inst✝⁵ : IsLocalization S A
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M''
inst✝¹ : IsScalarTower R A M'
f : M →ₗ[R] M'
g✝ : M →ₗ[R] M''
inst✝ : IsLocalizedModule S f
g : M →ₗ[R] M''
h : ∀ (x : ↥S), IsUnit ((algebraMap R (Module.End R M'')) ↑x)
⊢ lift S f g h ∘ₗ f = g
state_after: R : Type u_1
inst✝¹² : CommSemiring R
S : Submonoid R
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
A : Type u_5
inst✝⁸ : CommSemiring A
inst✝⁷ : Algebra R A
inst✝⁶ : Module A M'
inst✝⁵ : IsLocalization S A
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M''
inst✝¹ : IsScalarTower R A M'
f : M →ₗ[R] M'
g✝ : M →ₗ[R] M''
inst✝ : IsLocalizedModule S f
g : M →ₗ[R] M''
h : ∀ (x : ↥S), IsUnit ((algebraMap R (Module.End R M'')) ↑x)
⊢ (LocalizedModule.lift S g h ∘ₗ ↑(iso S f).symm) ∘ₗ f = g

tactic: rw [LinearMap.comp_assoc, iso_symm_comp, LocalizedModule.lift_comp S g h]
state_before: R : Type u_1
inst✝¹² : CommSemiring R
S : Submonoid R
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
A : Type u_5
inst✝⁸ : CommSemiring A
inst✝⁷ : Algebra R A
inst✝⁶ : Module A M'
inst✝⁵ : IsLocalization S A
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M''
inst✝¹ : IsScalarTower R A M'
f : M →ₗ[R] M'
g✝ : M →ₗ[R] M''
inst✝ : IsLocalizedModule S f
g : M →ₗ[R] M''
h : ∀ (x : ↥S), IsUnit ((algebraMap R (Module.End R M'')) ↑x)
⊢ (LocalizedModule.lift S g h ∘ₗ ↑(iso S f).symm) ∘ₗ f = g
state_after: no goals
Theorem: HomologicalComplex.hom_f_injective
File: Mathlib/Algebra/Homology/HomologicalComplex.lean

tactic: aesop_cat
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
C C₁ C₂ : HomologicalComplex V c
⊢ Function.Injective fun f => f.f
state_after: no goals
Theorem: TopologicalSpace.isSeparable_union
File: Mathlib/Topology/Bases.lean

tactic: simp [union_eq_iUnion, and_comm]
state_before: α : Type u
β : Type u_1
t✝ : TopologicalSpace α
B : Set (Set α)
s✝ s t : Set α
⊢ IsSeparable (s ∪ t) ↔ IsSeparable s ∧ IsSeparable t
state_after: no goals
Theorem: MulAction.stabilizer_univ
File: Mathlib/Algebra/Pointwise/Stabilizer.lean

tactic: ext
state_before: G : Type u_1
H : Type u_2
α : Type u_3
inst✝² : Group G
inst✝¹ : Group H
inst✝ : MulAction G α
a : G
⊢ stabilizer G univ = ⊤
state_after: case h
G : Type u_1
H : Type u_2
α : Type u_3
inst✝² : Group G
inst✝¹ : Group H
inst✝ : MulAction G α
a x✝ : G
⊢ x✝ ∈ stabilizer G univ ↔ x✝ ∈ ⊤

tactic: simp
state_before: case h
G : Type u_1
H : Type u_2
α : Type u_3
inst✝² : Group G
inst✝¹ : Group H
inst✝ : MulAction G α
a x✝ : G
⊢ x✝ ∈ stabilizer G univ ↔ x✝ ∈ ⊤
state_after: no goals
Theorem: PiTensorProduct.gradedMonoid_eq_of_reindex_cast
File: Mathlib/LinearAlgebra/TensorPower.lean

tactic: subst hi
state_before: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
ιι : Type u_3
ι : ιι → Type u_4
ai : ιι
a : ⨂[R] (x : ι ai), M
bi : ιι
b : ⨂[R] (x : ι bi), M
hi : ai = bi
h : (reindex R (fun x => M) (Equiv.cast ⋯)) a = b
⊢ ⟨ai, a⟩ = ⟨bi, b⟩
state_after: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
ιι : Type u_3
ι : ιι → Type u_4
ai : ιι
a b : ⨂[R] (x : ι ai), M
h : (reindex R (fun x => M) (Equiv.cast ⋯)) a = b
⊢ ⟨ai, a⟩ = ⟨ai, b⟩

tactic: simp_all
state_before: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
ιι : Type u_3
ι : ιι → Type u_4
ai : ιι
a b : ⨂[R] (x : ι ai), M
h : (reindex R (fun x => M) (Equiv.cast ⋯)) a = b
⊢ ⟨ai, a⟩ = ⟨ai, b⟩
state_after: no goals
Theorem: Real.arith_mean_weighted_of_constant
File: Mathlib/Analysis/MeanInequalities.lean

tactic: refine sum_congr rfl fun i hi => ?_
state_before: ι : Type u
s : Finset ι
w z : ι → ℝ
x : ℝ
hw' : ∑ i ∈ s, w i = 1
hx : ∀ i ∈ s, w i ≠ 0 → z i = x
⊢ ∑ i ∈ s, w i * z i = ∑ i ∈ s, w i * x
state_after: ι : Type u
s : Finset ι
w z : ι → ℝ
x : ℝ
hw' : ∑ i ∈ s, w i = 1
hx : ∀ i ∈ s, w i ≠ 0 → z i = x
i : ι
hi : i ∈ s
⊢ w i * z i = w i * x

tactic: rcases eq_or_ne (w i) 0 with hwi | hwi
state_before: ι : Type u
s : Finset ι
w z : ι → ℝ
x : ℝ
hw' : ∑ i ∈ s, w i = 1
hx : ∀ i ∈ s, w i ≠ 0 → z i = x
i : ι
hi : i ∈ s
⊢ w i * z i = w i * x
state_after: case inl
ι : Type u
s : Finset ι
w z : ι → ℝ
x : ℝ
hw' : ∑ i ∈ s, w i = 1
hx : ∀ i ∈ s, w i ≠ 0 → z i = x
i : ι
hi : i ∈ s
hwi : w i = 0
⊢ w i * z i = w i * x

case inr
ι : Type u
s : Finset ι
w z : ι → ℝ
x : ℝ
hw' : ∑ i ∈ s, w i = 1
hx : ∀ i ∈ s, w i ≠ 0 → z i = x
i : ι
hi : i ∈ s
hwi : w i ≠ 0
⊢ w i * z i = w i * x

tactic: rw [hwi, zero_mul, zero_mul]
state_before: case inl
ι : Type u
s : Finset ι
w z : ι → ℝ
x : ℝ
hw' : ∑ i ∈ s, w i = 1
hx : ∀ i ∈ s, w i ≠ 0 → z i = x
i : ι
hi : i ∈ s
hwi : w i = 0
⊢ w i * z i = w i * x
state_after: no goals

tactic: rw [hx i hi hwi]
state_before: case inr
ι : Type u
s : Finset ι
w z : ι → ℝ
x : ℝ
hw' : ∑ i ∈ s, w i = 1
hx : ∀ i ∈ s, w i ≠ 0 → z i = x
i : ι
hi : i ∈ s
hwi : w i ≠ 0
⊢ w i * z i = w i * x
state_after: no goals

tactic: rw [← sum_mul, hw', one_mul]
state_before: ι : Type u
s : Finset ι
w z : ι → ℝ
x : ℝ
hw' : ∑ i ∈ s, w i = 1
hx : ∀ i ∈ s, w i ≠ 0 → z i = x
⊢ ∑ i ∈ s, w i * x = x
state_after: no goals
Theorem: Multiset.countP_eq_card
File: Mathlib/Data/Multiset/Basic.lean

tactic: simp [List.countP_eq_length]
state_before: α : Type u_1
β : Type v
γ : Type u_2
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
_l : List α
⊢ countP p (Quot.mk Setoid.r _l) = card (Quot.mk Setoid.r _l) ↔ ∀ a ∈ Quot.mk Setoid.r _l, p a
state_after: no goals
Theorem: WittVector.mem_ker_truncate
File: Mathlib/RingTheory/WittVector/Truncated.lean

tactic: simp only [RingHom.mem_ker, truncate, truncateFun, RingHom.coe_mk, TruncatedWittVector.ext_iff,
  TruncatedWittVector.coeff_mk, coeff_zero]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
x : 𝕎 R
⊢ x ∈ RingHom.ker (truncate n) ↔ ∀ i < n, x.coeff i = 0
state_after: p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
x : 𝕎 R
⊢ (∀ (i : Fin n), TruncatedWittVector.coeff i ({ toFun := truncateFun n, map_one' := ⋯, map_mul' := ⋯ } x) = 0) ↔
    ∀ i < n, x.coeff i = 0

tactic: exact Fin.forall_iff
state_before: p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
x : 𝕎 R
⊢ (∀ (i : Fin n), TruncatedWittVector.coeff i ({ toFun := truncateFun n, map_one' := ⋯, map_mul' := ⋯ } x) = 0) ↔
    ∀ i < n, x.coeff i = 0
state_after: no goals
Theorem: Associates.mem_factorSet_some
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: dsimp only [Membership.mem]
state_before: α : Type u_1
inst✝ : CancelCommMonoidWithZero α
p : Associates α
hp : Irreducible p
l : Multiset { a // Irreducible a }
⊢ p ∈ ↑l ↔ ⟨p, hp⟩ ∈ l
state_after: α : Type u_1
inst✝ : CancelCommMonoidWithZero α
p : Associates α
hp : Irreducible p
l : Multiset { a // Irreducible a }
⊢ p.FactorSetMem ↑l ↔ Mem ⟨p, hp⟩ l

tactic: dsimp only [FactorSetMem]
state_before: α : Type u_1
inst✝ : CancelCommMonoidWithZero α
p : Associates α
hp : Irreducible p
l : Multiset { a // Irreducible a }
⊢ p.FactorSetMem ↑l ↔ Mem ⟨p, hp⟩ l
state_after: α : Type u_1
inst✝ : CancelCommMonoidWithZero α
p : Associates α
hp : Irreducible p
l : Multiset { a // Irreducible a }
⊢ (if hp : Irreducible p then BfactorSetMem ⟨p, hp⟩ ↑l else False) ↔ Mem ⟨p, hp⟩ l

tactic: split_ifs
state_before: α : Type u_1
inst✝ : CancelCommMonoidWithZero α
p : Associates α
hp : Irreducible p
l : Multiset { a // Irreducible a }
⊢ (if hp : Irreducible p then BfactorSetMem ⟨p, hp⟩ ↑l else False) ↔ Mem ⟨p, hp⟩ l
state_after: α : Type u_1
inst✝ : CancelCommMonoidWithZero α
p : Associates α
hp : Irreducible p
l : Multiset { a // Irreducible a }
⊢ BfactorSetMem ⟨p, hp⟩ ↑l ↔ Mem ⟨p, hp⟩ l

tactic: rfl
state_before: α : Type u_1
inst✝ : CancelCommMonoidWithZero α
p : Associates α
hp : Irreducible p
l : Multiset { a // Irreducible a }
⊢ BfactorSetMem ⟨p, hp⟩ ↑l ↔ Mem ⟨p, hp⟩ l
state_after: no goals
Theorem: FreeGroup.Red.not_step_singleton
File: Mathlib/GroupTheory/FreeGroup/Basic.lean

tactic: simp [Step.cons_left_iff, not_step_nil]
state_before: α : Type u
L L₁ L₂ L₃ L₄ : List (α × Bool)
a : α
b : Bool
⊢ ¬Step [(a, b)] L
state_after: no goals
Theorem: Ordinal.principal_add_iff_add_left_eq_self
File: Mathlib/SetTheory/Ordinal/Principal.lean

tactic: refine ⟨fun ho a hao => ?_, fun h a b hao hbo => ?_⟩
state_before: o : Ordinal.{u_1}
⊢ Principal (fun x x_1 => x + x_1) o ↔ ∀ a < o, a + o = o
state_after: case refine_1
o : Ordinal.{u_1}
ho : Principal (fun x x_1 => x + x_1) o
a : Ordinal.{u_1}
hao : a < o
⊢ a + o = o

case refine_2
o : Ordinal.{u_1}
h : ∀ a < o, a + o = o
a b : Ordinal.{u_1}
hao : a < o
hbo : b < o
⊢ (fun x x_1 => x + x_1) a b < o

tactic: cases' lt_or_le 1 o with ho₁ ho₁
state_before: case refine_1
o : Ordinal.{u_1}
ho : Principal (fun x x_1 => x + x_1) o
a : Ordinal.{u_1}
hao : a < o
⊢ a + o = o
state_after: case refine_1.inl
o : Ordinal.{u_1}
ho : Principal (fun x x_1 => x + x_1) o
a : Ordinal.{u_1}
hao : a < o
ho₁ : 1 < o
⊢ a + o = o

case refine_1.inr
o : Ordinal.{u_1}
ho : Principal (fun x x_1 => x + x_1) o
a : Ordinal.{u_1}
hao : a < o
ho₁ : o ≤ 1
⊢ a + o = o

tactic: exact op_eq_self_of_principal hao (add_isNormal a) ho (principal_add_isLimit ho₁ ho)
state_before: case refine_1.inl
o : Ordinal.{u_1}
ho : Principal (fun x x_1 => x + x_1) o
a : Ordinal.{u_1}
hao : a < o
ho₁ : 1 < o
⊢ a + o = o
state_after: no goals

tactic: rcases le_one_iff.1 ho₁ with (rfl | rfl)
state_before: case refine_1.inr
o : Ordinal.{u_1}
ho : Principal (fun x x_1 => x + x_1) o
a : Ordinal.{u_1}
hao : a < o
ho₁ : o ≤ 1
⊢ a + o = o
state_after: case refine_1.inr.inl
a : Ordinal.{u_1}
ho : Principal (fun x x_1 => x + x_1) 0
hao : a < 0
ho₁ : 0 ≤ 1
⊢ a + 0 = 0

case refine_1.inr.inr
a : Ordinal.{u_1}
ho : Principal (fun x x_1 => x + x_1) 1
hao : a < 1
ho₁ : 1 ≤ 1
⊢ a + 1 = 1

tactic: exact (Ordinal.not_lt_zero a hao).elim
state_before: case refine_1.inr.inl
a : Ordinal.{u_1}
ho : Principal (fun x x_1 => x + x_1) 0
hao : a < 0
ho₁ : 0 ≤ 1
⊢ a + 0 = 0
state_after: no goals

tactic: rw [lt_one_iff_zero] at hao
state_before: case refine_1.inr.inr
a : Ordinal.{u_1}
ho : Principal (fun x x_1 => x + x_1) 1
hao : a < 1
ho₁ : 1 ≤ 1
⊢ a + 1 = 1
state_after: case refine_1.inr.inr
a : Ordinal.{u_1}
ho : Principal (fun x x_1 => x + x_1) 1
hao : a = 0
ho₁ : 1 ≤ 1
⊢ a + 1 = 1

tactic: rw [hao, zero_add]
state_before: case refine_1.inr.inr
a : Ordinal.{u_1}
ho : Principal (fun x x_1 => x + x_1) 1
hao : a = 0
ho₁ : 1 ≤ 1
⊢ a + 1 = 1
state_after: no goals

tactic: rw [← h a hao]
state_before: case refine_2
o : Ordinal.{u_1}
h : ∀ a < o, a + o = o
a b : Ordinal.{u_1}
hao : a < o
hbo : b < o
⊢ (fun x x_1 => x + x_1) a b < o
state_after: case refine_2
o : Ordinal.{u_1}
h : ∀ a < o, a + o = o
a b : Ordinal.{u_1}
hao : a < o
hbo : b < o
⊢ (fun x x_1 => x + x_1) a b < a + o

tactic: exact (add_isNormal a).strictMono hbo
state_before: case refine_2
o : Ordinal.{u_1}
h : ∀ a < o, a + o = o
a b : Ordinal.{u_1}
hao : a < o
hbo : b < o
⊢ (fun x x_1 => x + x_1) a b < a + o
state_after: no goals
Theorem: Int.abs_le_floor_nnreal_iff
File: Mathlib/Analysis/Normed/Group/Int.lean

tactic: rw [Int.abs_eq_natAbs, Int.ofNat_le, Nat.le_floor_iff (zero_le c), NNReal.natCast_natAbs z]
state_before: α : Type u_1
z : ℤ
c : ℝ≥0
⊢ |z| ≤ ↑⌊c⌋₊ ↔ ‖z‖₊ ≤ c
state_after: no goals
Theorem: CategoryTheory.OverPresheafAux.YonedaCollection.map₁_id
File: Mathlib/CategoryTheory/Comma/Presheaf.lean

tactic: aesop_cat
state_before: C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
X : C
⊢ map₁ (𝟙 F) = id
state_after: no goals