1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Finset.map_insert
File: Mathlib/Data/Finset/Image.lean

tactic: simp only [insert_eq, map_union, map_singleton]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f✝ : α ↪ β
s✝ : Finset α
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
f : α ↪ β
a : α
s : Finset α
⊢ map f (insert a s) = insert (f a) (map f s)
state_after: no goals
Theorem: TypeVec.dropFun_toSubtype
File: Mathlib/Data/TypeVec.lean

tactic: ext i
state_before: n : ℕ
α : TypeVec.{u_1} (n + 1)
p : α ⟹ repeat (n + 1) Prop
⊢ dropFun (toSubtype p) = toSubtype fun i => p i.fs
state_after: case a.h
n : ℕ
α : TypeVec.{u_1} (n + 1)
p : α ⟹ repeat (n + 1) Prop
i : Fin2 n
x✝ : drop (fun i => { x // ofRepeat (p i x) }) i
⊢ dropFun (toSubtype p) i x✝ = toSubtype (fun i => p i.fs) i x✝

tactic: induction i <;> simp [dropFun, *] <;> rfl
state_before: case a.h
n : ℕ
α : TypeVec.{u_1} (n + 1)
p : α ⟹ repeat (n + 1) Prop
i : Fin2 n
x✝ : drop (fun i => { x // ofRepeat (p i x) }) i
⊢ dropFun (toSubtype p) i x✝ = toSubtype (fun i => p i.fs) i x✝
state_after: no goals
Theorem: MeasureTheory.SimpleFunc.range_indicator
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

tactic: simp only [← Finset.coe_inj, coe_range, coe_piecewise, range_piecewise, coe_const,
  Finset.coe_insert, Finset.coe_singleton, hs_nonempty.image_const,
  (nonempty_compl.2 hs_ne_univ).image_const, singleton_union, Function.const]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : MeasurableSpace α
s : Set α
hs : MeasurableSet s
hs_nonempty : s.Nonempty
hs_ne_univ : s ≠ univ
x y : β
⊢ (piecewise s hs (const α x) (const α y)).range = {x, y}
state_after: no goals
Theorem: Substring.ValidFor.toIterator
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

tactic: simp only [Substring.toIterator]
state_before: l m r : List Char
x✝ : Substring
h : ValidFor l m r x✝
⊢ Iterator.ValidFor l.reverse (m ++ r) x✝.toIterator
state_after: l m r : List Char
x✝ : Substring
h : ValidFor l m r x✝
⊢ Iterator.ValidFor l.reverse (m ++ r) { s := x✝.str, i := x✝.startPos }

tactic: exact .of_eq _ (by simp [h.str, List.reverseAux_eq]) (by simp [h.startPos])
state_before: l m r : List Char
x✝ : Substring
h : ValidFor l m r x✝
⊢ Iterator.ValidFor l.reverse (m ++ r) { s := x✝.str, i := x✝.startPos }
state_after: no goals

tactic: simp [h.str, List.reverseAux_eq]
state_before: l m r : List Char
x✝ : Substring
h : ValidFor l m r x✝
⊢ { s := x✝.str, i := x✝.startPos }.s.data = l.reverse.reverseAux (m ++ r)
state_after: no goals

tactic: simp [h.startPos]
state_before: l m r : List Char
x✝ : Substring
h : ValidFor l m r x✝
⊢ { s := x✝.str, i := x✝.startPos }.i.byteIdx = utf8Len l.reverse
state_after: no goals
Theorem: CategoryTheory.NatTrans.id_hcomp_app
File: Mathlib/CategoryTheory/Functor/Category.lean

tactic: simp
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
F G H✝ I : C ⥤ D
H : E ⥤ C
α : F ⟶ G
X : E
⊢ (𝟙 H ◫ α).app X = α.app (H.obj X)
state_after: no goals
Theorem: LieAlgebra.Orthogonal.pd_inv
File: Mathlib/Algebra/Lie/Classical.lean

tactic: rw [PD, Matrix.fromBlocks_transpose, Matrix.fromBlocks_smul,
  Matrix.fromBlocks_multiply]
state_before: n : Type u_1
p : Type u_2
q : Type u_3
l : Type u_4
R : Type u₂
inst✝⁸ : DecidableEq n
inst✝⁷ : DecidableEq p
inst✝⁶ : DecidableEq q
inst✝⁵ : DecidableEq l
inst✝⁴ : CommRing R
inst✝³ : Fintype p
inst✝² : Fintype q
inst✝¹ : Fintype l
inst✝ : Invertible 2
⊢ PD l R * ⅟2 • (PD l R)ᵀ = 1
state_after: n : Type u_1
p : Type u_2
q : Type u_3
l : Type u_4
R : Type u₂
inst✝⁸ : DecidableEq n
inst✝⁷ : DecidableEq p
inst✝⁶ : DecidableEq q
inst✝⁵ : DecidableEq l
inst✝⁴ : CommRing R
inst✝³ : Fintype p
inst✝² : Fintype q
inst✝¹ : Fintype l
inst✝ : Invertible 2
⊢ fromBlocks (1 * ⅟2 • 1ᵀ + -1 * ⅟2 • (-1)ᵀ) (1 * ⅟2 • 1ᵀ + -1 * ⅟2 • 1ᵀ) (1 * ⅟2 • 1ᵀ + 1 * ⅟2 • (-1)ᵀ)
      (1 * ⅟2 • 1ᵀ + 1 * ⅟2 • 1ᵀ) =
    1

tactic: simp
state_before: n : Type u_1
p : Type u_2
q : Type u_3
l : Type u_4
R : Type u₂
inst✝⁸ : DecidableEq n
inst✝⁷ : DecidableEq p
inst✝⁶ : DecidableEq q
inst✝⁵ : DecidableEq l
inst✝⁴ : CommRing R
inst✝³ : Fintype p
inst✝² : Fintype q
inst✝¹ : Fintype l
inst✝ : Invertible 2
⊢ fromBlocks (1 * ⅟2 • 1ᵀ + -1 * ⅟2 • (-1)ᵀ) (1 * ⅟2 • 1ᵀ + -1 * ⅟2 • 1ᵀ) (1 * ⅟2 • 1ᵀ + 1 * ⅟2 • (-1)ᵀ)
      (1 * ⅟2 • 1ᵀ + 1 * ⅟2 • 1ᵀ) =
    1
state_after: no goals
Theorem: ContinuousAffineMap.norm_eq
File: Mathlib/Analysis/NormedSpace/ContinuousAffineMap.lean

tactic: rw [norm_def]
state_before: 𝕜 : Type u_1
R : Type u_2
V : Type u_3
W : Type u_4
W₂ : Type u_5
P : Type u_6
Q : Type u_7
Q₂ : Type u_8
inst✝¹⁶ : NormedAddCommGroup V
inst✝¹⁵ : MetricSpace P
inst✝¹⁴ : NormedAddTorsor V P
inst✝¹³ : NormedAddCommGroup W
inst✝¹² : MetricSpace Q
inst✝¹¹ : NormedAddTorsor W Q
inst✝¹⁰ : NormedAddCommGroup W₂
inst✝⁹ : MetricSpace Q₂
inst✝⁸ : NormedAddTorsor W₂ Q₂
inst✝⁷ : NormedField R
inst✝⁶ : NormedSpace R V
inst✝⁵ : NormedSpace R W
inst✝⁴ : NormedSpace R W₂
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedSpace 𝕜 V
inst✝¹ : NormedSpace 𝕜 W
inst✝ : NormedSpace 𝕜 W₂
f : V →ᴬ[𝕜] W
h : f 0 = 0
⊢ ‖f‖ = max ‖f 0‖ ‖f.contLinear‖
state_after: no goals

tactic: rw [h, norm_zero]
state_before: 𝕜 : Type u_1
R : Type u_2
V : Type u_3
W : Type u_4
W₂ : Type u_5
P : Type u_6
Q : Type u_7
Q₂ : Type u_8
inst✝¹⁶ : NormedAddCommGroup V
inst✝¹⁵ : MetricSpace P
inst✝¹⁴ : NormedAddTorsor V P
inst✝¹³ : NormedAddCommGroup W
inst✝¹² : MetricSpace Q
inst✝¹¹ : NormedAddTorsor W Q
inst✝¹⁰ : NormedAddCommGroup W₂
inst✝⁹ : MetricSpace Q₂
inst✝⁸ : NormedAddTorsor W₂ Q₂
inst✝⁷ : NormedField R
inst✝⁶ : NormedSpace R V
inst✝⁵ : NormedSpace R W
inst✝⁴ : NormedSpace R W₂
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedSpace 𝕜 V
inst✝¹ : NormedSpace 𝕜 W
inst✝ : NormedSpace 𝕜 W₂
f : V →ᴬ[𝕜] W
h : f 0 = 0
⊢ max ‖f 0‖ ‖f.contLinear‖ = max 0 ‖f.contLinear‖
state_after: no goals
Theorem: Polynomial.iterate_derivative_C_mul
File: Mathlib/Algebra/Polynomial/Derivative.lean

tactic: simp_rw [← smul_eq_C_mul, iterate_derivative_smul]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a✝ b : R
n : ℕ
inst✝ : Semiring R
a : R
p : R[X]
k : ℕ
⊢ (⇑derivative)^[k] (C a * p) = C a * (⇑derivative)^[k] p
state_after: no goals
Theorem: inv_pos_lt_iff_one_lt_mul
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [inv_eq_one_div]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 0 < a
⊢ a⁻¹ < b ↔ 1 < b * a
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 0 < a
⊢ 1 / a < b ↔ 1 < b * a

tactic: exact div_lt_iff ha
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 0 < a
⊢ 1 / a < b ↔ 1 < b * a
state_after: no goals
Theorem: uniformity_eq_comap_inv_mul_nhds_one_swapped
File: Mathlib/Topology/Algebra/UniformGroup.lean

tactic: rw [← comap_swap_uniformity, uniformity_eq_comap_inv_mul_nhds_one, comap_comap]
state_before: α : Type u_1
β : Type u_2
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
⊢ 𝓤 α = comap (fun x => x.2⁻¹ * x.1) (𝓝 1)
state_after: α : Type u_1
β : Type u_2
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
⊢ comap ((fun x => x.1⁻¹ * x.2) ∘ Prod.swap) (𝓝 1) = comap (fun x => x.2⁻¹ * x.1) (𝓝 1)

tactic: rfl
state_before: α : Type u_1
β : Type u_2
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
⊢ comap ((fun x => x.1⁻¹ * x.2) ∘ Prod.swap) (𝓝 1) = comap (fun x => x.2⁻¹ * x.1) (𝓝 1)
state_after: no goals
Theorem: LieModule.isNilpotent_iff_forall'
File: Mathlib/Algebra/Lie/Engel.lean

tactic: rw [← isNilpotent_range_toEnd_iff, LieModule.isNilpotent_iff_forall]
state_before: R : Type u₁
L : Type u₂
L₂ : Type u₃
M : Type u₄
inst✝⁹ : CommRing R
inst✝⁸ : LieRing L
inst✝⁷ : LieAlgebra R L
inst✝⁶ : LieRing L₂
inst✝⁵ : LieAlgebra R L₂
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : LieRingModule L M
inst✝¹ : LieModule R L M
inst✝ : IsNoetherian R M
⊢ IsNilpotent R L M ↔ ∀ (x : L), _root_.IsNilpotent ((toEnd R L M) x)
state_after: R : Type u₁
L : Type u₂
L₂ : Type u₃
M : Type u₄
inst✝⁹ : CommRing R
inst✝⁸ : LieRing L
inst✝⁷ : LieAlgebra R L
inst✝⁶ : LieRing L₂
inst✝⁵ : LieAlgebra R L₂
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : LieRingModule L M
inst✝¹ : LieModule R L M
inst✝ : IsNoetherian R M
⊢ (∀ (x : ↥(toEnd R L M).range), _root_.IsNilpotent ((toEnd R (↥(toEnd R L M).range) M) x)) ↔
    ∀ (x : L), _root_.IsNilpotent ((toEnd R L M) x)

tactic: simp
state_before: R : Type u₁
L : Type u₂
L₂ : Type u₃
M : Type u₄
inst✝⁹ : CommRing R
inst✝⁸ : LieRing L
inst✝⁷ : LieAlgebra R L
inst✝⁶ : LieRing L₂
inst✝⁵ : LieAlgebra R L₂
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : LieRingModule L M
inst✝¹ : LieModule R L M
inst✝ : IsNoetherian R M
⊢ (∀ (x : ↥(toEnd R L M).range), _root_.IsNilpotent ((toEnd R (↥(toEnd R L M).range) M) x)) ↔
    ∀ (x : L), _root_.IsNilpotent ((toEnd R L M) x)
state_after: no goals
Theorem: Orientation.oangle_sub_left_eq_arccos_of_oangle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Oriented/RightAngle.lean

tactic: rw [← neg_inj, oangle_rev, ← oangle_neg_orientation_eq_neg, neg_inj] at h ⊢
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
⊢ o.oangle (x - y) x = ↑(Real.arccos (‖x‖ / ‖x - y‖))
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (-o).oangle y x = ↑(π / 2)
⊢ (-o).oangle x (x - y) = ↑(Real.arccos (‖x‖ / ‖x - y‖))

tactic: exact (-o).oangle_sub_right_eq_arccos_of_oangle_eq_pi_div_two h
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (-o).oangle y x = ↑(π / 2)
⊢ (-o).oangle x (x - y) = ↑(Real.arccos (‖x‖ / ‖x - y‖))
state_after: no goals
Theorem: YoungDiagram.exists_not_mem_col
File: Mathlib/Combinatorics/Young/YoungDiagram.lean

tactic: convert μ.transpose.exists_not_mem_row j using 1
state_before: μ : YoungDiagram
j : ℕ
⊢ ∃ i, (i, j) ∉ μ.cells
state_after: case h.e'_2
μ : YoungDiagram
j : ℕ
⊢ (fun i => (i, j) ∉ μ.cells) = fun j_1 => (j, j_1) ∉ μ.transpose

tactic: simp
state_before: case h.e'_2
μ : YoungDiagram
j : ℕ
⊢ (fun i => (i, j) ∉ μ.cells) = fun j_1 => (j, j_1) ∉ μ.transpose
state_after: no goals
Theorem: IsGLB.mul_right
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: simpa [mul_comm] using hs.mul_left ha
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
s : Set α
ha : 0 ≤ a
hs : IsGLB s b
⊢ IsGLB ((fun b => b * a) '' s) (b * a)
state_after: no goals
Theorem: MeasureTheory.AEEqFun.comp₂Measurable_eq_mk
File: Mathlib/MeasureTheory/Function/AEEqFun.lean

tactic: rw [comp₂Measurable_eq_pair, pair_eq_mk, compMeasurable_mk]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹⁴ : MeasurableSpace α
μ ν : Measure α
inst✝¹³ : TopologicalSpace β
inst✝¹² : TopologicalSpace γ
inst✝¹¹ : TopologicalSpace δ
inst✝¹⁰ : MeasurableSpace β
inst✝⁹ : PseudoMetrizableSpace β
inst✝⁸ : BorelSpace β
inst✝⁷ : MeasurableSpace γ
inst✝⁶ : PseudoMetrizableSpace γ
inst✝⁵ : BorelSpace γ
inst✝⁴ : SecondCountableTopologyEither β γ
inst✝³ : MeasurableSpace δ
inst✝² : PseudoMetrizableSpace δ
inst✝¹ : OpensMeasurableSpace δ
inst✝ : SecondCountableTopology δ
g : β → γ → δ
hg : Measurable (uncurry g)
f₁ : α →ₘ[μ] β
f₂ : α →ₘ[μ] γ
⊢ comp₂Measurable g hg f₁ f₂ = mk (fun a => g (↑f₁ a) (↑f₂ a)) ⋯
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹⁴ : MeasurableSpace α
μ ν : Measure α
inst✝¹³ : TopologicalSpace β
inst✝¹² : TopologicalSpace γ
inst✝¹¹ : TopologicalSpace δ
inst✝¹⁰ : MeasurableSpace β
inst✝⁹ : PseudoMetrizableSpace β
inst✝⁸ : BorelSpace β
inst✝⁷ : MeasurableSpace γ
inst✝⁶ : PseudoMetrizableSpace γ
inst✝⁵ : BorelSpace γ
inst✝⁴ : SecondCountableTopologyEither β γ
inst✝³ : MeasurableSpace δ
inst✝² : PseudoMetrizableSpace δ
inst✝¹ : OpensMeasurableSpace δ
inst✝ : SecondCountableTopology δ
g : β → γ → δ
hg : Measurable (uncurry g)
f₁ : α →ₘ[μ] β
f₂ : α →ₘ[μ] γ
⊢ mk (uncurry g ∘ fun x => (↑f₁ x, ↑f₂ x)) ⋯ = mk (fun a => g (↑f₁ a) (↑f₂ a)) ⋯

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹⁴ : MeasurableSpace α
μ ν : Measure α
inst✝¹³ : TopologicalSpace β
inst✝¹² : TopologicalSpace γ
inst✝¹¹ : TopologicalSpace δ
inst✝¹⁰ : MeasurableSpace β
inst✝⁹ : PseudoMetrizableSpace β
inst✝⁸ : BorelSpace β
inst✝⁷ : MeasurableSpace γ
inst✝⁶ : PseudoMetrizableSpace γ
inst✝⁵ : BorelSpace γ
inst✝⁴ : SecondCountableTopologyEither β γ
inst✝³ : MeasurableSpace δ
inst✝² : PseudoMetrizableSpace δ
inst✝¹ : OpensMeasurableSpace δ
inst✝ : SecondCountableTopology δ
g : β → γ → δ
hg : Measurable (uncurry g)
f₁ : α →ₘ[μ] β
f₂ : α →ₘ[μ] γ
⊢ mk (uncurry g ∘ fun x => (↑f₁ x, ↑f₂ x)) ⋯ = mk (fun a => g (↑f₁ a) (↑f₂ a)) ⋯
state_after: no goals
Theorem: ContinuousWithinAt.preimage_mem_nhdsWithin''
File: Mathlib/Topology/ContinuousOn.lean

tactic: rw [hxy] at ht
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 : α → β
x : α
y : β
s t : Set β
h : ContinuousWithinAt f (f ⁻¹' s) x
ht : t ∈ 𝓝[s] y
hxy : y = f x
⊢ f ⁻¹' t ∈ 𝓝[f ⁻¹' s] x
state_after: α : 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 : α → β
x : α
y : β
s t : Set β
h : ContinuousWithinAt f (f ⁻¹' s) x
ht : t ∈ 𝓝[s] f x
hxy : y = f x
⊢ f ⁻¹' t ∈ 𝓝[f ⁻¹' s] x

tactic: exact h.preimage_mem_nhdsWithin' (nhdsWithin_mono _ (image_preimage_subset f s) ht)
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 : α → β
x : α
y : β
s t : Set β
h : ContinuousWithinAt f (f ⁻¹' s) x
ht : t ∈ 𝓝[s] f x
hxy : y = f x
⊢ f ⁻¹' t ∈ 𝓝[f ⁻¹' s] x
state_after: no goals
Theorem: Matrix.blockDiagonal_apply
File: Mathlib/Data/Matrix/Block.lean

tactic: cases ik
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : o → Matrix m n α
ik : m × o
jk : n × o
⊢ blockDiagonal M ik jk = if ik.2 = jk.2 then M ik.2 ik.1 jk.1 else 0
state_after: case mk
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : o → Matrix m n α
jk : n × o
fst✝ : m
snd✝ : o
⊢ blockDiagonal M (fst✝, snd✝) jk = if (fst✝, snd✝).2 = jk.2 then M (fst✝, snd✝).2 (fst✝, snd✝).1 jk.1 else 0

tactic: cases jk
state_before: case mk
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : o → Matrix m n α
jk : n × o
fst✝ : m
snd✝ : o
⊢ blockDiagonal M (fst✝, snd✝) jk = if (fst✝, snd✝).2 = jk.2 then M (fst✝, snd✝).2 (fst✝, snd✝).1 jk.1 else 0
state_after: case mk.mk
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : o → Matrix m n α
fst✝¹ : m
snd✝¹ : o
fst✝ : n
snd✝ : o
⊢ blockDiagonal M (fst✝¹, snd✝¹) (fst✝, snd✝) =
    if (fst✝¹, snd✝¹).2 = (fst✝, snd✝).2 then M (fst✝¹, snd✝¹).2 (fst✝¹, snd✝¹).1 (fst✝, snd✝).1 else 0

tactic: rfl
state_before: case mk.mk
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
M : o → Matrix m n α
fst✝¹ : m
snd✝¹ : o
fst✝ : n
snd✝ : o
⊢ blockDiagonal M (fst✝¹, snd✝¹) (fst✝, snd✝) =
    if (fst✝¹, snd✝¹).2 = (fst✝, snd✝).2 then M (fst✝¹, snd✝¹).2 (fst✝¹, snd✝¹).1 (fst✝, snd✝).1 else 0
state_after: no goals
Theorem: StarModule.instOrderedSMul
File: Mathlib/Analysis/RCLike/Basic.lean

tactic: have : c⁻¹ • c • x < c⁻¹ • c • y :=
  StarModule.smul_lt_smul_of_pos hxy (RCLike.inv_pos_of_pos hc)
state_before: K : Type u_1
E : Type u_2
inst✝⁸ : RCLike K
z w : K
A : Type u_3
inst✝⁷ : NonUnitalRing A
inst✝⁶ : StarRing A
inst✝⁵ : PartialOrder A
inst✝⁴ : StarOrderedRing A
inst✝³ : Module K A
inst✝² : StarModule K A
inst✝¹ : IsScalarTower K A A
inst✝ : SMulCommClass K A A
x y : A
c : K
hxy : c • x < c • y
hc : 0 < c
⊢ x < y
state_after: K : Type u_1
E : Type u_2
inst✝⁸ : RCLike K
z w : K
A : Type u_3
inst✝⁷ : NonUnitalRing A
inst✝⁶ : StarRing A
inst✝⁵ : PartialOrder A
inst✝⁴ : StarOrderedRing A
inst✝³ : Module K A
inst✝² : StarModule K A
inst✝¹ : IsScalarTower K A A
inst✝ : SMulCommClass K A A
x y : A
c : K
hxy : c • x < c • y
hc : 0 < c
this : c⁻¹ • c • x < c⁻¹ • c • y
⊢ x < y

tactic: simpa [smul_smul, inv_mul_cancel hc.ne'] using this
state_before: K : Type u_1
E : Type u_2
inst✝⁸ : RCLike K
z w : K
A : Type u_3
inst✝⁷ : NonUnitalRing A
inst✝⁶ : StarRing A
inst✝⁵ : PartialOrder A
inst✝⁴ : StarOrderedRing A
inst✝³ : Module K A
inst✝² : StarModule K A
inst✝¹ : IsScalarTower K A A
inst✝ : SMulCommClass K A A
x y : A
c : K
hxy : c • x < c • y
hc : 0 < c
this : c⁻¹ • c • x < c⁻¹ • c • y
⊢ x < y
state_after: no goals
Theorem: String.Iterator.ValidFor.remainingToString
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

tactic: cases h.out
state_before: l r : List Char
it : Iterator
h : ValidFor l r it
⊢ it.remainingToString = { data := r }
state_after: case refl
l r : List Char
h : ValidFor l r { s := { data := l.reverseAux r }, i := { byteIdx := utf8Len l } }
⊢ { s := { data := l.reverseAux r }, i := { byteIdx := utf8Len l } }.remainingToString = { data := r }

tactic: simpa [Iterator.remainingToString, List.reverseAux_eq] using extract_of_valid l.reverse r []
state_before: case refl
l r : List Char
h : ValidFor l r { s := { data := l.reverseAux r }, i := { byteIdx := utf8Len l } }
⊢ { s := { data := l.reverseAux r }, i := { byteIdx := utf8Len l } }.remainingToString = { data := r }
state_after: no goals
Theorem: SimpleGraph.Subgraph.deleteVerts_empty
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: simp [deleteVerts]
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' : G.Subgraph
s : Set V
⊢ G'.deleteVerts ∅ = G'
state_after: no goals
Theorem: Filter.smallSets_eq_generate
File: Mathlib/Order/Filter/SmallSets.lean

tactic: simp_rw [generate_eq_biInf, smallSets, iInf_image, Filter.lift', Filter.lift, Function.comp_apply,
  Filter.mem_sets]
state_before: α : Type u_1
β : Type u_2
ι : Sort u_3
l l' la : Filter α
lb : Filter β
f : Filter α
⊢ f.smallSets = generate (powerset '' f.sets)
state_after: no goals
Theorem: Filter.HasBasis.lift'
File: Mathlib/Order/Filter/Lift.lean

tactic: simp only [exists_const, true_and, comp]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Sort u_4
f f₁ f₂ : Filter α
h h₁ h₂ : Set α → Set β
ι : Sort u_5
p : ι → Prop
s : ι → Set α
hf : f.HasBasis p s
hh : Monotone h
t : Set β
⊢ (∃ i, p i ∧ ∃ x, True ∧ h (s i) ⊆ t) ↔ ∃ i, p i ∧ (h ∘ s) i ⊆ t
state_after: no goals
Theorem: CategoryTheory.strongMono_comp
File: Mathlib/CategoryTheory/Limits/Shapes/StrongEpi.lean

tactic: intros
state_before: C : Type u
inst✝² : Category.{v, u} C
P Q R : C
f : P ⟶ Q
g : Q ⟶ R
inst✝¹ : StrongMono f
inst✝ : StrongMono g
⊢ ∀ ⦃X Y : C⦄ (z : X ⟶ Y) [inst : Epi z], HasLiftingProperty z (f ≫ g)
state_after: C : Type u
inst✝³ : Category.{v, u} C
P Q R : C
f : P ⟶ Q
g : Q ⟶ R
inst✝² : StrongMono f
inst✝¹ : StrongMono g
X✝ Y✝ : C
z✝ : X✝ ⟶ Y✝
inst✝ : Epi z✝
⊢ HasLiftingProperty z✝ (f ≫ g)

tactic: infer_instance
state_before: C : Type u
inst✝³ : Category.{v, u} C
P Q R : C
f : P ⟶ Q
g : Q ⟶ R
inst✝² : StrongMono f
inst✝¹ : StrongMono g
X✝ Y✝ : C
z✝ : X✝ ⟶ Y✝
inst✝ : Epi z✝
⊢ HasLiftingProperty z✝ (f ≫ g)
state_after: no goals
Theorem: AffineSubspace.isPreconnected_setOf_wSameSide
File: Mathlib/Analysis/Convex/Side.lean

tactic: rcases Set.eq_empty_or_nonempty (s : Set P) with (h | h)
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
⊢ IsPreconnected {y | s.WSameSide x y}
state_after: case inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
h : ↑s = ∅
⊢ IsPreconnected {y | s.WSameSide x y}

case inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
h : (↑s).Nonempty
⊢ IsPreconnected {y | s.WSameSide x y}

tactic: rw [coe_eq_bot_iff] at h
state_before: case inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
h : ↑s = ∅
⊢ IsPreconnected {y | s.WSameSide x y}
state_after: case inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
h : s = ⊥
⊢ IsPreconnected {y | s.WSameSide x y}

tactic: simp only [h, not_wSameSide_bot]
state_before: case inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
h : s = ⊥
⊢ IsPreconnected {y | s.WSameSide x y}
state_after: case inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
h : s = ⊥
⊢ IsPreconnected {y | False}

tactic: exact isPreconnected_empty
state_before: case inl
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
h : s = ⊥
⊢ IsPreconnected {y | False}
state_after: no goals

tactic: exact (isConnected_setOf_wSameSide x h).isPreconnected
state_before: case inr
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
h : (↑s).Nonempty
⊢ IsPreconnected {y | s.WSameSide x y}
state_after: no goals
Theorem: CategoryTheory.eqToHom_trans
File: Mathlib/CategoryTheory/EqToHom.lean

tactic: cases p
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
X Y Z : C
p : X = Y
q : Y = Z
⊢ eqToHom p ≫ eqToHom q = eqToHom ⋯
state_after: case refl
C : Type u₁
inst✝ : Category.{v₁, u₁} C
X Z : C
q : X = Z
⊢ eqToHom ⋯ ≫ eqToHom q = eqToHom ⋯

tactic: cases q
state_before: case refl
C : Type u₁
inst✝ : Category.{v₁, u₁} C
X Z : C
q : X = Z
⊢ eqToHom ⋯ ≫ eqToHom q = eqToHom ⋯
state_after: case refl.refl
C : Type u₁
inst✝ : Category.{v₁, u₁} C
X : C
⊢ eqToHom ⋯ ≫ eqToHom ⋯ = eqToHom ⋯

tactic: simp
state_before: case refl.refl
C : Type u₁
inst✝ : Category.{v₁, u₁} C
X : C
⊢ eqToHom ⋯ ≫ eqToHom ⋯ = eqToHom ⋯
state_after: no goals