1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: AddMonoidHom.toRatLinearMap_injective
File: Mathlib/Algebra/Module/LinearMap/Basic.lean

tactic: intro f g h
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
k : Type u_5
S : Type u_6
S₃ : Type u_7
T : Type u_8
M : Type u_9
M₁ : Type u_10
M₂ : Type u_11
M₃ : Type u_12
N₁ : Type u_13
N₂ : Type u_14
N₃ : Type u_15
ι : Type u_16
inst✝³ : AddCommGroup M
inst✝² : Module ℚ M
inst✝¹ : AddCommGroup M₂
inst✝ : Module ℚ M₂
⊢ Injective toRatLinearMap
state_after: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
k : Type u_5
S : Type u_6
S₃ : Type u_7
T : Type u_8
M : Type u_9
M₁ : Type u_10
M₂ : Type u_11
M₃ : Type u_12
N₁ : Type u_13
N₂ : Type u_14
N₃ : Type u_15
ι : Type u_16
inst✝³ : AddCommGroup M
inst✝² : Module ℚ M
inst✝¹ : AddCommGroup M₂
inst✝ : Module ℚ M₂
f g : M →+ M₂
h : f.toRatLinearMap = g.toRatLinearMap
⊢ f = g

tactic: ext x
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
k : Type u_5
S : Type u_6
S₃ : Type u_7
T : Type u_8
M : Type u_9
M₁ : Type u_10
M₂ : Type u_11
M₃ : Type u_12
N₁ : Type u_13
N₂ : Type u_14
N₃ : Type u_15
ι : Type u_16
inst✝³ : AddCommGroup M
inst✝² : Module ℚ M
inst✝¹ : AddCommGroup M₂
inst✝ : Module ℚ M₂
f g : M →+ M₂
h : f.toRatLinearMap = g.toRatLinearMap
⊢ f = g
state_after: case h
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
k : Type u_5
S : Type u_6
S₃ : Type u_7
T : Type u_8
M : Type u_9
M₁ : Type u_10
M₂ : Type u_11
M₃ : Type u_12
N₁ : Type u_13
N₂ : Type u_14
N₃ : Type u_15
ι : Type u_16
inst✝³ : AddCommGroup M
inst✝² : Module ℚ M
inst✝¹ : AddCommGroup M₂
inst✝ : Module ℚ M₂
f g : M →+ M₂
h : f.toRatLinearMap = g.toRatLinearMap
x : M
⊢ f x = g x

tactic: exact LinearMap.congr_fun h x
state_before: case h
R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
k : Type u_5
S : Type u_6
S₃ : Type u_7
T : Type u_8
M : Type u_9
M₁ : Type u_10
M₂ : Type u_11
M₃ : Type u_12
N₁ : Type u_13
N₂ : Type u_14
N₃ : Type u_15
ι : Type u_16
inst✝³ : AddCommGroup M
inst✝² : Module ℚ M
inst✝¹ : AddCommGroup M₂
inst✝ : Module ℚ M₂
f g : M →+ M₂
h : f.toRatLinearMap = g.toRatLinearMap
x : M
⊢ f x = g x
state_after: no goals
Theorem: CategoryTheory.epi_iff_surjective
File: Mathlib/CategoryTheory/Types.lean

tactic: constructor
state_before: X Y : Type u
f : X ⟶ Y
⊢ Epi f ↔ Function.Surjective f
state_after: case mp
X Y : Type u
f : X ⟶ Y
⊢ Epi f → Function.Surjective f

case mpr
X Y : Type u
f : X ⟶ Y
⊢ Function.Surjective f → Epi f

tactic: rintro ⟨H⟩
state_before: case mp
X Y : Type u
f : X ⟶ Y
⊢ Epi f → Function.Surjective f
state_after: case mp.mk
X Y : Type u
f : X ⟶ Y
H : ∀ {Z : Type u} (g h : Y ⟶ Z), f ≫ g = f ≫ h → g = h
⊢ Function.Surjective f

tactic: refine Function.surjective_of_right_cancellable_Prop fun g₁ g₂ hg => ?_
state_before: case mp.mk
X Y : Type u
f : X ⟶ Y
H : ∀ {Z : Type u} (g h : Y ⟶ Z), f ≫ g = f ≫ h → g = h
⊢ Function.Surjective f
state_after: case mp.mk
X Y : Type u
f : X ⟶ Y
H : ∀ {Z : Type u} (g h : Y ⟶ Z), f ≫ g = f ≫ h → g = h
g₁ g₂ : Y → Prop
hg : g₁ ∘ f = g₂ ∘ f
⊢ g₁ = g₂

tactic: rw [← Equiv.ulift.symm.injective.comp_left.eq_iff]
state_before: case mp.mk
X Y : Type u
f : X ⟶ Y
H : ∀ {Z : Type u} (g h : Y ⟶ Z), f ≫ g = f ≫ h → g = h
g₁ g₂ : Y → Prop
hg : g₁ ∘ f = g₂ ∘ f
⊢ g₁ = g₂
state_after: case mp.mk
X Y : Type u
f : X ⟶ Y
H : ∀ {Z : Type u} (g h : Y ⟶ Z), f ≫ g = f ≫ h → g = h
g₁ g₂ : Y → Prop
hg : g₁ ∘ f = g₂ ∘ f
⊢ ⇑Equiv.ulift.symm ∘ g₁ = ⇑Equiv.ulift.symm ∘ g₂

tactic: apply H
state_before: case mp.mk
X Y : Type u
f : X ⟶ Y
H : ∀ {Z : Type u} (g h : Y ⟶ Z), f ≫ g = f ≫ h → g = h
g₁ g₂ : Y → Prop
hg : g₁ ∘ f = g₂ ∘ f
⊢ ⇑Equiv.ulift.symm ∘ g₁ = ⇑Equiv.ulift.symm ∘ g₂
state_after: case mp.mk.a
X Y : Type u
f : X ⟶ Y
H : ∀ {Z : Type u} (g h : Y ⟶ Z), f ≫ g = f ≫ h → g = h
g₁ g₂ : Y → Prop
hg : g₁ ∘ f = g₂ ∘ f
⊢ f ≫ ⇑Equiv.ulift.symm ∘ g₁ = f ≫ ⇑Equiv.ulift.symm ∘ g₂

tactic: change ULift.up ∘ g₁ ∘ f = ULift.up ∘ g₂ ∘ f
state_before: case mp.mk.a
X Y : Type u
f : X ⟶ Y
H : ∀ {Z : Type u} (g h : Y ⟶ Z), f ≫ g = f ≫ h → g = h
g₁ g₂ : Y → Prop
hg : g₁ ∘ f = g₂ ∘ f
⊢ f ≫ ⇑Equiv.ulift.symm ∘ g₁ = f ≫ ⇑Equiv.ulift.symm ∘ g₂
state_after: case mp.mk.a
X Y : Type u
f : X ⟶ Y
H : ∀ {Z : Type u} (g h : Y ⟶ Z), f ≫ g = f ≫ h → g = h
g₁ g₂ : Y → Prop
hg : g₁ ∘ f = g₂ ∘ f
⊢ ULift.up ∘ g₁ ∘ f = ULift.up ∘ g₂ ∘ f

tactic: rw [hg]
state_before: case mp.mk.a
X Y : Type u
f : X ⟶ Y
H : ∀ {Z : Type u} (g h : Y ⟶ Z), f ≫ g = f ≫ h → g = h
g₁ g₂ : Y → Prop
hg : g₁ ∘ f = g₂ ∘ f
⊢ ULift.up ∘ g₁ ∘ f = ULift.up ∘ g₂ ∘ f
state_after: no goals

tactic: exact fun H => ⟨fun g g' h => H.injective_comp_right h⟩
state_before: case mpr
X Y : Type u
f : X ⟶ Y
⊢ Function.Surjective f → Epi f
state_after: no goals
Theorem: Disjoint.symmDiff_eq_sup
File: Mathlib/Order/SymmDiff.lean

tactic: rw [symmDiff, h.sdiff_eq_left, h.sdiff_eq_right]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : GeneralizedCoheytingAlgebra α
a✝ b✝ c d a b : α
h : Disjoint a b
⊢ a ∆ b = a ⊔ b
state_after: no goals
Theorem: TopologicalSpace.noetherianSpace_iff_opens
File: Mathlib/Topology/NoetherianSpace.lean

tactic: rw [noetherianSpace_iff, CompleteLattice.wellFounded_iff_isSupFiniteCompact,
  CompleteLattice.isSupFiniteCompact_iff_all_elements_compact]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
⊢ NoetherianSpace α ↔ ∀ (s : Opens α), IsCompact ↑s
state_after: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
⊢ (∀ (k : Opens α), CompleteLattice.IsCompactElement k) ↔ ∀ (s : Opens α), IsCompact ↑s

tactic: exact forall_congr' Opens.isCompactElement_iff
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
⊢ (∀ (k : Opens α), CompleteLattice.IsCompactElement k) ↔ ∀ (s : Opens α), IsCompact ↑s
state_after: no goals
Theorem: add_div
File: Mathlib/Algebra/Field/Basic.lean

tactic: simp_rw [div_eq_mul_inv, add_mul]
state_before: α : Type u_1
β : Type u_2
K : Type u_3
inst✝ : DivisionSemiring α
a✝ b✝ c✝ d a b c : α
⊢ (a + b) / c = a / c + b / c
state_after: no goals
Theorem: SetTheory.PGame.powHalf_pos
File: Mathlib/SetTheory/Surreal/Dyadic.lean

tactic: rw [← lf_iff_lt numeric_zero (numeric_powHalf n), zero_lf_le]
state_before: n : ℕ
⊢ 0 < powHalf n
state_after: n : ℕ
⊢ ∃ i, 0 ≤ (powHalf n).moveLeft i

tactic: simp
state_before: n : ℕ
⊢ ∃ i, 0 ≤ (powHalf n).moveLeft i
state_after: no goals
Theorem: ProbabilityTheory.kernel.indepSets_singleton_iff
File: Mathlib/Probability/Independence/Kernel.lean

tactic: rwa [Set.mem_singleton_iff.mp hs1, Set.mem_singleton_iff.mp ht1]
state_before: α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s t : Set Ω
_mΩ : MeasurableSpace Ω
κ : ↥(kernel α Ω)
μ : Measure α
h : ∀ᵐ (a : α) ∂μ, (κ a) (s ∩ t) = (κ a) s * (κ a) t
s1 t1 : Set Ω
hs1 : s1 ∈ {s}
ht1 : t1 ∈ {t}
⊢ ∀ᵐ (a : α) ∂μ, (κ a) (s1 ∩ t1) = (κ a) s1 * (κ a) t1
state_after: no goals
Theorem: MeasureTheory.Measure.InnerRegular.exists_compact_not_null
File: Mathlib/MeasureTheory/Measure/Regular.lean

tactic: simp_rw [Ne, ← measure_univ_eq_zero, MeasurableSet.univ.measure_eq_iSup_isCompact,
  ENNReal.iSup_eq_zero, not_forall, exists_prop, subset_univ, true_and_iff]
state_before: α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace α
μ : Measure α
U : Set α
ε : ℝ≥0∞
inst✝ : μ.InnerRegular
⊢ (∃ K, IsCompact K ∧ μ K ≠ 0) ↔ μ ≠ 0
state_after: no goals
Theorem: LinearMap.exists_isNilRegular
File: Mathlib/Algebra/Module/LinearMap/Polynomial.lean

tactic: apply exists_isNilRegular_of_finrank_le_card
state_before: R : Type u_1
L : Type u_2
M : Type u_3
n : Type u_4
ι : Type u_5
ι' : Type u_6
ιM : Type u_7
inst✝¹⁶ : CommRing R
inst✝¹⁵ : AddCommGroup L
inst✝¹⁴ : Module R L
inst✝¹³ : AddCommGroup M
inst✝¹² : Module R M
φ : L →ₗ[R] Module.End R M
inst✝¹¹ : Fintype ι
inst✝¹⁰ : Fintype ι'
inst✝⁹ : Fintype ιM
inst✝⁸ : DecidableEq ι
inst✝⁷ : DecidableEq ι'
inst✝⁶ : Module.Free R M
inst✝⁵ : Module.Finite R M
b : Basis ι R L
inst✝⁴ : Module.Finite R L
inst✝³ : Module.Free R L
inst✝² : Nontrivial R
x : L
inst✝¹ : IsDomain R
inst✝ : Infinite R
⊢ ∃ x, φ.IsNilRegular x
state_after: case h
R : Type u_1
L : Type u_2
M : Type u_3
n : Type u_4
ι : Type u_5
ι' : Type u_6
ιM : Type u_7
inst✝¹⁶ : CommRing R
inst✝¹⁵ : AddCommGroup L
inst✝¹⁴ : Module R L
inst✝¹³ : AddCommGroup M
inst✝¹² : Module R M
φ : L →ₗ[R] Module.End R M
inst✝¹¹ : Fintype ι
inst✝¹⁰ : Fintype ι'
inst✝⁹ : Fintype ιM
inst✝⁸ : DecidableEq ι
inst✝⁷ : DecidableEq ι'
inst✝⁶ : Module.Free R M
inst✝⁵ : Module.Finite R M
b : Basis ι R L
inst✝⁴ : Module.Finite R L
inst✝³ : Module.Free R L
inst✝² : Nontrivial R
x : L
inst✝¹ : IsDomain R
inst✝ : Infinite R
⊢ ↑(finrank R M) ≤ Cardinal.mk R

tactic: exact (Cardinal.nat_lt_aleph0 _).le.trans <| Cardinal.infinite_iff.mp ‹Infinite R›
state_before: case h
R : Type u_1
L : Type u_2
M : Type u_3
n : Type u_4
ι : Type u_5
ι' : Type u_6
ιM : Type u_7
inst✝¹⁶ : CommRing R
inst✝¹⁵ : AddCommGroup L
inst✝¹⁴ : Module R L
inst✝¹³ : AddCommGroup M
inst✝¹² : Module R M
φ : L →ₗ[R] Module.End R M
inst✝¹¹ : Fintype ι
inst✝¹⁰ : Fintype ι'
inst✝⁹ : Fintype ιM
inst✝⁸ : DecidableEq ι
inst✝⁷ : DecidableEq ι'
inst✝⁶ : Module.Free R M
inst✝⁵ : Module.Finite R M
b : Basis ι R L
inst✝⁴ : Module.Finite R L
inst✝³ : Module.Free R L
inst✝² : Nontrivial R
x : L
inst✝¹ : IsDomain R
inst✝ : Infinite R
⊢ ↑(finrank R M) ≤ Cardinal.mk R
state_after: no goals
Theorem: minpoly.degree_le_of_ne_zero
File: Mathlib/FieldTheory/Minpoly/Field.lean

tactic: simp [hp]
state_before: A : Type u_1
B : Type u_2
inst✝² : Field A
inst✝¹ : Ring B
inst✝ : Algebra A B
x : B
p : A[X]
pnz : p ≠ 0
hp : (Polynomial.aeval x) p = 0
⊢ (Polynomial.aeval x) (p * C p.leadingCoeff⁻¹) = 0
state_after: no goals
Theorem: Set.offDiag_empty
File: Mathlib/Data/Set/Prod.lean

tactic: simp
state_before: α : Type u_1
s t : Set α
x : α × α
a : α
⊢ ∅.offDiag = ∅
state_after: no goals
Theorem: loc_compact_t2_tot_disc_iff_tot_sep
File: Mathlib/Topology/Separation.lean

tactic: constructor
state_before: X : Type u_1
Y : Type u_2
inst✝³ : TopologicalSpace X
H : Type u_3
inst✝² : TopologicalSpace H
inst✝¹ : LocallyCompactSpace H
inst✝ : T2Space H
⊢ TotallyDisconnectedSpace H ↔ TotallySeparatedSpace H
state_after: case mp
X : Type u_1
Y : Type u_2
inst✝³ : TopologicalSpace X
H : Type u_3
inst✝² : TopologicalSpace H
inst✝¹ : LocallyCompactSpace H
inst✝ : T2Space H
⊢ TotallyDisconnectedSpace H → TotallySeparatedSpace H

case mpr
X : Type u_1
Y : Type u_2
inst✝³ : TopologicalSpace X
H : Type u_3
inst✝² : TopologicalSpace H
inst✝¹ : LocallyCompactSpace H
inst✝ : T2Space H
⊢ TotallySeparatedSpace H → TotallyDisconnectedSpace H

tactic: apply TotallySeparatedSpace.totallyDisconnectedSpace
state_before: case mpr
X : Type u_1
Y : Type u_2
inst✝³ : TopologicalSpace X
H : Type u_3
inst✝² : TopologicalSpace H
inst✝¹ : LocallyCompactSpace H
inst✝ : T2Space H
⊢ TotallySeparatedSpace H → TotallyDisconnectedSpace H
state_after: no goals

tactic: intro h
state_before: case mp
X : Type u_1
Y : Type u_2
inst✝³ : TopologicalSpace X
H : Type u_3
inst✝² : TopologicalSpace H
inst✝¹ : LocallyCompactSpace H
inst✝ : T2Space H
⊢ TotallyDisconnectedSpace H → TotallySeparatedSpace H
state_after: case mp
X : Type u_1
Y : Type u_2
inst✝³ : TopologicalSpace X
H : Type u_3
inst✝² : TopologicalSpace H
inst✝¹ : LocallyCompactSpace H
inst✝ : T2Space H
h : TotallyDisconnectedSpace H
⊢ TotallySeparatedSpace H

tactic: exact totallySeparatedSpace_of_t1_of_basis_clopen loc_compact_Haus_tot_disc_of_zero_dim
state_before: case mp
X : Type u_1
Y : Type u_2
inst✝³ : TopologicalSpace X
H : Type u_3
inst✝² : TopologicalSpace H
inst✝¹ : LocallyCompactSpace H
inst✝ : T2Space H
h : TotallyDisconnectedSpace H
⊢ TotallySeparatedSpace H
state_after: no goals
Theorem: TensorAlgebra.hom_ext
File: Mathlib/LinearAlgebra/TensorAlgebra/Basic.lean

tactic: rw [← lift_symm_apply, ← lift_symm_apply] at w
state_before: R : Type u_1
inst✝⁴ : CommSemiring R
M : Type u_2
inst✝³ : AddCommMonoid M
inst✝² : Module R M
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
f g : TensorAlgebra R M →ₐ[R] A
w : f.toLinearMap ∘ₗ ι R = g.toLinearMap ∘ₗ ι R
⊢ f = g
state_after: R : Type u_1
inst✝⁴ : CommSemiring R
M : Type u_2
inst✝³ : AddCommMonoid M
inst✝² : Module R M
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
f g : TensorAlgebra R M →ₐ[R] A
w : (lift R).symm f = (lift R).symm g
⊢ f = g

tactic: exact (lift R).symm.injective w
state_before: R : Type u_1
inst✝⁴ : CommSemiring R
M : Type u_2
inst✝³ : AddCommMonoid M
inst✝² : Module R M
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
f g : TensorAlgebra R M →ₐ[R] A
w : (lift R).symm f = (lift R).symm g
⊢ f = g
state_after: no goals
Theorem: CategoryTheory.Sieve.sets_iff_generate
File: Mathlib/CategoryTheory/Sites/Sieves.lean

tactic: rintro ⟨Z, f, g, hg, rfl⟩
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y✝ Z : C
f✝ : Y✝ ⟶ X
S✝ R✝ : Sieve X
R : Presieve X
S : Sieve X
ss : R ≤ S.arrows
Y : C
f : Y ⟶ X
⊢ (generate R).arrows f → S.arrows f
state_after: case intro.intro.intro.intro
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y✝ Z✝ : C
f✝ : Y✝ ⟶ X
S✝ R✝ : Sieve X
R : Presieve X
S : Sieve X
ss : R ≤ S.arrows
Y Z : C
f : Y ⟶ Z
g : Z ⟶ X
hg : R g
⊢ S.arrows (f ≫ g)

tactic: exact S.downward_closed (ss Z hg) f
state_before: case intro.intro.intro.intro
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y✝ Z✝ : C
f✝ : Y✝ ⟶ X
S✝ R✝ : Sieve X
R : Presieve X
S : Sieve X
ss : R ≤ S.arrows
Y Z : C
f : Y ⟶ Z
g : Z ⟶ X
hg : R g
⊢ S.arrows (f ≫ g)
state_after: no goals
Theorem: variationOnFromTo.eq_neg_swap
File: Mathlib/Analysis/BoundedVariation.lean

tactic: rcases lt_trichotomy a b with (ab | rfl | ba)
state_before: α : Type u_1
inst✝¹ : LinearOrder α
E : Type u_2
inst✝ : PseudoEMetricSpace E
f : α → E
s : Set α
a b : α
⊢ variationOnFromTo f s a b = -variationOnFromTo f s b a
state_after: case inl
α : Type u_1
inst✝¹ : LinearOrder α
E : Type u_2
inst✝ : PseudoEMetricSpace E
f : α → E
s : Set α
a b : α
ab : a < b
⊢ variationOnFromTo f s a b = -variationOnFromTo f s b a

case inr.inl
α : Type u_1
inst✝¹ : LinearOrder α
E : Type u_2
inst✝ : PseudoEMetricSpace E
f : α → E
s : Set α
a : α
⊢ variationOnFromTo f s a a = -variationOnFromTo f s a a

case inr.inr
α : Type u_1
inst✝¹ : LinearOrder α
E : Type u_2
inst✝ : PseudoEMetricSpace E
f : α → E
s : Set α
a b : α
ba : b < a
⊢ variationOnFromTo f s a b = -variationOnFromTo f s b a

tactic: simp only [variationOnFromTo, if_pos ab.le, if_neg ab.not_le, neg_neg]
state_before: case inl
α : Type u_1
inst✝¹ : LinearOrder α
E : Type u_2
inst✝ : PseudoEMetricSpace E
f : α → E
s : Set α
a b : α
ab : a < b
⊢ variationOnFromTo f s a b = -variationOnFromTo f s b a
state_after: no goals

tactic: simp only [variationOnFromTo.self, neg_zero]
state_before: case inr.inl
α : Type u_1
inst✝¹ : LinearOrder α
E : Type u_2
inst✝ : PseudoEMetricSpace E
f : α → E
s : Set α
a : α
⊢ variationOnFromTo f s a a = -variationOnFromTo f s a a
state_after: no goals

tactic: simp only [variationOnFromTo, if_pos ba.le, if_neg ba.not_le, neg_neg]
state_before: case inr.inr
α : Type u_1
inst✝¹ : LinearOrder α
E : Type u_2
inst✝ : PseudoEMetricSpace E
f : α → E
s : Set α
a b : α
ba : b < a
⊢ variationOnFromTo f s a b = -variationOnFromTo f s b a
state_after: no goals
Theorem: Hausdorffification.lift_eq
File: Mathlib/RingTheory/AdicCompletion/Basic.lean

tactic: rw [lift_of, ← hg, LinearMap.comp_apply]
state_before: R : Type u_1
inst✝⁴ : CommRing R
I : Ideal R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
N : Type u_3
inst✝¹ : AddCommGroup N
inst✝ : Module R N
h : IsHausdorff I N
f : M →ₗ[R] N
g : Hausdorffification I M →ₗ[R] N
hg : g ∘ₗ of I M = f
x✝ : Hausdorffification I M
x : M
⊢ g ((of I M) x) = (lift I f) ((of I M) x)
state_after: no goals
Theorem: IsIntegralClosure.noZeroSMulDivisors
File: Mathlib/RingTheory/IntegralClosure.lean

tactic: refine
  Function.Injective.noZeroSMulDivisors _ (IsIntegralClosure.algebraMap_injective A R B)
    (map_zero _) fun _ _ => ?_
state_before: R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁸ : CommRing R
inst✝⁷ : CommRing A
inst✝⁶ : CommRing B
inst✝⁵ : Algebra R B
inst✝⁴ : Algebra A B
inst✝³ : IsIntegralClosure A R B
inst✝² : Algebra R A
inst✝¹ : IsScalarTower R A B
inst✝ : NoZeroSMulDivisors R B
⊢ NoZeroSMulDivisors R A
state_after: R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁸ : CommRing R
inst✝⁷ : CommRing A
inst✝⁶ : CommRing B
inst✝⁵ : Algebra R B
inst✝⁴ : Algebra A B
inst✝³ : IsIntegralClosure A R B
inst✝² : Algebra R A
inst✝¹ : IsScalarTower R A B
inst✝ : NoZeroSMulDivisors R B
x✝¹ : R
x✝ : A
⊢ (algebraMap A B) (x✝¹ • x✝) = x✝¹ • (algebraMap A B) x✝

tactic: simp only [Algebra.algebraMap_eq_smul_one, IsScalarTower.smul_assoc]
state_before: R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁸ : CommRing R
inst✝⁷ : CommRing A
inst✝⁶ : CommRing B
inst✝⁵ : Algebra R B
inst✝⁴ : Algebra A B
inst✝³ : IsIntegralClosure A R B
inst✝² : Algebra R A
inst✝¹ : IsScalarTower R A B
inst✝ : NoZeroSMulDivisors R B
x✝¹ : R
x✝ : A
⊢ (algebraMap A B) (x✝¹ • x✝) = x✝¹ • (algebraMap A B) x✝
state_after: no goals
Theorem: Matrix.rank_reindex
File: Mathlib/Data/Matrix/Rank.lean

tactic: rw [rank, rank, mulVecLin_reindex, LinearMap.range_comp, LinearMap.range_comp,
  LinearEquiv.range, Submodule.map_top, LinearEquiv.finrank_map_eq]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : CommRing R
inst✝ : Fintype m
e₁ e₂ : m ≃ n
A : Matrix m m R
⊢ ((reindex e₁ e₂) A).rank = A.rank
state_after: no goals
Theorem: Set.Ioo.one_minus_lt_one
File: Mathlib/Algebra/Order/Interval/Set/Instances.lean

tactic: simpa using x.2.1
state_before: α : Type u_1
inst✝¹ : StrictOrderedSemiring α
β : Type u_2
inst✝ : OrderedRing β
x : ↑(Ioo 0 1)
⊢ 1 - ↑x < 1
state_after: no goals
Theorem: Polynomial.le_rootMultiplicity_map
File: Mathlib/Algebra/Polynomial/Roots.lean

tactic: rw [le_rootMultiplicity_iff hmap]
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
A : Type u_1
B : Type u_2
inst✝¹ : CommRing A
inst✝ : CommRing B
p : A[X]
f : A →+* B
hmap : map f p ≠ 0
a : A
⊢ rootMultiplicity a p ≤ rootMultiplicity (f a) (map f p)
state_after: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
A : Type u_1
B : Type u_2
inst✝¹ : CommRing A
inst✝ : CommRing B
p : A[X]
f : A →+* B
hmap : map f p ≠ 0
a : A
⊢ (X - C (f a)) ^ rootMultiplicity a p ∣ map f p

tactic: refine _root_.trans ?_ ((mapRingHom f).map_dvd (pow_rootMultiplicity_dvd p a))
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
A : Type u_1
B : Type u_2
inst✝¹ : CommRing A
inst✝ : CommRing B
p : A[X]
f : A →+* B
hmap : map f p ≠ 0
a : A
⊢ (X - C (f a)) ^ rootMultiplicity a p ∣ map f p
state_after: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
A : Type u_1
B : Type u_2
inst✝¹ : CommRing A
inst✝ : CommRing B
p : A[X]
f : A →+* B
hmap : map f p ≠ 0
a : A
⊢ (X - C (f a)) ^ rootMultiplicity a p ∣ (mapRingHom f) ((X - C a) ^ rootMultiplicity a p)

tactic: rw [map_pow, map_sub, coe_mapRingHom, map_X, map_C]
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
A : Type u_1
B : Type u_2
inst✝¹ : CommRing A
inst✝ : CommRing B
p : A[X]
f : A →+* B
hmap : map f p ≠ 0
a : A
⊢ (X - C (f a)) ^ rootMultiplicity a p ∣ (mapRingHom f) ((X - C a) ^ rootMultiplicity a p)
state_after: no goals
Theorem: OreLocalization.universalMulHom_unique
File: Mathlib/RingTheory/OreLocalization/Basic.lean

tactic: ext x
state_before: R : Type u_1
inst✝³ : Monoid R
S : Submonoid R
inst✝² : OreSet S
X : Type ?u.144661
inst✝¹ : MulAction R X
T : Type u_2
inst✝ : Monoid T
f : R →* T
fS : ↥S →* Tˣ
hf : ∀ (s : ↥S), f ↑s = ↑(fS s)
φ : OreLocalization S R →* T
huniv : ∀ (r : R), φ (numeratorHom r) = f r
⊢ φ = universalMulHom f fS hf
state_after: case h
R : Type u_1
inst✝³ : Monoid R
S : Submonoid R
inst✝² : OreSet S
X : Type ?u.144661
inst✝¹ : MulAction R X
T : Type u_2
inst✝ : Monoid T
f : R →* T
fS : ↥S →* Tˣ
hf : ∀ (s : ↥S), f ↑s = ↑(fS s)
φ : OreLocalization S R →* T
huniv : ∀ (r : R), φ (numeratorHom r) = f r
x : OreLocalization S R
⊢ φ x = (universalMulHom f fS hf) x

tactic: induction' x with r s
state_before: case h
R : Type u_1
inst✝³ : Monoid R
S : Submonoid R
inst✝² : OreSet S
X : Type ?u.144661
inst✝¹ : MulAction R X
T : Type u_2
inst✝ : Monoid T
f : R →* T
fS : ↥S →* Tˣ
hf : ∀ (s : ↥S), f ↑s = ↑(fS s)
φ : OreLocalization S R →* T
huniv : ∀ (r : R), φ (numeratorHom r) = f r
x : OreLocalization S R
⊢ φ x = (universalMulHom f fS hf) x
state_after: case h.c
R : Type u_1
inst✝³ : Monoid R
S : Submonoid R
inst✝² : OreSet S
X : Type ?u.144661
inst✝¹ : MulAction R X
T : Type u_2
inst✝ : Monoid T
f : R →* T
fS : ↥S →* Tˣ
hf : ∀ (s : ↥S), f ↑s = ↑(fS s)
φ : OreLocalization S R →* T
huniv : ∀ (r : R), φ (numeratorHom r) = f r
r : R
s : ↥S
⊢ φ (r /ₒ s) = (universalMulHom f fS hf) (r /ₒ s)

tactic: rw [universalMulHom_apply, ← huniv r, numeratorHom_apply, ← one_mul (φ (r /ₒ s)), ←
  Units.val_one, ← mul_left_inv (fS s), Units.val_mul, mul_assoc, ← hf, ← huniv, ← φ.map_mul,
  numeratorHom_apply, OreLocalization.mul_cancel]
state_before: case h.c
R : Type u_1
inst✝³ : Monoid R
S : Submonoid R
inst✝² : OreSet S
X : Type ?u.144661
inst✝¹ : MulAction R X
T : Type u_2
inst✝ : Monoid T
f : R →* T
fS : ↥S →* Tˣ
hf : ∀ (s : ↥S), f ↑s = ↑(fS s)
φ : OreLocalization S R →* T
huniv : ∀ (r : R), φ (numeratorHom r) = f r
r : R
s : ↥S
⊢ φ (r /ₒ s) = (universalMulHom f fS hf) (r /ₒ s)
state_after: no goals
Theorem: AdjoinRoot.algEquivOfAssociated_toAlgHom
File: Mathlib/FieldTheory/Adjoin.lean

tactic: simp only [aeval_eq, mk_eq_zero, hpq.symm.dvd]
state_before: K : Type ?u.609370
L : Type ?u.609373
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
p q : K[X]
hp : p ≠ 0
hpq : Associated p q
⊢ (aeval (root q)) p = 0
state_after: no goals
Theorem: PerfectRing.lift_aux
File: Mathlib/FieldTheory/IsPerfectClosure.lean

tactic: obtain ⟨n, y, h⟩ := IsPRadical.pow_mem i p x
state_before: K : Type u_1
L : Type u_2
M : Type u_3
N : Type u_4
inst✝⁷ : CommSemiring K
inst✝⁶ : CommSemiring L
inst✝⁵ : CommSemiring M
i : K →+* L
j : K →+* M
f : L →+* M
p : ℕ
inst✝⁴ : ExpChar K p
inst✝³ : ExpChar L p
inst✝² : ExpChar M p
inst✝¹ : PerfectRing M p
inst✝ : IsPRadical i p
x : L
⊢ ∃ y, i y.2 = x ^ p ^ y.1
state_after: case intro.intro
K : Type u_1
L : Type u_2
M : Type u_3
N : Type u_4
inst✝⁷ : CommSemiring K
inst✝⁶ : CommSemiring L
inst✝⁵ : CommSemiring M
i : K →+* L
j : K →+* M
f : L →+* M
p : ℕ
inst✝⁴ : ExpChar K p
inst✝³ : ExpChar L p
inst✝² : ExpChar M p
inst✝¹ : PerfectRing M p
inst✝ : IsPRadical i p
x : L
n : ℕ
y : K
h : i y = x ^ p ^ n
⊢ ∃ y, i y.2 = x ^ p ^ y.1

tactic: exact ⟨(n, y), h⟩
state_before: case intro.intro
K : Type u_1
L : Type u_2
M : Type u_3
N : Type u_4
inst✝⁷ : CommSemiring K
inst✝⁶ : CommSemiring L
inst✝⁵ : CommSemiring M
i : K →+* L
j : K →+* M
f : L →+* M
p : ℕ
inst✝⁴ : ExpChar K p
inst✝³ : ExpChar L p
inst✝² : ExpChar M p
inst✝¹ : PerfectRing M p
inst✝ : IsPRadical i p
x : L
n : ℕ
y : K
h : i y = x ^ p ^ n
⊢ ∃ y, i y.2 = x ^ p ^ y.1
state_after: no goals
Theorem: Polynomial.card_roots_sub_C'
File: Mathlib/Algebra/Polynomial/Roots.lean

tactic: simp_all [lt_irrefl]
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p✝ q p : R[X]
a : R
hp0 : 0 < p.degree
h : p = 0
⊢ False
state_after: no goals