1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: HasDerivAtFilter.star
File: Mathlib/Analysis/Calculus/Deriv/Star.lean

tactic: simpa using h.star.hasDerivAtFilter
state_before: 𝕜 : Type u
inst✝⁷ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
f : 𝕜 → F
inst✝⁴ : StarRing 𝕜
inst✝³ : TrivialStar 𝕜
inst✝² : StarAddMonoid F
inst✝¹ : ContinuousStar F
inst✝ : StarModule 𝕜 F
f' : F
s : Set 𝕜
x : 𝕜
L : Filter 𝕜
h : HasDerivAtFilter f f' x L
⊢ HasDerivAtFilter (fun x => star (f x)) (star f') x L
state_after: no goals
Theorem: Num.dvd_iff_mod_eq_zero
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [← dvd_to_nat, Nat.dvd_iff_mod_eq_zero, ← to_nat_inj, mod_to_nat]
state_before: m n : Num
⊢ m ∣ n ↔ n % m = 0
state_after: m n : Num
⊢ ↑n % ↑m = 0 ↔ ↑n % ↑m = ↑0

tactic: rfl
state_before: m n : Num
⊢ ↑n % ↑m = 0 ↔ ↑n % ↑m = ↑0
state_after: no goals
Theorem: Real.rpow_inv_lt_iff_of_neg
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rw [← rpow_lt_rpow_iff_of_neg hy _ hz, rpow_inv_rpow _ hz.ne] <;> positivity
state_before: x y z : ℝ
n : ℕ
hx : 0 < x
hy : 0 < y
hz : z < 0
⊢ x ^ z⁻¹ < y ↔ y ^ z < x
state_after: no goals
Theorem: Real.tan_two_mul
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Arctan.lean

tactic: have := @Complex.tan_two_mul x
state_before: x : ℝ
⊢ tan (2 * x) = 2 * tan x / (1 - tan x ^ 2)
state_after: x : ℝ
this : Complex.tan (2 * ↑x) = 2 * Complex.tan ↑x / (1 - Complex.tan ↑x ^ 2)
⊢ tan (2 * x) = 2 * tan x / (1 - tan x ^ 2)

tactic: norm_cast at *
state_before: x : ℝ
this : Complex.tan (2 * ↑x) = 2 * Complex.tan ↑x / (1 - Complex.tan ↑x ^ 2)
⊢ tan (2 * x) = 2 * tan x / (1 - tan x ^ 2)
state_after: no goals
Theorem: RingHom.LocalizationPreserves.away
File: Mathlib/RingTheory/LocalProperties.lean

tactic: have : IsLocalization ((Submonoid.powers r).map f) S' := by rw [Submonoid.map_powers]; assumption
state_before: R S : Type u
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝⁵ : CommRing R'
inst✝⁴ : CommRing S'
f : R →+* S
inst✝³ : Algebra R R'
inst✝² : Algebra S S'
P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
H : LocalizationPreserves P
r : R
inst✝¹ : IsLocalization.Away r R'
inst✝ : IsLocalization.Away (f r) S'
hf : P f
⊢ P (IsLocalization.Away.map R' S' f r)
state_after: R S : Type u
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝⁵ : CommRing R'
inst✝⁴ : CommRing S'
f : R →+* S
inst✝³ : Algebra R R'
inst✝² : Algebra S S'
P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
H : LocalizationPreserves P
r : R
inst✝¹ : IsLocalization.Away r R'
inst✝ : IsLocalization.Away (f r) S'
hf : P f
this : IsLocalization (Submonoid.map f (Submonoid.powers r)) S'
⊢ P (IsLocalization.Away.map R' S' f r)

tactic: exact H f (Submonoid.powers r) R' S' hf
state_before: R S : Type u
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝⁵ : CommRing R'
inst✝⁴ : CommRing S'
f : R →+* S
inst✝³ : Algebra R R'
inst✝² : Algebra S S'
P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
H : LocalizationPreserves P
r : R
inst✝¹ : IsLocalization.Away r R'
inst✝ : IsLocalization.Away (f r) S'
hf : P f
this : IsLocalization (Submonoid.map f (Submonoid.powers r)) S'
⊢ P (IsLocalization.Away.map R' S' f r)
state_after: no goals

tactic: rw [Submonoid.map_powers]
state_before: R S : Type u
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝⁵ : CommRing R'
inst✝⁴ : CommRing S'
f : R →+* S
inst✝³ : Algebra R R'
inst✝² : Algebra S S'
P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
H : LocalizationPreserves P
r : R
inst✝¹ : IsLocalization.Away r R'
inst✝ : IsLocalization.Away (f r) S'
hf : P f
⊢ IsLocalization (Submonoid.map f (Submonoid.powers r)) S'
state_after: R S : Type u
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝⁵ : CommRing R'
inst✝⁴ : CommRing S'
f : R →+* S
inst✝³ : Algebra R R'
inst✝² : Algebra S S'
P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
H : LocalizationPreserves P
r : R
inst✝¹ : IsLocalization.Away r R'
inst✝ : IsLocalization.Away (f r) S'
hf : P f
⊢ IsLocalization (Submonoid.powers (f r)) S'

tactic: assumption
state_before: R S : Type u
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
M : Submonoid R
N : Submonoid S
R' S' : Type u
inst✝⁵ : CommRing R'
inst✝⁴ : CommRing S'
f : R →+* S
inst✝³ : Algebra R R'
inst✝² : Algebra S S'
P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
H : LocalizationPreserves P
r : R
inst✝¹ : IsLocalization.Away r R'
inst✝ : IsLocalization.Away (f r) S'
hf : P f
⊢ IsLocalization (Submonoid.powers (f r)) S'
state_after: no goals
Theorem: Set.Countable.measure_zero
File: Mathlib/MeasureTheory/Measure/Typeclasses.lean

tactic: rw [← biUnion_of_singleton s, measure_biUnion_null_iff h]
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
ι : Type u_4
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
μ✝ ν ν₁ ν₂ : Measure α
s t : Set α
inst✝¹ : NoAtoms μ✝
h : s.Countable
μ : Measure α
inst✝ : NoAtoms μ
⊢ μ s = 0
state_after: α : Type u_1
β : Type u_2
δ : Type u_3
ι : Type u_4
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
μ✝ ν ν₁ ν₂ : Measure α
s t : Set α
inst✝¹ : NoAtoms μ✝
h : s.Countable
μ : Measure α
inst✝ : NoAtoms μ
⊢ ∀ i ∈ s, μ {i} = 0

tactic: simp
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
ι : Type u_4
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
μ✝ ν ν₁ ν₂ : Measure α
s t : Set α
inst✝¹ : NoAtoms μ✝
h : s.Countable
μ : Measure α
inst✝ : NoAtoms μ
⊢ ∀ i ∈ s, μ {i} = 0
state_after: no goals
Theorem: TopologicalSpace.Opens.coe_iSup
File: Mathlib/Topology/Sets/Opens.lean

tactic: simp [iSup]
state_before: ι✝ : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
ι : Sort u_5
s : ι → Opens α
⊢ ↑(⨆ i, s i) = ⋃ i, ↑(s i)
state_after: no goals
Theorem: PFun.mem_restrict
File: Mathlib/Data/PFun.lean

tactic: simp [restrict]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f : α →. β
s : Set α
h : s ⊆ f.Dom
a : α
b : β
⊢ b ∈ f.restrict h a ↔ a ∈ s ∧ b ∈ f a
state_after: no goals
Theorem: WeierstrassCurve.φ_neg
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

tactic: rw [φ, ψ_neg, neg_sq (R := R[X][Y]), neg_add_eq_sub, ← neg_sub n, ψ_neg, ← neg_add', ψ_neg,
  neg_mul_neg (α := R[X][Y]), mul_comm <| W.ψ _, φ]
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
n : ℤ
⊢ W.φ (-n) = W.φ n
state_after: no goals
Theorem: LieAlgebra.lieCharacter_apply_lie'
File: Mathlib/Algebra/Lie/Character.lean

tactic: rw [LieRing.of_associative_ring_bracket, mul_comm, sub_self]
state_before: R : Type u
L : Type v
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
χ : LieCharacter R L
x y : L
⊢ ⁅χ x, χ y⁆ = 0
state_after: no goals
Theorem: smul_pos_iff_of_neg_left
File: Mathlib/Algebra/Order/Module/Defs.lean

tactic: simpa only [smul_zero] using smul_lt_smul_iff_of_neg_left ha (b₁ := (0 : β))
state_before: α : Type u_1
β : Type u_2
a a₁ a₂ : α
b b₁ b₂ : β
inst✝⁴ : OrderedRing α
inst✝³ : OrderedAddCommGroup β
inst✝² : Module α β
inst✝¹ : PosSMulStrictMono α β
inst✝ : PosSMulReflectLT α β
ha : a < 0
⊢ 0 < a • b ↔ b < 0
state_after: no goals
Theorem: Basis.map_equiv
File: Mathlib/LinearAlgebra/Basis.lean

tactic: ext i
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid M'
inst✝² : Module R M'
b✝ b₁ : Basis ι R M
i : ι
c : R
x : M
b'✝ : Basis ι' R M'
e✝ : ι ≃ ι'
inst✝¹ : AddCommMonoid M''
inst✝ : Module R M''
b : Basis ι R M
b' : Basis ι' R M'
e : ι ≃ ι'
⊢ b.map (b.equiv b' e) = b'.reindex e.symm
state_after: case a
ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid M'
inst✝² : Module R M'
b✝ b₁ : Basis ι R M
i✝ : ι
c : R
x : M
b'✝ : Basis ι' R M'
e✝ : ι ≃ ι'
inst✝¹ : AddCommMonoid M''
inst✝ : Module R M''
b : Basis ι R M
b' : Basis ι' R M'
e : ι ≃ ι'
i : ι
⊢ (b.map (b.equiv b' e)) i = (b'.reindex e.symm) i

tactic: simp
state_before: case a
ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid M'
inst✝² : Module R M'
b✝ b₁ : Basis ι R M
i✝ : ι
c : R
x : M
b'✝ : Basis ι' R M'
e✝ : ι ≃ ι'
inst✝¹ : AddCommMonoid M''
inst✝ : Module R M''
b : Basis ι R M
b' : Basis ι' R M'
e : ι ≃ ι'
i : ι
⊢ (b.map (b.equiv b' e)) i = (b'.reindex e.symm) i
state_after: no goals
Theorem: RingQuot.one_quot
File: Mathlib/Algebra/RingQuot.lean

tactic: rw [one_def]
state_before: R : Type uR
inst✝³ : Semiring R
S : Type uS
inst✝² : CommSemiring S
T : Type uT
A : Type uA
inst✝¹ : Semiring A
inst✝ : Algebra S A
r : R → R → Prop
⊢ { toQuot := Quot.mk (Rel r) 1 } = RingQuot.one r
state_after: no goals
Theorem: Algebraic.countable
File: Mathlib/Algebra/AlgebraicCard.lean

tactic: rw [← le_aleph0_iff_set_countable, ← lift_le_aleph0]
state_before: R : Type u
A : Type v
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : IsDomain A
inst✝² : Algebra R A
inst✝¹ : NoZeroSMulDivisors R A
inst✝ : Countable R
⊢ {x | IsAlgebraic R x}.Countable
state_after: R : Type u
A : Type v
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : IsDomain A
inst✝² : Algebra R A
inst✝¹ : NoZeroSMulDivisors R A
inst✝ : Countable R
⊢ lift.{?u.24298, v} #↑{x | IsAlgebraic R x} ≤ ℵ₀

tactic: apply (cardinal_mk_lift_le_max R A).trans
state_before: R : Type u
A : Type v
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : IsDomain A
inst✝² : Algebra R A
inst✝¹ : NoZeroSMulDivisors R A
inst✝ : Countable R
⊢ lift.{?u.24298, v} #↑{x | IsAlgebraic R x} ≤ ℵ₀
state_after: R : Type u
A : Type v
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : IsDomain A
inst✝² : Algebra R A
inst✝¹ : NoZeroSMulDivisors R A
inst✝ : Countable R
⊢ max (lift.{v, u} #R) ℵ₀ ≤ ℵ₀

tactic: simp
state_before: R : Type u
A : Type v
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : IsDomain A
inst✝² : Algebra R A
inst✝¹ : NoZeroSMulDivisors R A
inst✝ : Countable R
⊢ max (lift.{v, u} #R) ℵ₀ ≤ ℵ₀
state_after: no goals
Theorem: Polynomial.toLaurent_C_mul_X_pow
File: Mathlib/Algebra/Polynomial/Laurent.lean

tactic: simp only [_root_.map_mul, Polynomial.toLaurent_C, Polynomial.toLaurent_X_pow]
state_before: R : Type u_1
inst✝ : Semiring R
n : ℕ
r : R
⊢ toLaurent (Polynomial.C r * X ^ n) = C r * T ↑n
state_after: no goals
Theorem: FractionalIdeal.dual_le_dual
File: Mathlib/RingTheory/DedekindDomain/Different.lean

tactic: nth_rewrite 2 [← dual_dual A K I]
state_before: A : Type u_1
K : Type u_2
L : Type u
B : Type u_3
inst✝¹⁹ : CommRing A
inst✝¹⁸ : Field K
inst✝¹⁷ : CommRing B
inst✝¹⁶ : Field L
inst✝¹⁵ : Algebra A K
inst✝¹⁴ : Algebra B L
inst✝¹³ : Algebra A B
inst✝¹² : Algebra K L
inst✝¹¹ : Algebra A L
inst✝¹⁰ : IsScalarTower A K L
inst✝⁹ : IsScalarTower A B L
inst✝⁸ : IsDomain A
inst✝⁷ : IsDomain B
inst✝⁶ : IsFractionRing A K
inst✝⁵ : IsIntegralClosure B A L
inst✝⁴ : IsFractionRing B L
inst✝³ : FiniteDimensional K L
inst✝² : IsSeparable K L
inst✝¹ : IsIntegrallyClosed A
inst✝ : IsDedekindDomain B
I J : FractionalIdeal B⁰ L
hI : I ≠ 0
hJ : J ≠ 0
⊢ dual A K I ≤ dual A K J ↔ J ≤ I
state_after: A : Type u_1
K : Type u_2
L : Type u
B : Type u_3
inst✝¹⁹ : CommRing A
inst✝¹⁸ : Field K
inst✝¹⁷ : CommRing B
inst✝¹⁶ : Field L
inst✝¹⁵ : Algebra A K
inst✝¹⁴ : Algebra B L
inst✝¹³ : Algebra A B
inst✝¹² : Algebra K L
inst✝¹¹ : Algebra A L
inst✝¹⁰ : IsScalarTower A K L
inst✝⁹ : IsScalarTower A B L
inst✝⁸ : IsDomain A
inst✝⁷ : IsDomain B
inst✝⁶ : IsFractionRing A K
inst✝⁵ : IsIntegralClosure B A L
inst✝⁴ : IsFractionRing B L
inst✝³ : FiniteDimensional K L
inst✝² : IsSeparable K L
inst✝¹ : IsIntegrallyClosed A
inst✝ : IsDedekindDomain B
I J : FractionalIdeal B⁰ L
hI : I ≠ 0
hJ : J ≠ 0
⊢ dual A K I ≤ dual A K J ↔ J ≤ dual A K (dual A K I)

tactic: rw [le_dual_iff A K hJ, le_dual_iff A K (I := J) (by rwa [dual_ne_zero_iff]), mul_comm]
state_before: A : Type u_1
K : Type u_2
L : Type u
B : Type u_3
inst✝¹⁹ : CommRing A
inst✝¹⁸ : Field K
inst✝¹⁷ : CommRing B
inst✝¹⁶ : Field L
inst✝¹⁵ : Algebra A K
inst✝¹⁴ : Algebra B L
inst✝¹³ : Algebra A B
inst✝¹² : Algebra K L
inst✝¹¹ : Algebra A L
inst✝¹⁰ : IsScalarTower A K L
inst✝⁹ : IsScalarTower A B L
inst✝⁸ : IsDomain A
inst✝⁷ : IsDomain B
inst✝⁶ : IsFractionRing A K
inst✝⁵ : IsIntegralClosure B A L
inst✝⁴ : IsFractionRing B L
inst✝³ : FiniteDimensional K L
inst✝² : IsSeparable K L
inst✝¹ : IsIntegrallyClosed A
inst✝ : IsDedekindDomain B
I J : FractionalIdeal B⁰ L
hI : I ≠ 0
hJ : J ≠ 0
⊢ dual A K I ≤ dual A K J ↔ J ≤ dual A K (dual A K I)
state_after: no goals

tactic: rwa [dual_ne_zero_iff]
state_before: A : Type u_1
K : Type u_2
L : Type u
B : Type u_3
inst✝¹⁹ : CommRing A
inst✝¹⁸ : Field K
inst✝¹⁷ : CommRing B
inst✝¹⁶ : Field L
inst✝¹⁵ : Algebra A K
inst✝¹⁴ : Algebra B L
inst✝¹³ : Algebra A B
inst✝¹² : Algebra K L
inst✝¹¹ : Algebra A L
inst✝¹⁰ : IsScalarTower A K L
inst✝⁹ : IsScalarTower A B L
inst✝⁸ : IsDomain A
inst✝⁷ : IsDomain B
inst✝⁶ : IsFractionRing A K
inst✝⁵ : IsIntegralClosure B A L
inst✝⁴ : IsFractionRing B L
inst✝³ : FiniteDimensional K L
inst✝² : IsSeparable K L
inst✝¹ : IsIntegrallyClosed A
inst✝ : IsDedekindDomain B
I J : FractionalIdeal B⁰ L
hI : I ≠ 0
hJ : J ≠ 0
⊢ dual A K I ≠ 0
state_after: no goals
Theorem: List.ranges_join
File: Mathlib/Algebra/BigOperators/Group/List.lean

tactic: simp [ranges_join']
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
l : List ℕ
⊢ l.ranges.join = range l.sum
state_after: no goals
Theorem: MeasureTheory.integral_fintype_prod_eq_pow
File: Mathlib/MeasureTheory/Integral/Pi.lean

tactic: rw [integral_fintype_prod_eq_prod, Finset.prod_const, card]
state_before: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
ι : Type u_3
inst✝² : Fintype ι
f : E → 𝕜
inst✝¹ : MeasureSpace E
inst✝ : SigmaFinite volume
⊢ ∫ (x : ι → E), ∏ i : ι, f (x i) = (∫ (x : E), f x) ^ card ι
state_after: no goals
Theorem: CoxeterSystem.leftInvSeq_concat
File: Mathlib/GroupTheory/Coxeter/Inversion.lean

tactic: simp [leftInvSeq_eq_reverse_rightInvSeq_reverse, rightInvSeq]
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
ω : List B
i : B
⊢ cs.leftInvSeq (ω.concat i) = (cs.leftInvSeq ω).concat (cs.wordProd ω * cs.simple i * (cs.wordProd ω)⁻¹)
state_after: no goals
Theorem: bernsteinPolynomial.eval_at_1
File: Mathlib/RingTheory/Polynomial/Bernstein.lean

tactic: rw [bernsteinPolynomial]
state_before: R : Type u_1
inst✝ : CommRing R
n ν : ℕ
⊢ Polynomial.eval 1 (bernsteinPolynomial R n ν) = if ν = n then 1 else 0
state_after: R : Type u_1
inst✝ : CommRing R
n ν : ℕ
⊢ Polynomial.eval 1 (↑(n.choose ν) * X ^ ν * (1 - X) ^ (n - ν)) = if ν = n then 1 else 0

tactic: split_ifs with h
state_before: R : Type u_1
inst✝ : CommRing R
n ν : ℕ
⊢ Polynomial.eval 1 (↑(n.choose ν) * X ^ ν * (1 - X) ^ (n - ν)) = if ν = n then 1 else 0
state_after: case pos
R : Type u_1
inst✝ : CommRing R
n ν : ℕ
h : ν = n
⊢ Polynomial.eval 1 (↑(n.choose ν) * X ^ ν * (1 - X) ^ (n - ν)) = 1

case neg
R : Type u_1
inst✝ : CommRing R
n ν : ℕ
h : ¬ν = n
⊢ Polynomial.eval 1 (↑(n.choose ν) * X ^ ν * (1 - X) ^ (n - ν)) = 0

tactic: subst h
state_before: case pos
R : Type u_1
inst✝ : CommRing R
n ν : ℕ
h : ν = n
⊢ Polynomial.eval 1 (↑(n.choose ν) * X ^ ν * (1 - X) ^ (n - ν)) = 1
state_after: case pos
R : Type u_1
inst✝ : CommRing R
ν : ℕ
⊢ Polynomial.eval 1 (↑(ν.choose ν) * X ^ ν * (1 - X) ^ (ν - ν)) = 1

tactic: simp
state_before: case pos
R : Type u_1
inst✝ : CommRing R
ν : ℕ
⊢ Polynomial.eval 1 (↑(ν.choose ν) * X ^ ν * (1 - X) ^ (ν - ν)) = 1
state_after: no goals

tactic: obtain hνn | hnν := Ne.lt_or_lt h
state_before: case neg
R : Type u_1
inst✝ : CommRing R
n ν : ℕ
h : ¬ν = n
⊢ Polynomial.eval 1 (↑(n.choose ν) * X ^ ν * (1 - X) ^ (n - ν)) = 0
state_after: case neg.inl
R : Type u_1
inst✝ : CommRing R
n ν : ℕ
h : ¬ν = n
hνn : ν < n
⊢ Polynomial.eval 1 (↑(n.choose ν) * X ^ ν * (1 - X) ^ (n - ν)) = 0

case neg.inr
R : Type u_1
inst✝ : CommRing R
n ν : ℕ
h : ¬ν = n
hnν : n < ν
⊢ Polynomial.eval 1 (↑(n.choose ν) * X ^ ν * (1 - X) ^ (n - ν)) = 0

tactic: simp [zero_pow $ Nat.sub_ne_zero_of_lt hνn]
state_before: case neg.inl
R : Type u_1
inst✝ : CommRing R
n ν : ℕ
h : ¬ν = n
hνn : ν < n
⊢ Polynomial.eval 1 (↑(n.choose ν) * X ^ ν * (1 - X) ^ (n - ν)) = 0
state_after: no goals

tactic: simp [Nat.choose_eq_zero_of_lt hnν]
state_before: case neg.inr
R : Type u_1
inst✝ : CommRing R
n ν : ℕ
h : ¬ν = n
hnν : n < ν
⊢ Polynomial.eval 1 (↑(n.choose ν) * X ^ ν * (1 - X) ^ (n - ν)) = 0
state_after: no goals
Theorem: Polynomial.nodup_of_separable_prod
File: Mathlib/FieldTheory/Separable.lean

tactic: rw [Multiset.nodup_iff_ne_cons_cons]
state_before: R : Type u
inst✝¹ : CommRing R
inst✝ : Nontrivial R
s : Multiset R
hs : (Multiset.map (fun a => X - C a) s).prod.Separable
⊢ s.Nodup
state_after: R : Type u
inst✝¹ : CommRing R
inst✝ : Nontrivial R
s : Multiset R
hs : (Multiset.map (fun a => X - C a) s).prod.Separable
⊢ ∀ (a : R) (t : Multiset R), s ≠ a ::ₘ a ::ₘ t

tactic: rintro a t rfl
state_before: R : Type u
inst✝¹ : CommRing R
inst✝ : Nontrivial R
s : Multiset R
hs : (Multiset.map (fun a => X - C a) s).prod.Separable
⊢ ∀ (a : R) (t : Multiset R), s ≠ a ::ₘ a ::ₘ t
state_after: R : Type u
inst✝¹ : CommRing R
inst✝ : Nontrivial R
a : R
t : Multiset R
hs : (Multiset.map (fun a => X - C a) (a ::ₘ a ::ₘ t)).prod.Separable
⊢ False

tactic: refine not_isUnit_X_sub_C a (isUnit_of_self_mul_dvd_separable hs ?_)
state_before: R : Type u
inst✝¹ : CommRing R
inst✝ : Nontrivial R
a : R
t : Multiset R
hs : (Multiset.map (fun a => X - C a) (a ::ₘ a ::ₘ t)).prod.Separable
⊢ False
state_after: R : Type u
inst✝¹ : CommRing R
inst✝ : Nontrivial R
a : R
t : Multiset R
hs : (Multiset.map (fun a => X - C a) (a ::ₘ a ::ₘ t)).prod.Separable
⊢ (X - C a) * (X - C a) ∣ (Multiset.map (fun a => X - C a) (a ::ₘ a ::ₘ t)).prod

tactic: simpa only [Multiset.map_cons, Multiset.prod_cons] using mul_dvd_mul_left _ (dvd_mul_right _ _)
state_before: R : Type u
inst✝¹ : CommRing R
inst✝ : Nontrivial R
a : R
t : Multiset R
hs : (Multiset.map (fun a => X - C a) (a ::ₘ a ::ₘ t)).prod.Separable
⊢ (X - C a) * (X - C a) ∣ (Multiset.map (fun a => X - C a) (a ::ₘ a ::ₘ t)).prod
state_after: no goals
Theorem: List.duplicate_cons_iff
File: Mathlib/Data/List/Duplicate.lean

tactic: refine ⟨fun h => ?_, fun h => ?_⟩
state_before: α : Type u_1
l : List α
x y : α
⊢ x ∈+ y :: l ↔ y = x ∧ x ∈ l ∨ x ∈+ l
state_after: case refine_1
α : Type u_1
l : List α
x y : α
h : x ∈+ y :: l
⊢ y = x ∧ x ∈ l ∨ x ∈+ l

case refine_2
α : Type u_1
l : List α
x y : α
h : y = x ∧ x ∈ l ∨ x ∈+ l
⊢ x ∈+ y :: l

tactic: cases' h with _ hm _ _ hm
state_before: case refine_1
α : Type u_1
l : List α
x y : α
h : x ∈+ y :: l
⊢ y = x ∧ x ∈ l ∨ x ∈+ l
state_after: case refine_1.cons_mem
α : Type u_1
l : List α
x : α
hm : x ∈ l
⊢ x = x ∧ x ∈ l ∨ x ∈+ l

case refine_1.cons_duplicate
α : Type u_1
l : List α
x y : α
hm : x ∈+ l
⊢ y = x ∧ x ∈ l ∨ x ∈+ l

tactic: exact Or.inl ⟨rfl, hm⟩
state_before: case refine_1.cons_mem
α : Type u_1
l : List α
x : α
hm : x ∈ l
⊢ x = x ∧ x ∈ l ∨ x ∈+ l
state_after: no goals

tactic: exact Or.inr hm
state_before: case refine_1.cons_duplicate
α : Type u_1
l : List α
x y : α
hm : x ∈+ l
⊢ y = x ∧ x ∈ l ∨ x ∈+ l
state_after: no goals

tactic: rcases h with (⟨rfl | h⟩ | h)
state_before: case refine_2
α : Type u_1
l : List α
x y : α
h : y = x ∧ x ∈ l ∨ x ∈+ l
⊢ x ∈+ y :: l
state_after: case refine_2.inl.intro.refl
α : Type u_1
l : List α
x : α
right✝ : x ∈ l
⊢ x ∈+ x :: l

case refine_2.inr
α : Type u_1
l : List α
x y : α
h : x ∈+ l
⊢ x ∈+ y :: l

tactic: simpa
state_before: case refine_2.inl.intro.refl
α : Type u_1
l : List α
x : α
right✝ : x ∈ l
⊢ x ∈+ x :: l
state_after: no goals

tactic: exact h.cons_duplicate
state_before: case refine_2.inr
α : Type u_1
l : List α
x y : α
h : x ∈+ l
⊢ x ∈+ y :: l
state_after: no goals
Theorem: two_smul
File: Mathlib/Algebra/Module/Defs.lean

tactic: rw [← one_add_one_eq_two, add_smul, one_smul]
state_before: α : Type u_1
R : Type u_2
k : Type u_3
S : Type u_4
M : Type u_5
M₂ : Type u_6
M₃ : Type u_7
ι : Type u_8
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
r s : R
x y : M
⊢ 2 • x = x + x
state_after: no goals
Theorem: Set.ncard_le_ncard_iff_ncard_diff_le_ncard_diff
File: Mathlib/Data/Set/Card.lean

tactic: rw [← ncard_inter_add_ncard_diff_eq_ncard s t hs, ← ncard_inter_add_ncard_diff_eq_ncard t s ht,
  inter_comm, add_le_add_iff_left]
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
hs : autoParam s.Finite _auto✝
ht : autoParam t.Finite _auto✝
⊢ s.ncard ≤ t.ncard ↔ (s \ t).ncard ≤ (t \ s).ncard
state_after: no goals
Theorem: LieIdeal.mem_map
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: apply LieSubmodule.subset_lieSpan
state_before: R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I I₂ : LieIdeal R L
J : LieIdeal R L'
x : L
hx : x ∈ I
⊢ f x ∈ map f I
state_after: case a
R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I I₂ : LieIdeal R L
J : LieIdeal R L'
x : L
hx : x ∈ I
⊢ f x ∈ ↑(Submodule.map (↑f) (lieIdealSubalgebra R L I).toSubmodule)

tactic: use x
state_before: case a
R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I I₂ : LieIdeal R L
J : LieIdeal R L'
x : L
hx : x ∈ I
⊢ f x ∈ ↑(Submodule.map (↑f) (lieIdealSubalgebra R L I).toSubmodule)
state_after: case h
R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I I₂ : LieIdeal R L
J : LieIdeal R L'
x : L
hx : x ∈ I
⊢ x ∈ ↑(lieIdealSubalgebra R L I).toSubmodule ∧ ↑f x = f x

tactic: exact ⟨hx, rfl⟩
state_before: case h
R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I I₂ : LieIdeal R L
J : LieIdeal R L'
x : L
hx : x ∈ I
⊢ x ∈ ↑(lieIdealSubalgebra R L I).toSubmodule ∧ ↑f x = f x
state_after: no goals
Theorem: AdjoinRoot.coe_algHomOfDvd
File: Mathlib/FieldTheory/Adjoin.lean

tactic: simp only [aeval_eq, mk_eq_zero, hpq]
state_before: K : Type ?u.586344
L : Type ?u.586347
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
p q : K[X]
hpq : q ∣ p
⊢ (aeval (root q)) p = 0
state_after: no goals