1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: MeasureTheory.setLIntegral_withDensity_eq_lintegral_mul₀'
File: Mathlib/MeasureTheory/Measure/WithDensity.lean

tactic: rw [restrict_withDensity hs, lintegral_withDensity_eq_lintegral_mul₀' hf.restrict]
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
g : α → ℝ≥0∞
hg : AEMeasurable g (μ.withDensity f)
s : Set α
hs : MeasurableSet s
⊢ ∫⁻ (a : α) in s, g a ∂μ.withDensity f = ∫⁻ (a : α) in s, (f * g) a ∂μ
state_after: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
g : α → ℝ≥0∞
hg : AEMeasurable g (μ.withDensity f)
s : Set α
hs : MeasurableSet s
⊢ AEMeasurable g ((μ.restrict s).withDensity f)

tactic: rw [← restrict_withDensity hs]
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
g : α → ℝ≥0∞
hg : AEMeasurable g (μ.withDensity f)
s : Set α
hs : MeasurableSet s
⊢ AEMeasurable g ((μ.restrict s).withDensity f)
state_after: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
g : α → ℝ≥0∞
hg : AEMeasurable g (μ.withDensity f)
s : Set α
hs : MeasurableSet s
⊢ AEMeasurable g ((μ.withDensity f).restrict s)

tactic: exact hg.restrict
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
g : α → ℝ≥0∞
hg : AEMeasurable g (μ.withDensity f)
s : Set α
hs : MeasurableSet s
⊢ AEMeasurable g ((μ.withDensity f).restrict s)
state_after: no goals
Theorem: CategoryTheory.OplaxFunctor.map₂_inv_hom
File: Mathlib/CategoryTheory/Bicategory/Functor/Oplax.lean

tactic: simp
state_before: B : Type u₁
inst✝³ : Bicategory B
C : Type u₂
inst✝² : Bicategory C
D : Type u₃
inst✝¹ : Bicategory D
F✝ F : OplaxFunctor B C
a b : B
f g : a ⟶ b
η : f ⟶ g
inst✝ : IsIso η
⊢ F.map₂ (inv η) ≫ F.map₂ η = 𝟙 ((↑F.toPrelaxFunctor).map g)
state_after: no goals
Theorem: CategoryTheory.Preadditive.IsIso.comp_right_eq_zero
File: Mathlib/CategoryTheory/Preadditive/Basic.lean

tactic: rw [← IsIso.eq_comp_inv, Limits.zero_comp]
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : Preadditive C
P Q R : C
f f' : P ⟶ Q
g g' : Q ⟶ R
inst✝ : IsIso g
⊢ f ≫ g = 0 ↔ f = 0
state_after: no goals
Theorem: Sum.liftRel_inl_inl
File: .lake/packages/batteries/Batteries/Data/Sum/Basic.lean

tactic: cases h
state_before: α✝ : Type u_1
γ✝ : Type u_2
r : α✝ → γ✝ → Prop
β✝ : Type u_3
δ✝ : Type u_4
s : β✝ → δ✝ → Prop
a : α✝
c : γ✝
h : LiftRel r s (inl a) (inl c)
⊢ r a c
state_after: case inl
α✝ : Type u_1
γ✝ : Type u_2
r : α✝ → γ✝ → Prop
β✝ : Type u_3
δ✝ : Type u_4
s : β✝ → δ✝ → Prop
a : α✝
c : γ✝
a✝ : r a c
⊢ r a c

tactic: assumption
state_before: case inl
α✝ : Type u_1
γ✝ : Type u_2
r : α✝ → γ✝ → Prop
β✝ : Type u_3
δ✝ : Type u_4
s : β✝ → δ✝ → Prop
a : α✝
c : γ✝
a✝ : r a c
⊢ r a c
state_after: no goals
Theorem: Cardinal.two_le_iff'
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [two_le_iff, ← nontrivial_iff, nontrivial_iff_exists_ne x]
state_before: α β : Type u
c : Cardinal.{?u.235324}
x : α
⊢ 2 ≤ #α ↔ ∃ y, y ≠ x
state_after: no goals
Theorem: Submonoid.LocalizationMap.map_map
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: rw [← @map_comp_map M _ S N _ P _ f g T hy Q _ k A _ U R _ j l hl]
state_before: M : Type u_1
inst✝⁵ : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝⁴ : CommMonoid N
P : Type u_3
inst✝³ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
T : Submonoid P
hy : ∀ (y : ↥S), g ↑y ∈ T
Q : Type u_4
inst✝² : CommMonoid Q
k : T.LocalizationMap Q
A : Type u_5
inst✝¹ : CommMonoid A
U : Submonoid A
R : Type u_6
inst✝ : CommMonoid R
j : U.LocalizationMap R
l : P →* A
hl : ∀ (w : ↥T), l ↑w ∈ U
x : N
⊢ (k.map hl j) ((f.map hy k) x) = (f.map ⋯ j) x
state_after: M : Type u_1
inst✝⁵ : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝⁴ : CommMonoid N
P : Type u_3
inst✝³ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
T : Submonoid P
hy : ∀ (y : ↥S), g ↑y ∈ T
Q : Type u_4
inst✝² : CommMonoid Q
k : T.LocalizationMap Q
A : Type u_5
inst✝¹ : CommMonoid A
U : Submonoid A
R : Type u_6
inst✝ : CommMonoid R
j : U.LocalizationMap R
l : P →* A
hl : ∀ (w : ↥T), l ↑w ∈ U
x : N
⊢ (k.map hl j) ((f.map hy k) x) = ((k.map hl j).comp (f.map hy k)) x

tactic: simp only [MonoidHom.coe_comp, comp_apply]
state_before: M : Type u_1
inst✝⁵ : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝⁴ : CommMonoid N
P : Type u_3
inst✝³ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
T : Submonoid P
hy : ∀ (y : ↥S), g ↑y ∈ T
Q : Type u_4
inst✝² : CommMonoid Q
k : T.LocalizationMap Q
A : Type u_5
inst✝¹ : CommMonoid A
U : Submonoid A
R : Type u_6
inst✝ : CommMonoid R
j : U.LocalizationMap R
l : P →* A
hl : ∀ (w : ↥T), l ↑w ∈ U
x : N
⊢ (k.map hl j) ((f.map hy k) x) = ((k.map hl j).comp (f.map hy k)) x
state_after: no goals
Theorem: Mathlib.Meta.NormNum.isRat_inv_zero
File: Mathlib/Tactic/NormNum/Inv.lean

tactic: simp
state_before: α : Type u_1
inst✝ : DivisionRing α
⊢ (↑0)⁻¹ = ↑0
state_after: no goals
Theorem: InnerProductSpace.Core.inner_self_im
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rw [← @ofReal_inj 𝕜, im_eq_conj_sub]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : _root_.RCLike 𝕜
inst✝¹ : AddCommGroup F
inst✝ : Module 𝕜 F
c : Core 𝕜 F
x : F
⊢ im ⟪x, x⟫_𝕜 = 0
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : _root_.RCLike 𝕜
inst✝¹ : AddCommGroup F
inst✝ : Module 𝕜 F
c : Core 𝕜 F
x : F
⊢ I * ((starRingEnd 𝕜) ⟪x, x⟫_𝕜 - ⟪x, x⟫_𝕜) / 2 = ↑0

tactic: simp [inner_conj_symm]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : _root_.RCLike 𝕜
inst✝¹ : AddCommGroup F
inst✝ : Module 𝕜 F
c : Core 𝕜 F
x : F
⊢ I * ((starRingEnd 𝕜) ⟪x, x⟫_𝕜 - ⟪x, x⟫_𝕜) / 2 = ↑0
state_after: no goals
Theorem: zpow_neg_mul_zpow_self
File: Mathlib/Algebra/GroupWithZero/Units/Basic.lean

tactic: rw [zpow_neg]
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝¹ : MonoidWithZero M₀
inst✝ : GroupWithZero G₀
a b c d : G₀
m n✝ : ℕ
n : ℤ
ha : a ≠ 0
⊢ a ^ (-n) * a ^ n = 1
state_after: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝¹ : MonoidWithZero M₀
inst✝ : GroupWithZero G₀
a b c d : G₀
m n✝ : ℕ
n : ℤ
ha : a ≠ 0
⊢ (a ^ n)⁻¹ * a ^ n = 1

tactic: exact inv_mul_cancel (zpow_ne_zero n ha)
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝¹ : MonoidWithZero M₀
inst✝ : GroupWithZero G₀
a b c d : G₀
m n✝ : ℕ
n : ℤ
ha : a ≠ 0
⊢ (a ^ n)⁻¹ * a ^ n = 1
state_after: no goals
Theorem: OrthogonalFamily.inner_right_fintype
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: classical
calc
  ⟪V i v, ∑ j : ι, V j (l j)⟫ = ∑ j : ι, ⟪V i v, V j (l j)⟫ := by rw [inner_sum]
  _ = ∑ j, ite (i = j) ⟪V i v, V j (l j)⟫ 0 :=
    (congr_arg (Finset.sum Finset.univ) <| funext fun j => hV.eq_ite v (l j))
  _ = ⟪v, l i⟫ := by
    simp only [Finset.sum_ite_eq, Finset.mem_univ, (V i).inner_map_map, if_true]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : _root_.RCLike 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
ι : Type u_4
G : ι → Type u_5
inst✝² : (i : ι) → NormedAddCommGroup (G i)
inst✝¹ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
inst✝ : Fintype ι
l : (i : ι) → G i
i : ι
v : G i
⊢ ⟪(V i) v, ∑ j : ι, (V j) (l j)⟫_𝕜 = ⟪v, l i⟫_𝕜
state_after: no goals

tactic: calc
  ⟪V i v, ∑ j : ι, V j (l j)⟫ = ∑ j : ι, ⟪V i v, V j (l j)⟫ := by rw [inner_sum]
  _ = ∑ j, ite (i = j) ⟪V i v, V j (l j)⟫ 0 :=
    (congr_arg (Finset.sum Finset.univ) <| funext fun j => hV.eq_ite v (l j))
  _ = ⟪v, l i⟫ := by
    simp only [Finset.sum_ite_eq, Finset.mem_univ, (V i).inner_map_map, if_true]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : _root_.RCLike 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
ι : Type u_4
G : ι → Type u_5
inst✝² : (i : ι) → NormedAddCommGroup (G i)
inst✝¹ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
inst✝ : Fintype ι
l : (i : ι) → G i
i : ι
v : G i
⊢ ⟪(V i) v, ∑ j : ι, (V j) (l j)⟫_𝕜 = ⟪v, l i⟫_𝕜
state_after: no goals

tactic: rw [inner_sum]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : _root_.RCLike 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
ι : Type u_4
G : ι → Type u_5
inst✝² : (i : ι) → NormedAddCommGroup (G i)
inst✝¹ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
inst✝ : Fintype ι
l : (i : ι) → G i
i : ι
v : G i
⊢ ⟪(V i) v, ∑ j : ι, (V j) (l j)⟫_𝕜 = ∑ j : ι, ⟪(V i) v, (V j) (l j)⟫_𝕜
state_after: no goals

tactic: simp only [Finset.sum_ite_eq, Finset.mem_univ, (V i).inner_map_map, if_true]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : _root_.RCLike 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
ι : Type u_4
G : ι → Type u_5
inst✝² : (i : ι) → NormedAddCommGroup (G i)
inst✝¹ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
hV : OrthogonalFamily 𝕜 G V
dec_V : (i : ι) → (x : G i) → Decidable (x ≠ 0)
inst✝ : Fintype ι
l : (i : ι) → G i
i : ι
v : G i
⊢ (∑ j : ι, if i = j then ⟪(V i) v, (V j) (l j)⟫_𝕜 else 0) = ⟪v, l i⟫_𝕜
state_after: no goals
Theorem: Filter.image_mem_of_mem_comap
File: Mathlib/Order/Filter/Basic.lean

tactic: rw [← map_comap_of_mem h]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f✝ f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m : α → β
m' : β → γ
s : Set α
t : Set β
f : Filter α
c : β → α
h : range c ∈ f
W : Set β
W_in : W ∈ comap c f
⊢ c '' W ∈ f
state_after: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f✝ f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m : α → β
m' : β → γ
s : Set α
t : Set β
f : Filter α
c : β → α
h : range c ∈ f
W : Set β
W_in : W ∈ comap c f
⊢ c '' W ∈ map c (comap c f)

tactic: exact image_mem_map W_in
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f✝ f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m : α → β
m' : β → γ
s : Set α
t : Set β
f : Filter α
c : β → α
h : range c ∈ f
W : Set β
W_in : W ∈ comap c f
⊢ c '' W ∈ map c (comap c f)
state_after: no goals
Theorem: CategoryTheory.Subobject.factors_left_of_factors_add
File: Mathlib/CategoryTheory/Subobject/FactorThru.lean

tactic: simp
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
X✝ Y✝ Z : C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : Preadditive C
X Y : C
P : Subobject Y
f g : X ⟶ Y
w : P.Factors (f + g)
wg : P.Factors g
⊢ (P.factorThru (f + g) w - P.factorThru g wg) ≫ (representative.obj P).arrow = f
state_after: no goals
Theorem: Multiset.mem_sup
File: Mathlib/Data/Finset/Lattice.lean

tactic: induction s using Finset.cons_induction <;> simp [*]
state_before: F : Type u_1
α✝ : Type u_2
β✝ : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
α : Type u_7
β : Type u_8
inst✝ : DecidableEq β
s : Finset α
f : α → Multiset β
x : β
⊢ x ∈ s.sup f ↔ ∃ v ∈ s, x ∈ f v
state_after: no goals
Theorem: eval_minpolyDiv_of_aeval_eq_zero
File: Mathlib/FieldTheory/Minpoly/MinpolyDiv.lean

tactic: rw [eval, eval₂_minpolyDiv_of_eval₂_eq_zero, RingHom.id_apply, RingHom.id_apply]
state_before: R : Type u_2
K : Type ?u.52975
L : Type ?u.52978
S : Type u_1
inst✝⁷ : CommRing R
inst✝⁶ : Field K
inst✝⁵ : Field L
inst✝⁴ : CommRing S
inst✝³ : Algebra R S
inst✝² : Algebra K L
x : S
hx : IsIntegral R x
inst✝¹ : IsDomain S
inst✝ : DecidableEq S
y : S
hy : (aeval y) (minpoly R x) = 0
⊢ eval y (minpolyDiv R x) = if x = y then (aeval x) (derivative (minpoly R x)) else 0
state_after: case hy
R : Type u_2
K : Type ?u.52975
L : Type ?u.52978
S : Type u_1
inst✝⁷ : CommRing R
inst✝⁶ : Field K
inst✝⁵ : Field L
inst✝⁴ : CommRing S
inst✝³ : Algebra R S
inst✝² : Algebra K L
x : S
hx : IsIntegral R x
inst✝¹ : IsDomain S
inst✝ : DecidableEq S
y : S
hy : (aeval y) (minpoly R x) = 0
⊢ eval₂ ((RingHom.id S).comp (algebraMap R S)) y (minpoly R x) = 0

tactic: simpa [aeval_def] using hy
state_before: case hy
R : Type u_2
K : Type ?u.52975
L : Type ?u.52978
S : Type u_1
inst✝⁷ : CommRing R
inst✝⁶ : Field K
inst✝⁵ : Field L
inst✝⁴ : CommRing S
inst✝³ : Algebra R S
inst✝² : Algebra K L
x : S
hx : IsIntegral R x
inst✝¹ : IsDomain S
inst✝ : DecidableEq S
y : S
hy : (aeval y) (minpoly R x) = 0
⊢ eval₂ ((RingHom.id S).comp (algebraMap R S)) y (minpoly R x) = 0
state_after: no goals
Theorem: CategoryTheory.braiding_rightUnitor
File: Mathlib/CategoryTheory/Monoidal/Braided/Basic.lean

tactic: rw [← whiskerLeft_iff, MonoidalCategory.whiskerLeft_comp, braiding_rightUnitor_aux₂]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X : C
⊢ (β_ (𝟙_ C) X).hom ≫ (ρ_ X).hom = (λ_ X).hom
state_after: no goals
Theorem: List.enumFrom_cons'
File: Mathlib/Data/List/Enum.lean

tactic: rw [enumFrom_cons, Nat.add_comm, ← map_fst_add_enumFrom_eq_enumFrom]
state_before: α : Type u_1
β : Type u_2
n : ℕ
x : α
xs : List α
⊢ enumFrom n (x :: xs) = (n, x) :: map (Prod.map Nat.succ id) (enumFrom n xs)
state_after: no goals
Theorem: ExistsContDiffBumpBase.w_compact_support
File: Mathlib/Analysis/Calculus/BumpFunction/FiniteDimension.lean

tactic: rw [hasCompactSupport_def, w_support E Dpos, closure_ball (0 : E) Dpos.ne']
state_before: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : FiniteDimensional ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
D : ℝ
Dpos : 0 < D
⊢ HasCompactSupport (w D)
state_after: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : FiniteDimensional ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
D : ℝ
Dpos : 0 < D
⊢ IsCompact (closedBall 0 D)

tactic: exact isCompact_closedBall _ _
state_before: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : FiniteDimensional ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
D : ℝ
Dpos : 0 < D
⊢ IsCompact (closedBall 0 D)
state_after: no goals
Theorem: MeasureTheory.Measure.toENNRealVectorMeasure_zero
File: Mathlib/MeasureTheory/Measure/VectorMeasure.lean

tactic: ext i
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
⊢ toENNRealVectorMeasure 0 = 0
state_after: case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
i : Set α
a✝ : MeasurableSet i
⊢ ↑(toENNRealVectorMeasure 0) i = ↑0 i

tactic: simp
state_before: case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
i : Set α
a✝ : MeasurableSet i
⊢ ↑(toENNRealVectorMeasure 0) i = ↑0 i
state_after: no goals
Theorem: Bornology.isBounded_pi
File: Mathlib/Topology/Bornology/Constructions.lean

tactic: by_cases hne : ∃ i, S i = ∅
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
π : ι → Type u_4
inst✝² : Bornology α
inst✝¹ : Bornology β
inst✝ : (i : ι) → Bornology (π i)
s : Set α
t : Set β
S : (i : ι) → Set (π i)
⊢ IsBounded (univ.pi S) ↔ (∃ i, S i = ∅) ∨ ∀ (i : ι), IsBounded (S i)
state_after: case pos
α : Type u_1
β : Type u_2
ι : Type u_3
π : ι → Type u_4
inst✝² : Bornology α
inst✝¹ : Bornology β
inst✝ : (i : ι) → Bornology (π i)
s : Set α
t : Set β
S : (i : ι) → Set (π i)
hne : ∃ i, S i = ∅
⊢ IsBounded (univ.pi S) ↔ (∃ i, S i = ∅) ∨ ∀ (i : ι), IsBounded (S i)

case neg
α : Type u_1
β : Type u_2
ι : Type u_3
π : ι → Type u_4
inst✝² : Bornology α
inst✝¹ : Bornology β
inst✝ : (i : ι) → Bornology (π i)
s : Set α
t : Set β
S : (i : ι) → Set (π i)
hne : ¬∃ i, S i = ∅
⊢ IsBounded (univ.pi S) ↔ (∃ i, S i = ∅) ∨ ∀ (i : ι), IsBounded (S i)

tactic: simp [hne, univ_pi_eq_empty_iff.2 hne]
state_before: case pos
α : Type u_1
β : Type u_2
ι : Type u_3
π : ι → Type u_4
inst✝² : Bornology α
inst✝¹ : Bornology β
inst✝ : (i : ι) → Bornology (π i)
s : Set α
t : Set β
S : (i : ι) → Set (π i)
hne : ∃ i, S i = ∅
⊢ IsBounded (univ.pi S) ↔ (∃ i, S i = ∅) ∨ ∀ (i : ι), IsBounded (S i)
state_after: no goals

tactic: simp only [hne, false_or_iff]
state_before: case neg
α : Type u_1
β : Type u_2
ι : Type u_3
π : ι → Type u_4
inst✝² : Bornology α
inst✝¹ : Bornology β
inst✝ : (i : ι) → Bornology (π i)
s : Set α
t : Set β
S : (i : ι) → Set (π i)
hne : ¬∃ i, S i = ∅
⊢ IsBounded (univ.pi S) ↔ (∃ i, S i = ∅) ∨ ∀ (i : ι), IsBounded (S i)
state_after: case neg
α : Type u_1
β : Type u_2
ι : Type u_3
π : ι → Type u_4
inst✝² : Bornology α
inst✝¹ : Bornology β
inst✝ : (i : ι) → Bornology (π i)
s : Set α
t : Set β
S : (i : ι) → Set (π i)
hne : ¬∃ i, S i = ∅
⊢ IsBounded (univ.pi S) ↔ ∀ (i : ι), IsBounded (S i)

tactic: simp only [not_exists, ← Ne.eq_def, ← nonempty_iff_ne_empty, ← univ_pi_nonempty_iff] at hne
state_before: case neg
α : Type u_1
β : Type u_2
ι : Type u_3
π : ι → Type u_4
inst✝² : Bornology α
inst✝¹ : Bornology β
inst✝ : (i : ι) → Bornology (π i)
s : Set α
t : Set β
S : (i : ι) → Set (π i)
hne : ¬∃ i, S i = ∅
⊢ IsBounded (univ.pi S) ↔ ∀ (i : ι), IsBounded (S i)
state_after: case neg
α : Type u_1
β : Type u_2
ι : Type u_3
π : ι → Type u_4
inst✝² : Bornology α
inst✝¹ : Bornology β
inst✝ : (i : ι) → Bornology (π i)
s : Set α
t : Set β
S : (i : ι) → Set (π i)
hne : (univ.pi S).Nonempty
⊢ IsBounded (univ.pi S) ↔ ∀ (i : ι), IsBounded (S i)

tactic: exact isBounded_pi_of_nonempty hne
state_before: case neg
α : Type u_1
β : Type u_2
ι : Type u_3
π : ι → Type u_4
inst✝² : Bornology α
inst✝¹ : Bornology β
inst✝ : (i : ι) → Bornology (π i)
s : Set α
t : Set β
S : (i : ι) → Set (π i)
hne : (univ.pi S).Nonempty
⊢ IsBounded (univ.pi S) ↔ ∀ (i : ι), IsBounded (S i)
state_after: no goals
Theorem: BoxIntegral.Prepartition.split_of_not_mem_Ioo
File: Mathlib/Analysis/BoxIntegral/Partition/Split.lean

tactic: refine ((isPartitionTop I).eq_of_boxes_subset fun J hJ => ?_).symm
state_before: ι : Type u_1
M : Type u_2
n : ℕ
I J : Box ι
i : ι
x : ℝ
h : x ∉ Ioo (I.lower i) (I.upper i)
⊢ split I i x = ⊤
state_after: ι : Type u_1
M : Type u_2
n : ℕ
I J✝ : Box ι
i : ι
x : ℝ
h : x ∉ Ioo (I.lower i) (I.upper i)
J : Box ι
hJ : J ∈ ⊤.boxes
⊢ J ∈ (split I i x).boxes

tactic: rcases mem_top.1 hJ with rfl
state_before: ι : Type u_1
M : Type u_2
n : ℕ
I J✝ : Box ι
i : ι
x : ℝ
h : x ∉ Ioo (I.lower i) (I.upper i)
J : Box ι
hJ : J ∈ ⊤.boxes
⊢ J ∈ (split I i x).boxes
state_after: ι : Type u_1
M : Type u_2
n : ℕ
J✝ : Box ι
i : ι
x : ℝ
J : Box ι
h : x ∉ Ioo (J.lower i) (J.upper i)
hJ : J ∈ ⊤.boxes
⊢ J ∈ (split J i x).boxes

tactic: clear hJ
state_before: ι : Type u_1
M : Type u_2
n : ℕ
J✝ : Box ι
i : ι
x : ℝ
J : Box ι
h : x ∉ Ioo (J.lower i) (J.upper i)
hJ : J ∈ ⊤.boxes
⊢ J ∈ (split J i x).boxes
state_after: ι : Type u_1
M : Type u_2
n : ℕ
J✝ : Box ι
i : ι
x : ℝ
J : Box ι
h : x ∉ Ioo (J.lower i) (J.upper i)
⊢ J ∈ (split J i x).boxes

tactic: rw [mem_boxes, mem_split_iff]
state_before: ι : Type u_1
M : Type u_2
n : ℕ
J✝ : Box ι
i : ι
x : ℝ
J : Box ι
h : x ∉ Ioo (J.lower i) (J.upper i)
⊢ J ∈ (split J i x).boxes
state_after: ι : Type u_1
M : Type u_2
n : ℕ
J✝ : Box ι
i : ι
x : ℝ
J : Box ι
h : x ∉ Ioo (J.lower i) (J.upper i)
⊢ ↑J = J.splitLower i x ∨ ↑J = J.splitUpper i x

tactic: rw [mem_Ioo, not_and_or, not_lt, not_lt] at h
state_before: ι : Type u_1
M : Type u_2
n : ℕ
J✝ : Box ι
i : ι
x : ℝ
J : Box ι
h : x ∉ Ioo (J.lower i) (J.upper i)
⊢ ↑J = J.splitLower i x ∨ ↑J = J.splitUpper i x
state_after: ι : Type u_1
M : Type u_2
n : ℕ
J✝ : Box ι
i : ι
x : ℝ
J : Box ι
h : x ≤ J.lower i ∨ J.upper i ≤ x
⊢ ↑J = J.splitLower i x ∨ ↑J = J.splitUpper i x

tactic: cases h <;> [right; left]
state_before: ι : Type u_1
M : Type u_2
n : ℕ
J✝ : Box ι
i : ι
x : ℝ
J : Box ι
h : x ≤ J.lower i ∨ J.upper i ≤ x
⊢ ↑J = J.splitLower i x ∨ ↑J = J.splitUpper i x
state_after: case inl.h
ι : Type u_1
M : Type u_2
n : ℕ
J✝ : Box ι
i : ι
x : ℝ
J : Box ι
h✝ : x ≤ J.lower i
⊢ ↑J = J.splitUpper i x

case inr.h
ι : Type u_1
M : Type u_2
n : ℕ
J✝ : Box ι
i : ι
x : ℝ
J : Box ι
h✝ : J.upper i ≤ x
⊢ ↑J = J.splitLower i x

tactic: rwa [eq_comm, Box.splitUpper_eq_self]
state_before: case inl.h
ι : Type u_1
M : Type u_2
n : ℕ
J✝ : Box ι
i : ι
x : ℝ
J : Box ι
h✝ : x ≤ J.lower i
⊢ ↑J = J.splitUpper i x
state_after: no goals

tactic: rwa [eq_comm, Box.splitLower_eq_self]
state_before: case inr.h
ι : Type u_1
M : Type u_2
n : ℕ
J✝ : Box ι
i : ι
x : ℝ
J : Box ι
h✝ : J.upper i ≤ x
⊢ ↑J = J.splitLower i x
state_after: no goals
Theorem: Bifunctor.fst_snd
File: Mathlib/Control/Bifunctor.lean

tactic: simp [fst, bimap_bimap]
state_before: F : Type u₀ → Type u₁ → Type u₂
inst✝¹ : Bifunctor F
inst✝ : LawfulBifunctor F
α₀ α₁ : Type u₀
β₀ β₁ : Type u₁
f : α₀ → α₁
f' : β₀ → β₁
x : F α₀ β₀
⊢ fst f (snd f' x) = bimap f f' x
state_after: no goals
Theorem: Cardinal.lift_sInf
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rcases eq_empty_or_nonempty s with (rfl | hs)
state_before: α β : Type u
s : Set Cardinal.{v}
⊢ lift.{u, v} (sInf s) = sInf (lift.{u, v} '' s)
state_after: case inl
α β : Type u
⊢ lift.{u, v} (sInf ∅) = sInf (lift.{u, v} '' ∅)

case inr
α β : Type u
s : Set Cardinal.{v}
hs : s.Nonempty
⊢ lift.{u, v} (sInf s) = sInf (lift.{u, v} '' s)

tactic: simp
state_before: case inl
α β : Type u
⊢ lift.{u, v} (sInf ∅) = sInf (lift.{u, v} '' ∅)
state_after: no goals

tactic: exact lift_monotone.map_csInf hs
state_before: case inr
α β : Type u
s : Set Cardinal.{v}
hs : s.Nonempty
⊢ lift.{u, v} (sInf s) = sInf (lift.{u, v} '' s)
state_after: no goals
Theorem: List.replaceF_cons_of_none
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp [replaceF_cons, h]
state_before: α : Type u_1
a : α
l : List α
p : α → Option α
h : p a = none
⊢ replaceF p (a :: l) = a :: replaceF p l
state_after: no goals
Theorem: Set.mk_preimage_prod_right_eq_if
File: Mathlib/Data/Set/Prod.lean

tactic: split_ifs with h <;> simp [h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
inst✝ : DecidablePred fun x => x ∈ s
⊢ Prod.mk a ⁻¹' s ×ˢ t = if a ∈ s then t else ∅
state_after: no goals
Theorem: Mathlib.Tactic.Ring.cast_neg
File: Mathlib/Tactic/Ring/Basic.lean

tactic: simp [e]
state_before: u : Lean.Level
R✝ : Type ?u.180784
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝¹ : CommSemiring R✝
n : ℕ
R : Type u_1
inst✝ : Ring R
a : R
e : a = ↑(Int.negOfNat n)
⊢ a = (Int.negOfNat n).rawCast + 0
state_after: no goals
Theorem: Filter.pi_mem_pi
File: Mathlib/Order/Filter/Pi.lean

tactic: rw [pi_def, biInter_eq_iInter]
state_before: ι : Type u_1
α : ι → Type u_2
f f₁ f₂ : (i : ι) → Filter (α i)
s : (i : ι) → Set (α i)
p : (i : ι) → α i → Prop
I : Set ι
hI : I.Finite
h : ∀ i ∈ I, s i ∈ f i
⊢ I.pi s ∈ pi f
state_after: ι : Type u_1
α : ι → Type u_2
f f₁ f₂ : (i : ι) → Filter (α i)
s : (i : ι) → Set (α i)
p : (i : ι) → α i → Prop
I : Set ι
hI : I.Finite
h : ∀ i ∈ I, s i ∈ f i
⊢ ⋂ x, eval ↑x ⁻¹' s ↑x ∈ pi f

tactic: refine mem_iInf_of_iInter hI (fun i => ?_) Subset.rfl
state_before: ι : Type u_1
α : ι → Type u_2
f f₁ f₂ : (i : ι) → Filter (α i)
s : (i : ι) → Set (α i)
p : (i : ι) → α i → Prop
I : Set ι
hI : I.Finite
h : ∀ i ∈ I, s i ∈ f i
⊢ ⋂ x, eval ↑x ⁻¹' s ↑x ∈ pi f
state_after: ι : Type u_1
α : ι → Type u_2
f f₁ f₂ : (i : ι) → Filter (α i)
s : (i : ι) → Set (α i)
p : (i : ι) → α i → Prop
I : Set ι
hI : I.Finite
h : ∀ i ∈ I, s i ∈ f i
i : ↑I
⊢ eval ↑i ⁻¹' s ↑i ∈ comap (eval ↑i) (f ↑i)

tactic: exact preimage_mem_comap (h i i.2)
state_before: ι : Type u_1
α : ι → Type u_2
f f₁ f₂ : (i : ι) → Filter (α i)
s : (i : ι) → Set (α i)
p : (i : ι) → α i → Prop
I : Set ι
hI : I.Finite
h : ∀ i ∈ I, s i ∈ f i
i : ↑I
⊢ eval ↑i ⁻¹' s ↑i ∈ comap (eval ↑i) (f ↑i)
state_after: no goals
Theorem: neg_eq
File: Mathlib/Algebra/Ring/BooleanRing.lean

tactic: rw [add_zero]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
⊢ -a = -a + 0
state_after: no goals

tactic: rw [← neg_add_self, add_assoc]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
⊢ -a + 0 = -a + -a + a
state_after: no goals

tactic: rw [add_self, zero_add]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
⊢ -a + -a + a = a
state_after: no goals