tasksource/leandojo huggingface dataset:
Theorem: OnePoint.inseparable_iff
File: Mathlib/Topology/Compactification/OnePoint.lean

tactic: induction x using OnePoint.rec <;> induction y using OnePoint.rec <;>
  simp [not_inseparable_infty_coe, not_inseparable_coe_infty, coe_eq_coe, Inseparable.refl]
state_before: X : Type u_1
inst✝ : TopologicalSpace X
s : Set (OnePoint X)
t : Set X
x y : OnePoint X
⊢ Inseparable x y ↔ x = ∞ ∧ y = ∞ ∨ ∃ x', x = ↑x' ∧ ∃ y', y = ↑y' ∧ Inseparable x' y'
Theorem: LinearMap.ker_le_ker_comp
File: Mathlib/LinearAlgebra/Basic.lean

tactic: rw [ker_comp]
state_before: R : Type u_1
R₁ : Type ?u.1179953
R₂ : Type u_2
R₃ : Type u_5
R₄ : Type ?u.1179962
S : Type ?u.1179965
K : Type ?u.1179968
K₂ : Type ?u.1179971
M : Type u_3
M' : Type ?u.1179977
M₁ : Type ?u.1179980
M₂ : Type u_4
M₃ : Type u_6
M₄ : Type ?u.1179989
N : Type ?u.1179992
N₂ : Type ?u.1179995
ι : Type ?u.1179998
V : Type ?u.1180001
V₂ : Type ?u.1180004
inst✝¹⁰ : Semiring R
inst✝⁹ : Semiring R₂
inst✝⁸ : Semiring R₃
inst✝⁷ : AddCommMonoid M
inst✝⁶ : AddCommMonoid M₂
inst✝⁵ : AddCommMonoid M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝⁴ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝³ : Module R M
inst✝² : Module R₂ M₂
inst✝¹ : Module R₃ M₃
σ₂₁ : R₂ →+* R
τ₁₂ : R →+* R₂
τ₂₃ : R₂ →+* R₃
τ₁₃ : R →+* R₃
inst✝ : RingHomCompTriple τ₁₂ τ₂₃ τ₁₃
F : Type ?u.1180414
sc : SemilinearMapClass F τ₁₂ M M₂
f : M →ₛₗ[τ₁₂] M₂
g : M₂ →ₛₗ[τ₂₃] M₃
⊢ ker f ≤ ker (comp g f)

tactic: exact comap_mono bot_le
state_before: R : Type u_1
R₁ : Type ?u.1179953
R₂ : Type u_2
R₃ : Type u_5
R₄ : Type ?u.1179962
S : Type ?u.1179965
K : Type ?u.1179968
K₂ : Type ?u.1179971
M : Type u_3
M' : Type ?u.1179977
M₁ : Type ?u.1179980
M₂ : Type u_4
M₃ : Type u_6
M₄ : Type ?u.1179989
N : Type ?u.1179992
N₂ : Type ?u.1179995
ι : Type ?u.1179998
V : Type ?u.1180001
V₂ : Type ?u.1180004
inst✝¹⁰ : Semiring R
inst✝⁹ : Semiring R₂
inst✝⁸ : Semiring R₃
inst✝⁷ : AddCommMonoid M
inst✝⁶ : AddCommMonoid M₂
inst✝⁵ : AddCommMonoid M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝⁴ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝³ : Module R M
inst✝² : Module R₂ M₂
inst✝¹ : Module R₃ M₃
σ₂₁ : R₂ →+* R
τ₁₂ : R →+* R₂
τ₂₃ : R₂ →+* R₃
τ₁₃ : R →+* R₃
inst✝ : RingHomCompTriple τ₁₂ τ₂₃ τ₁₃
F : Type ?u.1180414
sc : SemilinearMapClass F τ₁₂ M M₂
f : M →ₛₗ[τ₁₂] M₂
g : M₂ →ₛₗ[τ₂₃] M₃
⊢ ker f ≤ comap f (ker g)
Theorem: Trivialization.continuousAt_of_comp_left
File: Mathlib/Topology/FiberBundle/Trivialization.lean

tactic: rw [e.continuousAt_iff_continuousAt_comp_left]
state_before: ι : Type ?u.43574
B : Type u_2
F : Type u_3
E : B → Type ?u.43585
Z : Type u_4
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
proj : Z → B
inst✝² : TopologicalSpace Z
inst✝¹ : TopologicalSpace (TotalSpace E)
e✝ : Trivialization F proj
x✝ : Z
X : Type u_1
inst✝ : TopologicalSpace X
f : X → Z
x : X
e : Trivialization F proj
hf_proj : ContinuousAt (proj ∘ f) x
he : proj (f x) ∈ e.baseSet
hf : ContinuousAt (↑e ∘ f) x
⊢ ContinuousAt f x

tactic: rw [e.source_eq, ← preimage_comp]
state_before: ι : Type ?u.43574
B : Type u_2
F : Type u_3
E : B → Type ?u.43585
Z : Type u_4
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
proj : Z → B
inst✝² : TopologicalSpace Z
inst✝¹ : TopologicalSpace (TotalSpace E)
e✝ : Trivialization F proj
x✝ : Z
X : Type u_1
inst✝ : TopologicalSpace X
f : X → Z
x : X
e : Trivialization F proj
hf_proj : ContinuousAt (proj ∘ f) x
he : proj (f x) ∈ e.baseSet
hf : ContinuousAt (↑e ∘ f) x
⊢ f ⁻¹' e.source ∈ 𝓝 x

tactic: exact hf_proj.preimage_mem_nhds (e.open_baseSet.mem_nhds he)
state_before: ι : Type ?u.43574
B : Type u_2
F : Type u_3
E : B → Type ?u.43585
Z : Type u_4
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
proj : Z → B
inst✝² : TopologicalSpace Z
inst✝¹ : TopologicalSpace (TotalSpace E)
e✝ : Trivialization F proj
x✝ : Z
X : Type u_1
inst✝ : TopologicalSpace X
f : X → Z
x : X
e : Trivialization F proj
hf_proj : ContinuousAt (proj ∘ f) x
he : proj (f x) ∈ e.baseSet
hf : ContinuousAt (↑e ∘ f) x
⊢ proj ∘ f ⁻¹' e.baseSet ∈ 𝓝 x

tactic: exact hf
state_before: ι : Type ?u.43574
B : Type u_2
F : Type u_3
E : B → Type ?u.43585
Z : Type u_4
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace F
proj : Z → B
inst✝² : TopologicalSpace Z
inst✝¹ : TopologicalSpace (TotalSpace E)
e✝ : Trivialization F proj
x✝ : Z
X : Type u_1
inst✝ : TopologicalSpace X
f : X → Z
x : X
e : Trivialization F proj
hf_proj : ContinuousAt (proj ∘ f) x
he : proj (f x) ∈ e.baseSet
hf : ContinuousAt (↑e ∘ f) x
⊢ ContinuousAt (↑e.toLocalHomeomorph ∘ f) x
Theorem: Finset.map_subset_iff_subset_preimage
File: Mathlib/Data/Finset/Preimage.lean

tactic: classical rw [map_eq_image, image_subset_iff_subset_preimage]
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
f : α ↪ β
s : Finset α
t : Finset β
⊢ map f s ⊆ t ↔ s ⊆ preimage t ↑f (_ : InjOn (↑f) (↑f ⁻¹' ↑t))

tactic: rw [map_eq_image, image_subset_iff_subset_preimage]
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
f : α ↪ β
s : Finset α
t : Finset β
⊢ map f s ⊆ t ↔ s ⊆ preimage t ↑f (_ : InjOn (↑f) (↑f ⁻¹' ↑t))
Theorem: MeasureTheory.Measure.toOuterMeasure_top
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: rw [← OuterMeasure.toMeasure_top, toMeasure_toOuterMeasure, OuterMeasure.trim_top]
state_before: α : Type u_1
β : Type ?u.159074
γ : Type ?u.159077
δ : Type ?u.159080
ι : Type ?u.159083
R : Type ?u.159086
R' : Type ?u.159089
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
inst✝ : MeasurableSpace α
⊢ ↑⊤ = ⊤
Theorem: Filter.mem_iff_inf_principal_compl
File: Mathlib/Order/Filter/Bases.lean

tactic: refine' not_iff_not.1 ((inf_principal_neBot_iff.trans _).symm.trans neBot_iff)
state_before: α : Type u_1
β : Type ?u.55460
γ : Type ?u.55463
ι : Sort ?u.55466
ι' : Sort ?u.55469
l l' : Filter α
p : ι → Prop
s✝ : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
f : Filter α
s : Set α
⊢ s ∈ f ↔ f ⊓ 𝓟 (sᶜ) = ⊥

tactic: exact
  ⟨fun h hs => by simpa [Set.not_nonempty_empty] using h s hs, fun hs t ht =>
    inter_compl_nonempty_iff.2 fun hts => hs <| mem_of_superset ht hts⟩
state_before: α : Type u_1
β : Type ?u.55460
γ : Type ?u.55463
ι : Sort ?u.55466
ι' : Sort ?u.55469
l l' : Filter α
p : ι → Prop
s✝ : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
f : Filter α
s : Set α
⊢ (∀ (U : Set α), U ∈ f → Set.Nonempty (U ∩ sᶜ)) ↔ ¬s ∈ f

tactic: simpa [Set.not_nonempty_empty] using h s hs
state_before: α : Type u_1
β : Type ?u.55460
γ : Type ?u.55463
ι : Sort ?u.55466
ι' : Sort ?u.55469
l l' : Filter α
p : ι → Prop
s✝ : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
f : Filter α
s : Set α
h : ∀ (U : Set α), U ∈ f → Set.Nonempty (U ∩ sᶜ)
hs : s ∈ f
⊢ False
Theorem: spectrum.map_star
File: Mathlib/Algebra/Algebra/Spectrum.lean

tactic: ext
state_before: R : Type u
A : Type v
inst✝⁵ : CommSemiring R
inst✝⁴ : Ring A
inst✝³ : Algebra R A
inst✝² : InvolutiveStar R
inst✝¹ : StarRing A
inst✝ : StarModule R A
a : A
⊢ σ (star a) = star (σ a)

tactic: simpa only [Set.mem_star, mem_iff, not_iff_not] using star_mem_resolventSet_iff.symm
state_before: case h
R : Type u
A : Type v
inst✝⁵ : CommSemiring R
inst✝⁴ : Ring A
inst✝³ : Algebra R A
inst✝² : InvolutiveStar R
inst✝¹ : StarRing A
inst✝ : StarModule R A
a : A
x✝ : R
⊢ x✝ ∈ σ (star a) ↔ x✝ ∈ star (σ a)
Theorem: List.forall₂_map_left_iff
File: Mathlib/Data/List/Forall2.lean

tactic: simp only [map, forall₂_nil_left_iff]
state_before: α : Type u_3
β : Type u_2
γ : Type u_1
δ : Type ?u.20275
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
f : γ → α
x✝ : List β
⊢ Forall₂ R (map f []) x✝ ↔ Forall₂ (fun c b => R (f c) b) [] x✝

tactic: simp only [map, forall₂_cons_left_iff, forall₂_map_left_iff]
state_before: α : Type u_3
β : Type u_2
γ : Type u_1
δ : Type ?u.20275
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
f : γ → α
a : γ
l : List γ
x✝ : List β
⊢ Forall₂ R (map f (a :: l)) x✝ ↔ Forall₂ (fun c b => R (f c) b) (a :: l) x✝
Theorem: Real.rpow_int_cast
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: simp only [rpow_def, ← Complex.ofReal_zpow, Complex.cpow_int_cast, Complex.ofReal_int_cast,
  Complex.ofReal_re]
state_before: x✝ y z x : ℝ
n : ℤ
⊢ x ^ ↑n = x ^ n
Theorem: sdiff_le_sdiff_of_sup_le_sup_left
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [← sup_sdiff_left_self, ← @sup_sdiff_left_self _ _ _ b]
state_before: ι : Type ?u.142359
α : Type u_1
β : Type ?u.142365
inst✝ : GeneralizedCoheytingAlgebra α
a b c d : α
h : c ⊔ a ≤ c ⊔ b
⊢ a \ c ≤ b \ c

tactic: exact sdiff_le_sdiff_right h
state_before: ι : Type ?u.142359
α : Type u_1
β : Type ?u.142365
inst✝ : GeneralizedCoheytingAlgebra α
a b c d : α
h : c ⊔ a ≤ c ⊔ b
⊢ (c ⊔ a) \ c ≤ (c ⊔ b) \ c
Theorem: HasSum.hasSum_iff_compl
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

tactic: rw [add_sub_cancel'_right]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.426874
δ : Type ?u.426877
inst✝² : AddCommGroup α
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalAddGroup α
f g : β → α
a a₁ a₂ : α
s : Set β
hf : HasSum (f ∘ Subtype.val) a₁
⊢ HasSum f (a₁ + (a₂ - a₁)) ↔ HasSum f a₂
Theorem: intervalIntegral.integral_deriv_comp_mul_deriv'
File: Mathlib/MeasureTheory/Integral/FundThmCalculus.lean

tactic: simpa [mul_comm] using integral_deriv_comp_smul_deriv' hf hff' hf' hg hgg' hg'
state_before: ι : Type ?u.1953788
𝕜 : Type ?u.1953791
E : Type ?u.1953794
F : Type ?u.1953797
A : Type ?u.1953800
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f✝¹ : ℝ → E
g'✝ g✝ φ : ℝ → ℝ
f✝ f'✝ : ℝ → E
a b : ℝ
f f' g g' : ℝ → ℝ
hf : ContinuousOn f [[a, b]]
hff' : ∀ (x : ℝ), x ∈ Ioo (min a b) (max a b) → HasDerivWithinAt f (f' x) (Ioi x) x
hf' : ContinuousOn f' [[a, b]]
hg : ContinuousOn g [[f a, f b]]
hgg' : ∀ (x : ℝ), x ∈ Ioo (min (f a) (f b)) (max (f a) (f b)) → HasDerivWithinAt g (g' x) (Ioi x) x
hg' : ContinuousOn g' (f '' [[a, b]])
⊢ (∫ (x : ℝ) in a..b, (g' ∘ f) x * f' x) = (g ∘ f) b - (g ∘ f) a
Theorem: Submonoid.LocalizationMap.mul_inv_right
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: rw [eq_comm, mul_inv_left h, mul_comm, eq_comm]
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type ?u.375683
inst✝ : CommMonoid P
f : M →* N
h : ∀ (y : { x // x ∈ S }), IsUnit (↑f ↑y)
y : { x // x ∈ S }
w z : N
⊢ z = w * ↑(↑(IsUnit.liftRight (MonoidHom.restrict f S) h) y)⁻¹ ↔ z * ↑f ↑y = w
Theorem: MeasureTheory.IsFundamentalDomain.measure_eq_tsum
File: Mathlib/MeasureTheory/Group/FundamentalDomain.lean

tactic: simpa only [set_lintegral_one] using h.set_lintegral_eq_tsum' (fun _ => 1) t
state_before: G : Type u_1
H : Type ?u.237333
α : Type u_2
β : Type ?u.237339
E : Type ?u.237342
inst✝¹⁰ : Group G
inst✝⁹ : Group H
inst✝⁸ : MulAction G α
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MulAction H β
inst✝⁵ : MeasurableSpace β
inst✝⁴ : NormedAddCommGroup E
s t✝ : Set α
μ : Measure α
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSMul G α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : Countable G
ν : Measure α
h : IsFundamentalDomain G s
t : Set α
⊢ ↑↑μ t = ∑' (g : G), ↑↑μ (g • t ∩ s)
Theorem: Int.neg_ediv_of_dvd
File: Std/Data/Int/DivMod.lean

tactic: if bz : b = 0 then simp [bz] else
rw [Int.neg_mul_eq_mul_neg, Int.mul_ediv_cancel_left _ bz, Int.mul_ediv_cancel_left _ bz]
state_before: b c : Int
⊢ -(b * c) / b = -(b * c / b)

tactic: simp [bz]
state_before: b c : Int
bz : b = 0
⊢ -(b * c) / b = -(b * c / b)

tactic: rw [Int.neg_mul_eq_mul_neg, Int.mul_ediv_cancel_left _ bz, Int.mul_ediv_cancel_left _ bz]
state_before: b c : Int
bz : ¬b = 0
⊢ -(b * c) / b = -(b * c / b)
Theorem: Ordinal.IsNormal.limit_lt
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simpa only [exists_prop, not_exists, not_and, not_lt] using H.2 _ h a
state_before: α : Type ?u.106843
β : Type ?u.106846
γ : Type ?u.106849
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal → Ordinal
H : IsNormal f
o : Ordinal
h : IsLimit o
a : Ordinal
⊢ ¬a < f o ↔ ¬∃ b, b < o ∧ a < f b
Theorem: Ordnode.splitMax_eq
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: rw [splitMax', splitMax_eq ls ll lx lr, findMax', eraseMax]
state_before: α : Type u_1
x✝ : ℕ
l : Ordnode α
x : α
ls : ℕ
ll : Ordnode α
lx : α
lr : Ordnode α
⊢ splitMax' l x (node ls ll lx lr) = (eraseMax (node x✝ l x (node ls ll lx lr)), findMax' x (node ls ll lx lr))
Theorem: Function.Injective.sbtw_map_iff
File: Mathlib/Analysis/Convex/Between.lean

tactic: simp_rw [Sbtw, hf.wbtw_map_iff, hf.ne_iff]
state_before: R : Type u_1
V : Type u_2
V' : Type u_4
P : Type u_3
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
f : P →ᵃ[R] P'
hf : Injective ↑f
⊢ Sbtw R (↑f x) (↑f y) (↑f z) ↔ Sbtw R x y z
Theorem: norm_smul_inv_norm'
File: Mathlib/Analysis/NormedSpace/IsROrC.lean

tactic: have : ‖x‖ ≠ 0 := by simp [hx]
state_before: 𝕜 : Type u_2
inst✝² : IsROrC 𝕜
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
r : ℝ
r_nonneg : 0 ≤ r
x : E
hx : x ≠ 0
⊢ ‖(↑r * (↑‖x‖)⁻¹) • x‖ = r

tactic: field_simp [norm_smul, r_nonneg, isROrC_simps]
state_before: 𝕜 : Type u_2
inst✝² : IsROrC 𝕜
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
r : ℝ
r_nonneg : 0 ≤ r
x : E
hx : x ≠ 0
this : ‖x‖ ≠ 0
⊢ ‖(↑r * (↑‖x‖)⁻¹) • x‖ = r

tactic: simp [hx]
state_before: 𝕜 : Type u_2
inst✝² : IsROrC 𝕜
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
r : ℝ
r_nonneg : 0 ≤ r
x : E
hx : x ≠ 0
⊢ ‖x‖ ≠ 0
Theorem: Complex.exp_ofReal_mul_I_im
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [exp_mul_I, sin_ofReal_re]
state_before: x✝ y : ℂ
x : ℝ
⊢ (exp (↑x * I)).im = Real.sin x
Theorem: IsLocalization.mem_localizationLocalizationSubmodule
File: Mathlib/RingTheory/Localization/LocalizationLocalization.lean

tactic: rw [localizationLocalizationSubmodule, Submonoid.mem_comap, Submonoid.mem_sup]
state_before: R : Type u_1
inst✝⁷ : CommRing R
M : Submonoid R
S : Type u_2
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
P : Type ?u.8605
inst✝⁴ : CommRing P
N : Submonoid S
T : Type ?u.8769
inst✝³ : CommRing T
inst✝² : Algebra R T
inst✝¹ : Algebra S T
inst✝ : IsScalarTower R S T
x : R
⊢ x ∈ localizationLocalizationSubmodule M N ↔ ∃ y z, ↑(algebraMap R S) x = ↑y * ↑(algebraMap R S) ↑z

tactic: constructor
state_before: R : Type u_1
inst✝⁷ : CommRing R
M : Submonoid R
S : Type u_2
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
P : Type ?u.8605
inst✝⁴ : CommRing P
N : Submonoid S
T : Type ?u.8769
inst✝³ : CommRing T
inst✝² : Algebra R T
inst✝¹ : Algebra S T
inst✝ : IsScalarTower R S T
x : R
⊢ (∃ y, y ∈ N ∧ ∃ z, z ∈ Submonoid.map (algebraMap R S) M ∧ y * z = ↑(algebraMap R S) x) ↔
    ∃ y z, ↑(algebraMap R S) x = ↑y * ↑(algebraMap R S) ↑z

tactic: rintro ⟨y, hy, _, ⟨z, hz, rfl⟩, e⟩
state_before: case mp
R : Type u_1
inst✝⁷ : CommRing R
M : Submonoid R
S : Type u_2
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
P : Type ?u.8605
inst✝⁴ : CommRing P
N : Submonoid S
T : Type ?u.8769
inst✝³ : CommRing T
inst✝² : Algebra R T
inst✝¹ : Algebra S T
inst✝ : IsScalarTower R S T
x : R
⊢ (∃ y, y ∈ N ∧ ∃ z, z ∈ Submonoid.map (algebraMap R S) M ∧ y * z = ↑(algebraMap R S) x) →
    ∃ y z, ↑(algebraMap R S) x = ↑y * ↑(algebraMap R S) ↑z

tactic: exact ⟨⟨y, hy⟩, ⟨z, hz⟩, e.symm⟩
state_before: case mp.intro.intro.intro.intro.intro.intro
R : Type u_1
inst✝⁷ : CommRing R
M : Submonoid R
S : Type u_2
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
P : Type ?u.8605
inst✝⁴ : CommRing P
N : Submonoid S
T : Type ?u.8769
inst✝³ : CommRing T
inst✝² : Algebra R T
inst✝¹ : Algebra S T
inst✝ : IsScalarTower R S T
x : R
y : S
hy : y ∈ N
z : R
hz : z ∈ ↑M
e : y * ↑(algebraMap R S) z = ↑(algebraMap R S) x
⊢ ∃ y z, ↑(algebraMap R S) x = ↑y * ↑(algebraMap R S) ↑z

tactic: rintro ⟨y, z, e⟩
state_before: case mpr
R : Type u_1
inst✝⁷ : CommRing R
M : Submonoid R
S : Type u_2
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
P : Type ?u.8605
inst✝⁴ : CommRing P
N : Submonoid S
T : Type ?u.8769
inst✝³ : CommRing T
inst✝² : Algebra R T
inst✝¹ : Algebra S T
inst✝ : IsScalarTower R S T
x : R
⊢ (∃ y z, ↑(algebraMap R S) x = ↑y * ↑(algebraMap R S) ↑z) →
    ∃ y, y ∈ N ∧ ∃ z, z ∈ Submonoid.map (algebraMap R S) M ∧ y * z = ↑(algebraMap R S) x

tactic: exact ⟨y, y.prop, _, ⟨z, z.prop, rfl⟩, e.symm⟩
state_before: case mpr.intro.intro
R : Type u_1
inst✝⁷ : CommRing R
M : Submonoid R
S : Type u_2
inst✝⁶ : CommRing S
inst✝⁵ : Algebra R S
P : Type ?u.8605
inst✝⁴ : CommRing P
N : Submonoid S
T : Type ?u.8769
inst✝³ : CommRing T
inst✝² : Algebra R T
inst✝¹ : Algebra S T
inst✝ : IsScalarTower R S T
x : R
y : { x // x ∈ N }
z : { x // x ∈ M }
e : ↑(algebraMap R S) x = ↑y * ↑(algebraMap R S) ↑z
⊢ ∃ y, y ∈ N ∧ ∃ z, z ∈ Submonoid.map (algebraMap R S) M ∧ y * z = ↑(algebraMap R S) x
Theorem: CategoryTheory.CommSq.unop
File: Mathlib/CategoryTheory/CommSq.lean

tactic: simp only [← unop_comp, p.w]
state_before: C : Type u_1
inst✝ : Category C
W✝ X✝ Y✝ Z✝ : C
f✝ : W✝ ⟶ X✝
g✝ : W✝ ⟶ Y✝
h✝ : X✝ ⟶ Z✝
i✝ : Y✝ ⟶ Z✝
W X Y Z : Cᵒᵖ
f : W ⟶ X
g : W ⟶ Y
h : X ⟶ Z
i : Y ⟶ Z
p : CommSq f g h i
⊢ i.unop ≫ g.unop = h.unop ≫ f.unop
Theorem: Polynomial.div_eq_zero_iff
File: Mathlib/Data/Polynomial/FieldDivision.lean

tactic: have := EuclideanDomain.div_add_mod p q
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
hq0 : q ≠ 0
h : p / q = 0
⊢ degree p < degree q

tactic: rwa [h, MulZeroClass.mul_zero, zero_add, mod_eq_self_iff hq0] at this
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
hq0 : q ≠ 0
h : p / q = 0
this : q * (p / q) + p % q = p
⊢ degree p < degree q

tactic: have hlt : degree p < degree (q * C (leadingCoeff q)⁻¹) := by
  rwa [degree_mul_leadingCoeff_inv q hq0]
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
hq0 : q ≠ 0
h : degree p < degree q
⊢ p / q = 0

tactic: have hm : Monic (q * C (leadingCoeff q)⁻¹) := monic_mul_leadingCoeff_inv hq0
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
hq0 : q ≠ 0
h : degree p < degree q
hlt : degree p < degree (q * ↑C (leadingCoeff q)⁻¹)
⊢ p / q = 0

tactic: rw [div_def, (divByMonic_eq_zero_iff hm).2 hlt, MulZeroClass.mul_zero]
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
hq0 : q ≠ 0
h : degree p < degree q
hlt : degree p < degree (q * ↑C (leadingCoeff q)⁻¹)
hm : Monic (q * ↑C (leadingCoeff q)⁻¹)
⊢ p / q = 0

tactic: rwa [degree_mul_leadingCoeff_inv q hq0]
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
hq0 : q ≠ 0
h : degree p < degree q
⊢ degree p < degree (q * ↑C (leadingCoeff q)⁻¹)
Theorem: Finsupp.toAList_lookupFinsupp
File: Mathlib/Data/Finsupp/AList.lean

tactic: ext a
state_before: α : Type u_1
M : Type u_2
inst✝ : Zero M
f : α →₀ M
⊢ lookupFinsupp (Finsupp.toAList f) = f

tactic: by_cases h : f a = 0
state_before: case h
α : Type u_1
M : Type u_2
inst✝ : Zero M
f : α →₀ M
a : α
⊢ ↑(lookupFinsupp (Finsupp.toAList f)) a = ↑f a

tactic: suffices f.toAList.lookup a = none by simp [h, this]
state_before: case pos
α : Type u_1
M : Type u_2
inst✝ : Zero M
f : α →₀ M
a : α
h : ↑f a = 0
⊢ ↑(lookupFinsupp (Finsupp.toAList f)) a = ↑f a

tactic: simp [h, this]
state_before: α : Type u_1
M : Type u_2
inst✝ : Zero M
f : α →₀ M
a : α
h : ↑f a = 0
this : lookup a (Finsupp.toAList f) = none
⊢ ↑(lookupFinsupp (Finsupp.toAList f)) a = ↑f a

tactic: simp [lookup_eq_none, h]
state_before: case pos
α : Type u_1
M : Type u_2
inst✝ : Zero M
f : α →₀ M
a : α
h : ↑f a = 0
⊢ lookup a (Finsupp.toAList f) = none

tactic: suffices f.toAList.lookup a = some (f a) by simp [h, this]
state_before: case neg
α : Type u_1
M : Type u_2
inst✝ : Zero M
f : α →₀ M
a : α
h : ¬↑f a = 0
⊢ ↑(lookupFinsupp (Finsupp.toAList f)) a = ↑f a

tactic: simp [h, this]
state_before: α : Type u_1
M : Type u_2
inst✝ : Zero M
f : α →₀ M
a : α
h : ¬↑f a = 0
this : lookup a (Finsupp.toAList f) = some (↑f a)
⊢ ↑(lookupFinsupp (Finsupp.toAList f)) a = ↑f a

tactic: apply mem_lookup_iff.2
state_before: case neg
α : Type u_1
M : Type u_2
inst✝ : Zero M
f : α →₀ M
a : α
h : ¬↑f a = 0
⊢ lookup a (Finsupp.toAList f) = some (↑f a)

tactic: simpa using h
state_before: case neg
α : Type u_1
M : Type u_2
inst✝ : Zero M
f : α →₀ M
a : α
h : ¬↑f a = 0
⊢ { fst := a, snd := ↑f a } ∈ (Finsupp.toAList f).entries
Theorem: Nat.fst_mem_divisors_of_mem_antidiagonal
File: Mathlib/NumberTheory/Divisors.lean

tactic: rw [mem_divisorsAntidiagonal] at h
state_before: n : ℕ
x : ℕ × ℕ
h : x ∈ divisorsAntidiagonal n
⊢ x.fst ∈ divisors n

tactic: simp [Dvd.intro _ h.1, h.2]
state_before: n : ℕ
x : ℕ × ℕ
h : x.fst * x.snd = n ∧ n ≠ 0
⊢ x.fst ∈ divisors n
Theorem: mem_powers_iff_mem_zpowers
File: Mathlib/GroupTheory/OrderOfElement.lean

tactic: simp_all
state_before: G : Type u
A : Type v
x y : G
a b : A
n✝ m : ℕ
inst✝² : Group G
inst✝¹ : AddGroup A
inst✝ : Finite G
x✝ : y ∈ Submonoid.powers x
n : ℕ
hn : (fun x x_1 => x ^ x_1) x n = y
⊢ (fun x x_1 => x ^ x_1) x ↑n = y

tactic: dsimp only
state_before: G : Type u
A : Type v
x y : G
a b : A
n m : ℕ
inst✝² : Group G
inst✝¹ : AddGroup A
inst✝ : Finite G
x✝ : y ∈ zpowers x
i : ℤ
hi : (fun x x_1 => x ^ x_1) x i = y
⊢ (fun x x_1 => x ^ x_1) x (Int.natAbs (i % ↑(orderOf x))) = y

tactic: rwa [← zpow_ofNat,
  Int.natAbs_of_nonneg (Int.emod_nonneg _ (Int.coe_nat_ne_zero_iff_pos.2 (orderOf_pos x))), ←
  zpow_eq_mod_orderOf]
state_before: G : Type u
A : Type v
x y : G
a b : A
n m : ℕ
inst✝² : Group G
inst✝¹ : AddGroup A
inst✝ : Finite G
x✝ : y ∈ zpowers x
i : ℤ
hi : (fun x x_1 => x ^ x_1) x i = y
⊢ x ^ Int.natAbs (i % ↑(orderOf x)) = y
Theorem: countable_bInter_mem
File: Mathlib/Order/Filter/CountableInter.lean

tactic: rw [biInter_eq_iInter]
state_before: ι✝ : Sort ?u.642
α : Type u_2
β : Type ?u.648
l : Filter α
inst✝ : CountableInterFilter l
ι : Type u_1
S : Set ι
hS : Set.Countable S
s : (i : ι) → i ∈ S → Set α
⊢ (⋂ (i : ι) (hi : i ∈ S), s i hi) ∈ l ↔ ∀ (i : ι) (hi : i ∈ S), s i hi ∈ l

tactic: haveI := hS.toEncodable
state_before: ι✝ : Sort ?u.642
α : Type u_2
β : Type ?u.648
l : Filter α
inst✝ : CountableInterFilter l
ι : Type u_1
S : Set ι
hS : Set.Countable S
s : (i : ι) → i ∈ S → Set α
⊢ (⋂ (x : ↑S), s ↑x (_ : ↑x ∈ S)) ∈ l ↔ ∀ (i : ι) (hi : i ∈ S), s i hi ∈ l

tactic: exact countable_iInter_mem.trans Subtype.forall
state_before: ι✝ : Sort ?u.642
α : Type u_2
β : Type ?u.648
l : Filter α
inst✝ : CountableInterFilter l
ι : Type u_1
S : Set ι
hS : Set.Countable S
s : (i : ι) → i ∈ S → Set α
this : Encodable ↑S
⊢ (⋂ (x : ↑S), s ↑x (_ : ↑x ∈ S)) ∈ l ↔ ∀ (i : ι) (hi : i ∈ S), s i hi ∈ l
Theorem: mem_skewAdjointMatricesSubmodule'
File: Mathlib/LinearAlgebra/Matrix/BilinearForm.lean

tactic: simp only [mem_skewAdjointMatricesSubmodule]
state_before: R : Type ?u.2705615
M : Type ?u.2705618
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : Module R M
R₁ : Type ?u.2705654
M₁ : Type ?u.2705657
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type ?u.2706266
M₂ : Type ?u.2706269
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type u_1
M₃ : Type ?u.2706459
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.2707047
K : Type ?u.2707050
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_2
inst✝¹ : Fintype n
b : Basis n R₃ M₃
J J₃ A A' : Matrix n n R₃
inst✝ : DecidableEq n
⊢ A ∈ skewAdjointMatricesSubmodule J ↔ IsSkewAdjoint J A
Theorem: MeasureTheory.addHaarMeasure_eq_volume_pi
File: Mathlib/MeasureTheory/Measure/Lebesgue/EqHaar.lean

tactic: convert (addHaarMeasure_unique volume (piIcc01 ι)).symm
state_before: ι : Type u_1
inst✝ : Fintype ι
⊢ addHaarMeasure (piIcc01 ι) = volume

tactic: simp only [piIcc01, volume_pi_pi fun _ => Icc (0 : ℝ) 1, PositiveCompacts.coe_mk,
  Compacts.coe_mk, Finset.prod_const_one, ENNReal.ofReal_one, Real.volume_Icc, one_smul, sub_zero]
state_before: case h.e'_2
ι : Type u_1
inst✝ : Fintype ι
⊢ addHaarMeasure (piIcc01 ι) = ↑↑volume ↑(piIcc01 ι) • addHaarMeasure (piIcc01 ι)