tasksource/leandojo huggingface dataset:
Theorem: Filter.EventuallyLE.mul_le_mul
File: Mathlib/Order/Filter/Basic.lean

tactic: filter_upwards [hf, hg, hg₀, hf₀] with x using _root_.mul_le_mul
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.209934
ι : Sort x
inst✝³ : MulZeroClass β
inst✝² : PartialOrder β
inst✝¹ : PosMulMono β
inst✝ : MulPosMono β
l : Filter α
f₁ f₂ g₁ g₂ : α → β
hf : f₁ ≤ᶠ[l] f₂
hg : g₁ ≤ᶠ[l] g₂
hg₀ : 0 ≤ᶠ[l] g₁
hf₀ : 0 ≤ᶠ[l] f₂
⊢ f₁ * g₁ ≤ᶠ[l] f₂ * g₂
Theorem: Submonoid.fromLeftInv_eq_inv
File: Mathlib/GroupTheory/Submonoid/Inverses.lean

tactic: rw [← mul_right_inj (x : M), mul_right_inv, mul_fromLeftInv]
state_before: M : Type u_1
inst✝ : Group M
S : Submonoid M
x : { x // x ∈ leftInv S }
⊢ ↑(fromLeftInv S x) = (↑x)⁻¹
Theorem: Polynomial.isUnitTrinomial_iff''
File: Mathlib/Data/Polynomial/UnitTrinomial.lean

tactic: rw [isUnitTrinomial_iff', isUnitTrinomial_iff', h]
state_before: p q : ℤ[X]
h : p * mirror p = q * mirror q
⊢ IsUnitTrinomial p ↔ IsUnitTrinomial q
Theorem: intervalIntegral.continuousOn_primitive_interval'
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: refine continuousWithinAt_primitive (measure_singleton _) ?_
state_before: ι : Type ?u.18470778
𝕜 : Type ?u.18470781
E : Type u_1
F : Type ?u.18470787
A : Type ?u.18470790
inst✝³ : NormedAddCommGroup E
inst✝² : CompleteSpace E
inst✝¹ : NormedSpace ℝ E
a b b₀ b₁ b₂ : ℝ
μ : MeasureTheory.Measure ℝ
f g : ℝ → E
inst✝ : NoAtoms μ
h_int : IntervalIntegrable f μ b₁ b₂
ha : a ∈ [[b₁, b₂]]
x✝¹ : ℝ
x✝ : x✝¹ ∈ [[b₁, b₂]]
⊢ ContinuousWithinAt (fun b => ∫ (x : ℝ) in a..b, f x ∂μ) [[b₁, b₂]] x✝¹

tactic: rw [min_eq_right ha.1, max_eq_right ha.2]
state_before: ι : Type ?u.18470778
𝕜 : Type ?u.18470781
E : Type u_1
F : Type ?u.18470787
A : Type ?u.18470790
inst✝³ : NormedAddCommGroup E
inst✝² : CompleteSpace E
inst✝¹ : NormedSpace ℝ E
a b b₀ b₁ b₂ : ℝ
μ : MeasureTheory.Measure ℝ
f g : ℝ → E
inst✝ : NoAtoms μ
h_int : IntervalIntegrable f μ b₁ b₂
ha : a ∈ [[b₁, b₂]]
x✝¹ : ℝ
x✝ : x✝¹ ∈ [[b₁, b₂]]
⊢ IntervalIntegrable (fun x => f x) μ (min a (b₁ ⊓ b₂)) (max a (b₁ ⊔ b₂))

tactic: simpa [intervalIntegrable_iff, uIoc] using h_int
state_before: ι : Type ?u.18470778
𝕜 : Type ?u.18470781
E : Type u_1
F : Type ?u.18470787
A : Type ?u.18470790
inst✝³ : NormedAddCommGroup E
inst✝² : CompleteSpace E
inst✝¹ : NormedSpace ℝ E
a b b₀ b₁ b₂ : ℝ
μ : MeasureTheory.Measure ℝ
f g : ℝ → E
inst✝ : NoAtoms μ
h_int : IntervalIntegrable f μ b₁ b₂
ha : a ∈ [[b₁, b₂]]
x✝¹ : ℝ
x✝ : x✝¹ ∈ [[b₁, b₂]]
⊢ IntervalIntegrable (fun x => f x) μ (b₁ ⊓ b₂) (b₁ ⊔ b₂)
Theorem: Ideal.pow_lt_self
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

tactic: convert I.strictAnti_pow hI0 hI1 he
state_before: R : Type ?u.804408
A : Type u_1
K : Type ?u.804414
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : IsDedekindDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
I : Ideal A
hI0 : I ≠ ⊥
hI1 : I ≠ ⊤
e : ℕ
he : 2 ≤ e
⊢ I ^ e < I

tactic: dsimp only
state_before: case h.e'_4
R : Type ?u.804408
A : Type u_1
K : Type ?u.804414
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : IsDedekindDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
I : Ideal A
hI0 : I ≠ ⊥
hI1 : I ≠ ⊤
e : ℕ
he : 2 ≤ e
⊢ I = (fun x x_1 => x ^ x_1) I 1

tactic: rw [pow_one]
state_before: case h.e'_4
R : Type ?u.804408
A : Type u_1
K : Type ?u.804414
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
inst✝² : IsDedekindDomain A
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
I : Ideal A
hI0 : I ≠ ⊥
hI1 : I ≠ ⊤
e : ℕ
he : 2 ≤ e
⊢ I = I ^ 1
Theorem: MonoidAlgebra.ringHom_ext
File: Mathlib/Algebra/MonoidAlgebra/Basic.lean

tactic: rw [← single, ← one_mul a, ← mul_one b, ← single_mul_single, AddMonoidHom.coe_coe f,
  AddMonoidHom.coe_coe g, f.map_mul, g.map_mul, h₁, h_of]
state_before: k : Type u₁
G : Type u₂
R✝ : Type ?u.870217
R : Type u_1
inst✝² : Semiring k
inst✝¹ : MulOneClass G
inst✝ : Semiring R
f g : MonoidAlgebra k G →+* R
h₁ : ∀ (b : k), ↑f (single 1 b) = ↑g (single 1 b)
h_of : ∀ (a : G), ↑f (single a 1) = ↑g (single a 1)
a : G
b : k
⊢ ↑((fun f => ↑f) f) (Finsupp.single a b) = ↑((fun f => ↑f) g) (Finsupp.single a b)
Theorem: Real.Angle.abs_cos_eq_abs_sin_of_two_zsmul_add_two_zsmul_eq_pi
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: simp_rw [two_zsmul, ← two_nsmul] at h
state_before: θ ψ : Angle
h : 2 • θ + 2 • ψ = ↑π
⊢ abs (cos θ) = abs (sin ψ)

tactic: exact abs_cos_eq_abs_sin_of_two_nsmul_add_two_nsmul_eq_pi h
state_before: θ ψ : Angle
h : 2 • θ + 2 • ψ = ↑π
⊢ abs (cos θ) = abs (sin ψ)
Theorem: Nat.evenOddRec_odd
File: Mathlib/Data/Nat/EvenOddRec.lean

tactic: rw [evenOddRec, binaryRec_eq]
state_before: n : ℕ
P : ℕ → Sort u_1
h0 : P 0
h_even : (i : ℕ) → P i → P (2 * i)
h_odd : (i : ℕ) → P i → P (2 * i + 1)
H : h_even 0 h0 = h0
⊢ HEq (evenOddRec h0 h_even h_odd (bit true n)) (h_odd n (evenOddRec h0 h_even h_odd n))

tactic: apply eq_rec_heq
state_before: n : ℕ
P : ℕ → Sort u_1
h0 : P 0
h_even : (i : ℕ) → P i → P (2 * i)
h_odd : (i : ℕ) → P i → P (2 * i + 1)
H : h_even 0 h0 = h0
⊢ HEq
    (match true, n,
      binaryRec h0
        (fun x x_1 x_2 =>
          match x, x_1, x_2 with
          | false, i, hi => (_ : 2 * i = bit0 i) ▸ h_even i hi
          | true, i, hi => (_ : 2 * i + 1 = bit1 i) ▸ h_odd i hi)
        n with
    | false, i, hi => (_ : 2 * i = bit0 i) ▸ h_even i hi
    | true, i, hi => (_ : 2 * i + 1 = bit1 i) ▸ h_odd i hi)
    (h_odd n (evenOddRec h0 h_even h_odd n))

case h
n : ℕ
P : ℕ → Sort u_1
h0 : P 0
h_even : (i : ℕ) → P i → P (2 * i)
h_odd : (i : ℕ) → P i → P (2 * i + 1)
H : h_even 0 h0 = h0
⊢ (match false, 0, h0 with
    | false, i, hi => (_ : 2 * i = bit0 i) ▸ h_even i hi
    | true, i, hi => (_ : 2 * i + 1 = bit1 i) ▸ h_odd i hi) =
    h0

tactic: exact H
state_before: case h
n : ℕ
P : ℕ → Sort u_1
h0 : P 0
h_even : (i : ℕ) → P i → P (2 * i)
h_odd : (i : ℕ) → P i → P (2 * i + 1)
H : h_even 0 h0 = h0
⊢ (match false, 0, h0 with
    | false, i, hi => (_ : 2 * i = bit0 i) ▸ h_even i hi
    | true, i, hi => (_ : 2 * i + 1 = bit1 i) ▸ h_odd i hi) =
    h0
Theorem: CategoryTheory.Subobject.arrow_congr
File: Mathlib/CategoryTheory/Subobject/Basic.lean

tactic: induction h
state_before: C : Type u₁
inst✝¹ : Category C
X✝ Y✝ Z : C
D : Type u₂
inst✝ : Category D
A : C
X Y : Subobject A
h : X = Y
⊢ eqToHom (_ : underlying.obj X = underlying.obj Y) ≫ arrow Y = arrow X

tactic: simp
state_before: case refl
C : Type u₁
inst✝¹ : Category C
X✝ Y✝ Z : C
D : Type u₂
inst✝ : Category D
A : C
X Y : Subobject A
⊢ eqToHom (_ : underlying.obj X = underlying.obj X) ≫ arrow X = arrow X
Theorem: Finset.card_union_eq
File: Mathlib/Data/Finset/Card.lean

tactic: rw [← disjUnion_eq_union s t h, card_disjUnion _ _ _]
state_before: α : Type u_1
β : Type ?u.33976
s t : Finset α
f : α → β
n : ℕ
inst✝ : DecidableEq α
h : _root_.Disjoint s t
⊢ card (s ∪ t) = card s + card t
Theorem: Complex.ofReal_cosh_ofReal_re
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [← cosh_conj, conj_ofReal]
state_before: x✝ y : ℂ
x : ℝ
⊢ ↑(starRingEnd ℂ) (cosh ↑x) = cosh ↑x
Theorem: Matrix.submatrix_mul_transpose_submatrix
File: Mathlib/Data/Matrix/Basic.lean

tactic: rw [submatrix_mul_equiv, submatrix_id_id]
state_before: l : Type ?u.1186135
m : Type u_1
n : Type u_2
o : Type ?u.1186144
m' : o → Type ?u.1186149
n' : o → Type ?u.1186154
R : Type ?u.1186157
S : Type ?u.1186160
α : Type v
β : Type w
γ : Type ?u.1186167
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : AddCommMonoid α
inst✝ : Mul α
e : m ≃ n
M : Matrix m n α
⊢ submatrix M id ↑e ⬝ submatrix Mᵀ (↑e) id = M ⬝ Mᵀ
Theorem: CompleteLattice.Independent.setIndependent_range
File: Mathlib/Order/SupIndep.lean

tactic: rw [setIndependent_iff]
state_before: α : Type u_2
β : Type ?u.53084
ι : Type u_1
ι' : Type ?u.53090
inst✝ : CompleteLattice α
s : Set α
hs : SetIndependent s
t : ι → α
ht✝ ht : Independent t
⊢ SetIndependent (range t)

tactic: rw [← coe_comp_rangeFactorization t] at ht
state_before: α : Type u_2
β : Type ?u.53084
ι : Type u_1
ι' : Type ?u.53090
inst✝ : CompleteLattice α
s : Set α
hs : SetIndependent s
t : ι → α
ht✝ ht : Independent t
⊢ Independent Subtype.val

tactic: exact ht.comp' surjective_onto_range
state_before: α : Type u_2
β : Type ?u.53084
ι : Type u_1
ι' : Type ?u.53090
inst✝ : CompleteLattice α
s : Set α
hs : SetIndependent s
t : ι → α
ht✝ : Independent t
ht : Independent (Subtype.val ∘ rangeFactorization t)
⊢ Independent Subtype.val
Theorem: ProbabilityTheory.lintegral_mul_eq_lintegral_mul_lintegral_of_indepFun'
File: Mathlib/Probability/Integration.lean

tactic: have fg_ae : f * g =ᵐ[μ] h_meas_f.mk _ * h_meas_g.mk _ := h_meas_f.ae_eq_mk.mul h_meas_g.ae_eq_mk
state_before: Ω : Type u_1
mΩ : MeasurableSpace Ω
μ : MeasureTheory.Measure Ω
f g : Ω → ℝ≥0∞
X Y : Ω → ℝ
h_meas_f : AEMeasurable f
h_meas_g : AEMeasurable g
h_indep_fun : IndepFun f g
⊢ (∫⁻ (ω : Ω), (f * g) ω ∂μ) = (∫⁻ (ω : Ω), f ω ∂μ) * ∫⁻ (ω : Ω), g ω ∂μ

tactic: rw [lintegral_congr_ae h_meas_f.ae_eq_mk, lintegral_congr_ae h_meas_g.ae_eq_mk,
  lintegral_congr_ae fg_ae]
state_before: Ω : Type u_1
mΩ : MeasurableSpace Ω
μ : MeasureTheory.Measure Ω
f g : Ω → ℝ≥0∞
X Y : Ω → ℝ
h_meas_f : AEMeasurable f
h_meas_g : AEMeasurable g
h_indep_fun : IndepFun f g
fg_ae : f * g =ᵐ[μ] AEMeasurable.mk f h_meas_f * AEMeasurable.mk g h_meas_g
⊢ (∫⁻ (ω : Ω), (f * g) ω ∂μ) = (∫⁻ (ω : Ω), f ω ∂μ) * ∫⁻ (ω : Ω), g ω ∂μ

tactic: apply lintegral_mul_eq_lintegral_mul_lintegral_of_indepFun h_meas_f.measurable_mk
    h_meas_g.measurable_mk
state_before: Ω : Type u_1
mΩ : MeasurableSpace Ω
μ : MeasureTheory.Measure Ω
f g : Ω → ℝ≥0∞
X Y : Ω → ℝ
h_meas_f : AEMeasurable f
h_meas_g : AEMeasurable g
h_indep_fun : IndepFun f g
fg_ae : f * g =ᵐ[μ] AEMeasurable.mk f h_meas_f * AEMeasurable.mk g h_meas_g
⊢ (∫⁻ (a : Ω), (AEMeasurable.mk f h_meas_f * AEMeasurable.mk g h_meas_g) a ∂μ) =
    (∫⁻ (a : Ω), AEMeasurable.mk f h_meas_f a ∂μ) * ∫⁻ (a : Ω), AEMeasurable.mk g h_meas_g a ∂μ

tactic: exact h_indep_fun.ae_eq h_meas_f.ae_eq_mk h_meas_g.ae_eq_mk
state_before: Ω : Type u_1
mΩ : MeasurableSpace Ω
μ : MeasureTheory.Measure Ω
f g : Ω → ℝ≥0∞
X Y : Ω → ℝ
h_meas_f : AEMeasurable f
h_meas_g : AEMeasurable g
h_indep_fun : IndepFun f g
fg_ae : f * g =ᵐ[μ] AEMeasurable.mk f h_meas_f * AEMeasurable.mk g h_meas_g
⊢ IndepFun (AEMeasurable.mk f h_meas_f) (AEMeasurable.mk g h_meas_g)
Theorem: Int.le_add_of_nonneg_left
File: Std/Data/Int/Lemmas.lean

tactic: have : 0 + a ≤ b + a := Int.add_le_add_right h a
state_before: a b : Int
h : 0 ≤ b
⊢ a ≤ b + a

tactic: rwa [Int.zero_add] at this
state_before: a b : Int
h : 0 ≤ b
this : 0 + a ≤ b + a
⊢ a ≤ b + a
Theorem: Polynomial.root_mul_left_of_isRoot
File: Mathlib/Data/Polynomial/Eval.lean

tactic: rw [IsRoot, eval_mul, IsRoot.def.1 H, mul_zero]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : CommSemiring R
p✝ q✝ : R[X]
x : R
inst✝ : CommSemiring S
f : R →+* S
p q : R[X]
H : IsRoot q a
⊢ IsRoot (p * q) a
Theorem: MeasureTheory.Measure.zero_prod
File: Mathlib/MeasureTheory/Constructions/Prod/Basic.lean

tactic: rw [Measure.prod]
state_before: α : Type u_2
α' : Type ?u.4498752
β : Type u_1
β' : Type ?u.4498758
γ : Type ?u.4498761
E : Type ?u.4498764
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ
μ μ' : Measure α
ν✝ ν' : Measure β
τ : Measure γ
inst✝² : NormedAddCommGroup E
inst✝¹ : SigmaFinite ν✝
inst✝ : SigmaFinite μ
ν : Measure β
⊢ Measure.prod 0 ν = 0

tactic: exact bind_zero_left _
state_before: α : Type u_2
α' : Type ?u.4498752
β : Type u_1
β' : Type ?u.4498758
γ : Type ?u.4498761
E : Type ?u.4498764
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ
μ μ' : Measure α
ν✝ ν' : Measure β
τ : Measure γ
inst✝² : NormedAddCommGroup E
inst✝¹ : SigmaFinite ν✝
inst✝ : SigmaFinite μ
ν : Measure β
⊢ (bind 0 fun x => map (Prod.mk x) ν) = 0
Theorem: div_mem
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: rw [div_eq_mul_inv]
state_before: G : Type ?u.4395
G' : Type ?u.4398
inst✝⁴ : Group G
inst✝³ : Group G'
A : Type ?u.4407
inst✝² : AddGroup A
M : Type u_1
S : Type u_2
inst✝¹ : DivInvMonoid M
inst✝ : SetLike S M
hSM : SubgroupClass S M
H K : S
x y : M
hx : x ∈ H
hy : y ∈ H
⊢ x / y ∈ H

tactic: exact mul_mem hx (inv_mem hy)
state_before: G : Type ?u.4395
G' : Type ?u.4398
inst✝⁴ : Group G
inst✝³ : Group G'
A : Type ?u.4407
inst✝² : AddGroup A
M : Type u_1
S : Type u_2
inst✝¹ : DivInvMonoid M
inst✝ : SetLike S M
hSM : SubgroupClass S M
H K : S
x y : M
hx : x ∈ H
hy : y ∈ H
⊢ x * y⁻¹ ∈ H
Theorem: Option.map_map₂_distrib
File: Mathlib/Data/Option/NAry.lean

tactic: cases a <;> cases b <;> simp [h_distrib]
state_before: α : Type u_5
β : Type u_6
γ : Type u_4
f : α → β → γ
a : Option α
b : Option β
c : Option γ
δ : Type u_1
α' : Type u_2
β' : Type u_3
g : γ → δ
f' : α' → β' → δ
g₁ : α → α'
g₂ : β → β'
h_distrib : ∀ (a : α) (b : β), g (f a b) = f' (g₁ a) (g₂ b)
⊢ Option.map g (map₂ f a b) = map₂ f' (Option.map g₁ a) (Option.map g₂ b)
Theorem: Span.finsupp_total_repr
File: Mathlib/LinearAlgebra/Finsupp.lean

tactic: rw [Span.repr_def]
state_before: R : Type u_2
M : Type u_1
N : Type ?u.755002
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
w : Set M
x : { x // x ∈ span R w }
⊢ ↑(Finsupp.total (↑w) M R Subtype.val) (repr R w x) = ↑x

tactic: exact ((Finsupp.mem_span_iff_total _ _ _).mp x.2).choose_spec
state_before: R : Type u_2
M : Type u_1
N : Type ?u.755002
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
w : Set M
x : { x // x ∈ span R w }
⊢ ↑(Finsupp.total (↑w) M R Subtype.val) (Exists.choose (_ : ∃ l, ↑(Finsupp.total (↑w) M R Subtype.val) l = ↑x)) = ↑x
Theorem: CategoryTheory.isIso_of_epi_of_strongMono
File: Mathlib/CategoryTheory/Limits/Shapes/StrongEpi.lean

tactic: simp
state_before: C : Type u
inst✝² : Category C
P Q : C
f : P ⟶ Q
inst✝¹ : Epi f
inst✝ : StrongMono f
⊢ 𝟙 P ≫ f = f ≫ 𝟙 Q

tactic: aesop_cat
state_before: C : Type u
inst✝² : Category C
P Q : C
f : P ⟶ Q
inst✝¹ : Epi f
inst✝ : StrongMono f
⊢ f ≫ CommSq.lift (_ : CommSq (𝟙 P) f f (𝟙 Q)) = 𝟙 P ∧ CommSq.lift (_ : CommSq (𝟙 P) f f (𝟙 Q)) ≫ f = 𝟙 Q
Theorem: FreeGroup.Red.not_step_singleton
File: Mathlib/GroupTheory/FreeGroup.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
Theorem: DvdNotUnit.ne
File: Mathlib/Algebra/Associated.lean

tactic: by_contra hcontra
state_before: α : Type u_1
β : Type ?u.355226
γ : Type ?u.355229
δ : Type ?u.355232
inst✝ : CancelCommMonoidWithZero α
p q : α
h : DvdNotUnit p q
⊢ p ≠ q

tactic: obtain ⟨hp, x, hx', hx''⟩ := h
state_before: α : Type u_1
β : Type ?u.355226
γ : Type ?u.355229
δ : Type ?u.355232
inst✝ : CancelCommMonoidWithZero α
p q : α
h : DvdNotUnit p q
hcontra : p = q
⊢ False

tactic: conv_lhs at hx'' => rw [← hcontra, ← mul_one p]
state_before: case intro.intro.intro
α : Type u_1
β : Type ?u.355226
γ : Type ?u.355229
δ : Type ?u.355232
inst✝ : CancelCommMonoidWithZero α
p q : α
hcontra : p = q
hp : p ≠ 0
x : α
hx' : ¬IsUnit x
hx'' : q = p * x
⊢ False

tactic: rw [(mul_left_cancel₀ hp hx'').symm] at hx'
state_before: case intro.intro.intro
α : Type u_1
β : Type ?u.355226
γ : Type ?u.355229
δ : Type ?u.355232
inst✝ : CancelCommMonoidWithZero α
p q : α
hcontra : p = q
hp : p ≠ 0
x : α
hx' : ¬IsUnit x
hx'' : p * 1 = p * x
⊢ False

tactic: exact hx' isUnit_one
state_before: case intro.intro.intro
α : Type u_1
β : Type ?u.355226
γ : Type ?u.355229
δ : Type ?u.355232
inst✝ : CancelCommMonoidWithZero α
p q : α
hcontra : p = q
hp : p ≠ 0
x : α
hx' : ¬IsUnit 1
hx'' : p * 1 = p * x
⊢ False
Theorem: Fin.find_eq_none_iff
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: rw [← not_exists, ← isSome_find_iff]
state_before: m n✝ n : ℕ
p : Fin n → Prop
inst✝ : DecidablePred p
⊢ find p = none ↔ ∀ (i : Fin n), ¬p i

tactic: cases find p <;> simp
state_before: m n✝ n : ℕ
p : Fin n → Prop
inst✝ : DecidablePred p
⊢ find p = none ↔ ¬Option.isSome (find fun x => p x) = true
Theorem: AddMonoidAlgebra.support_gen_of_gen'
File: Mathlib/RingTheory/FiniteType.lean

tactic: suffices (of' R M '' ⋃ f ∈ S, (f.support : Set M)) = ⋃ f ∈ S, of' R M '' (f.support : Set M) by
  rw [this]
  exact support_gen_of_gen hS
state_before: R : Type u_2
M : Type u_1
inst✝¹ : CommSemiring R
inst✝ : AddMonoid M
S : Set (AddMonoidAlgebra R M)
hS : adjoin R S = ⊤
⊢ adjoin R (of' R M '' ⋃ (f : AddMonoidAlgebra R M) (_ : f ∈ S), ↑f.support) = ⊤

tactic: simp only [Set.image_iUnion]
state_before: R : Type u_2
M : Type u_1
inst✝¹ : CommSemiring R
inst✝ : AddMonoid M
S : Set (AddMonoidAlgebra R M)
hS : adjoin R S = ⊤
⊢ (of' R M '' ⋃ (f : AddMonoidAlgebra R M) (_ : f ∈ S), ↑f.support) =
    ⋃ (f : AddMonoidAlgebra R M) (_ : f ∈ S), of' R M '' ↑f.support

tactic: rw [this]
state_before: R : Type u_2
M : Type u_1
inst✝¹ : CommSemiring R
inst✝ : AddMonoid M
S : Set (AddMonoidAlgebra R M)
hS : adjoin R S = ⊤
this :
  (of' R M '' ⋃ (f : AddMonoidAlgebra R M) (_ : f ∈ S), ↑f.support) =
    ⋃ (f : AddMonoidAlgebra R M) (_ : f ∈ S), of' R M '' ↑f.support
⊢ adjoin R (of' R M '' ⋃ (f : AddMonoidAlgebra R M) (_ : f ∈ S), ↑f.support) = ⊤

tactic: exact support_gen_of_gen hS
state_before: R : Type u_2
M : Type u_1
inst✝¹ : CommSemiring R
inst✝ : AddMonoid M
S : Set (AddMonoidAlgebra R M)
hS : adjoin R S = ⊤
this :
  (of' R M '' ⋃ (f : AddMonoidAlgebra R M) (_ : f ∈ S), ↑f.support) =
    ⋃ (f : AddMonoidAlgebra R M) (_ : f ∈ S), of' R M '' ↑f.support
⊢ adjoin R (⋃ (f : AddMonoidAlgebra R M) (_ : f ∈ S), of' R M '' ↑f.support) = ⊤
Theorem: Matrix.trace_eq_neg_charpoly_coeff
File: Mathlib/LinearAlgebra/Matrix/Charpoly/Coeff.lean

tactic: rw [charpoly_coeff_eq_prod_coeff_of_le _ le_rfl, Fintype.card,
  prod_X_sub_C_coeff_card_pred univ (fun i : n => M i i) Fintype.card_pos, neg_neg, trace]
state_before: R : Type u
inst✝⁴ : CommRing R
n G : Type v
inst✝³ : DecidableEq n
inst✝² : Fintype n
α β : Type v
inst✝¹ : DecidableEq α
M✝ : Matrix n n R
inst✝ : Nonempty n
M : Matrix n n R
⊢ trace M = -coeff (charpoly M) (Fintype.card n - 1)

tactic: simp_rw [diag_apply]
state_before: R : Type u
inst✝⁴ : CommRing R
n G : Type v
inst✝³ : DecidableEq n
inst✝² : Fintype n
α β : Type v
inst✝¹ : DecidableEq α
M✝ : Matrix n n R
inst✝ : Nonempty n
M : Matrix n n R
⊢ ∑ i : n, diag M i = ∑ i : n, M i i
Theorem: bddBelow_empty
File: Mathlib/Order/Bounds/Basic.lean

tactic: simp only [BddBelow, lowerBounds_empty, univ_nonempty]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
a b : α
inst✝ : Nonempty α
⊢ BddBelow ∅
Theorem: singleton_mul_closedBall
File: Mathlib/Analysis/Normed/Group/Pointwise.lean

tactic: simp_rw [singleton_mul, ← smul_eq_mul, image_smul, smul_closedBall]
state_before: E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x y : E
⊢ {x} * closedBall y δ = closedBall (x * y) δ
Theorem: Submodule.IsPrincipal.generator_submoduleImage_dvd_of_mem
File: Mathlib/RingTheory/PrincipalIdealDomain.lean

tactic: rw [← mem_iff_generator_dvd, LinearMap.mem_submoduleImage_of_le hNO]
state_before: R : Type u
M : Type v
inst✝³ : AddCommGroup M
inst✝² : CommRing R
inst✝¹ : Module R M
N O : Submodule R M
hNO : N ≤ O
ϕ : { x // x ∈ O } →ₗ[R] R
inst✝ : IsPrincipal (LinearMap.submoduleImage ϕ N)
x : M
hx : x ∈ N
⊢ generator (LinearMap.submoduleImage ϕ N) ∣ ↑ϕ { val := x, property := (_ : x ∈ O) }

tactic: exact ⟨x, hx, rfl⟩
state_before: R : Type u
M : Type v
inst✝³ : AddCommGroup M
inst✝² : CommRing R
inst✝¹ : Module R M
N O : Submodule R M
hNO : N ≤ O
ϕ : { x // x ∈ O } →ₗ[R] R
inst✝ : IsPrincipal (LinearMap.submoduleImage ϕ N)
x : M
hx : x ∈ N
⊢ ∃ y yN, ↑ϕ { val := y, property := (_ : y ∈ O) } = ↑ϕ { val := x, property := (_ : x ∈ O) }
Theorem: divp_mul_eq_mul_divp
File: Mathlib/Algebra/Group/Units.lean

tactic: rw [divp, divp, mul_right_comm]
state_before: α : Type u
inst✝ : CommMonoid α
x y : α
u : αˣ
⊢ x /ₚ u * y = x * y /ₚ u
Theorem: SimpleGraph.induce_eq_coe_induce_top
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: ext
state_before: ι : Sort ?u.256926
V : Type u
W : Type v
G : SimpleGraph V
s : Set V
⊢ SimpleGraph.induce s G = Subgraph.coe (induce ⊤ s)

tactic: simp
state_before: case Adj.h.h.a
ι : Sort ?u.256926
V : Type u
W : Type v
G : SimpleGraph V
s : Set V
x✝¹ x✝ : ↑s
⊢ SimpleGraph.Adj (SimpleGraph.induce s G) x✝¹ x✝ ↔ SimpleGraph.Adj (Subgraph.coe (induce ⊤ s)) x✝¹ x✝
Theorem: LaurentSeries.powerSeriesPart_eq_zero
File: Mathlib/RingTheory/LaurentSeries.lean

tactic: constructor
state_before: R : Type u
inst✝ : Semiring R
x : LaurentSeries R
⊢ powerSeriesPart x = 0 ↔ x = 0

tactic: contrapose!
state_before: case mp
R : Type u
inst✝ : Semiring R
x : LaurentSeries R
⊢ powerSeriesPart x = 0 → x = 0

tactic: simp only [ne_eq]
state_before: case mp
R : Type u
inst✝ : Semiring R
x : LaurentSeries R
⊢ x ≠ 0 → powerSeriesPart x ≠ 0

tactic: intro h
state_before: case mp
R : Type u
inst✝ : Semiring R
x : LaurentSeries R
⊢ ¬x = 0 → ¬powerSeriesPart x = 0

tactic: rw [PowerSeries.ext_iff, not_forall]
state_before: case mp
R : Type u
inst✝ : Semiring R
x : LaurentSeries R
h : ¬x = 0
⊢ ¬powerSeriesPart x = 0

tactic: refine' ⟨0, _⟩
state_before: case mp
R : Type u
inst✝ : Semiring R
x : LaurentSeries R
h : ¬x = 0
⊢ ∃ x_1, ¬↑(PowerSeries.coeff R x_1) (powerSeriesPart x) = ↑(PowerSeries.coeff R x_1) 0

tactic: simp [coeff_order_ne_zero h]
state_before: case mp
R : Type u
inst✝ : Semiring R
x : LaurentSeries R
h : ¬x = 0
⊢ ¬↑(PowerSeries.coeff R 0) (powerSeriesPart x) = ↑(PowerSeries.coeff R 0) 0

tactic: rintro rfl
state_before: case mpr
R : Type u
inst✝ : Semiring R
x : LaurentSeries R
⊢ x = 0 → powerSeriesPart x = 0

tactic: simp
state_before: case mpr
R : Type u
inst✝ : Semiring R
⊢ powerSeriesPart 0 = 0
Theorem: Set.Ioc_inter_Ioo_of_right_le
File: Mathlib/Data/Set/Intervals/Basic.lean

tactic: simp [and_assoc, @and_left_comm (x ≤ _),
  and_iff_right_iff_imp.2 fun h' => (le_of_lt h').trans h]
state_before: α : Type u_1
β : Type ?u.192566
inst✝¹ : LinearOrder α
inst✝ : LinearOrder β
f : α → β
a a₁ a₂ b b₁ b₂ c d : α
h : b₂ ≤ b₁
x : α
⊢ x ∈ Ioc a₁ b₁ ∩ Ioo a₂ b₂ ↔ x ∈ Ioo (max a₁ a₂) b₂
Theorem: TopologicalSpace.Opens.mem_sSup
File: Mathlib/Topology/Sets/Opens.lean

tactic: simp_rw [sSup_eq_iSup, mem_iSup, exists_prop]
state_before: ι : Type ?u.24447
α : Type u_1
β : Type ?u.24453
γ : Type ?u.24456
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
Us : Set (Opens α)
x : α
⊢ x ∈ sSup Us ↔ ∃ u, u ∈ Us ∧ x ∈ u
Theorem: Finset.card_eq_sum_card_fiberwise
File: Mathlib/Algebra/BigOperators/Basic.lean

tactic: simp only [card_eq_sum_ones, sum_fiberwise_of_maps_to H]
state_before: ι : Type ?u.864121
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : DecidableEq β
f : α → β
s : Finset α
t : Finset β
H : ∀ (x : α), x ∈ s → f x ∈ t
⊢ card s = ∑ a in t, card (filter (fun x => f x = a) s)
Theorem: infDist_smul₀
File: Mathlib/Analysis/NormedSpace/Pointwise.lean

tactic: simp_rw [Metric.infDist, infEdist_smul₀ hc s, ENNReal.toReal_smul, NNReal.smul_def, coe_nnnorm,
  smul_eq_mul]
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedDivisionRing 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : Module 𝕜 E
inst✝ : BoundedSMul 𝕜 E
c : 𝕜
hc : c ≠ 0
s : Set E
x : E
⊢ infDist (c • x) (c • s) = ‖c‖ * infDist x s
Theorem: Finset.map_add_right_Ioc
File: Mathlib/Data/Finset/LocallyFinite.lean

tactic: rw [← coe_inj, coe_map, coe_Ioc, coe_Ioc]
state_before: ι : Type ?u.224107
α : Type u_1
inst✝² : OrderedCancelAddCommMonoid α
inst✝¹ : ExistsAddOfLE α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ map (addRightEmbedding c) (Ioc a b) = Ioc (a + c) (b + c)

tactic: exact Set.image_add_const_Ioc _ _ _
state_before: ι : Type ?u.224107
α : Type u_1
inst✝² : OrderedCancelAddCommMonoid α
inst✝¹ : ExistsAddOfLE α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ ↑(addRightEmbedding c) '' Set.Ioc a b = Set.Ioc (a + c) (b + c)