1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: SimpleGraph.Subgraph.Connected.preconnected
File: Mathlib/Combinatorics/SimpleGraph/Connectivity/Subgraph.lean

tactic: rw [H.connected_iff] at h
state_before: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
H : G.Subgraph
h : H.Connected
⊢ H.Preconnected
state_after: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
H : G.Subgraph
h : H.Preconnected ∧ H.verts.Nonempty
⊢ H.Preconnected

tactic: exact h.1
state_before: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
H : G.Subgraph
h : H.Preconnected ∧ H.verts.Nonempty
⊢ H.Preconnected
state_after: no goals
Theorem: NonUnitalStarSubalgebra.centralizer_univ
File: Mathlib/Algebra/Star/NonUnitalSubalgebra.lean

tactic: rw [coe_centralizer, Set.univ_union, coe_center, Set.centralizer_univ]
state_before: F : Type v'
R' : Type u'
R : Type u
A : Type v
B : Type w
C : Type w'
inst✝¹⁶ : CommSemiring R
inst✝¹⁵ : StarRing R
inst✝¹⁴ : NonUnitalSemiring A
inst✝¹³ : StarRing A
inst✝¹² : Module R A
inst✝¹¹ : IsScalarTower R A A
inst✝¹⁰ : SMulCommClass R A A
inst✝⁹ : StarModule R A
inst✝⁸ : NonUnitalSemiring B
inst✝⁷ : StarRing B
inst✝⁶ : Module R B
inst✝⁵ : IsScalarTower R B B
inst✝⁴ : SMulCommClass R B B
inst✝³ : StarModule R B
inst✝² : FunLike F A B
inst✝¹ : NonUnitalAlgHomClass F R A B
inst✝ : NonUnitalStarAlgHomClass F R A B
S : NonUnitalStarSubalgebra R A
⊢ ↑(centralizer R Set.univ) = ↑(center R A)
state_after: no goals
Theorem: NonUnitalStarAlgebra.span_eq_toSubmodule
File: Mathlib/Algebra/Star/NonUnitalSubalgebra.lean

tactic: simp [SetLike.ext'_iff, Submodule.coe_span_eq_self]
state_before: F : Type v'
R' : Type u'
R : Type u
A : Type v
B : Type w
C : Type w'
inst✝¹⁶ : CommSemiring R
inst✝¹⁵ : StarRing R
inst✝¹⁴ : NonUnitalSemiring A
inst✝¹³ : StarRing A
inst✝¹² : Module R A
inst✝¹¹ : IsScalarTower R A A
inst✝¹⁰ : SMulCommClass R A A
inst✝⁹ : StarModule R A
inst✝⁸ : NonUnitalSemiring B
inst✝⁷ : StarRing B
inst✝⁶ : Module R B
inst✝⁵ : IsScalarTower R B B
inst✝⁴ : SMulCommClass R B B
inst✝³ : StarModule R B
inst✝² : FunLike F A B
inst✝¹ : NonUnitalAlgHomClass F R A B
inst✝ : NonUnitalStarAlgHomClass F R A B
s : NonUnitalStarSubalgebra R A
⊢ Submodule.span R ↑s = s.toSubmodule
state_after: no goals
Theorem: List.isRotated_nil_iff
File: Mathlib/Data/List/Rotate.lean

tactic: simpa using hn
state_before: α : Type u
l l' : List α
x✝ : l ~r []
n : ℕ
hn : l.rotate n = []
⊢ l = []
state_after: no goals

tactic: rfl
state_before: α : Type u
l l' : List α
h : l = []
⊢ l ~r l
state_after: no goals
Theorem: MeasureTheory.integrable_norm_iff
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: simp_rw [Integrable, and_iff_right hf, and_iff_right hf.norm, hasFiniteIntegral_norm_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → β
hf : AEStronglyMeasurable f μ
⊢ Integrable (fun a => ‖f a‖) μ ↔ Integrable f μ
state_after: no goals
Theorem: LinearMap.inl_injective
File: Mathlib/LinearAlgebra/Prod.lean

tactic: simp
state_before: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
M₅ : Type u_1
M₆ : Type u_2
S : Type u_3
inst✝¹³ : Semiring R
inst✝¹² : Semiring S
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M₂
inst✝⁹ : AddCommMonoid M₃
inst✝⁸ : AddCommMonoid M₄
inst✝⁷ : AddCommMonoid M₅
inst✝⁶ : AddCommMonoid M₆
inst✝⁵ : Module R M
inst✝⁴ : Module R M₂
inst✝³ : Module R M₃
inst✝² : Module R M₄
inst✝¹ : Module R M₅
inst✝ : Module R M₆
f : M →ₗ[R] M₂
x✝ : M
⊢ ∀ ⦃a₂ : M⦄, (inl R M M₂) x✝ = (inl R M M₂) a₂ → x✝ = a₂
state_after: no goals
Theorem: MvPowerSeries.one_mul
File: Mathlib/RingTheory/MvPowerSeries/Basic.lean

tactic: simpa using coeff_add_monomial_mul 0 n φ 1
state_before: σ : Type u_1
R : Type u_2
inst✝ : Semiring R
m n✝ : σ →₀ ℕ
φ ψ : MvPowerSeries σ R
n : σ →₀ ℕ
⊢ (coeff R n) (1 * φ) = (coeff R n) φ
state_after: no goals
Theorem: Nat.sq_add_sq_modEq
File: Mathlib/FieldTheory/Finite/Basic.lean

tactic: simpa only [← Int.natCast_modEq_iff] using Nat.sq_add_sq_zmodEq p x
state_before: K : Type u_1
R : Type u_2
p : ℕ
inst✝ : Fact (Prime p)
x : ℕ
⊢ ∃ a b, a ≤ p / 2 ∧ b ≤ p / 2 ∧ a ^ 2 + b ^ 2 ≡ x [MOD p]
state_after: no goals
Theorem: continuousWithinAt_inter
File: Mathlib/Topology/ContinuousOn.lean

tactic: simp [ContinuousWithinAt, nhdsWithin_restrict' s h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝³ : (i : ι) → TopologicalSpace (π i)
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
s t : Set α
x : α
h : t ∈ 𝓝 x
⊢ ContinuousWithinAt f (s ∩ t) x ↔ ContinuousWithinAt f s x
state_after: no goals
Theorem: Real.sin_pi
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: rw [← mul_div_cancel_left₀ π (two_ne_zero' ℝ), two_mul, add_div, sin_add, cos_pi_div_two]
state_before: ⊢ sin π = 0
state_after: ⊢ sin (π / 2) * 0 + 0 * sin (π / 2) = 0

tactic: simp
state_before: ⊢ sin (π / 2) * 0 + 0 * sin (π / 2) = 0
state_after: no goals
Theorem: AlgebraicGeometry.Scheme.Pullback.gluedLiftPullbackMap_snd
File: Mathlib/AlgebraicGeometry/Pullbacks.lean

tactic: simp [gluedLiftPullbackMap]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
s : PullbackCone f g
i j : 𝒰.J
⊢ gluedLiftPullbackMap 𝒰 f g s i j ≫ pullback.snd = pullback.snd ≫ pullback.snd
state_after: no goals
Theorem: mellin_div_const
File: Mathlib/Analysis/MellinTransform.lean

tactic: simp_rw [mellin, smul_eq_mul, ← mul_div_assoc, integral_div]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f : ℝ → ℂ
s a : ℂ
⊢ mellin (fun t => f t / a) s = mellin f s / a
state_after: no goals
Theorem: Algebra.Generators.σ_smul
File: Mathlib/RingTheory/Generators.lean

tactic: rw [Algebra.smul_def, algebraMap_apply, aeval_val_σ]
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
P : Generators R S
x y : S
⊢ P.σ x • y = x * y
state_after: no goals
Theorem: AddCommGroup.modEq_sub_iff_add_modEq'
File: Mathlib/Algebra/ModEq.lean

tactic: simp [ModEq, sub_sub]
state_before: α : Type u_1
inst✝ : AddCommGroup α
p a a₁ a₂ b b₁ b₂ c : α
n : ℕ
z : ℤ
⊢ a ≡ b - c [PMOD p] ↔ c + a ≡ b [PMOD p]
state_after: no goals
Theorem: Batteries.RBNode.Ordered.lt_upperBound?
File: .lake/packages/batteries/Batteries/Data/RBMap/Lemmas.lean

tactic: rw [← reverse_reverse t, upperBound?_reverse] at H
state_before: α : Type u_1
cmp : α → α → Ordering
cut : α → Ordering
t : RBNode α
x y : α
inst✝¹ : TransCmp cmp
inst✝ : IsStrictCut cmp cut
ht : Ordered cmp t
H : upperBound? cut t = some x
hy : y ∈ t
⊢ cmp y x = Ordering.lt ↔ cut y = Ordering.gt
state_after: α : Type u_1
cmp : α → α → Ordering
cut : α → Ordering
t : RBNode α
x y : α
inst✝¹ : TransCmp cmp
inst✝ : IsStrictCut cmp cut
ht : Ordered cmp t
H : lowerBound? (fun x => (cut x).swap) t.reverse = some x
hy : y ∈ t
⊢ cmp y x = Ordering.lt ↔ cut y = Ordering.gt

tactic: rw [← Ordering.swap_inj (o₂ := .gt)]
state_before: α : Type u_1
cmp : α → α → Ordering
cut : α → Ordering
t : RBNode α
x y : α
inst✝¹ : TransCmp cmp
inst✝ : IsStrictCut cmp cut
ht : Ordered cmp t
H : lowerBound? (fun x => (cut x).swap) t.reverse = some x
hy : y ∈ t
⊢ cmp y x = Ordering.lt ↔ cut y = Ordering.gt
state_after: α : Type u_1
cmp : α → α → Ordering
cut : α → Ordering
t : RBNode α
x y : α
inst✝¹ : TransCmp cmp
inst✝ : IsStrictCut cmp cut
ht : Ordered cmp t
H : lowerBound? (fun x => (cut x).swap) t.reverse = some x
hy : y ∈ t
⊢ cmp y x = Ordering.lt ↔ (cut y).swap = Ordering.gt.swap

tactic: revert hy
state_before: α : Type u_1
cmp : α → α → Ordering
cut : α → Ordering
t : RBNode α
x y : α
inst✝¹ : TransCmp cmp
inst✝ : IsStrictCut cmp cut
ht : Ordered cmp t
H : lowerBound? (fun x => (cut x).swap) t.reverse = some x
hy : y ∈ t
⊢ cmp y x = Ordering.lt ↔ (cut y).swap = Ordering.gt.swap
state_after: α : Type u_1
cmp : α → α → Ordering
cut : α → Ordering
t : RBNode α
x y : α
inst✝¹ : TransCmp cmp
inst✝ : IsStrictCut cmp cut
ht : Ordered cmp t
H : lowerBound? (fun x => (cut x).swap) t.reverse = some x
⊢ y ∈ t → (cmp y x = Ordering.lt ↔ (cut y).swap = Ordering.gt.swap)

tactic: simpa [-Ordering.swap_inj] using ht.reverse.lowerBound?_lt H
state_before: α : Type u_1
cmp : α → α → Ordering
cut : α → Ordering
t : RBNode α
x y : α
inst✝¹ : TransCmp cmp
inst✝ : IsStrictCut cmp cut
ht : Ordered cmp t
H : lowerBound? (fun x => (cut x).swap) t.reverse = some x
⊢ y ∈ t → (cmp y x = Ordering.lt ↔ (cut y).swap = Ordering.gt.swap)
state_after: no goals
Theorem: PresheafOfModules.pushforward_obj_map_apply
File: Mathlib/Algebra/Category/ModuleCat/Presheaf/Pushforward.lean

tactic: rfl
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
R : Dᵒᵖ ⥤ RingCat
S : Cᵒᵖ ⥤ RingCat
φ : S ⟶ F.op ⋙ R
M : PresheafOfModules R
X Y : Cᵒᵖ
f : X ⟶ Y
m : ↑((ModuleCat.restrictScalars (φ.app X)).obj (M.obj { unop := F.obj X.unop }))
⊢ (((pushforward φ).obj M).map f) m = (M.map (F.map f.unop).op) m
state_after: no goals
Theorem: ConvexCone.coe_iInf
File: Mathlib/Analysis/Convex/Cone/Basic.lean

tactic: simp [iInf]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝² : OrderedSemiring 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : SMul 𝕜 E
S T : ConvexCone 𝕜 E
ι : Sort u_5
f : ι → ConvexCone 𝕜 E
⊢ ↑(iInf f) = ⋂ i, ↑(f i)
state_after: no goals
Theorem: MeasureTheory.lintegral_map'
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: congr 1
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
mβ : MeasurableSpace β
f : β → ℝ≥0∞
g : α → β
hf : AEMeasurable f (Measure.map g μ)
hg : AEMeasurable g μ
⊢ ∫⁻ (a : β), AEMeasurable.mk f hf a ∂Measure.map g μ =
    ∫⁻ (a : β), AEMeasurable.mk f hf a ∂Measure.map (AEMeasurable.mk g hg) μ
state_after: case e_μ
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
mβ : MeasurableSpace β
f : β → ℝ≥0∞
g : α → β
hf : AEMeasurable f (Measure.map g μ)
hg : AEMeasurable g μ
⊢ Measure.map g μ = Measure.map (AEMeasurable.mk g hg) μ

tactic: exact Measure.map_congr hg.ae_eq_mk
state_before: case e_μ
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
mβ : MeasurableSpace β
f : β → ℝ≥0∞
g : α → β
hf : AEMeasurable f (Measure.map g μ)
hg : AEMeasurable g μ
⊢ Measure.map g μ = Measure.map (AEMeasurable.mk g hg) μ
state_after: no goals
Theorem: Nat.div_eq_zero_iff
File: Mathlib/Data/Nat/Defs.lean

tactic: rw [← mod_add_div a b, h, Nat.mul_zero, Nat.add_zero]
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
hb : 0 < b
h : a / b = 0
⊢ a < b
state_after: a b c d m n k : ℕ
p q : ℕ → Prop
hb : 0 < b
h : a / b = 0
⊢ a % b < b

tactic: exact mod_lt _ hb
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
hb : 0 < b
h : a / b = 0
⊢ a % b < b
state_after: no goals

tactic: rw [← Nat.mul_right_inj (Nat.ne_of_gt hb), ← Nat.add_left_cancel_iff, mod_add_div,
mod_eq_of_lt h, Nat.mul_zero, Nat.add_zero]
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
hb : 0 < b
h : a < b
⊢ a / b = 0
state_after: no goals
Theorem: T_def
File: Mathlib/NumberTheory/Padics/Hensel.lean

tactic: simp [T_gen, ← PadicInt.norm_def]
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
F : Polynomial ℤ_[p]
a : ℤ_[p]
hnorm : ‖Polynomial.eval a F‖ < ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2
hnsol : Polynomial.eval a F ≠ 0
⊢ T_gen p F a = ‖Polynomial.eval a F‖ / ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2
state_after: no goals
Theorem: Int.fract_neg_eq_zero
File: Mathlib/Algebra/Order/Floor.lean

tactic: simp only [fract_eq_iff, le_refl, zero_lt_one, tsub_zero, true_and_iff]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a x : α
⊢ fract (-x) = 0 ↔ fract x = 0
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a x : α
⊢ (∃ z, -x = ↑z) ↔ ∃ z, x = ↑z

tactic: constructor <;> rintro ⟨z, hz⟩ <;> use -z <;> simp [← hz]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a x : α
⊢ (∃ z, -x = ↑z) ↔ ∃ z, x = ↑z
state_after: no goals
Theorem: CategoryTheory.NonPreadditiveAbelian.neg_add
File: Mathlib/CategoryTheory/Abelian/NonPreadditive.lean

tactic: rw [add_def, neg_sub', add_neg]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : NonPreadditiveAbelian C
X Y : C
a b : X ⟶ Y
⊢ -(a + b) = -a - b
state_after: no goals
Theorem: Filter.map_map₂_distrib
File: Mathlib/Order/Filter/NAry.lean

tactic: simp_rw [map_map₂, map₂_map_left, map₂_map_right, h_distrib]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
m : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s s₁ s₂ : Set α
t t₁ t₂ : Set β
u : Set γ
v : Set δ
a : α
b : β
c : γ
n : γ → δ
m' : α' → β' → δ
n₁ : α → α'
n₂ : β → β'
h_distrib : ∀ (a : α) (b : β), n (m a b) = m' (n₁ a) (n₂ b)
⊢ map n (map₂ m f g) = map₂ m' (map n₁ f) (map n₂ g)
state_after: no goals
Theorem: MeasureTheory.Measure.singularPart_restrict
File: Mathlib/MeasureTheory/Decomposition/Lebesgue.lean

tactic: refine (Measure.eq_singularPart (f := s.indicator (μ.rnDeriv ν)) ?_ ?_ ?_).symm
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
s : Set α
hs : MeasurableSet s
⊢ (μ.restrict s).singularPart ν = (μ.singularPart ν).restrict s
state_after: case refine_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
s : Set α
hs : MeasurableSet s
⊢ Measurable (s.indicator (μ.rnDeriv ν))

case refine_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
s : Set α
hs : MeasurableSet s
⊢ (μ.singularPart ν).restrict s ⟂ₘ ν

case refine_3
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
s : Set α
hs : MeasurableSet s
⊢ μ.restrict s = (μ.singularPart ν).restrict s + ν.withDensity (s.indicator (μ.rnDeriv ν))

tactic: exact (μ.measurable_rnDeriv ν).indicator hs
state_before: case refine_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
s : Set α
hs : MeasurableSet s
⊢ Measurable (s.indicator (μ.rnDeriv ν))
state_after: no goals

tactic: exact (Measure.mutuallySingular_singularPart μ ν).restrict s
state_before: case refine_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
s : Set α
hs : MeasurableSet s
⊢ (μ.singularPart ν).restrict s ⟂ₘ ν
state_after: no goals

tactic: ext t
state_before: case refine_3
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
s : Set α
hs : MeasurableSet s
⊢ μ.restrict s = (μ.singularPart ν).restrict s + ν.withDensity (s.indicator (μ.rnDeriv ν))
state_after: case refine_3.h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
s : Set α
hs : MeasurableSet s
t : Set α
a✝ : MeasurableSet t
⊢ (μ.restrict s) t = ((μ.singularPart ν).restrict s + ν.withDensity (s.indicator (μ.rnDeriv ν))) t

tactic: rw [withDensity_indicator hs, ← restrict_withDensity hs, ← Measure.restrict_add,
  ← μ.haveLebesgueDecomposition_add ν]
state_before: case refine_3.h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
s : Set α
hs : MeasurableSet s
t : Set α
a✝ : MeasurableSet t
⊢ (μ.restrict s) t = ((μ.singularPart ν).restrict s + ν.withDensity (s.indicator (μ.rnDeriv ν))) t
state_after: no goals
Theorem: ZMod.ringEquivCongr_refl_apply
File: Mathlib/Data/ZMod/Basic.lean

tactic: rw [ringEquivCongr_refl]
state_before: n : ℕ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharP R n
a : ℕ
x : ZMod a
⊢ (ringEquivCongr ⋯) x = x
state_after: n : ℕ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharP R n
a : ℕ
x : ZMod a
⊢ (RingEquiv.refl (ZMod a)) x = x

tactic: rfl
state_before: n : ℕ
R : Type u_1
inst✝¹ : Ring R
inst✝ : CharP R n
a : ℕ
x : ZMod a
⊢ (RingEquiv.refl (ZMod a)) x = x
state_after: no goals
Theorem: embedding_sigma_map
File: Mathlib/Topology/Constructions.lean

tactic: simp only [embedding_iff, Injective.sigma_map, inducing_sigma_map h, forall_and, h.sigma_map_iff]
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
ι : Type u_5
κ : Type u_6
σ : ι → Type u_7
τ : κ → Type u_8
inst✝² : (i : ι) → TopologicalSpace (σ i)
inst✝¹ : (k : κ) → TopologicalSpace (τ k)
inst✝ : TopologicalSpace X
f₁ : ι → κ
f₂ : (i : ι) → σ i → τ (f₁ i)
h : Injective f₁
⊢ _root_.Embedding (Sigma.map f₁ f₂) ↔ ∀ (i : ι), _root_.Embedding (f₂ i)
state_after: no goals
Theorem: Prefunctor.symmetrifyCostar
File: Mathlib/Combinatorics/Quiver/Covering.lean

tactic: erw [Equiv.eq_symm_comp]
state_before: U : Type u_1
inst✝² : Quiver U
V : Type u_2
inst✝¹ : Quiver V
φ : U ⥤q V
W : Type ?u.7334
inst✝ : Quiver W
ψ : V ⥤q W
u : U
⊢ φ.symmetrify.costar u = ⇑(symmetrifyCostar (φ.obj u)).symm ∘ Sum.map (φ.costar u) (φ.star u) ∘ ⇑(symmetrifyCostar u)
state_after: U : Type u_1
inst✝² : Quiver U
V : Type u_2
inst✝¹ : Quiver V
φ : U ⥤q V
W : Type ?u.7334
inst✝ : Quiver W
ψ : V ⥤q W
u : U
⊢ ⇑(symmetrifyCostar (φ.obj u)) ∘ φ.symmetrify.costar u = Sum.map (φ.costar u) (φ.star u) ∘ ⇑(symmetrifyCostar u)

tactic: ext ⟨v, f | g⟩ <;>
  simp only [Quiver.symmetrifyCostar, Function.comp_apply] <;>
  erw [Equiv.sigmaSumDistrib_apply, Equiv.sigmaSumDistrib_apply] <;>
  simp
state_before: U : Type u_1
inst✝² : Quiver U
V : Type u_2
inst✝¹ : Quiver V
φ : U ⥤q V
W : Type ?u.7334
inst✝ : Quiver W
ψ : V ⥤q W
u : U
⊢ ⇑(symmetrifyCostar (φ.obj u)) ∘ φ.symmetrify.costar u = Sum.map (φ.costar u) (φ.star u) ∘ ⇑(symmetrifyCostar u)
state_after: no goals
Theorem: SeparatedNhds.of_isCompact_isCompact
File: Mathlib/Topology/Separation.lean

tactic: simp only [SeparatedNhds, prod_subset_compl_diagonal_iff_disjoint.symm] at hst ⊢
state_before: X : Type u_1
Y : Type u_2
inst✝⁴ : TopologicalSpace X
inst✝³ : FirstCountableTopology X
Z : Type u_3
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : T2Space X
s t : Set X
hs : IsCompact s
ht : IsCompact t
hst : Disjoint s t
⊢ SeparatedNhds s t
state_after: X : Type u_1
Y : Type u_2
inst✝⁴ : TopologicalSpace X
inst✝³ : FirstCountableTopology X
Z : Type u_3
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : T2Space X
s t : Set X
hs : IsCompact s
ht : IsCompact t
hst : s ×ˢ t ⊆ (diagonal X)ᶜ
⊢ ∃ U V, IsOpen U ∧ IsOpen V ∧ s ⊆ U ∧ t ⊆ V ∧ U ×ˢ V ⊆ (diagonal X)ᶜ

tactic: exact generalized_tube_lemma hs ht isClosed_diagonal.isOpen_compl hst
state_before: X : Type u_1
Y : Type u_2
inst✝⁴ : TopologicalSpace X
inst✝³ : FirstCountableTopology X
Z : Type u_3
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : T2Space X
s t : Set X
hs : IsCompact s
ht : IsCompact t
hst : s ×ˢ t ⊆ (diagonal X)ᶜ
⊢ ∃ U V, IsOpen U ∧ IsOpen V ∧ s ⊆ U ∧ t ⊆ V ∧ U ×ˢ V ⊆ (diagonal X)ᶜ
state_after: no goals
Theorem: Module.End.isSemisimple_sub_algebraMap_iff
File: Mathlib/LinearAlgebra/Semisimple.lean

tactic: suffices ∀ p : Submodule R M, p ≤ p.comap (f - algebraMap R (Module.End R M) μ) ↔ p ≤ p.comap f by
  simp [isSemisimple_iff, this]
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
μ : R
⊢ (f - (algebraMap R (End R M)) μ).IsSemisimple ↔ f.IsSemisimple
state_after: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
μ : R
⊢ ∀ (p : Submodule R M), p ≤ Submodule.comap (f - (algebraMap R (End R M)) μ) p ↔ p ≤ Submodule.comap f p

tactic: refine fun p ↦ ⟨fun h x hx ↦ ?_, fun h x hx ↦ p.sub_mem (h hx) (p.smul_mem μ hx)⟩
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
μ : R
⊢ ∀ (p : Submodule R M), p ≤ Submodule.comap (f - (algebraMap R (End R M)) μ) p ↔ p ≤ Submodule.comap f p
state_after: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
μ : R
p : Submodule R M
h : p ≤ Submodule.comap (f - (algebraMap R (End R M)) μ) p
x : M
hx : x ∈ p
⊢ x ∈ Submodule.comap f p

tactic: simpa using p.add_mem (h hx) (p.smul_mem μ hx)
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
μ : R
p : Submodule R M
h : p ≤ Submodule.comap (f - (algebraMap R (End R M)) μ) p
x : M
hx : x ∈ p
⊢ x ∈ Submodule.comap f p
state_after: no goals

tactic: simp [isSemisimple_iff, this]
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
μ : R
this : ∀ (p : Submodule R M), p ≤ Submodule.comap (f - (algebraMap R (End R M)) μ) p ↔ p ≤ Submodule.comap f p
⊢ (f - (algebraMap R (End R M)) μ).IsSemisimple ↔ f.IsSemisimple
state_after: no goals
Theorem: AbsoluteValue.le_add
File: Mathlib/Algebra/Order/AbsoluteValue.lean

tactic: simpa only [tsub_le_iff_right, add_neg_cancel_right, abv.map_neg] using abv.add_le (a + b) (-b)
state_before: ι : Type u_1
α : Type u_2
R : Type u_3
S : Type u_4
inst✝² : OrderedCommRing S
inst✝¹ : Ring R
abv : AbsoluteValue R S
inst✝ : NoZeroDivisors S
a b : R
⊢ abv a - abv b ≤ abv (a + b)
state_after: no goals
Theorem: LiouvilleWith.rat_add_iff
File: Mathlib/NumberTheory/Liouville/LiouvilleWith.lean

tactic: rw [add_comm, add_rat_iff]
state_before: p q x y : ℝ
r : ℚ
m : ℤ
n : ℕ
⊢ LiouvilleWith p (↑r + x) ↔ LiouvilleWith p x
state_after: no goals
Theorem: List.head_mem
File: Mathlib/Data/List/Basic.lean

tactic: cases l <;> simp
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ l : List α
⊢ ∀ (h : l ≠ []), l.head h ∈ l
state_after: no goals
Theorem: tprod_bool
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

tactic: rw [tprod_fintype, Fintype.prod_bool, mul_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : CommMonoid α
inst✝ : TopologicalSpace α
f✝ g : β → α
a a₁ a₂ : α
f : Bool → α
⊢ ∏' (i : Bool), f i = f false * f true
state_after: no goals
Theorem: Finsupp.single_add_single_eq_single_add_single
File: Mathlib/Data/Finsupp/Defs.lean

tactic: classical
  simp_rw [DFunLike.ext_iff, coe_add, single_eq_pi_single, ← funext_iff]
  exact Pi.single_add_single_eq_single_add_single hu hv
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : AddCommMonoid M
k l m n : α
u v : M
hu : u ≠ 0
hv : v ≠ 0
⊢ single k u + single l v = single m u + single n v ↔ k = m ∧ l = n ∨ u = v ∧ k = n ∧ l = m ∨ u + v = 0 ∧ k = l ∧ m = n
state_after: no goals

tactic: simp_rw [DFunLike.ext_iff, coe_add, single_eq_pi_single, ← funext_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : AddCommMonoid M
k l m n : α
u v : M
hu : u ≠ 0
hv : v ≠ 0
⊢ single k u + single l v = single m u + single n v ↔ k = m ∧ l = n ∨ u = v ∧ k = n ∧ l = m ∨ u + v = 0 ∧ k = l ∧ m = n
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : AddCommMonoid M
k l m n : α
u v : M
hu : u ≠ 0
hv : v ≠ 0
⊢ Pi.single k u + Pi.single l v = Pi.single m u + Pi.single n v ↔
    k = m ∧ l = n ∨ u = v ∧ k = n ∧ l = m ∨ u + v = 0 ∧ k = l ∧ m = n

tactic: exact Pi.single_add_single_eq_single_add_single hu hv
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : AddCommMonoid M
k l m n : α
u v : M
hu : u ≠ 0
hv : v ≠ 0
⊢ Pi.single k u + Pi.single l v = Pi.single m u + Pi.single n v ↔
    k = m ∧ l = n ∨ u = v ∧ k = n ∧ l = m ∨ u + v = 0 ∧ k = l ∧ m = n
state_after: no goals