ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Prod.mk_wcovBy_mk_iff_left
File: Mathlib/Order/Cover.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
⊢ (a₁, b) ⩿ (a₂, b) ↔ a₁ ⩿ a₂
state_after: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
h : ∀ ⦃c : α⦄, a₁ < c → ¬c < a₂
c : α × β
h₁ : (a₁, b) < c
h₂ : c < (a₂, b)
⊢ False
tactic: refine ⟨WCovBy.fst, (And.imp mk_le_mk_iff_left.2) fun h c h₁ h₂ => ?_⟩
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
h : ∀ ⦃c : α⦄, a₁ < c → ¬c < a₂
c : α × β
h₁ : (a₁, b) < c
h₂ : c < (a₂, b)
⊢ False
state_after: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
h : ∀ ⦃c : α⦄, a₁ < c → ¬c < a₂
c : α × β
h₁ : (a₁, b) < c
h₂ : c < (a₂, b)
this : c.2 = b
⊢ False
tactic: have : c.2 = b := h₂.le.2.antisymm h₁.le.2
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
h : ∀ ⦃c : α⦄, a₁ < c → ¬c < a₂
c : α × β
h₁ : (a₁, b) < c
h₂ : c < (a₂, b)
this : c.2 = b
⊢ False
state_after: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
h : ∀ ⦃c : α⦄, a₁ < c → ¬c < a₂
c : α × β
h₁ : a₁ < c.1
h₂ : c.1 < a₂
this : c.2 = b
⊢ False
tactic: rw [← @Prod.mk.eta _ _ c, this, mk_lt_mk_iff_left] at h₁ h₂
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
h : ∀ ⦃c : α⦄, a₁ < c → ¬c < a₂
c : α × β
h₁ : a₁ < c.1
h₂ : c.1 < a₂
this : c.2 = b
⊢ False
state_after: no goals
tactic: exact h h₁ h₂
Theorem: ZMod.unitsMap_surjective
File: Mathlib/Data/ZMod/Units.lean

Proof steps:
state_before: n m : ℕ
hm : NeZero m
h : n ∣ m
⊢ Function.Surjective ⇑(unitsMap h)
state_after: n m : ℕ
hm : NeZero m
h : n ∣ m
⊢ ∀ (x : ℕ), x.Coprime n → ∃ k, (x + k * n).Coprime m
tactic: suffices ∀ x : ℕ, x.Coprime n → ∃ k : ℕ, (x + k * n).Coprime m by
    intro x
    have ⟨k, hk⟩ := this x.val.val (val_coe_unit_coprime x)
    refine ⟨unitOfCoprime _ hk, Units.ext ?_⟩
    have : NeZero n := ⟨fun hn ↦ hm.out (eq_zero_of_zero_dvd (hn ▸ h))⟩
    simp [unitsMap_def]
state_before: n m : ℕ
hm : NeZero m
h : n ∣ m
⊢ ∀ (x : ℕ), x.Coprime n → ∃ k, (x + k * n).Coprime m
state_after: n m : ℕ
hm : NeZero m
h : n ∣ m
x : ℕ
hx : x.Coprime n
⊢ ∃ k, (x + k * n).Coprime m
tactic: intro x hx
state_before: n m : ℕ
hm : NeZero m
h : n ∣ m
x : ℕ
hx : x.Coprime n
⊢ ∃ k, (x + k * n).Coprime m
state_after: n m : ℕ
hm : NeZero m
h : n ∣ m
x : ℕ
hx : x.Coprime n
ps : Finset ℕ := Finset.filter (fun p => ¬p ∣ x) m.primeFactors
⊢ ∃ k, (x + k * n).Coprime m
tactic: let ps := m.primeFactors.filter (fun p ↦ ¬p ∣ x)
state_before: n m : ℕ
hm : NeZero m
h : n ∣ m
x : ℕ
hx : x.Coprime n
ps : Finset ℕ := Finset.filter (fun p => ¬p ∣ x) m.primeFactors
⊢ ∃ k, (x + k * n).Coprime m
state_after: case h
n m : ℕ
hm : NeZero m
h : n ∣ m
x : ℕ
hx : x.Coprime n
ps : Finset ℕ := Finset.filter (fun p => ¬p ∣ x) m.primeFactors
⊢ (x + ps.prod id * n).Coprime m
tactic: use ps.prod id
state_before: case h
n m : ℕ
hm : NeZero m
h : n ∣ m
x : ℕ
hx : x.Coprime n
ps : Finset ℕ := Finset.filter (fun p => ¬p ∣ x) m.primeFactors
⊢ (x + ps.prod id * n).Coprime m
state_after: case h.H
n m : ℕ
hm : NeZero m
h : n ∣ m
x : ℕ
hx : x.Coprime n
ps : Finset ℕ := Finset.filter (fun p => ¬p ∣ x) m.primeFactors
⊢ ∀ (k : ℕ), Nat.Prime k → k ∣ x + ps.prod id * n → ¬k ∣ m
tactic: apply Nat.coprime_of_dvd
state_before: case h.H
n m : ℕ
hm : NeZero m
h : n ∣ m
x : ℕ
hx : x.Coprime n
ps : Finset ℕ := Finset.filter (fun p => ¬p ∣ x) m.primeFactors
⊢ ∀ (k : ℕ), Nat.Prime k → k ∣ x + ps.prod id * n → ¬k ∣ m
state_after: case h.H
n m : ℕ
hm : NeZero m
h : n ∣ m
x : ℕ
hx : x.Coprime n
ps : Finset ℕ := Finset.filter (fun p => ¬p ∣ x) m.primeFactors
p : ℕ
pp : Nat.Prime p
hp : p ∣ x + ps.prod id * n
hpn : p ∣ m
⊢ False
tactic: intro p pp hp hpn
state_before: case h.H
n m : ℕ
hm : NeZero m
h : n ∣ m
x : ℕ
hx : x.Coprime n
ps : Finset ℕ := Finset.filter (fun p => ¬p ∣ x) m.primeFactors
p : ℕ
pp : Nat.Prime p
hp : p ∣ x + ps.prod id * n
hpn : p ∣ m
⊢ False
state_after: case pos
n m : ℕ
hm : NeZero m
h : n ∣ m
x : ℕ
hx : x.Coprime n
ps : Finset ℕ := Finset.filter (fun p => ¬p ∣ x) m.primeFactors
p : ℕ
pp : Nat.Prime p
hp : p ∣ x + ps.prod id * n
hpn : p ∣ m
hpx : p ∣ x
⊢ False

case neg
n m : ℕ
hm : NeZero m
h : n ∣ m
x : ℕ
hx : x.Coprime n
ps : Finset ℕ := Finset.filter (fun p => ¬p ∣ x) m.primeFactors
p : ℕ
pp : Nat.Prime p
hp : p ∣ x + ps.prod id * n
hpn : p ∣ m
hpx : ¬p ∣ x
⊢ False
tactic: by_cases hpx : p ∣ x
Theorem: Subgroup.IsComplement.equiv_fst_eq_iff_leftCosetEquivalence
File: Mathlib/GroupTheory/Complement.lean

Proof steps:
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
g₁ g₂ : G
⊢ (hSK.equiv g₁).1 = (hSK.equiv g₂).1 ↔ LeftCosetEquivalence (↑K) g₁ g₂
state_after: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
g₁ g₂ : G
⊢ (hSK.equiv g₁).1 = (hSK.equiv g₂).1 ↔ g₁⁻¹ * g₂ ∈ K
tactic: rw [LeftCosetEquivalence, leftCoset_eq_iff]
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
g₁ g₂ : G
⊢ (hSK.equiv g₁).1 = (hSK.equiv g₂).1 ↔ g₁⁻¹ * g₂ ∈ K
state_after: case mp
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
g₁ g₂ : G
⊢ (hSK.equiv g₁).1 = (hSK.equiv g₂).1 → g₁⁻¹ * g₂ ∈ K

case mpr
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
g₁ g₂ : G
⊢ g₁⁻¹ * g₂ ∈ K → (hSK.equiv g₁).1 = (hSK.equiv g₂).1
tactic: constructor
Theorem: AlgebraicGeometry.PresheafedSpace.IsOpenImmersion.app_invApp
File: Mathlib/Geometry/RingedSpace/OpenImmersion.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : PresheafedSpace C
f : X ⟶ Y
H : IsOpenImmersion f
U : Opens ↑↑Y
⊢ f.c.app (op U) ≫ invApp f ((Opens.map f.base).obj U) = Y.presheaf.map (homOfLE ⋯).op
state_after: C : Type u
inst✝ : Category.{v, u} C
X Y : PresheafedSpace C
f : X ⟶ Y
H : IsOpenImmersion f
U : Opens ↑↑Y
⊢ (f.c.app (op U) ≫ X.presheaf.map (eqToHom ⋯)) ≫ inv (f.c.app (op ((opensFunctor f).obj ((Opens.map f.base).obj U)))) =
    Y.presheaf.map (homOfLE ⋯).op
tactic: erw [← Category.assoc]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : PresheafedSpace C
f : X ⟶ Y
H : IsOpenImmersion f
U : Opens ↑↑Y
⊢ (f.c.app (op U) ≫ X.presheaf.map (eqToHom ⋯)) ≫ inv (f.c.app (op ((opensFunctor f).obj ((Opens.map f.base).obj U)))) =
    Y.presheaf.map (homOfLE ⋯).op
state_after: C : Type u
inst✝ : Category.{v, u} C
X Y : PresheafedSpace C
f : X ⟶ Y
H : IsOpenImmersion f
U : Opens ↑↑Y
⊢ f.c.app (op U) ≫ X.presheaf.map (eqToHom ⋯) =
    f.c.app (op U) ≫ ((TopCat.Presheaf.pushforward C f.base).obj X.presheaf).map (homOfLE ⋯).op
tactic: rw [IsIso.comp_inv_eq, f.c.naturality]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : PresheafedSpace C
f : X ⟶ Y
H : IsOpenImmersion f
U : Opens ↑↑Y
⊢ f.c.app (op U) ≫ X.presheaf.map (eqToHom ⋯) =
    f.c.app (op U) ≫ ((TopCat.Presheaf.pushforward C f.base).obj X.presheaf).map (homOfLE ⋯).op
state_after: no goals
tactic: congr
Theorem: LinearIsometry.norm_toContinuousLinearMap_comp
File: Mathlib/Analysis/NormedSpace/OperatorNorm/NormedSpace.lean

Proof steps:
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
E : Type u_4
Eₗ : Type u_5
F : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedAddCommGroup G
inst✝⁹ : NormedAddCommGroup Fₗ
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NontriviallyNormedField 𝕜₂
inst✝⁶ : NontriviallyNormedField 𝕜₃
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedSpace 𝕜₂ F
inst✝³ : NormedSpace 𝕜₃ G
inst✝² : NormedSpace 𝕜 Fₗ
c : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
f✝ g✝ : E →SL[σ₁₂] F
x✝ y z : E
σ₁₃ : 𝕜 →+* 𝕜₃
inst✝¹ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝ : RingHomIsometric σ₁₂
f : F →ₛₗᵢ[σ₂₃] G
g : E →SL[σ₁₂] F
x : E
⊢ ‖(f.toContinuousLinearMap.comp g) x‖ = ‖g x‖
state_after: no goals
tactic: simp only [norm_map, coe_toContinuousLinearMap, coe_comp', Function.comp_apply]
Theorem: lt_mul_right
File: Mathlib/Algebra/Order/Ring/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u
β : Type u_1
inst✝² : Semiring α
inst✝¹ : PartialOrder α
a b c d : α
inst✝ : PosMulStrictMono α
hn : 0 < a
hm : 1 < b
⊢ a < a * b
state_after: case h.e'_3
α : Type u
β : Type u_1
inst✝² : Semiring α
inst✝¹ : PartialOrder α
a b c d : α
inst✝ : PosMulStrictMono α
hn : 0 < a
hm : 1 < b
⊢ a = a * 1
tactic: convert mul_lt_mul_of_pos_left hm hn
state_before: case h.e'_3
α : Type u
β : Type u_1
inst✝² : Semiring α
inst✝¹ : PartialOrder α
a b c d : α
inst✝ : PosMulStrictMono α
hn : 0 < a
hm : 1 < b
⊢ a = a * 1
state_after: no goals
tactic: rw [mul_one]
Theorem: _private.Mathlib.NumberTheory.ModularForms.JacobiTheta.Bounds.0.HurwitzKernelBounds.exp_lt_aux
File: Mathlib/NumberTheory/ModularForms/JacobiTheta/Bounds.lean

Proof steps:
state_before: t : ℝ
ht : 0 < t
⊢ rexp (-π * t) < 1
state_after: no goals
tactic: simpa only [exp_lt_one_iff, neg_mul, neg_lt_zero] using mul_pos pi_pos ht
Theorem: cauchySeq_of_edist_le_geometric
File: Mathlib/Analysis/SpecificLimits/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoEMetricSpace α
r C : ℝ≥0∞
hr : r < 1
hC : C ≠ ⊤
f : ℕ → α
hu : ∀ (n : ℕ), edist (f n) (f (n + 1)) ≤ C * r ^ n
⊢ CauchySeq f
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoEMetricSpace α
r C : ℝ≥0∞
hr : r < 1
hC : C ≠ ⊤
f : ℕ → α
hu : ∀ (n : ℕ), edist (f n) (f (n + 1)) ≤ C * r ^ n
⊢ ∑' (n : ℕ), C * r ^ n ≠ ⊤
tactic: refine cauchySeq_of_edist_le_of_tsum_ne_top _ hu ?_
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoEMetricSpace α
r C : ℝ≥0∞
hr : r < 1
hC : C ≠ ⊤
f : ℕ → α
hu : ∀ (n : ℕ), edist (f n) (f (n + 1)) ≤ C * r ^ n
⊢ ∑' (n : ℕ), C * r ^ n ≠ ⊤
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoEMetricSpace α
r C : ℝ≥0∞
hr : r < 1
hC : C ≠ ⊤
f : ℕ → α
hu : ∀ (n : ℕ), edist (f n) (f (n + 1)) ≤ C * r ^ n
⊢ C * (1 - r)⁻¹ ≠ ⊤
tactic: rw [ENNReal.tsum_mul_left, ENNReal.tsum_geometric]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoEMetricSpace α
r C : ℝ≥0∞
hr : r < 1
hC : C ≠ ⊤
f : ℕ → α
hu : ∀ (n : ℕ), edist (f n) (f (n + 1)) ≤ C * r ^ n
⊢ C * (1 - r)⁻¹ ≠ ⊤
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoEMetricSpace α
r C : ℝ≥0∞
hr : r < 1
hC : C ≠ ⊤
f : ℕ → α
hu : ∀ (n : ℕ), edist (f n) (f (n + 1)) ≤ C * r ^ n
⊢ 1 - r ≠ 0
tactic: refine ENNReal.mul_ne_top hC (ENNReal.inv_ne_top.2 ?_)
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoEMetricSpace α
r C : ℝ≥0∞
hr : r < 1
hC : C ≠ ⊤
f : ℕ → α
hu : ∀ (n : ℕ), edist (f n) (f (n + 1)) ≤ C * r ^ n
⊢ 1 - r ≠ 0
state_after: no goals
tactic: exact (tsub_pos_iff_lt.2 hr).ne'
Theorem: hasCompactSupport_comp_left
File: Mathlib/Topology/Support.lean

Proof steps:
state_before: X : Type u_1
α : Type u_2
α' : Type u_3
β : Type u_4
γ : Type u_5
δ : Type u_6
M : Type u_7
E : Type u_8
R : Type u_9
inst✝⁴ : TopologicalSpace α
inst✝³ : TopologicalSpace α'
inst✝² : One β
inst✝¹ : One γ
inst✝ : One δ
g : β → γ
f : α → β
f₂ : α → γ
m : β → γ → δ
x : α
hg : ∀ {x : β}, g x = 1 ↔ x = 1
⊢ HasCompactMulSupport (g ∘ f) ↔ HasCompactMulSupport f
state_after: no goals
tactic: simp_rw [hasCompactMulSupport_def, mulSupport_comp_eq g (@hg) f]
Theorem: round_eq
File: Mathlib/Algebra/Order/Floor.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
x : α
⊢ round x = ⌊x + 1 / 2⌋
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
x : α
⊢ (if fract x < 1 / 2 then ⌊x⌋ else ⌈x⌉) = ⌊x + 1 / 2⌋
tactic: simp_rw [round, (by simp only [lt_div_iff', two_pos] : 2 * fract x < 1 ↔ fract x < 1 / 2)]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
x : α
⊢ (if fract x < 1 / 2 then ⌊x⌋ else ⌈x⌉) = ⌊x + 1 / 2⌋
state_after: case inl
F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
x : α
hx : fract x < 1 / 2
⊢ (if fract x < 1 / 2 then ⌊x⌋ else ⌈x⌉) = ⌊x + 1 / 2⌋

case inr
F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
x : α
hx : 1 / 2 ≤ fract x
⊢ (if fract x < 1 / 2 then ⌊x⌋ else ⌈x⌉) = ⌊x + 1 / 2⌋
tactic: cases' lt_or_le (fract x) (1 / 2) with hx hx
Theorem: complete_polishSpaceMetric
File: Mathlib/Topology/MetricSpace/Polish.lean

Proof steps:
state_before: α✝ : Type u_1
β : Type u_2
α : Type u_3
ht : TopologicalSpace α
h : PolishSpace α
⊢ CompleteSpace α
state_after: case h.e'_2.h.e'_2.h.e'_2
α✝ : Type u_1
β : Type u_2
α : Type u_3
ht : TopologicalSpace α
h : PolishSpace α
⊢ polishSpaceMetric α = ⋯.choose
tactic: convert h.complete.choose_spec.2
state_before: case h.e'_2.h.e'_2.h.e'_2
α✝ : Type u_1
β : Type u_2
α : Type u_3
ht : TopologicalSpace α
h : PolishSpace α
⊢ polishSpaceMetric α = ⋯.choose
state_after: no goals
tactic: exact MetricSpace.replaceTopology_eq _ _
Theorem: Set.Iio_subset_Iio_iff
File: Mathlib/Order/Interval/Set/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
⊢ Iio a ⊆ Iio b ↔ a ≤ b
state_after: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h : Iio a ⊆ Iio b
⊢ a ≤ b
tactic: refine ⟨fun h => ?_, fun h => Iio_subset_Iio h⟩
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h : Iio a ⊆ Iio b
⊢ a ≤ b
state_after: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h : Iio a ⊆ Iio b
ab : ¬a ≤ b
⊢ False
tactic: by_contra ab
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h : Iio a ⊆ Iio b
ab : ¬a ≤ b
⊢ False
state_after: no goals
tactic: exact lt_irrefl _ (h (not_le.mp ab))
Theorem: CategoryTheory.ShortComplex.isoMk_hom_τ₁
File: Mathlib/Algebra/Homology/ShortComplex/Basic.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.48026, u_1} C
inst✝² : Category.{?u.48030, u_2} D
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
e₁ : S₁.X₁ ≅ S₂.X₁
e₂ : S₁.X₂ ≅ S₂.X₂
e₃ : S₁.X₃ ≅ S₂.X₃
comm₁₂ : autoParam (e₁.hom ≫ S₂.f = S₁.f ≫ e₂.hom) _auto✝
comm₂₃ : autoParam (e₂.hom ≫ S₂.g = S₁.g ≫ e₃.hom) _auto✝
⊢ e₁.inv ≫ S₁.f = S₂.f ≫ e₂.inv
state_after: no goals
tactic: rw [← cancel_mono e₂.hom, assoc, assoc, e₂.inv_hom_id, comp_id,
          ← comm₁₂, e₁.inv_hom_id_assoc]
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.48026, u_1} C
inst✝² : Category.{?u.48030, u_2} D
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
e₁ : S₁.X₁ ≅ S₂.X₁
e₂ : S₁.X₂ ≅ S₂.X₂
e₃ : S₁.X₃ ≅ S₂.X₃
comm₁₂ : autoParam (e₁.hom ≫ S₂.f = S₁.f ≫ e₂.hom) _auto✝
comm₂₃ : autoParam (e₂.hom ≫ S₂.g = S₁.g ≫ e₃.hom) _auto✝
⊢ e₂.inv ≫ S₁.g = S₂.g ≫ e₃.inv
state_after: no goals
tactic: rw [← cancel_mono e₃.hom, assoc, assoc, e₃.inv_hom_id, comp_id,
          ← comm₂₃, e₂.inv_hom_id_assoc]
Theorem: lebesgue_number_lemma_of_metric_sUnion
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

Proof steps:
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
c : Set (Set α)
hs : IsCompact s
hc₁ : ∀ t ∈ c, IsOpen t
hc₂ : s ⊆ ⋃₀ c
⊢ ∃ δ > 0, ∀ x ∈ s, ∃ t ∈ c, ball x δ ⊆ t
state_after: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
c : Set (Set α)
hs : IsCompact s
hc₁ : ∀ t ∈ c, IsOpen t
hc₂ : s ⊆ ⋃ i, ↑i
⊢ ∃ δ > 0, ∀ x ∈ s, ∃ t ∈ c, ball x δ ⊆ t
tactic: rw [sUnion_eq_iUnion] at hc₂
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
c : Set (Set α)
hs : IsCompact s
hc₁ : ∀ t ∈ c, IsOpen t
hc₂ : s ⊆ ⋃ i, ↑i
⊢ ∃ δ > 0, ∀ x ∈ s, ∃ t ∈ c, ball x δ ⊆ t
state_after: no goals
tactic: simpa using lebesgue_number_lemma_of_metric hs (by simpa) hc₂
Theorem: torusIntegral_smul
File: Mathlib/MeasureTheory/Integral/TorusIntegral.lean

Proof steps:
state_before: n : ℕ
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℂ E
inst✝³ : CompleteSpace E
f✝ g : (Fin n → ℂ) → E
c✝ : Fin n → ℂ
R✝ : Fin n → ℝ
𝕜 : Type u_2
inst✝² : RCLike 𝕜
inst✝¹ : NormedSpace 𝕜 E
inst✝ : SMulCommClass 𝕜 ℂ E
a : 𝕜
f : (Fin n → ℂ) → E
c : Fin n → ℂ
R : Fin n → ℝ
⊢ (∯ (x : Fin n → ℂ) in T(c, R), a • f x) = a • ∯ (x : Fin n → ℂ) in T(c, R), f x
state_after: no goals
tactic: simp only [torusIntegral, integral_smul, ← smul_comm a (_ : ℂ) (_ : E)]
Theorem: SzemerediRegularity.card_eq_of_mem_parts_chunk
File: Mathlib/Combinatorics/SimpleGraph/Regularity/Chunk.lean

Proof steps:
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hs : s ∈ (chunk hP G ε hU).parts
⊢ s.card = m ∨ s.card = m + 1
state_after: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hs :
  s ∈
    (if hUcard : U.card = m * 4 ^ P.parts.card + (Fintype.card α / P.parts.card - m * 4 ^ P.parts.card) then
        equitabilise ⋯
      else equitabilise ⋯).parts
⊢ s.card = m ∨ s.card = m + 1
tactic: unfold chunk at hs
state_before: α : Type u_1
inst✝² : Fintype α
inst✝¹ : DecidableEq α
P : Finpartition univ
hP : P.IsEquipartition
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : ℝ
U : Finset α
hU : U ∈ P.parts
V : Finset α
𝒜 : Finset (Finset α)
s : Finset α
hs :
  s ∈
    (if hUcard : U.card = m * 4 ^ P.parts.card + (Fintype.card α / P.parts.card - m * 4 ^ P.parts.card) then
        equitabilise ⋯
      else equitabilise ⋯).parts
⊢ s.card = m ∨ s.card = m + 1
state_after: no goals
tactic: split_ifs at hs <;> exact card_eq_of_mem_parts_equitabilise hs
Theorem: Matroid.mapEquiv_dep_iff
File: Mathlib/Data/Matroid/Map.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
f✝ : α → β
E I s : Set α
M : Matroid α
N : Matroid β
f : α ≃ β
D : Set β
⊢ (M.mapEquiv f).Dep D ↔ M.Dep (⇑f.symm '' D)
state_after: α : Type u_1
β : Type u_2
f✝ : α → β
E I s : Set α
M : Matroid α
N : Matroid β
f : α ≃ β
D : Set β
⊢ (∃ D₀, M.Dep D₀ ∧ D = ⇑f '' D₀) ↔ M.Dep (⇑f.symm '' D)
tactic: rw [mapEquiv_eq_map, map_dep_iff]
state_before: α : Type u_1
β : Type u_2
f✝ : α → β
E I s : Set α
M : Matroid α
N : Matroid β
f : α ≃ β
D : Set β
⊢ (∃ D₀, M.Dep D₀ ∧ D = ⇑f '' D₀) ↔ M.Dep (⇑f.symm '' D)
state_after: no goals
tactic: exact ⟨by rintro ⟨I, hI, rfl⟩; simpa, fun h ↦ ⟨_, h, by simp⟩⟩
Theorem: OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge'
File: Mathlib/Order/OmegaCompletePartialOrder.lean

Proof steps:
state_before: α : Type u
α' : Type u_1
β : Type v
β' : Type u_2
γ : Type u_3
φ : Type u_4
inst✝⁵ : OmegaCompletePartialOrder α
inst✝⁴ : OmegaCompletePartialOrder β
inst✝³ : OmegaCompletePartialOrder γ
inst✝² : OmegaCompletePartialOrder φ
inst✝¹ : OmegaCompletePartialOrder α'
inst✝ : OmegaCompletePartialOrder β'
c₀ : Chain (α →𝒄 β)
c₁ : Chain α
z : β
⊢ (∀ (j i : ℕ), (c₀ i) (c₁ j) ≤ z) ↔ ∀ (i : ℕ), (c₀ i) (c₁ i) ≤ z
state_after: no goals
tactic: rw [forall_swap, forall_forall_merge]
Theorem: CommMon_.EquivLaxBraidedFunctorPUnit.unitIso_hom_app_toNatTrans_app
File: Mathlib/CategoryTheory/Monoidal/CommMon_.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
F : LaxBraidedFunctor (Discrete PUnit.{u + 1}) C
x✝ : Discrete PUnit.{u + 1}
⊢ x✝ = (trivial (Discrete PUnit.{u + 1})).X
state_after: no goals
tactic: ext
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
F : LaxBraidedFunctor (Discrete PUnit.{u + 1}) C
⊢ ∀ {X Y : Discrete PUnit.{u + 1}} (f : X ⟶ Y),
    ((𝟭 (LaxBraidedFunctor (Discrete PUnit.{u + 1}) C)).obj F).map f ≫ ((fun x => F.mapIso (eqToIso ⋯)) Y).hom =
      ((fun x => F.mapIso (eqToIso ⋯)) X).hom ≫ ((laxBraidedToCommMon C ⋙ commMonToLaxBraided C).obj F).map f
state_after: case mk.mk
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
F : LaxBraidedFunctor (Discrete PUnit.{u + 1}) C
as✝¹ as✝ : PUnit.{u + 1}
f : { as := as✝¹ } ⟶ { as := as✝ }
⊢ ((𝟭 (LaxBraidedFunctor (Discrete PUnit.{u + 1}) C)).obj F).map f ≫
      ((fun x => F.mapIso (eqToIso ⋯)) { as := as✝ }).hom =
    ((fun x => F.mapIso (eqToIso ⋯)) { as := as✝¹ }).hom ≫ ((laxBraidedToCommMon C ⋙ commMonToLaxBraided C).obj F).map f
tactic: rintro ⟨⟩ ⟨⟩ f
state_before: case mk.mk
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
F : LaxBraidedFunctor (Discrete PUnit.{u + 1}) C
as✝¹ as✝ : PUnit.{u + 1}
f : { as := as✝¹ } ⟶ { as := as✝ }
⊢ ((𝟭 (LaxBraidedFunctor (Discrete PUnit.{u + 1}) C)).obj F).map f ≫
      ((fun x => F.mapIso (eqToIso ⋯)) { as := as✝ }).hom =
    ((fun x => F.mapIso (eqToIso ⋯)) { as := as✝¹ }).hom ≫ ((laxBraidedToCommMon C ⋙ commMonToLaxBraided C).obj F).map f
state_after: no goals
tactic: aesop_cat
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
F : LaxBraidedFunctor (Discrete PUnit.{u + 1}) C
⊢ ((𝟭 (LaxBraidedFunctor (Discrete PUnit.{u + 1}) C)).obj F).ε ≫
      ((fun x => F.mapIso (eqToIso ⋯)) (𝟙_ (Discrete PUnit.{u + 1}))).hom =
    ((laxBraidedToCommMon C ⋙ commMonToLaxBraided C).obj F).ε
state_after: no goals
tactic: aesop_cat
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
F : LaxBraidedFunctor (Discrete PUnit.{u + 1}) C
⊢ ∀ (X Y : Discrete PUnit.{u + 1}),
    ((𝟭 (LaxBraidedFunctor (Discrete PUnit.{u + 1}) C)).obj F).μ X Y ≫ ((fun x => F.mapIso (eqToIso ⋯)) (X ⊗ Y)).hom =
      (((fun x => F.mapIso (eqToIso ⋯)) X).hom ⊗ ((fun x => F.mapIso (eqToIso ⋯)) Y).hom) ≫
        ((laxBraidedToCommMon C ⋙ commMonToLaxBraided C).obj F).μ X Y
state_after: no goals
tactic: aesop_cat
Theorem: Trivialization.coordChangeL_apply'
File: Mathlib/Topology/VectorBundle/Basic.lean

Proof steps:
state_before: R : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
inst✝⁹ : Semiring R
inst✝⁸ : TopologicalSpace F
inst✝⁷ : TopologicalSpace B
inst✝⁶ : TopologicalSpace (TotalSpace F E)
e✝ : Trivialization F TotalSpace.proj
x : TotalSpace F E
b✝ : B
y✝ : E b✝
inst✝⁵ : AddCommMonoid F
inst✝⁴ : Module R F
inst✝³ : (x : B) → AddCommMonoid (E x)
inst✝² : (x : B) → Module R (E x)
e e' : Trivialization F TotalSpace.proj
inst✝¹ : Trivialization.IsLinear R e
inst✝ : Trivialization.IsLinear R e'
b : B
hb : b ∈ e.baseSet ∩ e'.baseSet
y : F
⊢ (coordChangeL R e e' b) y = (↑e' (↑e.symm (b, y))).2
state_after: no goals
tactic: rw [e.coordChangeL_apply e' hb, e.mk_symm hb.1]
Theorem: Turing.ToPartrec.Code.id_eval
File: Mathlib/Computability/TMToPartrec.lean

Proof steps:
state_before: v : List ℕ
⊢ id.eval v = pure v
state_after: no goals
tactic: simp [id]
Theorem: Set.iUnion_Icc_left
File: Mathlib/Order/Interval/Set/Disjoint.lean

Proof steps:
state_before: ι : Sort u
α : Type v
β : Type w
inst✝ : Preorder α
a b✝ c b : α
⊢ ⋃ a, Icc a b = Iic b
state_after: no goals
tactic: simp only [← Ici_inter_Iic, ← iUnion_inter, iUnion_Ici, univ_inter]