1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Subalgebra.isAlgebraic_iff
File: Mathlib/RingTheory/Algebraic.lean

tactic: delta Subalgebra.IsAlgebraic
state_before: R : Type u
A : Type v
inst✝² : CommRing R
inst✝¹ : Ring A
inst✝ : Algebra R A
S : Subalgebra R A
⊢ S.IsAlgebraic ↔ Algebra.IsAlgebraic R ↥S
state_after: R : Type u
A : Type v
inst✝² : CommRing R
inst✝¹ : Ring A
inst✝ : Algebra R A
S : Subalgebra R A
⊢ (∀ x ∈ S, _root_.IsAlgebraic R x) ↔ Algebra.IsAlgebraic R ↥S

tactic: rw [Subtype.forall', Algebra.isAlgebraic_def]
state_before: R : Type u
A : Type v
inst✝² : CommRing R
inst✝¹ : Ring A
inst✝ : Algebra R A
S : Subalgebra R A
⊢ (∀ x ∈ S, _root_.IsAlgebraic R x) ↔ Algebra.IsAlgebraic R ↥S
state_after: R : Type u
A : Type v
inst✝² : CommRing R
inst✝¹ : Ring A
inst✝ : Algebra R A
S : Subalgebra R A
⊢ (∀ (x : ↥S), _root_.IsAlgebraic R ↑x) ↔ ∀ (x : ↥S), _root_.IsAlgebraic R x

tactic: refine forall_congr' fun x => exists_congr fun p => and_congr Iff.rfl ?_
state_before: R : Type u
A : Type v
inst✝² : CommRing R
inst✝¹ : Ring A
inst✝ : Algebra R A
S : Subalgebra R A
⊢ (∀ (x : ↥S), _root_.IsAlgebraic R ↑x) ↔ ∀ (x : ↥S), _root_.IsAlgebraic R x
state_after: R : Type u
A : Type v
inst✝² : CommRing R
inst✝¹ : Ring A
inst✝ : Algebra R A
S : Subalgebra R A
x : ↥S
p : R[X]
⊢ (aeval ↑x) p = 0 ↔ (aeval x) p = 0

tactic: have h : Function.Injective S.val := Subtype.val_injective
state_before: R : Type u
A : Type v
inst✝² : CommRing R
inst✝¹ : Ring A
inst✝ : Algebra R A
S : Subalgebra R A
x : ↥S
p : R[X]
⊢ (aeval ↑x) p = 0 ↔ (aeval x) p = 0
state_after: R : Type u
A : Type v
inst✝² : CommRing R
inst✝¹ : Ring A
inst✝ : Algebra R A
S : Subalgebra R A
x : ↥S
p : R[X]
h : Function.Injective ⇑S.val
⊢ (aeval ↑x) p = 0 ↔ (aeval x) p = 0

tactic: conv_rhs => rw [← h.eq_iff, AlgHom.map_zero]
state_before: R : Type u
A : Type v
inst✝² : CommRing R
inst✝¹ : Ring A
inst✝ : Algebra R A
S : Subalgebra R A
x : ↥S
p : R[X]
h : Function.Injective ⇑S.val
⊢ (aeval ↑x) p = 0 ↔ (aeval x) p = 0
state_after: R : Type u
A : Type v
inst✝² : CommRing R
inst✝¹ : Ring A
inst✝ : Algebra R A
S : Subalgebra R A
x : ↥S
p : R[X]
h : Function.Injective ⇑S.val
⊢ (aeval ↑x) p = 0 ↔ S.val ((aeval x) p) = 0

tactic: rw [← aeval_algHom_apply, S.val_apply]
state_before: R : Type u
A : Type v
inst✝² : CommRing R
inst✝¹ : Ring A
inst✝ : Algebra R A
S : Subalgebra R A
x : ↥S
p : R[X]
h : Function.Injective ⇑S.val
⊢ (aeval ↑x) p = 0 ↔ S.val ((aeval x) p) = 0
state_after: no goals
Theorem: MvPolynomial.mem_restrictTotalDegree
File: Mathlib/RingTheory/MvPolynomial/Basic.lean

tactic: rw [totalDegree, Finset.sup_le_iff]
state_before: σ : Type u
R : Type v
inst✝ : CommSemiring R
p✝ m : ℕ
p : MvPolynomial σ R
⊢ p ∈ restrictTotalDegree σ R m ↔ p.totalDegree ≤ m
state_after: σ : Type u
R : Type v
inst✝ : CommSemiring R
p✝ m : ℕ
p : MvPolynomial σ R
⊢ p ∈ restrictTotalDegree σ R m ↔ ∀ b ∈ p.support, (b.sum fun x e => e) ≤ m

tactic: rfl
state_before: σ : Type u
R : Type v
inst✝ : CommSemiring R
p✝ m : ℕ
p : MvPolynomial σ R
⊢ p ∈ restrictTotalDegree σ R m ↔ ∀ b ∈ p.support, (b.sum fun x e => e) ≤ m
state_after: no goals
Theorem: MeasureTheory.FiniteMeasure.normalize_eq_inv_mass_smul_of_nonzero
File: Mathlib/MeasureTheory/Measure/ProbabilityMeasure.lean

tactic: nth_rw 3 [μ.self_eq_mass_smul_normalize]
state_before: Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
nonzero : μ ≠ 0
⊢ μ.normalize.toFiniteMeasure = μ.mass⁻¹ • μ
state_after: Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
nonzero : μ ≠ 0
⊢ μ.normalize.toFiniteMeasure = μ.mass⁻¹ • μ.mass • μ.normalize.toFiniteMeasure

tactic: rw [← smul_assoc]
state_before: Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
nonzero : μ ≠ 0
⊢ μ.normalize.toFiniteMeasure = μ.mass⁻¹ • μ.mass • μ.normalize.toFiniteMeasure
state_after: Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
nonzero : μ ≠ 0
⊢ μ.normalize.toFiniteMeasure = (μ.mass⁻¹ • μ.mass) • μ.normalize.toFiniteMeasure

tactic: simp only [μ.mass_nonzero_iff.mpr nonzero, Algebra.id.smul_eq_mul, inv_mul_cancel, Ne,
  not_false_iff, one_smul]
state_before: Ω : Type u_1
inst✝ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
nonzero : μ ≠ 0
⊢ μ.normalize.toFiniteMeasure = (μ.mass⁻¹ • μ.mass) • μ.normalize.toFiniteMeasure
state_after: no goals
Theorem: HomologicalComplex.xPrevIso_comp_dTo
File: Mathlib/Algebra/Homology/HomologicalComplex.lean

tactic: simp [C.dTo_eq r]
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
C : HomologicalComplex V c
i j : ι
r : c.Rel i j
⊢ (C.xPrevIso r).inv ≫ C.dTo j = C.d i j
state_after: no goals
Theorem: Module.Flat.iff_rTensor_injective
File: Mathlib/RingTheory/Flat/Basic.lean

tactic: simp [flat_iff, ← lid_comp_rTensor]
state_before: R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
⊢ Flat R M ↔ ∀ ⦃I : Ideal R⦄, I.FG → Function.Injective ⇑(rTensor M (Submodule.subtype I))
state_after: no goals
Theorem: Finset.erase_sdiff_comm
File: Mathlib/Data/Finset/Basic.lean

tactic: simp_rw [erase_eq, sdiff_right_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t✝ u v : Finset α
a✝ b : α
s t : Finset α
a : α
⊢ s.erase a \ t = (s \ t).erase a
state_after: no goals
Theorem: Filter.compl_mem_coprod
File: Mathlib/Order/Filter/Prod.lean

tactic: simp only [Filter.coprod, mem_sup, compl_mem_comap]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
f : Filter α
g : Filter β
s : Set (α × β)
la : Filter α
lb : Filter β
⊢ sᶜ ∈ la.coprod lb ↔ (Prod.fst '' s)ᶜ ∈ la ∧ (Prod.snd '' s)ᶜ ∈ lb
state_after: no goals
Theorem: MeasureTheory.isLocallyFiniteMeasure_of_smulInvariant
File: Mathlib/MeasureTheory/Group/Action.lean

tactic: rwa [measure_preimage_smul]
state_before: G : Type u
M : Type v
α : Type w
s : Set α
m : MeasurableSpace α
inst✝⁷ : Group G
inst✝⁶ : MulAction G α
inst✝⁵ : MeasurableSpace G
inst✝⁴ : MeasurableSMul G α
c : G
μ : Measure α
inst✝³ : SMulInvariantMeasure G α μ
inst✝² : TopologicalSpace α
inst✝¹ : ContinuousConstSMul G α
inst✝ : MulAction.IsMinimal G α
K U : Set α
hU : IsOpen U
hne : U.Nonempty
hμU : μ U ≠ ⊤
x : α
g : G
hg : g • x ∈ U
⊢ μ ((fun x => g • x) ⁻¹' U) ≠ ⊤
state_after: no goals
Theorem: ChainComplex.next_nat_zero
File: Mathlib/Algebra/Homology/HomologicalComplex.lean

tactic: classical
  refine dif_neg ?_
  push_neg
  intro
  apply Nat.noConfusion
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
⊢ (ComplexShape.down ℕ).next 0 = 0
state_after: no goals

tactic: refine dif_neg ?_
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
⊢ (ComplexShape.down ℕ).next 0 = 0
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
⊢ ¬∃ j, (ComplexShape.down ℕ).Rel 0 j

tactic: push_neg
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
⊢ ¬∃ j, (ComplexShape.down ℕ).Rel 0 j
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
⊢ ∀ (j : ℕ), ¬(ComplexShape.down ℕ).Rel 0 j

tactic: intro
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
⊢ ∀ (j : ℕ), ¬(ComplexShape.down ℕ).Rel 0 j
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
j✝ : ℕ
⊢ ¬(ComplexShape.down ℕ).Rel 0 j✝

tactic: apply Nat.noConfusion
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
j✝ : ℕ
⊢ ¬(ComplexShape.down ℕ).Rel 0 j✝
state_after: no goals
Theorem: ProbabilityTheory.kernel.indepSet_iff_indepSets_singleton
File: Mathlib/Probability/Independence/Kernel.lean

tactic: rwa [Set.mem_singleton_iff.mp hu]
state_before: α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s t : Set Ω
S T : Set (Set Ω)
m0 : MeasurableSpace Ω
hs_meas : MeasurableSet s
ht_meas : MeasurableSet t
κ : ↥(kernel α Ω)
μ : Measure α
inst✝ : IsMarkovKernel κ
h : IndepSets {s} {t} κ μ
u : Set Ω
hu : u ∈ {s}
⊢ MeasurableSet u
state_after: no goals

tactic: rwa [Set.mem_singleton_iff.mp hu]
state_before: α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s t : Set Ω
S T : Set (Set Ω)
m0 : MeasurableSpace Ω
hs_meas : MeasurableSet s
ht_meas : MeasurableSet t
κ : ↥(kernel α Ω)
μ : Measure α
inst✝ : IsMarkovKernel κ
h : IndepSets {s} {t} κ μ
u : Set Ω
hu : u ∈ {t}
⊢ MeasurableSet u
state_after: no goals
Theorem: SimpleGraph.Walk.copy_cons
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: subst_vars
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u' w' : V
h : G.Adj u v
p : G.Walk v w
hu : u = u'
hw : w = w'
⊢ (cons h p).copy hu hw = cons ⋯ (p.copy ⋯ hw)
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v u' w' : V
h : G.Adj u' v
p : G.Walk v w'
⊢ (cons h p).copy ⋯ ⋯ = cons ⋯ (p.copy ⋯ ⋯)

tactic: rfl
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v u' w' : V
h : G.Adj u' v
p : G.Walk v w'
⊢ (cons h p).copy ⋯ ⋯ = cons ⋯ (p.copy ⋯ ⋯)
state_after: no goals
Theorem: MulAction.IsPartition.of_orbits
File: Mathlib/GroupTheory/GroupAction/Blocks.lean

tactic: apply orbit.pairwiseDisjoint.isPartition_of_exists_of_ne_empty
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
⊢ Setoid.IsPartition (Set.range fun a => orbit G a)
state_after: case h₂
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
⊢ ∀ (a : X), ∃ x ∈ Set.range fun x => orbit G x, a ∈ x

case h₃
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
⊢ ∅ ∉ Set.range fun x => orbit G x

tactic: intro x
state_before: case h₂
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
⊢ ∀ (a : X), ∃ x ∈ Set.range fun x => orbit G x, a ∈ x
state_after: case h₂
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
x : X
⊢ ∃ x_1 ∈ Set.range fun x => orbit G x, x ∈ x_1

tactic: exact ⟨_, ⟨x, rfl⟩, mem_orbit_self x⟩
state_before: case h₂
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
x : X
⊢ ∃ x_1 ∈ Set.range fun x => orbit G x, x ∈ x_1
state_after: no goals

tactic: rintro ⟨a, ha : orbit G a = ∅⟩
state_before: case h₃
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
⊢ ∅ ∉ Set.range fun x => orbit G x
state_after: case h₃.intro
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
a : X
ha : orbit G a = ∅
⊢ False

tactic: exact (MulAction.orbit_nonempty a).ne_empty ha
state_before: case h₃.intro
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
a : X
ha : orbit G a = ∅
⊢ False
state_after: no goals
Theorem: NonUnitalSubring.mem_sSup_of_directedOn
File: Mathlib/RingTheory/NonUnitalSubring/Basic.lean

tactic: haveI : Nonempty S := Sne.to_subtype
state_before: F : Type w
R : Type u
S✝ : Type v
T : Type u_1
inst✝⁴ : NonUnitalNonAssocRing R
inst✝³ : NonUnitalNonAssocRing S✝
inst✝² : NonUnitalNonAssocRing T
inst✝¹ : FunLike F R S✝
inst✝ : NonUnitalRingHomClass F R S✝
g : S✝ →ₙ+* T
f : R →ₙ+* S✝
S : Set (NonUnitalSubring R)
Sne : S.Nonempty
hS : DirectedOn (fun x x_1 => x ≤ x_1) S
x : R
⊢ x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s
state_after: F : Type w
R : Type u
S✝ : Type v
T : Type u_1
inst✝⁴ : NonUnitalNonAssocRing R
inst✝³ : NonUnitalNonAssocRing S✝
inst✝² : NonUnitalNonAssocRing T
inst✝¹ : FunLike F R S✝
inst✝ : NonUnitalRingHomClass F R S✝
g : S✝ →ₙ+* T
f : R →ₙ+* S✝
S : Set (NonUnitalSubring R)
Sne : S.Nonempty
hS : DirectedOn (fun x x_1 => x ≤ x_1) S
x : R
this : Nonempty ↑S
⊢ x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s

tactic: simp only [sSup_eq_iSup', mem_iSup_of_directed hS.directed_val, SetCoe.exists, Subtype.coe_mk,
  exists_prop]
state_before: F : Type w
R : Type u
S✝ : Type v
T : Type u_1
inst✝⁴ : NonUnitalNonAssocRing R
inst✝³ : NonUnitalNonAssocRing S✝
inst✝² : NonUnitalNonAssocRing T
inst✝¹ : FunLike F R S✝
inst✝ : NonUnitalRingHomClass F R S✝
g : S✝ →ₙ+* T
f : R →ₙ+* S✝
S : Set (NonUnitalSubring R)
Sne : S.Nonempty
hS : DirectedOn (fun x x_1 => x ≤ x_1) S
x : R
this : Nonempty ↑S
⊢ x ∈ sSup S ↔ ∃ s ∈ S, x ∈ s
state_after: no goals
Theorem: Sym2.map_id
File: Mathlib/Data/Sym/Sym2.lean

tactic: ext ⟨⟨x, y⟩⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
⊢ map id = id
state_after: case h.mk.mk
α : Type u_1
β : Type u_2
γ : Type u_3
x✝ : Sym2 α
x y : α
⊢ map id (Quot.mk (Rel α) (x, y)) = id (Quot.mk (Rel α) (x, y))

tactic: rfl
state_before: case h.mk.mk
α : Type u_1
β : Type u_2
γ : Type u_3
x✝ : Sym2 α
x y : α
⊢ map id (Quot.mk (Rel α) (x, y)) = id (Quot.mk (Rel α) (x, y))
state_after: no goals
Theorem: mul_inv_lt_iff_lt_mul
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [← mul_lt_mul_iff_right b, inv_mul_cancel_right]
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LT α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c : α
⊢ a * b⁻¹ < c ↔ a < c * b
state_after: no goals
Theorem: CategoryTheory.ShortComplex.rightHomologyIso_hom_comp_homologyι
File: Mathlib/Algebra/Homology/ShortComplex/Homology.lean

tactic: dsimp only [homologyι]
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝ : S.HasHomology
⊢ S.rightHomologyIso.hom ≫ S.homologyι = S.rightHomologyι
state_after: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝ : S.HasHomology
⊢ S.rightHomologyIso.hom ≫ S.rightHomologyIso.inv ≫ S.rightHomologyι = S.rightHomologyι

tactic: simp only [Iso.hom_inv_id_assoc]
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝ : S.HasHomology
⊢ S.rightHomologyIso.hom ≫ S.rightHomologyIso.inv ≫ S.rightHomologyι = S.rightHomologyι
state_after: no goals
Theorem: CategoryTheory.left_unitality_app
File: Mathlib/CategoryTheory/Monoidal/End.lean

tactic: have := congr_app (F.toLaxMonoidalFunctor.left_unitality n) X
state_before: C : Type u
inst✝² : Category.{v, u} C
M : Type u_1
inst✝¹ : Category.{u_2, u_1} M
inst✝ : MonoidalCategory M
F : MonoidalFunctor M (C ⥤ C)
n : M
X : C
⊢ (F.obj n).map (F.ε.app X) ≫ (F.μ (𝟙_ M) n).app X ≫ (F.map (λ_ n).hom).app X = 𝟙 ((F.obj n).obj ((𝟙_ (C ⥤ C)).obj X))
state_after: C : Type u
inst✝² : Category.{v, u} C
M : Type u_1
inst✝¹ : Category.{u_2, u_1} M
inst✝ : MonoidalCategory M
F : MonoidalFunctor M (C ⥤ C)
n : M
X : C
this : (λ_ (F.obj n)).hom.app X = (F.ε ▷ F.obj n ≫ F.μ (𝟙_ M) n ≫ F.map (λ_ n).hom).app X
⊢ (F.obj n).map (F.ε.app X) ≫ (F.μ (𝟙_ M) n).app X ≫ (F.map (λ_ n).hom).app X = 𝟙 ((F.obj n).obj ((𝟙_ (C ⥤ C)).obj X))

tactic: dsimp at this
state_before: C : Type u
inst✝² : Category.{v, u} C
M : Type u_1
inst✝¹ : Category.{u_2, u_1} M
inst✝ : MonoidalCategory M
F : MonoidalFunctor M (C ⥤ C)
n : M
X : C
this : (λ_ (F.obj n)).hom.app X = (F.ε ▷ F.obj n ≫ F.μ (𝟙_ M) n ≫ F.map (λ_ n).hom).app X
⊢ (F.obj n).map (F.ε.app X) ≫ (F.μ (𝟙_ M) n).app X ≫ (F.map (λ_ n).hom).app X = 𝟙 ((F.obj n).obj ((𝟙_ (C ⥤ C)).obj X))
state_after: C : Type u
inst✝² : Category.{v, u} C
M : Type u_1
inst✝¹ : Category.{u_2, u_1} M
inst✝ : MonoidalCategory M
F : MonoidalFunctor M (C ⥤ C)
n : M
X : C
this : 𝟙 ((F.obj n).obj X) = (F.obj n).map (F.ε.app X) ≫ (F.μ (𝟙_ M) n).app X ≫ (F.map (λ_ n).hom).app X
⊢ (F.obj n).map (F.ε.app X) ≫ (F.μ (𝟙_ M) n).app X ≫ (F.map (λ_ n).hom).app X = 𝟙 ((F.obj n).obj ((𝟙_ (C ⥤ C)).obj X))

tactic: simpa using this.symm
state_before: C : Type u
inst✝² : Category.{v, u} C
M : Type u_1
inst✝¹ : Category.{u_2, u_1} M
inst✝ : MonoidalCategory M
F : MonoidalFunctor M (C ⥤ C)
n : M
X : C
this : 𝟙 ((F.obj n).obj X) = (F.obj n).map (F.ε.app X) ≫ (F.μ (𝟙_ M) n).app X ≫ (F.map (λ_ n).hom).app X
⊢ (F.obj n).map (F.ε.app X) ≫ (F.μ (𝟙_ M) n).app X ≫ (F.map (λ_ n).hom).app X = 𝟙 ((F.obj n).obj ((𝟙_ (C ⥤ C)).obj X))
state_after: no goals
Theorem: Fin.castSucc_lt_succ_iff
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [castSucc_lt_iff_succ_le, succ_le_succ_iff]
state_before: n m : ℕ
a b : Fin n
⊢ a.castSucc < b.succ ↔ a ≤ b
state_after: no goals
Theorem: MeasureTheory.FiniteMeasure.normalize_testAgainstNN
File: Mathlib/MeasureTheory/Measure/ProbabilityMeasure.lean

tactic: simp [μ.testAgainstNN_eq_mass_mul, inv_mul_cancel_left₀ <| μ.mass_nonzero_iff.mpr nonzero]
state_before: Ω : Type u_1
inst✝¹ : Nonempty Ω
m0 : MeasurableSpace Ω
μ : FiniteMeasure Ω
inst✝ : TopologicalSpace Ω
nonzero : μ ≠ 0
f : Ω →ᵇ ℝ≥0
⊢ μ.normalize.toFiniteMeasure.testAgainstNN f = μ.mass⁻¹ * μ.testAgainstNN f
state_after: no goals
Theorem: Real.rpow_add_nat
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: simpa using rpow_add_int hx y n
state_before: x✝ y✝ z : ℝ
n✝ : ℕ
x : ℝ
hx : x ≠ 0
y : ℝ
n : ℕ
⊢ x ^ (y + ↑n) = x ^ y * x ^ n
state_after: no goals
Theorem: PosNum.one_sub'
File: Mathlib/Data/Num/Lemmas.lean

tactic: cases a <;> rfl
state_before: a : PosNum
⊢ sub' 1 a = a.pred'.toZNumNeg
state_after: no goals
Theorem: groupCohomology.map_one_fst_of_isMulTwoCocycle
File: Mathlib/RepresentationTheory/GroupCohomology/LowDegree.lean

tactic: simpa only [one_smul, one_mul, mul_one, mul_right_inj] using (hf 1 1 g).symm
state_before: k G✝ : Type u
inst✝⁴ : CommRing k
inst✝³ : Group G✝
A : Rep k G✝
G : Type u_1
M : Type u_2
inst✝² : Monoid G
inst✝¹ : CommGroup M
inst✝ : MulAction G M
f : G × G → M
hf : IsMulTwoCocycle f
g : G
⊢ f (1, g) = f (1, 1)
state_after: no goals
Theorem: ProbabilityTheory.kernel.snorm_density_le
File: Mathlib/Probability/Kernel/Disintegration/Density.lean

tactic: refine (snorm_le_of_ae_bound (C := 1) (ae_of_all _ (fun t ↦ ?_))).trans ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝ : CountablyGenerated γ
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
hκν : fst κ ≤ ν
a : α
s : Set β
⊢ snorm (fun x => density κ ν a x s) 1 (ν a) ≤ (ν a) univ
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝ : CountablyGenerated γ
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
hκν : fst κ ≤ ν
a : α
s : Set β
t : γ
⊢ ‖density κ ν a t s‖ ≤ 1

case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝ : CountablyGenerated γ
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
hκν : fst κ ≤ ν
a : α
s : Set β
⊢ (ν a) univ ^ (ENNReal.toReal 1)⁻¹ * ENNReal.ofReal 1 ≤ (ν a) univ

tactic: simp only [Real.norm_eq_abs, abs_of_nonneg (density_nonneg hκν a t s),
  density_le_one hκν a t s]
state_before: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝ : CountablyGenerated γ
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
hκν : fst κ ≤ ν
a : α
s : Set β
t : γ
⊢ ‖density κ ν a t s‖ ≤ 1
state_after: no goals

tactic: simp
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝ : CountablyGenerated γ
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
hκν : fst κ ≤ ν
a : α
s : Set β
⊢ (ν a) univ ^ (ENNReal.toReal 1)⁻¹ * ENNReal.ofReal 1 ≤ (ν a) univ
state_after: no goals
Theorem: Rel.core_comp
File: Mathlib/Data/Rel.lean

tactic: ext x
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Rel β γ
t : Set γ
⊢ (r • s).core t = r.core (s.core t)
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Rel β γ
t : Set γ
x : α
⊢ x ∈ (r • s).core t ↔ x ∈ r.core (s.core t)

tactic: simp only [core, comp, forall_exists_index, and_imp, Set.mem_setOf_eq]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Rel β γ
t : Set γ
x : α
⊢ x ∈ (r • s).core t ↔ x ∈ r.core (s.core t)
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Rel β γ
t : Set γ
x : α
⊢ (∀ (y : γ) (x_1 : β), r x x_1 → s x_1 y → y ∈ t) ↔ ∀ (y : β), r x y → ∀ (y_1 : γ), s y y_1 → y_1 ∈ t

tactic: constructor
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Rel β γ
t : Set γ
x : α
⊢ (∀ (y : γ) (x_1 : β), r x x_1 → s x_1 y → y ∈ t) ↔ ∀ (y : β), r x y → ∀ (y_1 : γ), s y y_1 → y_1 ∈ t
state_after: case h.mp
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Rel β γ
t : Set γ
x : α
⊢ (∀ (y : γ) (x_1 : β), r x x_1 → s x_1 y → y ∈ t) → ∀ (y : β), r x y → ∀ (y_1 : γ), s y y_1 → y_1 ∈ t

case h.mpr
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Rel β γ
t : Set γ
x : α
⊢ (∀ (y : β), r x y → ∀ (y_1 : γ), s y y_1 → y_1 ∈ t) → ∀ (y : γ) (x_1 : β), r x x_1 → s x_1 y → y ∈ t

tactic: exact fun h y rxy z => h z y rxy
state_before: case h.mp
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Rel β γ
t : Set γ
x : α
⊢ (∀ (y : γ) (x_1 : β), r x x_1 → s x_1 y → y ∈ t) → ∀ (y : β), r x y → ∀ (y_1 : γ), s y y_1 → y_1 ∈ t
state_after: no goals

tactic: exact fun h z y rzy => h y rzy z
state_before: case h.mpr
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Rel β γ
t : Set γ
x : α
⊢ (∀ (y : β), r x y → ∀ (y_1 : γ), s y y_1 → y_1 ∈ t) → ∀ (y : γ) (x_1 : β), r x x_1 → s x_1 y → y ∈ t
state_after: no goals
Theorem: Rat.inv_intCast_num
File: Mathlib/Data/Rat/Lemmas.lean

tactic: rcases lt_trichotomy a 0 with lt | rfl | gt
state_before: a : ℤ
⊢ (↑a)⁻¹.num = a.sign
state_after: case inl
a : ℤ
lt : a < 0
⊢ (↑a)⁻¹.num = a.sign

case inr.inl

⊢ (↑0)⁻¹.num = Int.sign 0

case inr.inr
a : ℤ
gt : 0 < a
⊢ (↑a)⁻¹.num = a.sign

tactic: obtain ⟨a, rfl⟩ : ∃ b, -b = a := ⟨-a, a.neg_neg⟩
state_before: case inl
a : ℤ
lt : a < 0
⊢ (↑a)⁻¹.num = a.sign
state_after: case inl.intro
a : ℤ
lt : -a < 0
⊢ (↑(-a))⁻¹.num = (-a).sign

tactic: simp at lt
state_before: case inl.intro
a : ℤ
lt : -a < 0
⊢ (↑(-a))⁻¹.num = (-a).sign
state_after: case inl.intro
a : ℤ
lt : 0 < a
⊢ (↑(-a))⁻¹.num = (-a).sign

tactic: simp [Rat.inv_neg, inv_intCast_num_of_pos lt, (Int.sign_eq_one_iff_pos _).mpr lt]
state_before: case inl.intro
a : ℤ
lt : 0 < a
⊢ (↑(-a))⁻¹.num = (-a).sign
state_after: no goals

tactic: rfl
state_before: case inr.inl

⊢ (↑0)⁻¹.num = Int.sign 0
state_after: no goals

tactic: simp [inv_intCast_num_of_pos gt, (Int.sign_eq_one_iff_pos _).mpr gt]
state_before: case inr.inr
a : ℤ
gt : 0 < a
⊢ (↑a)⁻¹.num = a.sign
state_after: no goals
Theorem: Ordinal.lift_natCast
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simp
state_before: ⊢ lift.{u, v} ↑0 = ↑0
state_after: no goals

tactic: simp [lift_natCast n]
state_before: n : ℕ
⊢ lift.{u, v} ↑(n + 1) = ↑(n + 1)
state_after: no goals
Theorem: Filter.Tendsto.smallSets_mono
File: Mathlib/Order/Filter/SmallSets.lean

tactic: rw [tendsto_smallSets_iff] at ht ⊢
state_before: α : Type u_1
β : Type u_2
ι : Sort u_3
l l' la : Filter α
lb : Filter β
s t : α → Set β
ht : Tendsto t la lb.smallSets
hst : ∀ᶠ (x : α) in la, s x ⊆ t x
⊢ Tendsto s la lb.smallSets
state_after: α : Type u_1
β : Type u_2
ι : Sort u_3
l l' la : Filter α
lb : Filter β
s t : α → Set β
ht : ∀ t_1 ∈ lb, ∀ᶠ (x : α) in la, t x ⊆ t_1
hst : ∀ᶠ (x : α) in la, s x ⊆ t x
⊢ ∀ t ∈ lb, ∀ᶠ (x : α) in la, s x ⊆ t

tactic: exact fun u hu => (ht u hu).mp (hst.mono fun _ hst ht => hst.trans ht)
state_before: α : Type u_1
β : Type u_2
ι : Sort u_3
l l' la : Filter α
lb : Filter β
s t : α → Set β
ht : ∀ t_1 ∈ lb, ∀ᶠ (x : α) in la, t x ⊆ t_1
hst : ∀ᶠ (x : α) in la, s x ⊆ t x
⊢ ∀ t ∈ lb, ∀ᶠ (x : α) in la, s x ⊆ t
state_after: no goals