1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: ENNReal.div_zero
File: Mathlib/Data/ENNReal/Inv.lean

tactic: simp [div_eq_mul_inv, h]
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
h : a ≠ 0
⊢ a / 0 = ⊤
state_after: no goals
Theorem: List.ext_get?'
File: Mathlib/Data/List/Basic.lean

tactic: apply ext
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ l₁ l₂ : List α
h' : ∀ (n : ℕ), n < max l₁.length l₂.length → l₁.get? n = l₂.get? n
⊢ l₁ = l₂
state_after: case a
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ l₁ l₂ : List α
h' : ∀ (n : ℕ), n < max l₁.length l₂.length → l₁.get? n = l₂.get? n
⊢ ∀ (n : ℕ), l₁.get? n = l₂.get? n

tactic: intro n
state_before: case a
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ l₁ l₂ : List α
h' : ∀ (n : ℕ), n < max l₁.length l₂.length → l₁.get? n = l₂.get? n
⊢ ∀ (n : ℕ), l₁.get? n = l₂.get? n
state_after: case a
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ l₁ l₂ : List α
h' : ∀ (n : ℕ), n < max l₁.length l₂.length → l₁.get? n = l₂.get? n
n : ℕ
⊢ l₁.get? n = l₂.get? n

tactic: rcases Nat.lt_or_ge n <| max l₁.length l₂.length with hn | hn
state_before: case a
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ l₁ l₂ : List α
h' : ∀ (n : ℕ), n < max l₁.length l₂.length → l₁.get? n = l₂.get? n
n : ℕ
⊢ l₁.get? n = l₂.get? n
state_after: case a.inl
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ l₁ l₂ : List α
h' : ∀ (n : ℕ), n < max l₁.length l₂.length → l₁.get? n = l₂.get? n
n : ℕ
hn : n < max l₁.length l₂.length
⊢ l₁.get? n = l₂.get? n

case a.inr
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ l₁ l₂ : List α
h' : ∀ (n : ℕ), n < max l₁.length l₂.length → l₁.get? n = l₂.get? n
n : ℕ
hn : n ≥ max l₁.length l₂.length
⊢ l₁.get? n = l₂.get? n

tactic: exact h' n hn
state_before: case a.inl
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ l₁ l₂ : List α
h' : ∀ (n : ℕ), n < max l₁.length l₂.length → l₁.get? n = l₂.get? n
n : ℕ
hn : n < max l₁.length l₂.length
⊢ l₁.get? n = l₂.get? n
state_after: no goals

tactic: simp_all [Nat.max_le, getElem?_eq_none]
state_before: case a.inr
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ l₁ l₂ : List α
h' : ∀ (n : ℕ), n < max l₁.length l₂.length → l₁.get? n = l₂.get? n
n : ℕ
hn : n ≥ max l₁.length l₂.length
⊢ l₁.get? n = l₂.get? n
state_after: no goals
Theorem: heq_rec_iff_heq
File: Mathlib/Logic/Basic.lean

tactic: subst e
state_before: α : Sort u_2
β : Sort u_1
a b : α
C : α → Sort u_1
x : β
y : C a
e : a = b
⊢ HEq x (e ▸ y) ↔ HEq x y
state_after: α : Sort u_2
β : Sort u_1
a : α
C : α → Sort u_1
x : β
y : C a
⊢ HEq x (⋯ ▸ y) ↔ HEq x y

tactic: rfl
state_before: α : Sort u_2
β : Sort u_1
a : α
C : α → Sort u_1
x : β
y : C a
⊢ HEq x (⋯ ▸ y) ↔ HEq x y
state_after: no goals
Theorem: QuadraticForm.polar_smul_right_of_tower
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: rw [← IsScalarTower.algebraMap_smul R a y, polar_smul_right, Algebra.smul_def]
state_before: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
Q : QuadraticForm R M
inst✝³ : CommSemiring S
inst✝² : Algebra S R
inst✝¹ : Module S M
inst✝ : IsScalarTower S R M
a : S
x y : M
⊢ polar (⇑Q) x (a • y) = a • polar (⇑Q) x y
state_after: no goals
Theorem: CategoryTheory.ProjectiveResolution.homotopyEquiv_hom_π
File: Mathlib/CategoryTheory/Abelian/ProjectiveResolution.lean

tactic: simp [homotopyEquiv]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Abelian C
X : C
P Q : ProjectiveResolution X
⊢ (P.homotopyEquiv Q).hom ≫ Q.π = P.π
state_after: no goals
Theorem: Finset.prod_fiberwise_of_maps_to
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: rw [← prod_disjiUnion, disjiUnion_filter_eq_of_maps_to h]
state_before: ι✝ : Type u_1
κ✝ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α✝
a : α✝
f✝¹ g✝¹ : α✝ → β
inst✝² : CommMonoid β
ι : Type u_6
κ : Type u_7
α : Type u_8
inst✝¹ : CommMonoid α
s : Finset ι
t : Finset κ
f✝ : ι → α
g✝ : κ → α
inst✝ : DecidableEq κ
g : ι → κ
h : ∀ i ∈ s, g i ∈ t
f : ι → α
⊢ ∏ j ∈ t, ∏ i ∈ filter (fun i => g i = j) s, f i = ∏ i ∈ s, f i
state_after: no goals
Theorem: Matroid.exists_basis_subset_basis
File: Mathlib/Data/Matroid/Basic.lean

tactic: obtain ⟨I, hI⟩ := M.exists_basis X (hXY.trans hY)
state_before: α : Type u_1
M✝ : Matroid α
X Y : Set α
M : Matroid α
hXY : X ⊆ Y
hY : autoParam (Y ⊆ M.E) _auto✝
⊢ ∃ I J, M.Basis I X ∧ M.Basis J Y ∧ I ⊆ J
state_after: case intro
α : Type u_1
M✝ : Matroid α
X Y : Set α
M : Matroid α
hXY : X ⊆ Y
hY : autoParam (Y ⊆ M.E) _auto✝
I : Set α
hI : M.Basis I X
⊢ ∃ I J, M.Basis I X ∧ M.Basis J Y ∧ I ⊆ J

tactic: obtain ⟨J, hJ, hIJ⟩ := hI.indep.subset_basis_of_subset (hI.subset.trans hXY)
state_before: case intro
α : Type u_1
M✝ : Matroid α
X Y : Set α
M : Matroid α
hXY : X ⊆ Y
hY : autoParam (Y ⊆ M.E) _auto✝
I : Set α
hI : M.Basis I X
⊢ ∃ I J, M.Basis I X ∧ M.Basis J Y ∧ I ⊆ J
state_after: case intro.intro.intro
α : Type u_1
M✝ : Matroid α
X Y : Set α
M : Matroid α
hXY : X ⊆ Y
hY : autoParam (Y ⊆ M.E) _auto✝
I : Set α
hI : M.Basis I X
J : Set α
hJ : M.Basis J Y
hIJ : I ⊆ J
⊢ ∃ I J, M.Basis I X ∧ M.Basis J Y ∧ I ⊆ J

tactic: exact ⟨_, _, hI, hJ, hIJ⟩
state_before: case intro.intro.intro
α : Type u_1
M✝ : Matroid α
X Y : Set α
M : Matroid α
hXY : X ⊆ Y
hY : autoParam (Y ⊆ M.E) _auto✝
I : Set α
hI : M.Basis I X
J : Set α
hJ : M.Basis J Y
hIJ : I ⊆ J
⊢ ∃ I J, M.Basis I X ∧ M.Basis J Y ∧ I ⊆ J
state_after: no goals
Theorem: Turing.Tape.move_right_left
File: Mathlib/Computability/TuringMachine.lean

tactic: cases T
state_before: Γ : Type u_1
inst✝ : Inhabited Γ
T : Tape Γ
⊢ move Dir.left (move Dir.right T) = T
state_after: case mk
Γ : Type u_1
inst✝ : Inhabited Γ
head✝ : Γ
left✝ right✝ : ListBlank Γ
⊢ move Dir.left (move Dir.right { head := head✝, left := left✝, right := right✝ }) =
    { head := head✝, left := left✝, right := right✝ }

tactic: simp [Tape.move]
state_before: case mk
Γ : Type u_1
inst✝ : Inhabited Γ
head✝ : Γ
left✝ right✝ : ListBlank Γ
⊢ move Dir.left (move Dir.right { head := head✝, left := left✝, right := right✝ }) =
    { head := head✝, left := left✝, right := right✝ }
state_after: no goals
Theorem: CategoryTheory.Limits.Cofork.ofCocone_ι
File: Mathlib/CategoryTheory/Limits/Shapes/Equalizers.lean

tactic: aesop
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : C
f g : X ⟶ Y
F : WalkingParallelPair ⥤ C
t : Cocone F
j : WalkingParallelPair
⊢ (parallelPair (F.map left) (F.map right)).obj j = F.obj j
state_after: no goals
Theorem: ball_pi
File: Mathlib/Topology/MetricSpace/Pseudo/Constructions.lean

tactic: ext p
state_before: α : Type u_1
β : Type u_2
inst✝² : PseudoMetricSpace α
π : β → Type u_3
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoMetricSpace (π b)
x : (b : β) → π b
r : ℝ
hr : 0 < r
⊢ ball x r = Set.univ.pi fun b => ball (x b) r
state_after: case h
α : Type u_1
β : Type u_2
inst✝² : PseudoMetricSpace α
π : β → Type u_3
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoMetricSpace (π b)
x : (b : β) → π b
r : ℝ
hr : 0 < r
p : (b : β) → π b
⊢ p ∈ ball x r ↔ p ∈ Set.univ.pi fun b => ball (x b) r

tactic: simp [dist_pi_lt_iff hr]
state_before: case h
α : Type u_1
β : Type u_2
inst✝² : PseudoMetricSpace α
π : β → Type u_3
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoMetricSpace (π b)
x : (b : β) → π b
r : ℝ
hr : 0 < r
p : (b : β) → π b
⊢ p ∈ ball x r ↔ p ∈ Set.univ.pi fun b => ball (x b) r
state_after: no goals
Theorem: isLowerSet_iff_Iic_subset
File: Mathlib/Order/UpperLower/Basic.lean

tactic: simp [IsLowerSet, subset_def, @forall_swap (_ ∈ s)]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s : Set α
p : α → Prop
a : α
⊢ IsLowerSet s ↔ ∀ ⦃a : α⦄, a ∈ s → Iic a ⊆ s
state_after: no goals
Theorem: equivShrink_sub
File: Mathlib/Logic/Small/Group.lean

tactic: rw [Equiv.sub_def]
state_before: α : Type u_1
inst✝¹ : Sub α
inst✝ : Small.{u_2, u_1} α
x y : α
⊢ (equivShrink α) (x - y) = (equivShrink α) x - (equivShrink α) y
state_after: α : Type u_1
inst✝¹ : Sub α
inst✝ : Small.{u_2, u_1} α
x y : α
⊢ (equivShrink α) (x - y) =
    (equivShrink α).symm.symm ((equivShrink α).symm ((equivShrink α) x) - (equivShrink α).symm ((equivShrink α) y))

tactic: simp
state_before: α : Type u_1
inst✝¹ : Sub α
inst✝ : Small.{u_2, u_1} α
x y : α
⊢ (equivShrink α) (x - y) =
    (equivShrink α).symm.symm ((equivShrink α).symm ((equivShrink α) x) - (equivShrink α).symm ((equivShrink α) y))
state_after: no goals
Theorem: Composition.boundary_last
File: Mathlib/Combinatorics/Enumerative/Composition.lean

tactic: simp [boundary, Fin.ext_iff]
state_before: n : ℕ
c : Composition n
⊢ c.boundary (Fin.last c.length) = Fin.last n
state_after: no goals
Theorem: Mathlib.Tactic.Ring.pow_atom
File: Mathlib/Tactic/Ring/Basic.lean

tactic: simp
state_before: u : Lean.Level
R : Type u_1
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a : R
b : ℕ
⊢ a ^ b = a ^ b * Nat.rawCast 1 + 0
state_after: no goals
Theorem: Nat.two_dvd_centralBinom_of_one_le
File: Mathlib/Data/Nat/Choose/Central.lean

tactic: rw [← Nat.succ_pred_eq_of_pos h]
state_before: n : ℕ
h : 0 < n
⊢ 2 ∣ n.centralBinom
state_after: n : ℕ
h : 0 < n
⊢ 2 ∣ n.pred.succ.centralBinom

tactic: exact two_dvd_centralBinom_succ n.pred
state_before: n : ℕ
h : 0 < n
⊢ 2 ∣ n.pred.succ.centralBinom
state_after: no goals
Theorem: Nat.div_lt_div_of_lt_of_dvd
File: Mathlib/Data/Nat/Defs.lean

tactic: rw [Nat.lt_div_iff_mul_lt hdb]
state_before: a✝ b✝ c d✝ m n k : ℕ
p q : ℕ → Prop
a b d : ℕ
hdb : d ∣ b
h : a < b
⊢ a / d < b / d
state_after: a✝ b✝ c d✝ m n k : ℕ
p q : ℕ → Prop
a b d : ℕ
hdb : d ∣ b
h : a < b
⊢ d * (a / d) < b

tactic: exact lt_of_le_of_lt (mul_div_le a d) h
state_before: a✝ b✝ c d✝ m n k : ℕ
p q : ℕ → Prop
a b d : ℕ
hdb : d ∣ b
h : a < b
⊢ d * (a / d) < b
state_after: no goals
Theorem: SimpleGraph.not_adj_replaceVertex_same
File: Mathlib/Combinatorics/SimpleGraph/Operations.lean

tactic: simp [replaceVertex]
state_before: V : Type u_1
inst✝ : DecidableEq V
G : SimpleGraph V
s t : V
⊢ ¬(G.replaceVertex s t).Adj s t
state_after: no goals
Theorem: CategoryTheory.MorphismProperty.isomorphisms.iff
File: Mathlib/CategoryTheory/MorphismProperty/Basic.lean

tactic: rfl
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u_1
inst✝ : Category.{?u.26813, u_1} D
X Y : C
f : X ⟶ Y
⊢ isomorphisms C f ↔ IsIso f
state_after: no goals
Theorem: essSup_mono_measure
File: Mathlib/MeasureTheory/Function/EssSup.lean

tactic: refine limsup_le_limsup_of_le (Measure.ae_le_iff_absolutelyContinuous.mpr hμν) ?_ ?_
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : CompleteLattice β
f : α → β
hμν : ν ≪ μ
⊢ essSup f ν ≤ essSup f μ
state_after: case refine_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : CompleteLattice β
f : α → β
hμν : ν ≪ μ
⊢ IsCoboundedUnder (fun x x_1 => x ≤ x_1) (ae ν) f

case refine_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : CompleteLattice β
f : α → β
hμν : ν ≪ μ
⊢ IsBoundedUnder (fun x x_1 => x ≤ x_1) (ae μ) f

tactic: all_goals isBoundedDefault
state_before: case refine_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : CompleteLattice β
f : α → β
hμν : ν ≪ μ
⊢ IsCoboundedUnder (fun x x_1 => x ≤ x_1) (ae ν) f

case refine_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : CompleteLattice β
f : α → β
hμν : ν ≪ μ
⊢ IsBoundedUnder (fun x x_1 => x ≤ x_1) (ae μ) f
state_after: no goals

tactic: isBoundedDefault
state_before: case refine_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : CompleteLattice β
f : α → β
hμν : ν ≪ μ
⊢ IsBoundedUnder (fun x x_1 => x ≤ x_1) (ae μ) f
state_after: no goals
Theorem: BoundedContinuousFunction.norm_integral_le_mul_norm
File: Mathlib/MeasureTheory/Integral/BoundedContinuousFunction.lean

tactic: calc  ‖∫ x, f x ∂μ‖
  _ ≤ ∫ x, ‖f x‖ ∂μ                       := by exact norm_integral_le_integral_norm _
  _ ≤ ∫ _, ‖f‖ ∂μ                         := ?_
  _ = ENNReal.toReal (μ Set.univ) • ‖f‖   := by rw [integral_const]
state_before: X : Type u_1
inst✝⁸ : MeasurableSpace X
inst✝⁷ : TopologicalSpace X
inst✝⁶ : OpensMeasurableSpace X
μ : Measure X
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : SecondCountableTopology E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : NormedSpace ℝ E
inst✝ : IsFiniteMeasure μ
f : X →ᵇ E
⊢ ‖∫ (x : X), f x ∂μ‖ ≤ (μ Set.univ).toReal * ‖f‖
state_after: X : Type u_1
inst✝⁸ : MeasurableSpace X
inst✝⁷ : TopologicalSpace X
inst✝⁶ : OpensMeasurableSpace X
μ : Measure X
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : SecondCountableTopology E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : NormedSpace ℝ E
inst✝ : IsFiniteMeasure μ
f : X →ᵇ E
⊢ ∫ (x : X), ‖f x‖ ∂μ ≤ ∫ (x : X), ‖f‖ ∂μ

tactic: apply integral_mono _ (integrable_const ‖f‖) (fun x ↦ f.norm_coe_le_norm x)
state_before: X : Type u_1
inst✝⁸ : MeasurableSpace X
inst✝⁷ : TopologicalSpace X
inst✝⁶ : OpensMeasurableSpace X
μ : Measure X
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : SecondCountableTopology E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : NormedSpace ℝ E
inst✝ : IsFiniteMeasure μ
f : X →ᵇ E
⊢ ∫ (x : X), ‖f x‖ ∂μ ≤ ∫ (x : X), ‖f‖ ∂μ
state_after: X : Type u_1
inst✝⁸ : MeasurableSpace X
inst✝⁷ : TopologicalSpace X
inst✝⁶ : OpensMeasurableSpace X
μ : Measure X
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : SecondCountableTopology E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : NormedSpace ℝ E
inst✝ : IsFiniteMeasure μ
f : X →ᵇ E
⊢ Integrable (fun x => ‖f x‖) μ

tactic: exact (integrable_norm_iff f.continuous.measurable.aestronglyMeasurable).mpr (f.integrable μ)
state_before: X : Type u_1
inst✝⁸ : MeasurableSpace X
inst✝⁷ : TopologicalSpace X
inst✝⁶ : OpensMeasurableSpace X
μ : Measure X
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : SecondCountableTopology E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : NormedSpace ℝ E
inst✝ : IsFiniteMeasure μ
f : X →ᵇ E
⊢ Integrable (fun x => ‖f x‖) μ
state_after: no goals

tactic: exact norm_integral_le_integral_norm _
state_before: X : Type u_1
inst✝⁸ : MeasurableSpace X
inst✝⁷ : TopologicalSpace X
inst✝⁶ : OpensMeasurableSpace X
μ : Measure X
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : SecondCountableTopology E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : NormedSpace ℝ E
inst✝ : IsFiniteMeasure μ
f : X →ᵇ E
⊢ ‖∫ (x : X), f x ∂μ‖ ≤ ∫ (x : X), ‖f x‖ ∂μ
state_after: no goals

tactic: rw [integral_const]
state_before: X : Type u_1
inst✝⁸ : MeasurableSpace X
inst✝⁷ : TopologicalSpace X
inst✝⁶ : OpensMeasurableSpace X
μ : Measure X
E : Type u_2
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : SecondCountableTopology E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
inst✝¹ : NormedSpace ℝ E
inst✝ : IsFiniteMeasure μ
f : X →ᵇ E
⊢ ∫ (x : X), ‖f‖ ∂μ = (μ Set.univ).toReal • ‖f‖
state_after: no goals
Theorem: MeasureTheory.Measure.mconv_dirac_one
File: Mathlib/MeasureTheory/Group/Convolution.lean

tactic: unfold mconv
state_before: M : Type u_1
inst✝³ : Monoid M
inst✝² : MeasurableSpace M
inst✝¹ : MeasurableMul₂ M
μ : Measure M
inst✝ : SFinite μ
⊢ μ ∗ dirac 1 = μ
state_after: M : Type u_1
inst✝³ : Monoid M
inst✝² : MeasurableSpace M
inst✝¹ : MeasurableMul₂ M
μ : Measure M
inst✝ : SFinite μ
⊢ map (fun x => x.1 * x.2) (μ.prod (dirac 1)) = μ

tactic: rw [MeasureTheory.Measure.prod_dirac, map_map]
state_before: M : Type u_1
inst✝³ : Monoid M
inst✝² : MeasurableSpace M
inst✝¹ : MeasurableMul₂ M
μ : Measure M
inst✝ : SFinite μ
⊢ map (fun x => x.1 * x.2) (μ.prod (dirac 1)) = μ
state_after: M : Type u_1
inst✝³ : Monoid M
inst✝² : MeasurableSpace M
inst✝¹ : MeasurableMul₂ M
μ : Measure M
inst✝ : SFinite μ
⊢ map ((fun x => x.1 * x.2) ∘ fun x => (x, 1)) μ = μ

case hg
M : Type u_1
inst✝³ : Monoid M
inst✝² : MeasurableSpace M
inst✝¹ : MeasurableMul₂ M
μ : Measure M
inst✝ : SFinite μ
⊢ Measurable fun x => x.1 * x.2

case hf
M : Type u_1
inst✝³ : Monoid M
inst✝² : MeasurableSpace M
inst✝¹ : MeasurableMul₂ M
μ : Measure M
inst✝ : SFinite μ
⊢ Measurable fun x => (x, 1)

tactic: apply Measurable.prod
state_before: case hf
M : Type u_1
inst✝³ : Monoid M
inst✝² : MeasurableSpace M
inst✝¹ : MeasurableMul₂ M
μ : Measure M
inst✝ : SFinite μ
⊢ Measurable fun x => (x, 1)
state_after: case hf.hf₁
M : Type u_1
inst✝³ : Monoid M
inst✝² : MeasurableSpace M
inst✝¹ : MeasurableMul₂ M
μ : Measure M
inst✝ : SFinite μ
⊢ Measurable fun a => (a, 1).1

case hf.hf₂
M : Type u_1
inst✝³ : Monoid M
inst✝² : MeasurableSpace M
inst✝¹ : MeasurableMul₂ M
μ : Measure M
inst✝ : SFinite μ
⊢ Measurable fun a => (a, 1).2

tactic: simp only [Function.comp_def, mul_one, map_id']
state_before: M : Type u_1
inst✝³ : Monoid M
inst✝² : MeasurableSpace M
inst✝¹ : MeasurableMul₂ M
μ : Measure M
inst✝ : SFinite μ
⊢ map ((fun x => x.1 * x.2) ∘ fun x => (x, 1)) μ = μ
state_after: no goals

tactic: exact Measurable.mul measurable_fst measurable_snd
state_before: case hg
M : Type u_1
inst✝³ : Monoid M
inst✝² : MeasurableSpace M
inst✝¹ : MeasurableMul₂ M
μ : Measure M
inst✝ : SFinite μ
⊢ Measurable fun x => x.1 * x.2
state_after: no goals

tactic: apply measurable_id'
state_before: case hf.hf₁
M : Type u_1
inst✝³ : Monoid M
inst✝² : MeasurableSpace M
inst✝¹ : MeasurableMul₂ M
μ : Measure M
inst✝ : SFinite μ
⊢ Measurable fun a => (a, 1).1
state_after: no goals

tactic: exact measurable_const
state_before: case hf.hf₂
M : Type u_1
inst✝³ : Monoid M
inst✝² : MeasurableSpace M
inst✝¹ : MeasurableMul₂ M
μ : Measure M
inst✝ : SFinite μ
⊢ Measurable fun a => (a, 1).2
state_after: no goals
Theorem: String.leftpad_prefix
File: Mathlib/Data/String/Lemmas.lean

tactic: simp only [IsPrefix, replicate, leftpad, String.length, List.leftpad_prefix]
state_before: n : ℕ
c : Char
l : List Char
⊢ (replicate (n - { data := l }.length) c).IsPrefix (leftpad n c { data := l })
state_after: no goals
Theorem: Complex.Gamma_add_one
File: Mathlib/Analysis/SpecialFunctions/Gamma/Basic.lean

tactic: let n := ⌊1 - s.re⌋₊
state_before: s : ℂ
h2 : s ≠ 0
⊢ Gamma (s + 1) = s * Gamma s
state_after: s : ℂ
h2 : s ≠ 0
n : ℕ := ⌊1 - s.re⌋₊
⊢ Gamma (s + 1) = s * Gamma s

tactic: have t1 : -s.re < n := by simpa only [sub_sub_cancel_left] using Nat.sub_one_lt_floor (1 - s.re)
state_before: s : ℂ
h2 : s ≠ 0
n : ℕ := ⌊1 - s.re⌋₊
⊢ Gamma (s + 1) = s * Gamma s
state_after: s : ℂ
h2 : s ≠ 0
n : ℕ := ⌊1 - s.re⌋₊
t1 : -s.re < ↑n
⊢ Gamma (s + 1) = s * Gamma s

tactic: have t2 : -(s + 1).re < n := by rw [add_re, one_re]; linarith
state_before: s : ℂ
h2 : s ≠ 0
n : ℕ := ⌊1 - s.re⌋₊
t1 : -s.re < ↑n
⊢ Gamma (s + 1) = s * Gamma s
state_after: s : ℂ
h2 : s ≠ 0
n : ℕ := ⌊1 - s.re⌋₊
t1 : -s.re < ↑n
t2 : -(s + 1).re < ↑n
⊢ Gamma (s + 1) = s * Gamma s

tactic: rw [Gamma_eq_GammaAux s n t1, Gamma_eq_GammaAux (s + 1) n t2, GammaAux_recurrence1 s n t1]
state_before: s : ℂ
h2 : s ≠ 0
n : ℕ := ⌊1 - s.re⌋₊
t1 : -s.re < ↑n
t2 : -(s + 1).re < ↑n
⊢ Gamma (s + 1) = s * Gamma s
state_after: s : ℂ
h2 : s ≠ 0
n : ℕ := ⌊1 - s.re⌋₊
t1 : -s.re < ↑n
t2 : -(s + 1).re < ↑n
⊢ GammaAux n (s + 1) = s * (GammaAux n (s + 1) / s)

tactic: field_simp
state_before: s : ℂ
h2 : s ≠ 0
n : ℕ := ⌊1 - s.re⌋₊
t1 : -s.re < ↑n
t2 : -(s + 1).re < ↑n
⊢ GammaAux n (s + 1) = s * (GammaAux n (s + 1) / s)
state_after: no goals

tactic: simpa only [sub_sub_cancel_left] using Nat.sub_one_lt_floor (1 - s.re)
state_before: s : ℂ
h2 : s ≠ 0
n : ℕ := ⌊1 - s.re⌋₊
⊢ -s.re < ↑n
state_after: no goals

tactic: rw [add_re, one_re]
state_before: s : ℂ
h2 : s ≠ 0
n : ℕ := ⌊1 - s.re⌋₊
t1 : -s.re < ↑n
⊢ -(s + 1).re < ↑n
state_after: s : ℂ
h2 : s ≠ 0
n : ℕ := ⌊1 - s.re⌋₊
t1 : -s.re < ↑n
⊢ -(s.re + 1) < ↑n

tactic: linarith
state_before: s : ℂ
h2 : s ≠ 0
n : ℕ := ⌊1 - s.re⌋₊
t1 : -s.re < ↑n
⊢ -(s.re + 1) < ↑n
state_after: no goals
Theorem: Cardinal.card_ord
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: let ⟨r, _, e⟩ := ord_eq α
state_before: α✝ : Type u
β : Type u_1
γ : Type u_2
r : α✝ → α✝ → Prop
s : β → β → Prop
t : γ → γ → Prop
c : Cardinal.{u_3}
α : Type u_3
⊢ (ord ⟦α⟧).card = ⟦α⟧
state_after: α✝ : Type u
β : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s : β → β → Prop
t : γ → γ → Prop
c : Cardinal.{u_3}
α : Type u_3
r : α → α → Prop
w✝ : IsWellOrder α r
e : (#α).ord = type r
⊢ (ord ⟦α⟧).card = ⟦α⟧

tactic: simp only [mk'_def, e, card_type]
state_before: α✝ : Type u
β : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s : β → β → Prop
t : γ → γ → Prop
c : Cardinal.{u_3}
α : Type u_3
r : α → α → Prop
w✝ : IsWellOrder α r
e : (#α).ord = type r
⊢ (ord ⟦α⟧).card = ⟦α⟧
state_after: no goals
Theorem: CategoryTheory.ShortComplex.homology_π_ι
File: Mathlib/Algebra/Homology/ShortComplex/Homology.lean

tactic: dsimp only [homologyπ, 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.homologyπ ≫ S.homologyι = S.iCycles ≫ S.pOpcycles
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.leftHomologyπ ≫ S.leftHomologyIso.hom) ≫ S.rightHomologyIso.inv ≫ S.rightHomologyι = S.iCycles ≫ S.pOpcycles

tactic: simpa only [assoc, S.leftRightHomologyComparison_fac] using S.π_leftRightHomologyComparison_ι
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.leftHomologyπ ≫ S.leftHomologyIso.hom) ≫ S.rightHomologyIso.inv ≫ S.rightHomologyι = S.iCycles ≫ S.pOpcycles
state_after: no goals
Theorem: AffineSubspace.pointwise_vadd_direction
File: Mathlib/LinearAlgebra/AffineSpace/Pointwise.lean

tactic: rw [pointwise_vadd_eq_map, map_direction]
state_before: k : Type u_1
inst✝⁹ : Ring k
V : Type u_2
P : Type u_3
V₁ : Type u_4
P₁ : Type u_5
V₂ : Type u_6
P₂ : Type u_7
inst✝⁸ : AddCommGroup V
inst✝⁷ : Module k V
inst✝⁶ : AffineSpace V P
inst✝⁵ : AddCommGroup V₁
inst✝⁴ : Module k V₁
inst✝³ : AffineSpace V₁ P₁
inst✝² : AddCommGroup V₂
inst✝¹ : Module k V₂
inst✝ : AffineSpace V₂ P₂
v : V
s : AffineSubspace k P
⊢ (v +ᵥ s).direction = s.direction
state_after: k : Type u_1
inst✝⁹ : Ring k
V : Type u_2
P : Type u_3
V₁ : Type u_4
P₁ : Type u_5
V₂ : Type u_6
P₂ : Type u_7
inst✝⁸ : AddCommGroup V
inst✝⁷ : Module k V
inst✝⁶ : AffineSpace V P
inst✝⁵ : AddCommGroup V₁
inst✝⁴ : Module k V₁
inst✝³ : AffineSpace V₁ P₁
inst✝² : AddCommGroup V₂
inst✝¹ : Module k V₂
inst✝ : AffineSpace V₂ P₂
v : V
s : AffineSubspace k P
⊢ Submodule.map (↑(AffineEquiv.constVAdd k P v)).linear s.direction = s.direction

tactic: exact Submodule.map_id _
state_before: k : Type u_1
inst✝⁹ : Ring k
V : Type u_2
P : Type u_3
V₁ : Type u_4
P₁ : Type u_5
V₂ : Type u_6
P₂ : Type u_7
inst✝⁸ : AddCommGroup V
inst✝⁷ : Module k V
inst✝⁶ : AffineSpace V P
inst✝⁵ : AddCommGroup V₁
inst✝⁴ : Module k V₁
inst✝³ : AffineSpace V₁ P₁
inst✝² : AddCommGroup V₂
inst✝¹ : Module k V₂
inst✝ : AffineSpace V₂ P₂
v : V
s : AffineSubspace k P
⊢ Submodule.map (↑(AffineEquiv.constVAdd k P v)).linear s.direction = s.direction
state_after: no goals