1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.Limits.WidePushout.hom_eq_desc
File: Mathlib/CategoryTheory/Limits/Shapes/WidePullbacks.lean

tactic: rw [← Category.assoc]
state_before: J : Type w
C✝ : Type u
inst✝² : Category.{v, u} C✝
C : Type u
inst✝¹ : Category.{v, u} C
B : C
objs : J → C
arrows : (j : J) → B ⟶ objs j
inst✝ : HasWidePushout B objs arrows
X : C
f : B ⟶ X
fs : (j : J) → objs j ⟶ X
w : ∀ (j : J), arrows j ≫ fs j = f
g : widePushout B objs arrows ⟶ X
j : J
⊢ arrows j ≫ (fun j => ι arrows j ≫ g) j = head arrows ≫ g
state_after: J : Type w
C✝ : Type u
inst✝² : Category.{v, u} C✝
C : Type u
inst✝¹ : Category.{v, u} C
B : C
objs : J → C
arrows : (j : J) → B ⟶ objs j
inst✝ : HasWidePushout B objs arrows
X : C
f : B ⟶ X
fs : (j : J) → objs j ⟶ X
w : ∀ (j : J), arrows j ≫ fs j = f
g : widePushout B objs arrows ⟶ X
j : J
⊢ (arrows j ≫ ι arrows j) ≫ g = head arrows ≫ g

tactic: simp
state_before: J : Type w
C✝ : Type u
inst✝² : Category.{v, u} C✝
C : Type u
inst✝¹ : Category.{v, u} C
B : C
objs : J → C
arrows : (j : J) → B ⟶ objs j
inst✝ : HasWidePushout B objs arrows
X : C
f : B ⟶ X
fs : (j : J) → objs j ⟶ X
w : ∀ (j : J), arrows j ≫ fs j = f
g : widePushout B objs arrows ⟶ X
j : J
⊢ (arrows j ≫ ι arrows j) ≫ g = head arrows ≫ g
state_after: no goals

tactic: apply eq_desc_of_comp_eq
state_before: J : Type w
C✝ : Type u
inst✝² : Category.{v, u} C✝
C : Type u
inst✝¹ : Category.{v, u} C
B : C
objs : J → C
arrows : (j : J) → B ⟶ objs j
inst✝ : HasWidePushout B objs arrows
X : C
f : B ⟶ X
fs : (j : J) → objs j ⟶ X
w : ∀ (j : J), arrows j ≫ fs j = f
g : widePushout B objs arrows ⟶ X
⊢ g = desc (head arrows ≫ g) (fun j => ι arrows j ≫ g) ⋯
state_after: case a
J : Type w
C✝ : Type u
inst✝² : Category.{v, u} C✝
C : Type u
inst✝¹ : Category.{v, u} C
B : C
objs : J → C
arrows : (j : J) → B ⟶ objs j
inst✝ : HasWidePushout B objs arrows
X : C
f : B ⟶ X
fs : (j : J) → objs j ⟶ X
w : ∀ (j : J), arrows j ≫ fs j = f
g : widePushout B objs arrows ⟶ X
⊢ ∀ (j : J), ι arrows j ≫ g = ι arrows j ≫ g

case a
J : Type w
C✝ : Type u
inst✝² : Category.{v, u} C✝
C : Type u
inst✝¹ : Category.{v, u} C
B : C
objs : J → C
arrows : (j : J) → B ⟶ objs j
inst✝ : HasWidePushout B objs arrows
X : C
f : B ⟶ X
fs : (j : J) → objs j ⟶ X
w : ∀ (j : J), arrows j ≫ fs j = f
g : widePushout B objs arrows ⟶ X
⊢ head arrows ≫ g = head arrows ≫ g

tactic: aesop_cat
state_before: case a
J : Type w
C✝ : Type u
inst✝² : Category.{v, u} C✝
C : Type u
inst✝¹ : Category.{v, u} C
B : C
objs : J → C
arrows : (j : J) → B ⟶ objs j
inst✝ : HasWidePushout B objs arrows
X : C
f : B ⟶ X
fs : (j : J) → objs j ⟶ X
w : ∀ (j : J), arrows j ≫ fs j = f
g : widePushout B objs arrows ⟶ X
⊢ ∀ (j : J), ι arrows j ≫ g = ι arrows j ≫ g
state_after: no goals

tactic: rfl
state_before: case a
J : Type w
C✝ : Type u
inst✝² : Category.{v, u} C✝
C : Type u
inst✝¹ : Category.{v, u} C
B : C
objs : J → C
arrows : (j : J) → B ⟶ objs j
inst✝ : HasWidePushout B objs arrows
X : C
f : B ⟶ X
fs : (j : J) → objs j ⟶ X
w : ∀ (j : J), arrows j ≫ fs j = f
g : widePushout B objs arrows ⟶ X
⊢ head arrows ≫ g = head arrows ≫ g
state_after: no goals
Theorem: Substring.Valid.get
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

tactic: let ⟨l, m, r, h⟩ := h.validFor
state_before: m₁ : List Char
c : Char
m₂ : List Char
x✝ : Substring
h : x✝.Valid
e : x✝.toString.data = m₁ ++ c :: m₂
⊢ x✝.get { byteIdx := utf8Len m₁ } = c
state_after: m₁ : List Char
c : Char
m₂ : List Char
x✝ : Substring
h✝ : x✝.Valid
e : x✝.toString.data = m₁ ++ c :: m₂
l m r : List Char
h : ValidFor l m r x✝
⊢ x✝.get { byteIdx := utf8Len m₁ } = c

tactic: simp only [h.toString] at e
state_before: m₁ : List Char
c : Char
m₂ : List Char
x✝ : Substring
h✝ : x✝.Valid
e : x✝.toString.data = m₁ ++ c :: m₂
l m r : List Char
h : ValidFor l m r x✝
⊢ x✝.get { byteIdx := utf8Len m₁ } = c
state_after: m₁ : List Char
c : Char
m₂ : List Char
x✝ : Substring
h✝ : x✝.Valid
l m r : List Char
h : ValidFor l m r x✝
e : m = m₁ ++ c :: m₂
⊢ x✝.get { byteIdx := utf8Len m₁ } = c

tactic: subst e
state_before: m₁ : List Char
c : Char
m₂ : List Char
x✝ : Substring
h✝ : x✝.Valid
l m r : List Char
h : ValidFor l m r x✝
e : m = m₁ ++ c :: m₂
⊢ x✝.get { byteIdx := utf8Len m₁ } = c
state_after: m₁ : List Char
c : Char
m₂ : List Char
x✝ : Substring
h✝ : x✝.Valid
l r : List Char
h : ValidFor l (m₁ ++ c :: m₂) r x✝
⊢ x✝.get { byteIdx := utf8Len m₁ } = c

tactic: simp [h.get]
state_before: m₁ : List Char
c : Char
m₂ : List Char
x✝ : Substring
h✝ : x✝.Valid
l r : List Char
h : ValidFor l (m₁ ++ c :: m₂) r x✝
⊢ x✝.get { byteIdx := utf8Len m₁ } = c
state_after: no goals
Theorem: MeasureTheory.AEDisjoint.union_right_iff
File: Mathlib/MeasureTheory/Measure/AEDisjoint.lean

tactic: simp [union_eq_iUnion, and_comm]
state_before: ι : Type u_1
α : Type u_2
m : MeasurableSpace α
μ : Measure α
s t u v : Set α
⊢ AEDisjoint μ s (t ∪ u) ↔ AEDisjoint μ s t ∧ AEDisjoint μ s u
state_after: no goals
Theorem: inv_mul_eq_of_eq_mul
File: Mathlib/Algebra/Group/Basic.lean

tactic: simp [h]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Group G
a b c d : G
n : ℤ
h : b = a * c
⊢ a⁻¹ * b = c
state_after: no goals
Theorem: Fintype.prod_ite_eq'
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: rw [Finset.prod_ite_eq', if_pos (mem_univ _)]
state_before: ι✝ : Type u_1
κ✝ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α✝
a : α✝
f✝ g : α✝ → β
ι : Type u_6
κ : Type u_7
α : Type u_8
inst✝³ : Fintype ι
inst✝² : Fintype κ
inst✝¹ : CommMonoid α
inst✝ : DecidableEq ι
i : ι
f : ι → α
⊢ (∏ j : ι, if j = i then f j else 1) = f i
state_after: no goals
Theorem: exists_gcd_eq_mul_add_mul
File: Mathlib/RingTheory/PrincipalIdealDomain.lean

tactic: rw [← gcd_dvd_iff_exists]
state_before: R : Type u
M : Type v
inst✝³ : CommRing R
inst✝² : IsDomain R
inst✝¹ : IsBezout R
inst✝ : GCDMonoid R
a b : R
⊢ ∃ x y, gcd a b = a * x + b * y
state_after: no goals
Theorem: isSepClosed_iff_isPurelyInseparable_algebraicClosure
File: Mathlib/FieldTheory/PurelyInseparable.lean

tactic: haveI := IsAlgClosure.alg_closed F (K := E)
state_before: F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
inst✝ : IsAlgClosure F E
H : IsPurelyInseparable F E
⊢ IsSepClosed F
state_after: F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
inst✝ : IsAlgClosure F E
H : IsPurelyInseparable F E
this : IsAlgClosed E
⊢ IsSepClosed F

tactic: rwa [← separableClosure.eq_bot_iff, IsSepClosed.separableClosure_eq_bot_iff] at H
state_before: F : Type u
E : Type v
inst✝⁵ : Field F
inst✝⁴ : Field E
inst✝³ : Algebra F E
K : Type w
inst✝² : Field K
inst✝¹ : Algebra F K
inst✝ : IsAlgClosure F E
H : IsPurelyInseparable F E
this : IsAlgClosed E
⊢ IsSepClosed F
state_after: no goals
Theorem: Fin.zero_eq_one_iff
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [eq_comm, one_eq_zero_iff]
state_before: n m : ℕ
inst✝ : NeZero n
⊢ 0 = 1 ↔ n = 1
state_after: no goals
Theorem: borel_eq_top_of_countable
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Basic.lean

tactic: refine top_le_iff.1 fun s _ => biUnion_of_singleton s ▸ ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
γ₂ : Type u_4
δ : Type u_5
ι : Sort y
s t u : Set α
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : Countable α
⊢ borel α = ⊤
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
γ₂ : Type u_4
δ : Type u_5
ι : Sort y
s✝ t u : Set α
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : Countable α
s : Set α
x✝ : MeasurableSet s
⊢ MeasurableSet (⋃ x ∈ s, {x})

tactic: apply MeasurableSet.biUnion s.to_countable
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
γ₂ : Type u_4
δ : Type u_5
ι : Sort y
s✝ t u : Set α
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : Countable α
s : Set α
x✝ : MeasurableSet s
⊢ MeasurableSet (⋃ x ∈ s, {x})
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
γ₂ : Type u_4
δ : Type u_5
ι : Sort y
s✝ t u : Set α
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : Countable α
s : Set α
x✝ : MeasurableSet s
⊢ ∀ b ∈ s, MeasurableSet {b}

tactic: intro x _
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
γ₂ : Type u_4
δ : Type u_5
ι : Sort y
s✝ t u : Set α
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : Countable α
s : Set α
x✝ : MeasurableSet s
⊢ ∀ b ∈ s, MeasurableSet {b}
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
γ₂ : Type u_4
δ : Type u_5
ι : Sort y
s✝ t u : Set α
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : Countable α
s : Set α
x✝ : MeasurableSet s
x : α
a✝ : x ∈ s
⊢ MeasurableSet {x}

tactic: apply MeasurableSet.of_compl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
γ₂ : Type u_4
δ : Type u_5
ι : Sort y
s✝ t u : Set α
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : Countable α
s : Set α
x✝ : MeasurableSet s
x : α
a✝ : x ∈ s
⊢ MeasurableSet {x}
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
γ₂ : Type u_4
δ : Type u_5
ι : Sort y
s✝ t u : Set α
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : Countable α
s : Set α
x✝ : MeasurableSet s
x : α
a✝ : x ∈ s
⊢ MeasurableSet {x}ᶜ

tactic: apply GenerateMeasurable.basic
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
γ₂ : Type u_4
δ : Type u_5
ι : Sort y
s✝ t u : Set α
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : Countable α
s : Set α
x✝ : MeasurableSet s
x : α
a✝ : x ∈ s
⊢ MeasurableSet {x}ᶜ
state_after: case h.a
α : Type u_1
β : Type u_2
γ : Type u_3
γ₂ : Type u_4
δ : Type u_5
ι : Sort y
s✝ t u : Set α
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : Countable α
s : Set α
x✝ : MeasurableSet s
x : α
a✝ : x ∈ s
⊢ {x}ᶜ ∈ {s | IsOpen s}

tactic: exact isClosed_singleton.isOpen_compl
state_before: case h.a
α : Type u_1
β : Type u_2
γ : Type u_3
γ₂ : Type u_4
δ : Type u_5
ι : Sort y
s✝ t u : Set α
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : Countable α
s : Set α
x✝ : MeasurableSet s
x : α
a✝ : x ∈ s
⊢ {x}ᶜ ∈ {s | IsOpen s}
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.whisker_assoc
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: simp only [← id_tensorHom, ← tensorHom_id]
state_before: C : Type u
𝒞 : Category.{v, u} C
inst✝ : MonoidalCategory C
X Y Y' : C
f : Y ⟶ Y'
Z : C
⊢ (X ◁ f) ▷ Z = (α_ X Y Z).hom ≫ X ◁ f ▷ Z ≫ (α_ X Y' Z).inv
state_after: C : Type u
𝒞 : Category.{v, u} C
inst✝ : MonoidalCategory C
X Y Y' : C
f : Y ⟶ Y'
Z : C
⊢ (𝟙 X ⊗ f) ⊗ 𝟙 Z = (α_ X Y Z).hom ≫ (𝟙 X ⊗ f ⊗ 𝟙 Z) ≫ (α_ X Y' Z).inv

tactic: rw [← assoc, ← associator_naturality]
state_before: C : Type u
𝒞 : Category.{v, u} C
inst✝ : MonoidalCategory C
X Y Y' : C
f : Y ⟶ Y'
Z : C
⊢ (𝟙 X ⊗ f) ⊗ 𝟙 Z = (α_ X Y Z).hom ≫ (𝟙 X ⊗ f ⊗ 𝟙 Z) ≫ (α_ X Y' Z).inv
state_after: C : Type u
𝒞 : Category.{v, u} C
inst✝ : MonoidalCategory C
X Y Y' : C
f : Y ⟶ Y'
Z : C
⊢ (𝟙 X ⊗ f) ⊗ 𝟙 Z = (((𝟙 X ⊗ f) ⊗ 𝟙 Z) ≫ (α_ X Y' Z).hom) ≫ (α_ X Y' Z).inv

tactic: simp
state_before: C : Type u
𝒞 : Category.{v, u} C
inst✝ : MonoidalCategory C
X Y Y' : C
f : Y ⟶ Y'
Z : C
⊢ (𝟙 X ⊗ f) ⊗ 𝟙 Z = (((𝟙 X ⊗ f) ⊗ 𝟙 Z) ≫ (α_ X Y' Z).hom) ≫ (α_ X Y' Z).inv
state_after: no goals
Theorem: GaussianFourier.integral_cexp_neg_mul_sq_norm_add
File: Mathlib/Analysis/SpecialFunctions/Gaussian/FourierTransform.lean

tactic: let e := (stdOrthonormalBasis ℝ V).repr.symm
state_before: b : ℂ
V : Type u_1
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
hb : 0 < b.re
c : ℂ
w : V
⊢ ∫ (v : V), cexp (-b * ↑‖v‖ ^ 2 + c * ↑⟪w, v⟫_ℝ) =
    (↑π / b) ^ (↑(FiniteDimensional.finrank ℝ V) / 2) * cexp (c ^ 2 * ↑‖w‖ ^ 2 / (4 * b))
state_after: b : ℂ
V : Type u_1
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
hb : 0 < b.re
c : ℂ
w : V
e : EuclideanSpace ℝ (Fin (FiniteDimensional.finrank ℝ V)) ≃ₗᵢ[ℝ] V := (stdOrthonormalBasis ℝ V).repr.symm
⊢ ∫ (v : V), cexp (-b * ↑‖v‖ ^ 2 + c * ↑⟪w, v⟫_ℝ) =
    (↑π / b) ^ (↑(FiniteDimensional.finrank ℝ V) / 2) * cexp (c ^ 2 * ↑‖w‖ ^ 2 / (4 * b))

tactic: rw [← e.measurePreserving.integral_comp e.toHomeomorph.measurableEmbedding]
state_before: b : ℂ
V : Type u_1
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
hb : 0 < b.re
c : ℂ
w : V
e : EuclideanSpace ℝ (Fin (FiniteDimensional.finrank ℝ V)) ≃ₗᵢ[ℝ] V := (stdOrthonormalBasis ℝ V).repr.symm
⊢ ∫ (v : V), cexp (-b * ↑‖v‖ ^ 2 + c * ↑⟪w, v⟫_ℝ) =
    (↑π / b) ^ (↑(FiniteDimensional.finrank ℝ V) / 2) * cexp (c ^ 2 * ↑‖w‖ ^ 2 / (4 * b))
state_after: b : ℂ
V : Type u_1
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
hb : 0 < b.re
c : ℂ
w : V
e : EuclideanSpace ℝ (Fin (FiniteDimensional.finrank ℝ V)) ≃ₗᵢ[ℝ] V := (stdOrthonormalBasis ℝ V).repr.symm
⊢ ∫ (x : EuclideanSpace ℝ (Fin (FiniteDimensional.finrank ℝ V))), cexp (-b * ↑‖e x‖ ^ 2 + c * ↑⟪w, e x⟫_ℝ) ∂volume =
    (↑π / b) ^ (↑(FiniteDimensional.finrank ℝ V) / 2) * cexp (c ^ 2 * ↑‖w‖ ^ 2 / (4 * b))

tactic: convert integral_cexp_neg_mul_sq_norm_add_of_euclideanSpace
  hb c (e.symm w) <;> simp [LinearIsometryEquiv.inner_map_eq_flip]
state_before: b : ℂ
V : Type u_1
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
hb : 0 < b.re
c : ℂ
w : V
e : EuclideanSpace ℝ (Fin (FiniteDimensional.finrank ℝ V)) ≃ₗᵢ[ℝ] V := (stdOrthonormalBasis ℝ V).repr.symm
⊢ ∫ (x : EuclideanSpace ℝ (Fin (FiniteDimensional.finrank ℝ V))), cexp (-b * ↑‖e x‖ ^ 2 + c * ↑⟪w, e x⟫_ℝ) ∂volume =
    (↑π / b) ^ (↑(FiniteDimensional.finrank ℝ V) / 2) * cexp (c ^ 2 * ↑‖w‖ ^ 2 / (4 * b))
state_after: no goals
Theorem: gauge_gaugeRescale'
File: Mathlib/Analysis/Convex/GaugeRescale.lean

tactic: rw [gaugeRescale, gauge_smul_of_nonneg (div_nonneg (gauge_nonneg _) (gauge_nonneg _)),
  smul_eq_mul, div_mul_cancel₀ _ hx]
state_before: E : Type u_1
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : T1Space E
s t : Set E
x : E
hx : gauge t x ≠ 0
⊢ gauge t (gaugeRescale s t x) = gauge s x
state_after: no goals
Theorem: hom_chart
File: Mathlib/Geometry/Manifold/VectorBundle/Hom.lean

tactic: rw [FiberBundle.chartedSpace_chartAt, trans_apply, PartialHomeomorph.prod_apply,
  Trivialization.coe_coe, PartialHomeomorph.refl_apply, Function.id_def,
  hom_trivializationAt_apply]
state_before: 𝕜 : Type u_1
B : Type u_2
F₁ : Type u_3
F₂ : Type u_4
M : Type u_5
E₁ : B → Type u_6
E₂ : B → Type u_7
inst✝²⁹ : NontriviallyNormedField 𝕜
inst✝²⁸ : (x : B) → AddCommGroup (E₁ x)
inst✝²⁷ : (x : B) → Module 𝕜 (E₁ x)
inst✝²⁶ : NormedAddCommGroup F₁
inst✝²⁵ : NormedSpace 𝕜 F₁
inst✝²⁴ : TopologicalSpace (TotalSpace F₁ E₁)
inst✝²³ : (x : B) → TopologicalSpace (E₁ x)
inst✝²² : (x : B) → AddCommGroup (E₂ x)
inst✝²¹ : (x : B) → Module 𝕜 (E₂ x)
inst✝²⁰ : NormedAddCommGroup F₂
inst✝¹⁹ : NormedSpace 𝕜 F₂
inst✝¹⁸ : TopologicalSpace (TotalSpace F₂ E₂)
inst✝¹⁷ : (x : B) → TopologicalSpace (E₂ x)
inst✝¹⁶ : ∀ (x : B), TopologicalAddGroup (E₂ x)
inst✝¹⁵ : ∀ (x : B), ContinuousSMul 𝕜 (E₂ x)
EB : Type u_8
inst✝¹⁴ : NormedAddCommGroup EB
inst✝¹³ : NormedSpace 𝕜 EB
HB : Type u_9
inst✝¹² : TopologicalSpace HB
IB : ModelWithCorners 𝕜 EB HB
inst✝¹¹ : TopologicalSpace B
inst✝¹⁰ : ChartedSpace HB B
EM : Type u_10
inst✝⁹ : NormedAddCommGroup EM
inst✝⁸ : NormedSpace 𝕜 EM
HM : Type u_11
inst✝⁷ : TopologicalSpace HM
IM : ModelWithCorners 𝕜 EM HM
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace HM M
inst✝⁴ : SmoothManifoldWithCorners IM M
n : ℕ∞
inst✝³ : FiberBundle F₁ E₁
inst✝² : VectorBundle 𝕜 F₁ E₁
inst✝¹ : FiberBundle F₂ E₂
inst✝ : VectorBundle 𝕜 F₂ E₂
e₁ e₁' : Trivialization F₁ TotalSpace.proj
e₂ e₂' : Trivialization F₂ TotalSpace.proj
y₀ y : LE₁E₂
⊢ ↑(chartAt (ModelProd HB (F₁ →L[𝕜] F₂)) y₀) y =
    (↑(chartAt HB y₀.proj) y.proj, inCoordinates F₁ E₁ F₂ E₂ y₀.proj y.proj y₀.proj y.proj y.snd)
state_after: no goals
Theorem: List.sorted_ofFn_iff
File: Mathlib/Data/List/Sort.lean

tactic: simp_rw [Sorted, pairwise_iff_get, get_ofFn, Relator.LiftFun]
state_before: n : ℕ
α : Type u
inst✝ : Preorder α
f : Fin n → α
r : α → α → Prop
⊢ Sorted r (ofFn f) ↔ ((fun x x_1 => x < x_1) ⇒ r) f f
state_after: n : ℕ
α : Type u
inst✝ : Preorder α
f : Fin n → α
r : α → α → Prop
⊢ (∀ (i j : Fin (ofFn f).length), i < j → r (f (Fin.cast ⋯ i)) (f (Fin.cast ⋯ j))) ↔
    ∀ ⦃a b : Fin n⦄, a < b → r (f a) (f b)

tactic: exact Iff.symm (Fin.rightInverse_cast _).surjective.forall₂
state_before: n : ℕ
α : Type u
inst✝ : Preorder α
f : Fin n → α
r : α → α → Prop
⊢ (∀ (i j : Fin (ofFn f).length), i < j → r (f (Fin.cast ⋯ i)) (f (Fin.cast ⋯ j))) ↔
    ∀ ⦃a b : Fin n⦄, a < b → r (f a) (f b)
state_after: no goals
Theorem: Real.sinh_neg
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [sinh, exp_neg, (neg_div _ _).symm, add_mul]
state_before: x y : ℝ
⊢ sinh (-x) = -sinh x
state_after: no goals
Theorem: ZNum.cast_le
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [← not_lt]
state_before: α : Type u_1
inst✝ : LinearOrderedRing α
m n : ZNum
⊢ ↑m ≤ ↑n ↔ m ≤ n
state_after: α : Type u_1
inst✝ : LinearOrderedRing α
m n : ZNum
⊢ ¬↑n < ↑m ↔ m ≤ n

tactic: exact not_congr cast_lt
state_before: α : Type u_1
inst✝ : LinearOrderedRing α
m n : ZNum
⊢ ¬↑n < ↑m ↔ m ≤ n
state_after: no goals
Theorem: intervalIntegral.integral_mono_ae
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: simpa only [integral_of_le hab] using setIntegral_mono_ae hf.1 hg.1 h
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f g : ℝ → ℝ
a b : ℝ
μ : Measure ℝ
hab : a ≤ b
hf : IntervalIntegrable f μ a b
hg : IntervalIntegrable g μ a b
h : f ≤ᶠ[ae μ] g
⊢ ∫ (u : ℝ) in a..b, f u ∂μ ≤ ∫ (u : ℝ) in a..b, g u ∂μ
state_after: no goals
Theorem: CategoryTheory.ShortComplex.exact_iff_of_epi_of_isIso_of_mono
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

tactic: constructor
state_before: C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.11546, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
φ : S₁ ⟶ S₂
inst✝² : Epi φ.τ₁
inst✝¹ : IsIso φ.τ₂
inst✝ : Mono φ.τ₃
⊢ S₁.Exact ↔ S₂.Exact
state_after: case mp
C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.11546, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
φ : S₁ ⟶ S₂
inst✝² : Epi φ.τ₁
inst✝¹ : IsIso φ.τ₂
inst✝ : Mono φ.τ₃
⊢ S₁.Exact → S₂.Exact

case mpr
C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.11546, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
φ : S₁ ⟶ S₂
inst✝² : Epi φ.τ₁
inst✝¹ : IsIso φ.τ₂
inst✝ : Mono φ.τ₃
⊢ S₂.Exact → S₁.Exact

tactic: rintro ⟨h₁, z₁⟩
state_before: case mp
C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.11546, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
φ : S₁ ⟶ S₂
inst✝² : Epi φ.τ₁
inst✝¹ : IsIso φ.τ₂
inst✝ : Mono φ.τ₃
⊢ S₁.Exact → S₂.Exact
state_after: case mp.mk.intro
C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.11546, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
φ : S₁ ⟶ S₂
inst✝² : Epi φ.τ₁
inst✝¹ : IsIso φ.τ₂
inst✝ : Mono φ.τ₃
h₁ : S₁.HomologyData
z₁ : IsZero h₁.left.H
⊢ S₂.Exact

tactic: exact ⟨HomologyData.ofEpiOfIsIsoOfMono φ h₁, z₁⟩
state_before: case mp.mk.intro
C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.11546, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
φ : S₁ ⟶ S₂
inst✝² : Epi φ.τ₁
inst✝¹ : IsIso φ.τ₂
inst✝ : Mono φ.τ₃
h₁ : S₁.HomologyData
z₁ : IsZero h₁.left.H
⊢ S₂.Exact
state_after: no goals

tactic: rintro ⟨h₂, z₂⟩
state_before: case mpr
C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.11546, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
φ : S₁ ⟶ S₂
inst✝² : Epi φ.τ₁
inst✝¹ : IsIso φ.τ₂
inst✝ : Mono φ.τ₃
⊢ S₂.Exact → S₁.Exact
state_after: case mpr.mk.intro
C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.11546, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
φ : S₁ ⟶ S₂
inst✝² : Epi φ.τ₁
inst✝¹ : IsIso φ.τ₂
inst✝ : Mono φ.τ₃
h₂ : S₂.HomologyData
z₂ : IsZero h₂.left.H
⊢ S₁.Exact

tactic: exact ⟨HomologyData.ofEpiOfIsIsoOfMono' φ h₂, z₂⟩
state_before: case mpr.mk.intro
C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.11546, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
φ : S₁ ⟶ S₂
inst✝² : Epi φ.τ₁
inst✝¹ : IsIso φ.τ₂
inst✝ : Mono φ.τ₃
h₂ : S₂.HomologyData
z₂ : IsZero h₂.left.H
⊢ S₁.Exact
state_after: no goals
Theorem: Nat.add_mod_of_add_mod_lt
File: Mathlib/Data/Nat/ModEq.lean

tactic: rw [← add_mod_add_ite, if_neg (not_le_of_lt hc), add_zero]
state_before: m n a✝ b✝ c✝ d a b c : ℕ
hc : a % c + b % c < c
⊢ (a + b) % c = a % c + b % c
state_after: no goals
Theorem: RootPairing.isCrystallographic_iff
File: Mathlib/LinearAlgebra/RootSystem/Defs.lean

tactic: rw [IsCrystallographic]
state_before: ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j : ι
⊢ P.IsCrystallographic ↔ ∀ (i j : ι), ∃ z, ↑z = P.pairing i j
state_after: ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j : ι
⊢ (∀ (i : ι), MapsTo (⇑(P.toLin (P.root i))) (range ⇑P.coroot) ↑(zmultiples 1)) ↔ ∀ (i j : ι), ∃ z, ↑z = P.pairing i j

tactic: refine ⟨fun h i j ↦ ?_, fun h i _ ⟨j, hj⟩ ↦ ?_⟩
state_before: ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i j : ι
⊢ (∀ (i : ι), MapsTo (⇑(P.toLin (P.root i))) (range ⇑P.coroot) ↑(zmultiples 1)) ↔ ∀ (i j : ι), ∃ z, ↑z = P.pairing i j
state_after: case refine_1
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i✝ j✝ : ι
h : ∀ (i : ι), MapsTo (⇑(P.toLin (P.root i))) (range ⇑P.coroot) ↑(zmultiples 1)
i j : ι
⊢ ∃ z, ↑z = P.pairing i j

case refine_2
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i✝ j✝ : ι
h : ∀ (i j : ι), ∃ z, ↑z = P.pairing i j
i : ι
x✝¹ : N
x✝ : x✝¹ ∈ range ⇑P.coroot
j : ι
hj : P.coroot j = x✝¹
⊢ (P.toLin (P.root i)) x✝¹ ∈ ↑(zmultiples 1)

tactic: simpa [AddSubgroup.mem_zmultiples_iff] using h i (mem_range_self j)
state_before: case refine_1
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i✝ j✝ : ι
h : ∀ (i : ι), MapsTo (⇑(P.toLin (P.root i))) (range ⇑P.coroot) ↑(zmultiples 1)
i j : ι
⊢ ∃ z, ↑z = P.pairing i j
state_after: no goals

tactic: simpa [← hj, AddSubgroup.mem_zmultiples_iff] using h i j
state_before: case refine_2
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
P : RootPairing ι R M N
i✝ j✝ : ι
h : ∀ (i j : ι), ∃ z, ↑z = P.pairing i j
i : ι
x✝¹ : N
x✝ : x✝¹ ∈ range ⇑P.coroot
j : ι
hj : P.coroot j = x✝¹
⊢ (P.toLin (P.root i)) x✝¹ ∈ ↑(zmultiples 1)
state_after: no goals