1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: MeasureTheory.LocallyIntegrableOn.mul_continuousOn
File: Mathlib/MeasureTheory/Function/LocallyIntegrable.lean

tactic: rw [MeasureTheory.locallyIntegrableOn_iff (Or.inr hs)] at hf ⊢
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝¹⁰ : MeasurableSpace X
inst✝⁹ : TopologicalSpace X
inst✝⁸ : MeasurableSpace Y
inst✝⁷ : TopologicalSpace Y
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
f✝ g✝ : X → E
μ : Measure X
s✝ : Set X
inst✝⁴ : OpensMeasurableSpace X
A K : Set X
inst✝³ : LocallyCompactSpace X
inst✝² : T2Space X
inst✝¹ : NormedRing R
inst✝ : SecondCountableTopologyEither X R
f g : X → R
s : Set X
hf : LocallyIntegrableOn f s μ
hg : ContinuousOn g s
hs : IsOpen s
⊢ LocallyIntegrableOn (fun x => f x * g x) s μ
state_after: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝¹⁰ : MeasurableSpace X
inst✝⁹ : TopologicalSpace X
inst✝⁸ : MeasurableSpace Y
inst✝⁷ : TopologicalSpace Y
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
f✝ g✝ : X → E
μ : Measure X
s✝ : Set X
inst✝⁴ : OpensMeasurableSpace X
A K : Set X
inst✝³ : LocallyCompactSpace X
inst✝² : T2Space X
inst✝¹ : NormedRing R
inst✝ : SecondCountableTopologyEither X R
f g : X → R
s : Set X
hf : ∀ k ⊆ s, IsCompact k → IntegrableOn f k μ
hg : ContinuousOn g s
hs : IsOpen s
⊢ ∀ k ⊆ s, IsCompact k → IntegrableOn (fun x => f x * g x) k μ

tactic: exact fun k hk_sub hk_c => (hf k hk_sub hk_c).mul_continuousOn (hg.mono hk_sub) hk_c
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝¹⁰ : MeasurableSpace X
inst✝⁹ : TopologicalSpace X
inst✝⁸ : MeasurableSpace Y
inst✝⁷ : TopologicalSpace Y
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedAddCommGroup F
f✝ g✝ : X → E
μ : Measure X
s✝ : Set X
inst✝⁴ : OpensMeasurableSpace X
A K : Set X
inst✝³ : LocallyCompactSpace X
inst✝² : T2Space X
inst✝¹ : NormedRing R
inst✝ : SecondCountableTopologyEither X R
f g : X → R
s : Set X
hf : ∀ k ⊆ s, IsCompact k → IntegrableOn f k μ
hg : ContinuousOn g s
hs : IsOpen s
⊢ ∀ k ⊆ s, IsCompact k → IntegrableOn (fun x => f x * g x) k μ
state_after: no goals
Theorem: smul_preimage_set_leₛₗ
File: Mathlib/GroupTheory/GroupAction/Pointwise.lean

tactic: rintro x ⟨y, hy, rfl⟩
state_before: R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
⊢ c • ⇑h ⁻¹' t ⊆ ⇑h ⁻¹' (σ c • t)
state_after: case intro.intro
R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
y : M
hy : y ∈ ⇑h ⁻¹' t
⊢ (fun x => c • x) y ∈ ⇑h ⁻¹' (σ c • t)

tactic: exact ⟨h y, hy, by rw [map_smulₛₗ]⟩
state_before: case intro.intro
R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
y : M
hy : y ∈ ⇑h ⁻¹' t
⊢ (fun x => c • x) y ∈ ⇑h ⁻¹' (σ c • t)
state_after: no goals

tactic: rw [map_smulₛₗ]
state_before: R : Type u_1
S : Type u_2
M : Type u_3
M₁ : Type u_4
M₂ : Type u_5
N : Type u_6
inst✝⁷ : Monoid R
inst✝⁶ : Monoid S
σ : R → S
inst✝⁵ : MulAction R M
inst✝⁴ : MulAction S N
inst✝³ : MulAction R M₁
inst✝² : MulAction R M₂
F : Type u_7
h : F
inst✝¹ : FunLike F M N
inst✝ : MulActionSemiHomClass F σ M N
c : R
s : Set M
t : Set N
y : M
hy : y ∈ ⇑h ⁻¹' t
⊢ (fun x => σ c • x) (h y) = h ((fun x => c • x) y)
state_after: no goals
Theorem: Finset.support_prod
File: Mathlib/Algebra/BigOperators/GroupWithZero/Finset.lean

tactic: simp [support, prod_eq_zero_iff]
state_before: ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
inst✝³ : CommMonoidWithZero M₀
p : ι → Prop
inst✝² : DecidablePred p
f✝ : ι → M₀
s✝ : Finset ι
i : ι
inst✝¹ : Nontrivial M₀
inst✝ : NoZeroDivisors M₀
s : Finset ι
f : ι → κ → M₀
x : κ
⊢ (x ∈ support fun j => ∏ i ∈ s, f i j) ↔ x ∈ ⋂ i ∈ s, support (f i)
state_after: no goals
Theorem: Homotopy.prevD_succ_cochainComplex
File: Mathlib/Algebra/Homology/Homotopy.lean

tactic: dsimp [prevD]
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i✝ : ι
P Q : CochainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
i : ℕ
⊢ (prevD (i + 1)) f = f (i + 1) i ≫ Q.d i (i + 1)
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i✝ : ι
P Q : CochainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
i : ℕ
⊢ f (i + 1) ((ComplexShape.up ℕ).prev (i + 1)) ≫ Q.d ((ComplexShape.up ℕ).prev (i + 1)) (i + 1) =
    f (i + 1) i ≫ Q.d i (i + 1)

tactic: have : (ComplexShape.up ℕ).prev (i + 1) = i := CochainComplex.prev_nat_succ i
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i✝ : ι
P Q : CochainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
i : ℕ
⊢ f (i + 1) ((ComplexShape.up ℕ).prev (i + 1)) ≫ Q.d ((ComplexShape.up ℕ).prev (i + 1)) (i + 1) =
    f (i + 1) i ≫ Q.d i (i + 1)
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i✝ : ι
P Q : CochainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
i : ℕ
this : (ComplexShape.up ℕ).prev (i + 1) = i
⊢ f (i + 1) ((ComplexShape.up ℕ).prev (i + 1)) ≫ Q.d ((ComplexShape.up ℕ).prev (i + 1)) (i + 1) =
    f (i + 1) i ≫ Q.d i (i + 1)

tactic: congr 2
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i✝ : ι
P Q : CochainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
i : ℕ
this : (ComplexShape.up ℕ).prev (i + 1) = i
⊢ f (i + 1) ((ComplexShape.up ℕ).prev (i + 1)) ≫ Q.d ((ComplexShape.up ℕ).prev (i + 1)) (i + 1) =
    f (i + 1) i ≫ Q.d i (i + 1)
state_after: no goals
Theorem: MeasureTheory.Filtration.ext
File: Mathlib/Probability/Process/Filtration.lean

tactic: cases f
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝ : Preorder ι
f g : Filtration ι m
h : ↑f = ↑g
⊢ f = g
state_after: case mk
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝ : Preorder ι
g : Filtration ι m
seq✝ : ι → MeasurableSpace Ω
mono'✝ : Monotone seq✝
le'✝ : ∀ (i : ι), seq✝ i ≤ m
h : ↑{ seq := seq✝, mono' := mono'✝, le' := le'✝ } = ↑g
⊢ { seq := seq✝, mono' := mono'✝, le' := le'✝ } = g

tactic: cases g
state_before: case mk
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝ : Preorder ι
g : Filtration ι m
seq✝ : ι → MeasurableSpace Ω
mono'✝ : Monotone seq✝
le'✝ : ∀ (i : ι), seq✝ i ≤ m
h : ↑{ seq := seq✝, mono' := mono'✝, le' := le'✝ } = ↑g
⊢ { seq := seq✝, mono' := mono'✝, le' := le'✝ } = g
state_after: case mk.mk
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝ : Preorder ι
seq✝¹ : ι → MeasurableSpace Ω
mono'✝¹ : Monotone seq✝¹
le'✝¹ : ∀ (i : ι), seq✝¹ i ≤ m
seq✝ : ι → MeasurableSpace Ω
mono'✝ : Monotone seq✝
le'✝ : ∀ (i : ι), seq✝ i ≤ m
h : ↑{ seq := seq✝¹, mono' := mono'✝¹, le' := le'✝¹ } = ↑{ seq := seq✝, mono' := mono'✝, le' := le'✝ }
⊢ { seq := seq✝¹, mono' := mono'✝¹, le' := le'✝¹ } = { seq := seq✝, mono' := mono'✝, le' := le'✝ }

tactic: congr
state_before: case mk.mk
Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
inst✝ : Preorder ι
seq✝¹ : ι → MeasurableSpace Ω
mono'✝¹ : Monotone seq✝¹
le'✝¹ : ∀ (i : ι), seq✝¹ i ≤ m
seq✝ : ι → MeasurableSpace Ω
mono'✝ : Monotone seq✝
le'✝ : ∀ (i : ι), seq✝ i ≤ m
h : ↑{ seq := seq✝¹, mono' := mono'✝¹, le' := le'✝¹ } = ↑{ seq := seq✝, mono' := mono'✝, le' := le'✝ }
⊢ { seq := seq✝¹, mono' := mono'✝¹, le' := le'✝¹ } = { seq := seq✝, mono' := mono'✝, le' := le'✝ }
state_after: no goals
Theorem: Matroid.not_rkPos_iff
File: Mathlib/Data/Matroid/Constructions.lean

tactic: rw [rkPos_iff_empty_not_base, not_iff_comm, empty_base_iff]
state_before: α : Type u_1
M : Matroid α
E B I X R J : Set α
⊢ ¬M.RkPos ↔ M = loopyOn M.E
state_after: no goals
Theorem: generateFrom_piiUnionInter_le
File: Mathlib/MeasureTheory/PiSystem.lean

tactic: refine generateFrom_le ?_
state_before: α : Type u_1
ι : Type u_2
m : MeasurableSpace α
π : ι → Set (Set α)
h : ∀ (n : ι), generateFrom (π n) ≤ m
S : Set ι
⊢ generateFrom (piiUnionInter π S) ≤ m
state_after: α : Type u_1
ι : Type u_2
m : MeasurableSpace α
π : ι → Set (Set α)
h : ∀ (n : ι), generateFrom (π n) ≤ m
S : Set ι
⊢ ∀ t ∈ piiUnionInter π S, MeasurableSet t

tactic: rintro t ⟨ht_p, _, ft, hft_mem_pi, rfl⟩
state_before: α : Type u_1
ι : Type u_2
m : MeasurableSpace α
π : ι → Set (Set α)
h : ∀ (n : ι), generateFrom (π n) ≤ m
S : Set ι
⊢ ∀ t ∈ piiUnionInter π S, MeasurableSet t
state_after: case intro.intro.intro.intro
α : Type u_1
ι : Type u_2
m : MeasurableSpace α
π : ι → Set (Set α)
h : ∀ (n : ι), generateFrom (π n) ≤ m
S : Set ι
ht_p : Finset ι
w✝ : ↑ht_p ⊆ S
ft : ι → Set α
hft_mem_pi : ∀ x ∈ ht_p, ft x ∈ π x
⊢ MeasurableSet (⋂ x ∈ ht_p, ft x)

tactic: refine Finset.measurableSet_biInter _ fun x hx_mem => (h x) _ ?_
state_before: case intro.intro.intro.intro
α : Type u_1
ι : Type u_2
m : MeasurableSpace α
π : ι → Set (Set α)
h : ∀ (n : ι), generateFrom (π n) ≤ m
S : Set ι
ht_p : Finset ι
w✝ : ↑ht_p ⊆ S
ft : ι → Set α
hft_mem_pi : ∀ x ∈ ht_p, ft x ∈ π x
⊢ MeasurableSet (⋂ x ∈ ht_p, ft x)
state_after: case intro.intro.intro.intro
α : Type u_1
ι : Type u_2
m : MeasurableSpace α
π : ι → Set (Set α)
h : ∀ (n : ι), generateFrom (π n) ≤ m
S : Set ι
ht_p : Finset ι
w✝ : ↑ht_p ⊆ S
ft : ι → Set α
hft_mem_pi : ∀ x ∈ ht_p, ft x ∈ π x
x : ι
hx_mem : x ∈ ht_p
⊢ MeasurableSet (ft x)

tactic: exact measurableSet_generateFrom (hft_mem_pi x hx_mem)
state_before: case intro.intro.intro.intro
α : Type u_1
ι : Type u_2
m : MeasurableSpace α
π : ι → Set (Set α)
h : ∀ (n : ι), generateFrom (π n) ≤ m
S : Set ι
ht_p : Finset ι
w✝ : ↑ht_p ⊆ S
ft : ι → Set α
hft_mem_pi : ∀ x ∈ ht_p, ft x ∈ π x
x : ι
hx_mem : x ∈ ht_p
⊢ MeasurableSet (ft x)
state_after: no goals
Theorem: FirstOrder.Language.card_functions_sum
File: Mathlib/ModelTheory/Basic.lean

tactic: simp [Language.sum]
state_before: L : Language
L' : Language
i : ℕ
⊢ #((L.sum L').Functions i) = lift.{u', u} #(L.Functions i) + lift.{u, u'} #(L'.Functions i)
state_after: no goals
Theorem: Module.AEval.isTorsion_of_aeval_eq_zero
File: Mathlib/Algebra/Polynomial/Module/FiniteDimensional.lean

tactic: have hp : p ∈ nonZeroDivisors R[X] := fun q hq ↦ Or.resolve_right (mul_eq_zero.mp hq) h'
state_before: R : Type u_1
K : Type u_2
M : Type u_3
A : Type u_4
a : A
inst✝⁷ : CommSemiring R
inst✝⁶ : NoZeroDivisors R
inst✝⁵ : Semiring A
inst✝⁴ : Algebra R A
inst✝³ : AddCommMonoid M
inst✝² : Module A M
inst✝¹ : Module R M
inst✝ : IsScalarTower R A M
p : R[X]
h : (aeval a) p = 0
h' : p ≠ 0
⊢ IsTorsion R[X] (AEval R M a)
state_after: R : Type u_1
K : Type u_2
M : Type u_3
A : Type u_4
a : A
inst✝⁷ : CommSemiring R
inst✝⁶ : NoZeroDivisors R
inst✝⁵ : Semiring A
inst✝⁴ : Algebra R A
inst✝³ : AddCommMonoid M
inst✝² : Module A M
inst✝¹ : Module R M
inst✝ : IsScalarTower R A M
p : R[X]
h : (aeval a) p = 0
h' : p ≠ 0
hp : p ∈ nonZeroDivisors R[X]
⊢ IsTorsion R[X] (AEval R M a)

tactic: exact fun x ↦ ⟨⟨p, hp⟩, (of R M a).symm.injective <| by simp [h]⟩
state_before: R : Type u_1
K : Type u_2
M : Type u_3
A : Type u_4
a : A
inst✝⁷ : CommSemiring R
inst✝⁶ : NoZeroDivisors R
inst✝⁵ : Semiring A
inst✝⁴ : Algebra R A
inst✝³ : AddCommMonoid M
inst✝² : Module A M
inst✝¹ : Module R M
inst✝ : IsScalarTower R A M
p : R[X]
h : (aeval a) p = 0
h' : p ≠ 0
hp : p ∈ nonZeroDivisors R[X]
⊢ IsTorsion R[X] (AEval R M a)
state_after: no goals

tactic: simp [h]
state_before: R : Type u_1
K : Type u_2
M : Type u_3
A : Type u_4
a : A
inst✝⁷ : CommSemiring R
inst✝⁶ : NoZeroDivisors R
inst✝⁵ : Semiring A
inst✝⁴ : Algebra R A
inst✝³ : AddCommMonoid M
inst✝² : Module A M
inst✝¹ : Module R M
inst✝ : IsScalarTower R A M
p : R[X]
h : (aeval a) p = 0
h' : p ≠ 0
hp : p ∈ nonZeroDivisors R[X]
x : AEval R M a
⊢ (of R M a).symm (⟨p, hp⟩ • x) = (of R M a).symm 0
state_after: no goals
Theorem: CategoryTheory.Limits.HasZeroObject.zeroIsoIsInitial_inv
File: Mathlib/CategoryTheory/Limits/Shapes/ZeroMorphisms.lean

tactic: ext
state_before: C : Type u
inst✝³ : Category.{v, u} C
D : Type u'
inst✝² : Category.{v', u'} D
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
X : C
t : IsInitial X
⊢ (zeroIsoIsInitial t).inv = 0
state_after: no goals
Theorem: Odd.neg
File: Mathlib/Algebra/Ring/Parity.lean

tactic: obtain ⟨k, hk⟩ := hp
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
inst✝ : Ring α
a b : α
n : ℕ
hp : Odd a
⊢ Odd (-a)
state_after: case intro
F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
inst✝ : Ring α
a b : α
n : ℕ
k : α
hk : a = 2 * k + 1
⊢ Odd (-a)

tactic: use -(k + 1)
state_before: case intro
F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
inst✝ : Ring α
a b : α
n : ℕ
k : α
hk : a = 2 * k + 1
⊢ Odd (-a)
state_after: case h
F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
inst✝ : Ring α
a b : α
n : ℕ
k : α
hk : a = 2 * k + 1
⊢ -a = 2 * -(k + 1) + 1

tactic: rw [mul_neg, mul_add, neg_add, add_assoc, two_mul (1 : α), neg_add, neg_add_cancel_right,
  ← neg_add, hk]
state_before: case h
F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
inst✝ : Ring α
a b : α
n : ℕ
k : α
hk : a = 2 * k + 1
⊢ -a = 2 * -(k + 1) + 1
state_after: no goals
Theorem: SeparationQuotient.comap_map_mk_uniformity
File: Mathlib/Topology/UniformSpace/Separation.lean

tactic: refine le_antisymm ?_ le_comap_map
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
⊢ Filter.comap (Prod.map mk mk) (map (Prod.map mk mk) (𝓤 α)) = 𝓤 α
state_after: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
⊢ Filter.comap (Prod.map mk mk) (map (Prod.map mk mk) (𝓤 α)) ≤ 𝓤 α

tactic: refine ((((𝓤 α).basis_sets.map _).comap _).le_basis_iff uniformity_hasBasis_open).2 fun U hU ↦ ?_
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
⊢ Filter.comap (Prod.map mk mk) (map (Prod.map mk mk) (𝓤 α)) ≤ 𝓤 α
state_after: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
U : Set (α × α)
hU : U ∈ 𝓤 α ∧ IsOpen U
⊢ ∃ i ∈ 𝓤 α, Prod.map mk mk ⁻¹' (Prod.map mk mk '' id i) ⊆ id U

tactic: refine ⟨U, hU.1, fun (x₁, x₂) ⟨(y₁, y₂), hyU, hxy⟩ ↦ ?_⟩
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
U : Set (α × α)
hU : U ∈ 𝓤 α ∧ IsOpen U
⊢ ∃ i ∈ 𝓤 α, Prod.map mk mk ⁻¹' (Prod.map mk mk '' id i) ⊆ id U
state_after: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
U : Set (α × α)
hU : U ∈ 𝓤 α ∧ IsOpen U
x✝¹ : α × α
x₁ x₂ : α
x✝ : (x₁, x₂) ∈ Prod.map mk mk ⁻¹' (Prod.map mk mk '' id U)
y₁ y₂ : α
hyU : (y₁, y₂) ∈ id U
hxy : Prod.map mk mk (y₁, y₂) = Prod.map mk mk (x₁, x₂)
⊢ (x₁, x₂) ∈ id U

tactic: simp only [Prod.map, Prod.ext_iff, mk_eq_mk] at hxy
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
U : Set (α × α)
hU : U ∈ 𝓤 α ∧ IsOpen U
x✝¹ : α × α
x₁ x₂ : α
x✝ : (x₁, x₂) ∈ Prod.map mk mk ⁻¹' (Prod.map mk mk '' id U)
y₁ y₂ : α
hyU : (y₁, y₂) ∈ id U
hxy : Prod.map mk mk (y₁, y₂) = Prod.map mk mk (x₁, x₂)
⊢ (x₁, x₂) ∈ id U
state_after: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
U : Set (α × α)
hU : U ∈ 𝓤 α ∧ IsOpen U
x✝¹ : α × α
x₁ x₂ : α
x✝ : (x₁, x₂) ∈ Prod.map mk mk ⁻¹' (Prod.map mk mk '' id U)
y₁ y₂ : α
hyU : (y₁, y₂) ∈ id U
hxy : Inseparable y₁ x₁ ∧ Inseparable y₂ x₂
⊢ (x₁, x₂) ∈ id U

tactic: exact ((hxy.1.prod hxy.2).mem_open_iff hU.2).1 hyU
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
U : Set (α × α)
hU : U ∈ 𝓤 α ∧ IsOpen U
x✝¹ : α × α
x₁ x₂ : α
x✝ : (x₁, x₂) ∈ Prod.map mk mk ⁻¹' (Prod.map mk mk '' id U)
y₁ y₂ : α
hyU : (y₁, y₂) ∈ id U
hxy : Inseparable y₁ x₁ ∧ Inseparable y₂ x₂
⊢ (x₁, x₂) ∈ id U
state_after: no goals
Theorem: CategoryTheory.MonoidalPreadditive.add_tensor
File: Mathlib/CategoryTheory/Monoidal/Preadditive.lean

tactic: simp [tensorHom_def]
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : Preadditive C
inst✝¹ : MonoidalCategory C
inst✝ : MonoidalPreadditive C
W X Y Z : C
f g : W ⟶ X
h : Y ⟶ Z
⊢ (f + g) ⊗ h = f ⊗ h + g ⊗ h
state_after: no goals
Theorem: Multiset.sections_add
File: Mathlib/Data/Multiset/Sections.lean

tactic: simp
state_before: α : Type u_1
s t : Multiset (Multiset α)
⊢ (0 + t).Sections = (Sections 0).bind fun m => map (fun x => m + x) t.Sections
state_after: no goals

tactic: simp [ih, bind_assoc, map_bind, bind_map]
state_before: α : Type u_1
s✝ t : Multiset (Multiset α)
a : Multiset α
s : Multiset (Multiset α)
ih : (s + t).Sections = s.Sections.bind fun m => map (fun x => m + x) t.Sections
⊢ (a ::ₘ s + t).Sections = (a ::ₘ s).Sections.bind fun m => map (fun x => m + x) t.Sections
state_after: no goals
Theorem: MeasurableSpace.comap_const
File: Mathlib/MeasureTheory/MeasurableSpace/Basic.lean

tactic: rintro _ ⟨s, -, rfl⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
m : MeasurableSpace β
b : β
⊢ MeasurableSpace.comap (fun _a => b) m ≤ ⊥
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
m : MeasurableSpace β
b : β
s : Set β
⊢ MeasurableSet ((fun _a => b) ⁻¹' s)

tactic: by_cases b ∈ s <;> simp [*]
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
m : MeasurableSpace β
b : β
s : Set β
⊢ MeasurableSet ((fun _a => b) ⁻¹' s)
state_after: no goals
Theorem: CategoryTheory.ShiftMkCore.zero_add_inv_app
File: Mathlib/CategoryTheory/Shift/Basic.lean

tactic: dsimp
state_before: C : Type u
A : Type u_1
inst✝¹ : Category.{v, u} C
inst✝ : AddMonoid A
h : ShiftMkCore C A
n : A
X : C
⊢ (h.F n).obj ((𝟭 C).obj X) = (h.F (0 + n)).obj X
state_after: C : Type u
A : Type u_1
inst✝¹ : Category.{v, u} C
inst✝ : AddMonoid A
h : ShiftMkCore C A
n : A
X : C
⊢ (h.F n).obj X = (h.F (0 + n)).obj X

tactic: rw [zero_add]
state_before: C : Type u
A : Type u_1
inst✝¹ : Category.{v, u} C
inst✝ : AddMonoid A
h : ShiftMkCore C A
n : A
X : C
⊢ (h.F n).obj X = (h.F (0 + n)).obj X
state_after: no goals

tactic: rw [← cancel_epi ((h.add 0 n).hom.app X), Iso.hom_inv_id_app, h.zero_add_hom_app,
  Category.assoc, ← Functor.map_comp_assoc, Iso.inv_hom_id_app, Functor.map_id,
  Category.id_comp, eqToHom_trans, eqToHom_refl]
state_before: C : Type u
A : Type u_1
inst✝¹ : Category.{v, u} C
inst✝ : AddMonoid A
h : ShiftMkCore C A
n : A
X : C
⊢ (h.add 0 n).inv.app X = (h.F n).map (h.zero.hom.app X) ≫ eqToHom ⋯
state_after: no goals
Theorem: Real.sqrt_eq_zero
File: Mathlib/Data/Real/Sqrt.lean

tactic: simpa using sqrt_inj h le_rfl
state_before: x y : ℝ
h : 0 ≤ x
⊢ √x = 0 ↔ x = 0
state_after: no goals
Theorem: QuaternionAlgebra.smul_coe
File: Mathlib/Algebra/Quaternion.lean

tactic: rw [coe_mul, coe_mul_eq_smul]
state_before: S : Type u_1
T : Type u_2
R : Type u_3
inst✝ : CommRing R
c₁ c₂ r x y z : R
a b c : ℍ[R,c₁,c₂]
⊢ x • ↑y = ↑(x * y)
state_after: no goals
Theorem: Multiset.inf_add
File: Mathlib/Data/Multiset/Lattice.lean

tactic: simp [inf]
state_before: α : Type u_1
inst✝¹ : SemilatticeInf α
inst✝ : OrderTop α
s₁ s₂ : Multiset α
⊢ (s₁ + s₂).inf = fold (fun x x_1 => x ⊓ x_1) (⊤ ⊓ ⊤) (s₁ + s₂)
state_after: no goals
Theorem: gauge_lt_one_of_mem_of_isOpen
File: Mathlib/Analysis/Convex/Gauge.lean

tactic: rwa [hs₂.interior_eq]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s t : Set E
x✝ : E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
hs₂ : IsOpen s
x : E
hx : x ∈ s
⊢ x ∈ interior s
state_after: no goals
Theorem: isOpen_iff_ball_subset
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: simp_rw [isOpen_iff_mem_nhds, nhds_eq_comap_uniformity, mem_comap, ball]
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝ : UniformSpace α
s : Set α
⊢ IsOpen s ↔ ∀ x ∈ s, ∃ V ∈ 𝓤 α, ball x V ⊆ s
state_after: no goals
Theorem: Metric.dist_lt_add_of_nonempty_ball_inter_closedBall
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

tactic: rw [inter_comm] at h
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
h : (ball x ε₁ ∩ closedBall y ε₂).Nonempty
⊢ dist x y < ε₁ + ε₂
state_after: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
h : (closedBall y ε₂ ∩ ball x ε₁).Nonempty
⊢ dist x y < ε₁ + ε₂

tactic: rw [add_comm, dist_comm]
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
h : (closedBall y ε₂ ∩ ball x ε₁).Nonempty
⊢ dist x y < ε₁ + ε₂
state_after: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
h : (closedBall y ε₂ ∩ ball x ε₁).Nonempty
⊢ dist y x < ε₂ + ε₁

tactic: exact dist_lt_add_of_nonempty_closedBall_inter_ball h
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
h : (closedBall y ε₂ ∩ ball x ε₁).Nonempty
⊢ dist y x < ε₂ + ε₁
state_after: no goals
Theorem: CstarRing.norm_one
File: Mathlib/Analysis/NormedSpace/Star/Basic.lean

tactic: have : 0 < ‖(1 : E)‖ := norm_pos_iff.mpr one_ne_zero
state_before: 𝕜 : Type u_1
E : Type u_2
α : Type u_3
inst✝³ : NormedRing E
inst✝² : StarRing E
inst✝¹ : CstarRing E
inst✝ : Nontrivial E
⊢ ‖1‖ = 1
state_after: 𝕜 : Type u_1
E : Type u_2
α : Type u_3
inst✝³ : NormedRing E
inst✝² : StarRing E
inst✝¹ : CstarRing E
inst✝ : Nontrivial E
this : 0 < ‖1‖
⊢ ‖1‖ = 1

tactic: rw [← mul_left_inj' this.ne', ← norm_star_mul_self, mul_one, star_one, one_mul]
state_before: 𝕜 : Type u_1
E : Type u_2
α : Type u_3
inst✝³ : NormedRing E
inst✝² : StarRing E
inst✝¹ : CstarRing E
inst✝ : Nontrivial E
this : 0 < ‖1‖
⊢ ‖1‖ = 1
state_after: no goals
Theorem: Real.ciSup_const_zero
File: Mathlib/Data/Real/Archimedean.lean

tactic: cases isEmpty_or_nonempty α
state_before: α : Sort u_1
⊢ ⨆ x, 0 = 0
state_after: case inl
α : Sort u_1
h✝ : IsEmpty α
⊢ ⨆ x, 0 = 0

case inr
α : Sort u_1
h✝ : Nonempty α
⊢ ⨆ x, 0 = 0

tactic: exact Real.iSup_of_isEmpty _
state_before: case inl
α : Sort u_1
h✝ : IsEmpty α
⊢ ⨆ x, 0 = 0
state_after: no goals

tactic: exact ciSup_const
state_before: case inr
α : Sort u_1
h✝ : Nonempty α
⊢ ⨆ x, 0 = 0
state_after: no goals