tasksource/leandojo huggingface dataset:
Theorem: aeSeq.fun_prop_of_mem_aeSeqSet
File: Mathlib/MeasureTheory/Function/AEMeasurableSequence.lean

tactic: have h_eq : (fun n => f n x) = fun n => aeSeq hf p n x :=
  funext fun n => (aeSeq_eq_fun_of_mem_aeSeqSet hf hx n).symm
state_before: ι : Sort u_3
α : Type u_1
β : Type u_2
γ : Type ?u.363672
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
f : ι → α → β
μ : MeasureTheory.Measure α
p : α → (ι → β) → Prop
hf : ∀ (i : ι), AEMeasurable (f i)
x : α
hx : x ∈ aeSeqSet hf p
⊢ p x fun n => f n x

tactic: rw [h_eq]
state_before: ι : Sort u_3
α : Type u_1
β : Type u_2
γ : Type ?u.363672
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
f : ι → α → β
μ : MeasureTheory.Measure α
p : α → (ι → β) → Prop
hf : ∀ (i : ι), AEMeasurable (f i)
x : α
hx : x ∈ aeSeqSet hf p
h_eq : (fun n => f n x) = fun n => aeSeq hf p n x
⊢ p x fun n => f n x

tactic: exact prop_of_mem_aeSeqSet hf hx
state_before: ι : Sort u_3
α : Type u_1
β : Type u_2
γ : Type ?u.363672
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
f : ι → α → β
μ : MeasureTheory.Measure α
p : α → (ι → β) → Prop
hf : ∀ (i : ι), AEMeasurable (f i)
x : α
hx : x ∈ aeSeqSet hf p
h_eq : (fun n => f n x) = fun n => aeSeq hf p n x
⊢ p x fun n => aeSeq hf p n x
Theorem: neg_one_pow_eq_pow_mod_two
File: Mathlib/Algebra/GroupPower/Lemmas.lean

tactic: rw [← Nat.mod_add_div n 2, pow_add, pow_mul]
state_before: α : Type ?u.287126
M : Type u
N : Type v
G : Type w
H : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝ : Ring R
n : ℕ
⊢ (-1) ^ n = (-1) ^ (n % 2)

tactic: simp [sq]
state_before: α : Type ?u.287126
M : Type u
N : Type v
G : Type w
H : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝ : Ring R
n : ℕ
⊢ (-1) ^ (n % 2) * ((-1) ^ 2) ^ (n / 2) = (-1) ^ ((n % 2 + 2 * (n / 2)) % 2)
Theorem: Set.preimage_sub_const_Ioc
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [sub_eq_add_neg]
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
⊢ (fun x => x - a) ⁻¹' Ioc b c = Ioc (b + a) (c + a)
Theorem: Multiset.filter_congr
File: Mathlib/Data/Multiset/Basic.lean

tactic: simpa using h
state_before: α : Type u_1
β : Type ?u.203251
γ : Type ?u.203254
p✝ : α → Prop
inst✝² : DecidablePred p✝
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
s : Multiset α
_l : List α
h : ∀ (x : α), x ∈ Quot.mk Setoid.r _l → (p x ↔ q x)
⊢ ∀ (x : α), x ∈ _l → (decide (p x) = true ↔ decide (q x) = true)
Theorem: intervalIntegral.integral_congr_ae'
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: simp only [intervalIntegral, set_integral_congr_ae measurableSet_Ioc h,
  set_integral_congr_ae measurableSet_Ioc h']
state_before: ι : Type ?u.16560177
𝕜 : Type ?u.16560180
E : Type u_1
F : Type ?u.16560186
A : Type ?u.16560189
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
h : ∀ᵐ (x : ℝ) ∂μ, x ∈ Ioc a b → f x = g x
h' : ∀ᵐ (x : ℝ) ∂μ, x ∈ Ioc b a → f x = g x
⊢ (∫ (x : ℝ) in a..b, f x ∂μ) = ∫ (x : ℝ) in a..b, g x ∂μ
Theorem: isReduced_of_injective
File: Mathlib/RingTheory/Nilpotent.lean

tactic: constructor
state_before: R S : Type u
x y : R
inst✝³ : MonoidWithZero R
inst✝² : MonoidWithZero S
F : Type u_1
inst✝¹ : MonoidWithZeroHomClass F R S
f : F
hf : Function.Injective ↑f
inst✝ : IsReduced S
⊢ IsReduced R

tactic: intro x hx
state_before: case eq_zero
R S : Type u
x y : R
inst✝³ : MonoidWithZero R
inst✝² : MonoidWithZero S
F : Type u_1
inst✝¹ : MonoidWithZeroHomClass F R S
f : F
hf : Function.Injective ↑f
inst✝ : IsReduced S
⊢ ∀ (x : R), IsNilpotent x → x = 0

tactic: apply hf
state_before: case eq_zero
R S : Type u
x✝ y : R
inst✝³ : MonoidWithZero R
inst✝² : MonoidWithZero S
F : Type u_1
inst✝¹ : MonoidWithZeroHomClass F R S
f : F
hf : Function.Injective ↑f
inst✝ : IsReduced S
x : R
hx : IsNilpotent x
⊢ x = 0

tactic: rw [map_zero]
state_before: case eq_zero.a
R S : Type u
x✝ y : R
inst✝³ : MonoidWithZero R
inst✝² : MonoidWithZero S
F : Type u_1
inst✝¹ : MonoidWithZeroHomClass F R S
f : F
hf : Function.Injective ↑f
inst✝ : IsReduced S
x : R
hx : IsNilpotent x
⊢ ↑f x = ↑f 0

tactic: exact (hx.map f).eq_zero
state_before: case eq_zero.a
R S : Type u
x✝ y : R
inst✝³ : MonoidWithZero R
inst✝² : MonoidWithZero S
F : Type u_1
inst✝¹ : MonoidWithZeroHomClass F R S
f : F
hf : Function.Injective ↑f
inst✝ : IsReduced S
x : R
hx : IsNilpotent x
⊢ ↑f x = 0
Theorem: algebraMap_star_comm
File: Mathlib/Algebra/Star/Module.lean

tactic: simp only [Algebra.algebraMap_eq_smul_one, star_smul, star_one]
state_before: R✝ : Type ?u.168559
A✝ : Type ?u.168562
inst✝¹³ : Semiring R✝
inst✝¹² : StarSemigroup R✝
inst✝¹¹ : TrivialStar R✝
inst✝¹⁰ : AddCommGroup A✝
inst✝⁹ : Module R✝ A✝
inst✝⁸ : StarAddMonoid A✝
inst✝⁷ : StarModule R✝ A✝
inst✝⁶ : Invertible 2
R : Type u_1
A : Type u_2
inst✝⁵ : CommSemiring R
inst✝⁴ : StarRing R
inst✝³ : Semiring A
inst✝² : StarSemigroup A
inst✝¹ : Algebra R A
inst✝ : StarModule R A
r : R
⊢ ↑(algebraMap R A) (star r) = star (↑(algebraMap R A) r)
Theorem: ContinuousLinearEquiv.symm_symm
File: Mathlib/Topology/Algebra/Module/Basic.lean

tactic: ext x
state_before: R₁ : Type u_1
R₂ : Type u_2
R₃ : Type ?u.1591553
inst✝²⁴ : Semiring R₁
inst✝²³ : Semiring R₂
inst✝²² : Semiring R₃
σ₁₂ : R₁ →+* R₂
σ₂₁ : R₂ →+* R₁
inst✝²¹ : RingHomInvPair σ₁₂ σ₂₁
inst✝²⁰ : RingHomInvPair σ₂₁ σ₁₂
σ₂₃ : R₂ →+* R₃
σ₃₂ : R₃ →+* R₂
inst✝¹⁹ : RingHomInvPair σ₂₃ σ₃₂
inst✝¹⁸ : RingHomInvPair σ₃₂ σ₂₃
σ₁₃ : R₁ →+* R₃
σ₃₁ : R₃ →+* R₁
inst✝¹⁷ : RingHomInvPair σ₁₃ σ₃₁
inst✝¹⁶ : RingHomInvPair σ₃₁ σ₁₃
inst✝¹⁵ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝¹⁴ : RingHomCompTriple σ₃₂ σ₂₁ σ₃₁
M₁ : Type u_3
inst✝¹³ : TopologicalSpace M₁
inst✝¹² : AddCommMonoid M₁
M'₁ : Type ?u.1592407
inst✝¹¹ : TopologicalSpace M'₁
inst✝¹⁰ : AddCommMonoid M'₁
M₂ : Type u_4
inst✝⁹ : TopologicalSpace M₂
inst✝⁸ : AddCommMonoid M₂
M₃ : Type ?u.1592425
inst✝⁷ : TopologicalSpace M₃
inst✝⁶ : AddCommMonoid M₃
M₄ : Type ?u.1592434
inst✝⁵ : TopologicalSpace M₄
inst✝⁴ : AddCommMonoid M₄
inst✝³ : Module R₁ M₁
inst✝² : Module R₁ M'₁
inst✝¹ : Module R₂ M₂
inst✝ : Module R₃ M₃
e : M₁ ≃SL[σ₁₂] M₂
⊢ ContinuousLinearEquiv.symm (ContinuousLinearEquiv.symm e) = e

tactic: rfl
state_before: case h.h
R₁ : Type u_1
R₂ : Type u_2
R₃ : Type ?u.1591553
inst✝²⁴ : Semiring R₁
inst✝²³ : Semiring R₂
inst✝²² : Semiring R₃
σ₁₂ : R₁ →+* R₂
σ₂₁ : R₂ →+* R₁
inst✝²¹ : RingHomInvPair σ₁₂ σ₂₁
inst✝²⁰ : RingHomInvPair σ₂₁ σ₁₂
σ₂₃ : R₂ →+* R₃
σ₃₂ : R₃ →+* R₂
inst✝¹⁹ : RingHomInvPair σ₂₃ σ₃₂
inst✝¹⁸ : RingHomInvPair σ₃₂ σ₂₃
σ₁₃ : R₁ →+* R₃
σ₃₁ : R₃ →+* R₁
inst✝¹⁷ : RingHomInvPair σ₁₃ σ₃₁
inst✝¹⁶ : RingHomInvPair σ₃₁ σ₁₃
inst✝¹⁵ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝¹⁴ : RingHomCompTriple σ₃₂ σ₂₁ σ₃₁
M₁ : Type u_3
inst✝¹³ : TopologicalSpace M₁
inst✝¹² : AddCommMonoid M₁
M'₁ : Type ?u.1592407
inst✝¹¹ : TopologicalSpace M'₁
inst✝¹⁰ : AddCommMonoid M'₁
M₂ : Type u_4
inst✝⁹ : TopologicalSpace M₂
inst✝⁸ : AddCommMonoid M₂
M₃ : Type ?u.1592425
inst✝⁷ : TopologicalSpace M₃
inst✝⁶ : AddCommMonoid M₃
M₄ : Type ?u.1592434
inst✝⁵ : TopologicalSpace M₄
inst✝⁴ : AddCommMonoid M₄
inst✝³ : Module R₁ M₁
inst✝² : Module R₁ M'₁
inst✝¹ : Module R₂ M₂
inst✝ : Module R₃ M₃
e : M₁ ≃SL[σ₁₂] M₂
x : M₁
⊢ ↑(ContinuousLinearEquiv.symm (ContinuousLinearEquiv.symm e)) x = ↑e x
Theorem: List.permutationsAux2_snd_cons
File: Mathlib/Data/List/Permutation.lean

tactic: simp [permutationsAux2, permutationsAux2_fst t _ _ ys]
state_before: α : Type u_1
β : Type u_2
t : α
ts : List α
r : List β
y : α
ys : List α
f : List α → β
⊢ (permutationsAux2 t ts r (y :: ys) f).snd =
    f (t :: y :: ys ++ ts) :: (permutationsAux2 t ts r ys fun x => f (y :: x)).snd
Theorem: MeasureTheory.AEEqFun.sup_le
File: Mathlib/MeasureTheory/Function/AEEqFun.lean

tactic: rw [← coeFn_le] at hf hg⊢
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.458131
δ : Type ?u.458134
inst✝⁵ : MeasurableSpace α
μ ν : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : TopologicalSpace δ
inst✝¹ : SemilatticeSup β
inst✝ : ContinuousSup β
f g f' : α →ₘ[μ] β
hf : f ≤ f'
hg : g ≤ f'
⊢ f ⊔ g ≤ f'

tactic: filter_upwards [hf, hg, coeFn_sup f g] with _ haf hag ha_sup
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.458131
δ : Type ?u.458134
inst✝⁵ : MeasurableSpace α
μ ν : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : TopologicalSpace δ
inst✝¹ : SemilatticeSup β
inst✝ : ContinuousSup β
f g f' : α →ₘ[μ] β
hf : ↑f ≤ᵐ[μ] ↑f'
hg : ↑g ≤ᵐ[μ] ↑f'
⊢ ↑(f ⊔ g) ≤ᵐ[μ] ↑f'

tactic: rw [ha_sup]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type ?u.458131
δ : Type ?u.458134
inst✝⁵ : MeasurableSpace α
μ ν : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : TopologicalSpace δ
inst✝¹ : SemilatticeSup β
inst✝ : ContinuousSup β
f g f' : α →ₘ[μ] β
hf : ↑f ≤ᵐ[μ] ↑f'
hg : ↑g ≤ᵐ[μ] ↑f'
a✝ : α
haf : ↑f a✝ ≤ ↑f' a✝
hag : ↑g a✝ ≤ ↑f' a✝
ha_sup : ↑(f ⊔ g) a✝ = ↑f a✝ ⊔ ↑g a✝
⊢ ↑(f ⊔ g) a✝ ≤ ↑f' a✝

tactic: exact sup_le haf hag
state_before: case h
α : Type u_1
β : Type u_2
γ : Type ?u.458131
δ : Type ?u.458134
inst✝⁵ : MeasurableSpace α
μ ν : Measure α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : TopologicalSpace δ
inst✝¹ : SemilatticeSup β
inst✝ : ContinuousSup β
f g f' : α →ₘ[μ] β
hf : ↑f ≤ᵐ[μ] ↑f'
hg : ↑g ≤ᵐ[μ] ↑f'
a✝ : α
haf : ↑f a✝ ≤ ↑f' a✝
hag : ↑g a✝ ≤ ↑f' a✝
ha_sup : ↑(f ⊔ g) a✝ = ↑f a✝ ⊔ ↑g a✝
⊢ ↑f a✝ ⊔ ↑g a✝ ≤ ↑f' a✝
Theorem: Set.compl_union_self
File: Mathlib/Data/Set/Basic.lean

tactic: rw [union_comm, union_compl_self]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s✝ s₁ s₂ t t₁ t₂ u s : Set α
⊢ sᶜ ∪ s = univ
Theorem: Real.rpow_two
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rw [← rpow_nat_cast]
state_before: x✝ y z x : ℝ
⊢ x ^ 2 = x ^ 2

tactic: simp only [Nat.cast_ofNat]
state_before: x✝ y z x : ℝ
⊢ x ^ 2 = x ^ ↑2
Theorem: ZFSet.toSet_union
File: Mathlib/SetTheory/ZFC/Basic.lean

tactic: change (⋃₀ {x, y}).toSet = _
state_before: x y : ZFSet
⊢ toSet (x ∪ y) = toSet x ∪ toSet y

tactic: simp
state_before: x y : ZFSet
⊢ toSet (⋃₀ {x, y}) = toSet x ∪ toSet y
Theorem: Matrix.mulVec_zero
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type ?u.843153
m : Type u_2
n : Type u_1
o : Type ?u.843162
m' : o → Type ?u.843167
n' : o → Type ?u.843172
R : Type ?u.843175
S : Type ?u.843178
α : Type v
β : Type w
γ : Type ?u.843185
inst✝¹ : NonUnitalNonAssocSemiring α
inst✝ : Fintype n
A : Matrix m n α
⊢ mulVec A 0 = 0

tactic: simp [mulVec]
state_before: case h
l : Type ?u.843153
m : Type u_2
n : Type u_1
o : Type ?u.843162
m' : o → Type ?u.843167
n' : o → Type ?u.843172
R : Type ?u.843175
S : Type ?u.843178
α : Type v
β : Type w
γ : Type ?u.843185
inst✝¹ : NonUnitalNonAssocSemiring α
inst✝ : Fintype n
A : Matrix m n α
x✝ : m
⊢ mulVec A 0 x✝ = OfNat.ofNat 0 x✝
Theorem: CstarRing.norm_star_mul_self'
File: Mathlib/Analysis/NormedSpace/Star/Basic.lean

tactic: rw [norm_star_mul_self, norm_star]
state_before: 𝕜 : Type ?u.35174
E : Type u_1
α : Type ?u.35180
inst✝² : NonUnitalNormedRing E
inst✝¹ : StarRing E
inst✝ : CstarRing E
x : E
⊢ ‖x⋆ * x‖ = ‖x⋆‖ * ‖x‖
Theorem: CategoryTheory.Iso.homCongr_trans
File: Mathlib/CategoryTheory/Conj.lean

tactic: simp
state_before: C : Type u
inst✝ : Category C
X₁ Y₁ X₂ Y₂ X₃ Y₃ : C
α₁ : X₁ ≅ X₂
β₁ : Y₁ ≅ Y₂
α₂ : X₂ ≅ X₃
β₂ : Y₂ ≅ Y₃
f : X₁ ⟶ Y₁
⊢ ↑(homCongr (α₁ ≪≫ α₂) (β₁ ≪≫ β₂)) f = ↑((homCongr α₁ β₁).trans (homCongr α₂ β₂)) f
Theorem: MeasureTheory.hasFiniteIntegral_of_dominated_convergence
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: rw [hasFiniteIntegral_iff_norm]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.737955
δ : Type ?u.737958
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
F✝ : ℕ → α → β
f✝ : α → β
bound✝ : α → ℝ
F : ℕ → α → β
f : α → β
bound : α → ℝ
bound_hasFiniteIntegral : HasFiniteIntegral bound
h_bound : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, ‖F n a‖ ≤ bound a
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
⊢ HasFiniteIntegral f

tactic: rw [← hasFiniteIntegral_iff_ofReal]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.737955
δ : Type ?u.737958
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
F✝ : ℕ → α → β
f✝ : α → β
bound✝ : α → ℝ
F : ℕ → α → β
f : α → β
bound : α → ℝ
bound_hasFiniteIntegral : HasFiniteIntegral bound
h_bound : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, ‖F n a‖ ≤ bound a
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
⊢ (∫⁻ (a : α), ENNReal.ofReal (bound a) ∂μ) < ⊤

tactic: exact (h_bound 0).mono fun a h => le_trans (norm_nonneg _) h
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.737955
δ : Type ?u.737958
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
F✝ : ℕ → α → β
f✝ : α → β
bound✝ : α → ℝ
F : ℕ → α → β
f : α → β
bound : α → ℝ
bound_hasFiniteIntegral : HasFiniteIntegral bound
h_bound : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, ‖F n a‖ ≤ bound a
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
⊢ 0 ≤ᵐ[μ] fun a => bound a

tactic: exact bound_hasFiniteIntegral
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.737955
δ : Type ?u.737958
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
F✝ : ℕ → α → β
f✝ : α → β
bound✝ : α → ℝ
F : ℕ → α → β
f : α → β
bound : α → ℝ
bound_hasFiniteIntegral : HasFiniteIntegral bound
h_bound : ∀ (n : ℕ), ∀ᵐ (a : α) ∂μ, ‖F n a‖ ≤ bound a
h_lim : ∀ᵐ (a : α) ∂μ, Tendsto (fun n => F n a) atTop (𝓝 (f a))
⊢ HasFiniteIntegral fun a => bound a
Theorem: Ideal.eq_bot_of_comap_eq_bot
File: Mathlib/RingTheory/Ideal/Over.lean

tactic: refine' eq_bot_iff.2 fun x hx => _
state_before: R : Type u_1
inst✝⁴ : CommRing R
S : Type u_2
inst✝³ : CommRing S
f : R →+* S
I J : Ideal S
inst✝² : Algebra R S
inst✝¹ : Nontrivial R
inst✝ : IsDomain S
hRS : Algebra.IsIntegral R S
hI : comap (algebraMap R S) I = ⊥
⊢ I = ⊥

tactic: by_cases hx0 : x = 0
state_before: R : Type u_1
inst✝⁴ : CommRing R
S : Type u_2
inst✝³ : CommRing S
f : R →+* S
I J : Ideal S
inst✝² : Algebra R S
inst✝¹ : Nontrivial R
inst✝ : IsDomain S
hRS : Algebra.IsIntegral R S
hI : comap (algebraMap R S) I = ⊥
x : S
hx : x ∈ I
⊢ x ∈ ⊥

tactic: exact hx0.symm ▸ Ideal.zero_mem ⊥
state_before: case pos
R : Type u_1
inst✝⁴ : CommRing R
S : Type u_2
inst✝³ : CommRing S
f : R →+* S
I J : Ideal S
inst✝² : Algebra R S
inst✝¹ : Nontrivial R
inst✝ : IsDomain S
hRS : Algebra.IsIntegral R S
hI : comap (algebraMap R S) I = ⊥
x : S
hx : x ∈ I
hx0 : x = 0
⊢ x ∈ ⊥

tactic: exact absurd hI (comap_ne_bot_of_integral_mem hx0 hx (hRS x))
state_before: case neg
R : Type u_1
inst✝⁴ : CommRing R
S : Type u_2
inst✝³ : CommRing S
f : R →+* S
I J : Ideal S
inst✝² : Algebra R S
inst✝¹ : Nontrivial R
inst✝ : IsDomain S
hRS : Algebra.IsIntegral R S
hI : comap (algebraMap R S) I = ⊥
x : S
hx : x ∈ I
hx0 : ¬x = 0
⊢ x ∈ ⊥
Theorem: Polynomial.eraseLead_X_pow
File: Mathlib/Data/Polynomial/EraseLead.lean

tactic: rw [X_pow_eq_monomial, eraseLead_monomial]
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
n : ℕ
⊢ eraseLead (X ^ n) = 0
Theorem: mul_nonneg_of_nonpos_of_nonpos
File: Mathlib/Algebra/Order/Ring/Defs.lean

tactic: simpa only [zero_mul] using mul_le_mul_of_nonpos_right ha hb
state_before: α : Type u
β : Type ?u.35871
inst✝ : OrderedRing α
a b c d : α
ha : a ≤ 0
hb : b ≤ 0
⊢ 0 ≤ a * b
Theorem: Set.iUnion₂_subset_iff
File: Mathlib/Data/Set/Lattice.lean

tactic: simp_rw [iUnion_subset_iff]
state_before: α : Type u_1
β : Type ?u.59765
γ : Type ?u.59768
ι : Sort u_2
ι' : Sort ?u.59774
ι₂ : Sort ?u.59777
κ : ι → Sort u_3
κ₁ : ι → Sort ?u.59787
κ₂ : ι → Sort ?u.59792
κ' : ι' → Sort ?u.59797
s : (i : ι) → κ i → Set α
t : Set α
⊢ (⋃ (i : ι) (j : κ i), s i j) ⊆ t ↔ ∀ (i : ι) (j : κ i), s i j ⊆ t
Theorem: OrderIso.preimage_Iic
File: Mathlib/Data/Set/Intervals/OrderIso.lean

tactic: ext x
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : Preorder β
e : α ≃o β
b : β
⊢ ↑e ⁻¹' Iic b = Iic (↑(symm e) b)

tactic: simp [← e.le_iff_le]
state_before: case h
α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : Preorder β
e : α ≃o β
b : β
x : α
⊢ x ∈ ↑e ⁻¹' Iic b ↔ x ∈ Iic (↑(symm e) b)
Theorem: Int.mul_eq_neg_one_iff_eq_one_or_neg_one
File: Mathlib/Data/Int/Units.lean

tactic: refine' ⟨eq_one_or_neg_one_of_mul_eq_neg_one', fun h => Or.elim h (fun H => _) fun H => _⟩ <;>
    rcases H with ⟨rfl, rfl⟩ <;>
  rfl
state_before: z w : ℤ
⊢ z * w = -1 ↔ z = 1 ∧ w = -1 ∨ z = -1 ∧ w = 1
Theorem: IsConnected.union
File: Mathlib/Topology/Connected.lean

tactic: rcases H with ⟨x, hx⟩
state_before: α : Type u
β : Type v
ι : Type ?u.4449
π : ι → Type ?u.4454
inst✝ : TopologicalSpace α
s✝ t✝ u v s t : Set α
H : Set.Nonempty (s ∩ t)
Hs : IsConnected s
Ht : IsConnected t
⊢ IsConnected (s ∪ t)

tactic: refine' ⟨⟨x, mem_union_left t (mem_of_mem_inter_left hx)⟩, _⟩
state_before: case intro
α : Type u
β : Type v
ι : Type ?u.4449
π : ι → Type ?u.4454
inst✝ : TopologicalSpace α
s✝ t✝ u v s t : Set α
Hs : IsConnected s
Ht : IsConnected t
x : α
hx : x ∈ s ∩ t
⊢ IsConnected (s ∪ t)

tactic: exact Hs.isPreconnected.union x (mem_of_mem_inter_left hx) (mem_of_mem_inter_right hx)
  Ht.isPreconnected
state_before: case intro
α : Type u
β : Type v
ι : Type ?u.4449
π : ι → Type ?u.4454
inst✝ : TopologicalSpace α
s✝ t✝ u v s t : Set α
Hs : IsConnected s
Ht : IsConnected t
x : α
hx : x ∈ s ∩ t
⊢ IsPreconnected (s ∪ t)
Theorem: zero_le_mul_left
File: Mathlib/Algebra/Order/Ring/Defs.lean

tactic: simpa using (mul_le_mul_left h : c * 0 ≤ c * b ↔ 0 ≤ b)
state_before: α : Type u
β : Type ?u.101539
inst✝ : LinearOrderedSemiring α
a b c d : α
h : 0 < c
⊢ 0 ≤ c * b ↔ 0 ≤ b
Theorem: Polynomial.natDegree_prod_le
File: Mathlib/Algebra/Polynomial/BigOperators.lean

tactic: simpa using natDegree_multiset_prod_le (s.1.map f)
state_before: R : Type u
ι : Type w
s : Finset ι
inst✝ : CommSemiring R
f : ι → R[X]
t : Multiset R[X]
⊢ natDegree (∏ i in s, f i) ≤ ∑ i in s, natDegree (f i)
Theorem: Finite.card_eq_zero_iff
File: Mathlib/Data/Finite/Card.lean

tactic: haveI := Fintype.ofFinite α
state_before: α : Type u_1
β : Type ?u.3400
γ : Type ?u.3403
inst✝ : Finite α
⊢ Nat.card α = 0 ↔ IsEmpty α

tactic: simp only [Nat.card_eq_fintype_card, Fintype.card_eq_zero_iff]
state_before: α : Type u_1
β : Type ?u.3400
γ : Type ?u.3403
inst✝ : Finite α
this : Fintype α
⊢ Nat.card α = 0 ↔ IsEmpty α
Theorem: SimpleGraph.ComponentCompl.ind
File: Mathlib/Combinatorics/SimpleGraph/Ends/Defs.lean

tactic: apply ConnectedComponent.ind
state_before: V : Type u
G : SimpleGraph V
K L L' M : Set V
β : ComponentCompl G K → Prop
f : ∀ ⦃v : V⦄ (hv : ¬v ∈ K), β (componentComplMk G hv)
⊢ ∀ (C : ComponentCompl G K), β C

tactic: exact fun ⟨v, vnK⟩ => f vnK
state_before: case h
V : Type u
G : SimpleGraph V
K L L' M : Set V
β : ComponentCompl G K → Prop
f : ∀ ⦃v : V⦄ (hv : ¬v ∈ K), β (componentComplMk G hv)
⊢ ∀ (v : ↑(Kᶜ)), β (connectedComponentMk (induce (Kᶜ) G) v)
Theorem: Complex.ofReal_inj
File: Mathlib/Data/Complex/Basic.lean

tactic: apply congrArg
state_before: z w : ℝ
⊢ z = w → ↑z = ↑w
Theorem: split_by_characteristic_domain
File: Mathlib/Algebra/CharP/MixedCharZero.lean

tactic: refine split_by_characteristic R ?_ h_equal h_mixed
state_before: R : Type u_1
inst✝¹ : CommRing R
P : Prop
inst✝ : IsDomain R
h_pos : ∀ (p : ℕ), Nat.Prime p → CharP R p → P
h_equal : Algebra ℚ R → P
h_mixed : ∀ (p : ℕ), Nat.Prime p → MixedCharZero R p → P
⊢ P

tactic: intro p p_pos p_char
state_before: R : Type u_1
inst✝¹ : CommRing R
P : Prop
inst✝ : IsDomain R
h_pos : ∀ (p : ℕ), Nat.Prime p → CharP R p → P
h_equal : Algebra ℚ R → P
h_mixed : ∀ (p : ℕ), Nat.Prime p → MixedCharZero R p → P
⊢ ∀ (p : ℕ), p ≠ 0 → CharP R p → P

tactic: have p_prime : Nat.Prime p := or_iff_not_imp_right.mp (CharP.char_is_prime_or_zero R p) p_pos
state_before: R : Type u_1
inst✝¹ : CommRing R
P : Prop
inst✝ : IsDomain R
h_pos : ∀ (p : ℕ), Nat.Prime p → CharP R p → P
h_equal : Algebra ℚ R → P
h_mixed : ∀ (p : ℕ), Nat.Prime p → MixedCharZero R p → P
p : ℕ
p_pos : p ≠ 0
p_char : CharP R p
⊢ P

tactic: exact h_pos p p_prime p_char
state_before: R : Type u_1
inst✝¹ : CommRing R
P : Prop
inst✝ : IsDomain R
h_pos : ∀ (p : ℕ), Nat.Prime p → CharP R p → P
h_equal : Algebra ℚ R → P
h_mixed : ∀ (p : ℕ), Nat.Prime p → MixedCharZero R p → P
p : ℕ
p_pos : p ≠ 0
p_char : CharP R p
p_prime : Nat.Prime p
⊢ P
Theorem: Nat.totient_eq_one_iff
File: Mathlib/Data/Nat/Totient.lean

tactic: simp
state_before: ⊢ φ 0 = 1 ↔ 0 = 1 ∨ 0 = 2

tactic: simp
state_before: ⊢ φ 1 = 1 ↔ 1 = 1 ∨ 1 = 2

tactic: simp
state_before: ⊢ φ 2 = 1 ↔ 2 = 1 ∨ 2 = 2

tactic: have : 3 ≤ n + 3 := le_add_self
state_before: n : ℕ
⊢ φ (n + 3) = 1 ↔ n + 3 = 1 ∨ n + 3 = 2

tactic: simp only [succ_succ_ne_one, false_or_iff]
state_before: n : ℕ
this : 3 ≤ n + 3
⊢ φ (n + 3) = 1 ↔ n + 3 = 1 ∨ n + 3 = 2

tactic: exact ⟨fun h => not_even_one.elim <| h ▸ totient_even this, by rintro ⟨⟩⟩
state_before: n : ℕ
this : 3 ≤ n + 3
⊢ φ (n + 3) = 1 ↔ n + 3 = 2

tactic: rintro ⟨⟩
state_before: n : ℕ
this : 3 ≤ n + 3
⊢ n + 3 = 2 → φ (n + 3) = 1
Theorem: ZMod.expand_card
File: Mathlib/FieldTheory/Finite/Basic.lean

tactic: have h := FiniteField.expand_card f
state_before: K : Type ?u.1088147
R : Type ?u.1088150
p : ℕ
inst✝ : Fact (Nat.Prime p)
f : (ZMod p)[X]
⊢ ↑(expand (ZMod p) p) f = f ^ p

tactic: rwa [ZMod.card p] at h
state_before: K : Type ?u.1088147
R : Type ?u.1088150
p : ℕ
inst✝ : Fact (Nat.Prime p)
f : (ZMod p)[X]
h : ↑(expand (ZMod p) (Fintype.card (ZMod p))) f = f ^ Fintype.card (ZMod p)
⊢ ↑(expand (ZMod p) p) f = f ^ p
Theorem: EReal.abs_mul
File: Mathlib/Data/Real/EReal.lean

tactic: induction x, y using induction₂_symm_neg with
| top_zero => simp only [zero_mul, mul_zero, abs_zero]
| top_top => rfl
| symm h => rwa [mul_comm, EReal.mul_comm]
| coe_coe => simp only [← coe_mul, abs_def, _root_.abs_mul, ENNReal.ofReal_mul (abs_nonneg _)]
| top_pos _ h =>
  rw [top_mul_coe_of_pos h, abs_top, ENNReal.top_mul]
  rw [Ne.def, abs_eq_zero_iff, coe_eq_zero]
  exact h.ne'
| neg_left h => rwa [neg_mul, EReal.abs_neg, EReal.abs_neg]
state_before: x y : EReal
⊢ EReal.abs (x * y) = EReal.abs x * EReal.abs y

tactic: simp only [zero_mul, mul_zero, abs_zero]
state_before: case top_zero

⊢ EReal.abs (⊤ * 0) = EReal.abs ⊤ * EReal.abs 0

tactic: rfl
state_before: case top_top

⊢ EReal.abs (⊤ * ⊤) = EReal.abs ⊤ * EReal.abs ⊤

tactic: rwa [mul_comm, EReal.mul_comm]
state_before: case symm
x✝ y✝ : EReal
h : EReal.abs (x✝ * y✝) = EReal.abs x✝ * EReal.abs y✝
⊢ EReal.abs (y✝ * x✝) = EReal.abs y✝ * EReal.abs x✝

tactic: simp only [← coe_mul, abs_def, _root_.abs_mul, ENNReal.ofReal_mul (abs_nonneg _)]
state_before: case coe_coe
x✝ y✝ : ℝ
⊢ EReal.abs (↑x✝ * ↑y✝) = EReal.abs ↑x✝ * EReal.abs ↑y✝

tactic: rw [top_mul_coe_of_pos h, abs_top, ENNReal.top_mul]
state_before: case top_pos
x✝ : ℝ
h : 0 < x✝
⊢ EReal.abs (⊤ * ↑x✝) = EReal.abs ⊤ * EReal.abs ↑x✝

tactic: rw [Ne.def, abs_eq_zero_iff, coe_eq_zero]
state_before: case top_pos
x✝ : ℝ
h : 0 < x✝
⊢ EReal.abs ↑x✝ ≠ 0

tactic: exact h.ne'
state_before: case top_pos
x✝ : ℝ
h : 0 < x✝
⊢ ¬x✝ = 0

tactic: rwa [neg_mul, EReal.abs_neg, EReal.abs_neg]
state_before: case neg_left
x✝ y✝ : EReal
h : EReal.abs (x✝ * y✝) = EReal.abs x✝ * EReal.abs y✝
⊢ EReal.abs (-x✝ * y✝) = EReal.abs (-x✝) * EReal.abs y✝
Theorem: Int.mul_eq_one_iff_eq_one_or_neg_one
File: Mathlib/Data/Int/Units.lean

tactic: refine' ⟨eq_one_or_neg_one_of_mul_eq_one', fun h => Or.elim h (fun H => _) fun H => _⟩ <;>
    rcases H with ⟨rfl, rfl⟩ <;>
  rfl
state_before: z w : ℤ
⊢ z * w = 1 ↔ z = 1 ∧ w = 1 ∨ z = -1 ∧ w = -1
Theorem: Algebra.toMatrix_lmul'
File: Mathlib/LinearAlgebra/Matrix/ToLin.lean

tactic: simp only [LinearMap.toMatrix_apply', coe_lmul_eq_mul, LinearMap.mul_apply']
state_before: R : Type u_1
S : Type u_2
inst✝⁴ : CommRing R
inst✝³ : Ring S
inst✝² : Algebra R S
m : Type u_3
inst✝¹ : Fintype m
inst✝ : DecidableEq m
b : Basis m R S
x : S
i j : m
⊢ ↑(toMatrix b b) (↑(lmul R S) x) i j = ↑(↑b.repr (x * ↑b j)) i
Theorem: Real.tan_eq_sin_div_cos
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [tan_eq_sin_div_cos]
state_before: x y : ℝ
⊢ ↑(tan x) = ↑(sin x / cos x)