ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Cardinal.card_lt_of_card_biUnion_lt
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

Proof steps:
state_before: α✝ : Type u_1
r : α✝ → α✝ → Prop
α β : Type u
s : Set α
t : (a : α) → a ∈ s → Set β
c : Cardinal.{u}
h : #↑(⋃ a, ⋃ (h : a ∈ s), t a h) < c
a : α
ha : a ∈ s
⊢ #↑(t a ha) < c
state_after: α✝ : Type u_1
r : α✝ → α✝ → Prop
α β : Type u
s : Set α
t : (a : α) → a ∈ s → Set β
c : Cardinal.{u}
h : #↑(⋃ x, t ↑x ⋯) < c
a : α
ha : a ∈ s
⊢ #↑(t a ha) < c
tactic: rw [biUnion_eq_iUnion] at h
state_before: α✝ : Type u_1
r : α✝ → α✝ → Prop
α β : Type u
s : Set α
t : (a : α) → a ∈ s → Set β
c : Cardinal.{u}
h : #↑(⋃ x, t ↑x ⋯) < c
a : α
ha : a ∈ s
⊢ #↑(t a ha) < c
state_after: α✝ : Type u_1
r : α✝ → α✝ → Prop
α β : Type u
s : Set α
t : (a : α) → a ∈ s → Set β
c : Cardinal.{u}
h : #↑(⋃ x, t ↑x ⋯) < c
a : α
ha : a ∈ s
this : ∀ (i : ↑s), #↑(t ↑i ⋯) < c
⊢ #↑(t a ha) < c
tactic: have := card_lt_of_card_iUnion_lt h
state_before: α✝ : Type u_1
r : α✝ → α✝ → Prop
α β : Type u
s : Set α
t : (a : α) → a ∈ s → Set β
c : Cardinal.{u}
h : #↑(⋃ x, t ↑x ⋯) < c
a : α
ha : a ∈ s
this : ∀ (i : ↑s), #↑(t ↑i ⋯) < c
⊢ #↑(t a ha) < c
state_after: no goals
tactic: simp_all only [iUnion_coe_set,
    Subtype.forall]
Theorem: ite_pos
File: Mathlib/Order/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝² : One α
p : Prop
inst✝¹ : Decidable p
a b : α
inst✝ : LT α
ha : 1 < a
hb : 1 < b
⊢ 1 < if p then a else b
state_after: no goals
tactic: split <;> assumption
Theorem: mul_div_cancel_left_of_imp
File: Mathlib/Algebra/GroupWithZero/Units/Basic.lean

Proof steps:
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝¹ : MonoidWithZero M₀
inst✝ : CommGroupWithZero G₀
a b c d : G₀
h : a = 0 → b = 0
⊢ a * b / a = b
state_after: no goals
tactic: rw [mul_comm, mul_div_cancel_of_imp h]
Theorem: Nat.Primrec.swap'
File: Mathlib/Computability/Primrec.lean

Proof steps:
state_before: f : ℕ → ℕ → ℕ
hf : Nat.Primrec (unpaired f)
n : ℕ
⊢ unpaired f (unpaired (swap Nat.pair) n) = unpaired (swap f) n
state_after: no goals
tactic: simp
Theorem: DFA.eval_comap
File: Mathlib/Computability/DFA.lean

Proof steps:
state_before: α : Type u
σ : Type v
M : DFA α σ
α' : Type u_1
σ' : Type u_2
f : α' → α
x : List α'
⊢ (comap f M).eval x = M.eval (List.map f x)
state_after: no goals
tactic: simp [eval]
Theorem: MeasureTheory.SignedMeasure.toJordanDecomposition_smul
File: Mathlib/MeasureTheory/Decomposition/Jordan.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ≥0
⊢ (r • s).toJordanDecomposition = r • s.toJordanDecomposition
state_after: case a
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ≥0
⊢ (r • s).toJordanDecomposition.toSignedMeasure = (r • s.toJordanDecomposition).toSignedMeasure
tactic: apply toSignedMeasure_injective
state_before: case a
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ≥0
⊢ (r • s).toJordanDecomposition.toSignedMeasure = (r • s.toJordanDecomposition).toSignedMeasure
state_after: no goals
tactic: simp [toSignedMeasure_smul]
Theorem: MeasureTheory.Measure.restrict_apply₀
File: Mathlib/MeasureTheory/Measure/Restrict.lean

Proof steps:
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
ht : NullMeasurableSet t (μ.restrict s)
⊢ (μ.restrict s) t = μ (t ∩ s)
state_after: no goals
tactic: rw [← restrictₗ_apply, restrictₗ, liftLinear_apply₀ _ ht, OuterMeasure.restrict_apply,
    coe_toOuterMeasure]
Theorem: Polynomial.Chebyshev.induct
File: Mathlib/RingTheory/Polynomial/Chebyshev.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
motive : ℤ → Prop
zero : motive 0
one : motive 1
add_two : ∀ (n : ℕ), motive (↑n + 1) → motive ↑n → motive (↑n + 2)
neg_add_one : ∀ (n : ℕ), motive (-↑n) → motive (-↑n + 1) → motive (-↑n - 1)
n : ℕ
hn : motive (-↑n)
hnm : motive (-↑n + 1)
⊢ motive (Int.negSucc n)
state_after: no goals
tactic: simpa only [Int.negSucc_eq, neg_add] using neg_add_one n hn hnm
Theorem: CategoryTheory.Abelian.subobjectIsoSubobjectOp_symm_apply
File: Mathlib/CategoryTheory/Abelian/Subobject.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Abelian C
X : C
⊢ Subobject X ≃o (Subobject (op X))ᵒᵈ
state_after: case refine_1
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Abelian C
X : C
⊢ (↑(cokernelOrderHom X)).comp ↑(kernelOrderHom X) = OrderHom.id

case refine_2
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Abelian C
X : C
⊢ (↑(kernelOrderHom X)).comp ↑(cokernelOrderHom X) = OrderHom.id
tactic: refine OrderIso.ofHomInv (cokernelOrderHom X) (kernelOrderHom X) ?_ ?_
Theorem: EReal.abs_zero
File: Mathlib/Data/Real/EReal.lean

Proof steps:
state_before: ⊢ EReal.abs 0 = 0
state_after: no goals
tactic: rw [abs_eq_zero_iff]
Theorem: negPart_eq_neg_inf_zero
File: Mathlib/Algebra/Order/Group/PosPart.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝³ : Lattice α
inst✝² : Group α
a✝ : α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ a⁻ᵐ = (a ⊓ 1)⁻¹
state_after: no goals
tactic: rw [leOnePart, ← inv_inj, inv_sup, inv_inv, inv_inv, inv_one]
Theorem: Function.Injective.sameRay_map_iff
File: Mathlib/LinearAlgebra/Ray.lean

Proof steps:
state_before: R : Type u_1
inst✝¹² : StrictOrderedCommSemiring R
M : Type u_2
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : Module R M
N : Type u_3
inst✝⁹ : AddCommMonoid N
inst✝⁸ : Module R N
ι : Type u_4
inst✝⁷ : DecidableEq ι
x y z : M
S : Type u_5
inst✝⁶ : OrderedCommSemiring S
inst✝⁵ : Algebra S R
inst✝⁴ : Module S M
inst✝³ : SMulPosMono S R
inst✝² : IsScalarTower S R M
a : S
F : Type u_6
inst✝¹ : FunLike F M N
inst✝ : LinearMapClass F R M N
f : F
hf : Function.Injective ⇑f
⊢ SameRay R (f x) (f y) ↔ SameRay R x y
state_after: no goals
tactic: simp only [SameRay, map_zero, ← hf.eq_iff, map_smul]
Theorem: Basis.tensorProduct_repr_tmul_apply
File: Mathlib/LinearAlgebra/TensorProduct/Basis.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
M : Type u_3
N : Type u_4
ι : Type u_5
κ : Type u_6
inst✝⁸ : CommSemiring R
inst✝⁷ : Semiring S
inst✝⁶ : Algebra R S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : Module S M
inst✝² : IsScalarTower R S M
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
b : Basis ι S M
c : Basis κ R N
m : M
n : N
i : ι
j : κ
⊢ ((b.tensorProduct c).repr (m ⊗ₜ[R] n)) (i, j) = (c.repr n) j • (b.repr m) i
state_after: no goals
tactic: simp [Basis.tensorProduct, mul_comm]
Theorem: Polynomial.aroots_C_mul_X_pow
File: Mathlib/Algebra/Polynomial/Roots.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n✝ : ℕ
inst✝⁶ : CommRing R
inst✝⁵ : IsDomain R
p q : R[X]
inst✝⁴ : CommRing T
inst✝³ : CommRing S
inst✝² : IsDomain S
inst✝¹ : Algebra T S
inst✝ : NoZeroSMulDivisors T S
a : T
ha : a ≠ 0
n : ℕ
⊢ (C a * X ^ n).aroots S = n • {0}
state_after: no goals
tactic: rw [aroots_C_mul _ ha, aroots_X_pow]
Theorem: Set.range_inclusion
File: Mathlib/Data/Set/Image.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : ι → α
s t : Set α
h : s ⊆ t
⊢ range (inclusion h) = {x | ↑x ∈ s}
state_after: case h.mk
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : ι → α
s t : Set α
h : s ⊆ t
x : α
hx : x ∈ t
⊢ ⟨x, hx⟩ ∈ range (inclusion h) ↔ ⟨x, hx⟩ ∈ {x | ↑x ∈ s}
tactic: ext ⟨x, hx⟩
state_before: case h.mk
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : ι → α
s t : Set α
h : s ⊆ t
x : α
hx : x ∈ t
⊢ ⟨x, hx⟩ ∈ range (inclusion h) ↔ ⟨x, hx⟩ ∈ {x | ↑x ∈ s}
state_after: case h.mk.mp
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : ι → α
s t : Set α
h : s ⊆ t
x : α
hx : x ∈ t
⊢ ⟨x, hx⟩ ∈ range (inclusion h) → ⟨x, hx⟩ ∈ {x | ↑x ∈ s}

case h.mk.mpr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : ι → α
s t : Set α
h : s ⊆ t
x : α
hx : x ∈ t
⊢ ⟨x, hx⟩ ∈ {x | ↑x ∈ s} → ⟨x, hx⟩ ∈ range (inclusion h)
tactic: apply Iff.intro
Theorem: HasDerivAt.iterate
File: Mathlib/Analysis/Calculus/Deriv/Comp.lean

Proof steps:
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
E : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
f✝ f₀ f₁ g : 𝕜 → F
f'✝ f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_1
inst✝³ : NontriviallyNormedField 𝕜'
inst✝² : NormedAlgebra 𝕜 𝕜'
inst✝¹ : NormedSpace 𝕜' F
inst✝ : IsScalarTower 𝕜 𝕜' F
s' t' : Set 𝕜'
h : 𝕜 → 𝕜'
h₁ : 𝕜 → 𝕜
h₂ : 𝕜' → 𝕜'
h' h₂' : 𝕜'
h₁' : 𝕜
g₁ : 𝕜' → F
g₁' : F
L' : Filter 𝕜'
y : 𝕜'
f : 𝕜 → 𝕜
f' : 𝕜
hf : HasDerivAt f f' x
hx : f x = x
n : ℕ
this : Tendsto f (𝓝 x) (𝓝 (f x))
⊢ Tendsto f (𝓝 x) (𝓝 x)
state_after: no goals
tactic: rwa [hx] at this
Theorem: birkhoffSum_add
File: Mathlib/Dynamics/BirkhoffSum/Basic.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
inst✝ : AddCommMonoid M
f : α → α
g : α → M
m n : ℕ
x : α
⊢ birkhoffSum f g (m + n) x = birkhoffSum f g m x + birkhoffSum f g n (f^[m] x)
state_after: no goals
tactic: simp_rw [birkhoffSum, sum_range_add, add_comm m, iterate_add_apply]
Theorem: CategoryTheory.MonoidalCategory.whiskerLeft_iff
File: Mathlib/CategoryTheory/Monoidal/Category.lean

Proof steps:
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
U V W X✝ Y✝ Z X Y : C
f g : X ⟶ Y
⊢ 𝟙_ C ◁ f = 𝟙_ C ◁ g ↔ f = g
state_after: no goals
tactic: simp
Theorem: Ideal.torsionOf_eq_bot_iff_of_noZeroSMulDivisors
File: Mathlib/Algebra/Module/Torsion.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : Nontrivial R
inst✝ : NoZeroSMulDivisors R M
m : M
⊢ torsionOf R M m = ⊥ ↔ m ≠ 0
state_after: case refine_1
R : Type u_1
M : Type u_2
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : Nontrivial R
inst✝ : NoZeroSMulDivisors R M
m : M
h : torsionOf R M m = ⊥
contra : m = 0
⊢ False

case refine_2
R : Type u_1
M : Type u_2
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : Nontrivial R
inst✝ : NoZeroSMulDivisors R M
m : M
h : m ≠ 0
r : R
hr : r ∈ torsionOf R M m
⊢ r = 0
tactic: refine ⟨fun h contra => ?_, fun h => (Submodule.eq_bot_iff _).mpr fun r hr => ?_⟩
Theorem: MeasurableEmbedding.absolutelyContinuous_map
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
m1 : MeasurableSpace β
f : α → β
μ ν : Measure α
hf : MeasurableEmbedding f
hμν : μ ≪ ν
⊢ Measure.map f μ ≪ Measure.map f ν
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
m1 : MeasurableSpace β
f : α → β
μ ν : Measure α
hf : MeasurableEmbedding f
hμν : μ ≪ ν
t : Set β
ht : (Measure.map f ν) t = 0
⊢ (Measure.map f μ) t = 0
tactic: intro t ht
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
m1 : MeasurableSpace β
f : α → β
μ ν : Measure α
hf : MeasurableEmbedding f
hμν : μ ≪ ν
t : Set β
ht : (Measure.map f ν) t = 0
⊢ (Measure.map f μ) t = 0
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
m1 : MeasurableSpace β
f : α → β
μ ν : Measure α
hf : MeasurableEmbedding f
hμν : μ ≪ ν
t : Set β
ht : ν (f ⁻¹' t) = 0
⊢ μ (f ⁻¹' t) = 0
tactic: rw [hf.map_apply] at ht ⊢
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
m1 : MeasurableSpace β
f : α → β
μ ν : Measure α
hf : MeasurableEmbedding f
hμν : μ ≪ ν
t : Set β
ht : ν (f ⁻¹' t) = 0
⊢ μ (f ⁻¹' t) = 0
state_after: no goals
tactic: exact hμν ht
Theorem: Isometry.map_hausdorffMeasure
File: Mathlib/MeasureTheory/Measure/Hausdorff.lean

Proof steps:
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁵ : EMetricSpace X
inst✝⁴ : EMetricSpace Y
inst✝³ : MeasurableSpace X
inst✝² : BorelSpace X
inst✝¹ : MeasurableSpace Y
inst✝ : BorelSpace Y
f : X → Y
d : ℝ
hf : Isometry f
hd : 0 ≤ d ∨ Surjective f
⊢ Measure.map f μH[d] = μH[d].restrict (range f)
state_after: case h
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁵ : EMetricSpace X
inst✝⁴ : EMetricSpace Y
inst✝³ : MeasurableSpace X
inst✝² : BorelSpace X
inst✝¹ : MeasurableSpace Y
inst✝ : BorelSpace Y
f : X → Y
d : ℝ
hf : Isometry f
hd : 0 ≤ d ∨ Surjective f
s : Set Y
hs : MeasurableSet s
⊢ (Measure.map f μH[d]) s = (μH[d].restrict (range f)) s
tactic: ext1 s hs
state_before: case h
ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁵ : EMetricSpace X
inst✝⁴ : EMetricSpace Y
inst✝³ : MeasurableSpace X
inst✝² : BorelSpace X
inst✝¹ : MeasurableSpace Y
inst✝ : BorelSpace Y
f : X → Y
d : ℝ
hf : Isometry f
hd : 0 ≤ d ∨ Surjective f
s : Set Y
hs : MeasurableSet s
⊢ (Measure.map f μH[d]) s = (μH[d].restrict (range f)) s
state_after: no goals
tactic: rw [map_apply hf.continuous.measurable hs, Measure.restrict_apply hs,
    hf.hausdorffMeasure_preimage hd]
Theorem: hammingDist_eq_zero
File: Mathlib/InformationTheory/Hamming.lean

Proof steps:
state_before: α : Type u_1
ι : Type u_2
β : ι → Type u_3
inst✝² : Fintype ι
inst✝¹ : (i : ι) → DecidableEq (β i)
γ : ι → Type u_4
inst✝ : (i : ι) → DecidableEq (γ i)
x y : (i : ι) → β i
H : x = y
⊢ hammingDist x y = 0
state_after: α : Type u_1
ι : Type u_2
β : ι → Type u_3
inst✝² : Fintype ι
inst✝¹ : (i : ι) → DecidableEq (β i)
γ : ι → Type u_4
inst✝ : (i : ι) → DecidableEq (γ i)
x y : (i : ι) → β i
H : x = y
⊢ hammingDist y y = 0
tactic: rw [H]
state_before: α : Type u_1
ι : Type u_2
β : ι → Type u_3
inst✝² : Fintype ι
inst✝¹ : (i : ι) → DecidableEq (β i)
γ : ι → Type u_4
inst✝ : (i : ι) → DecidableEq (γ i)
x y : (i : ι) → β i
H : x = y
⊢ hammingDist y y = 0
state_after: no goals
tactic: exact hammingDist_self _
Theorem: Metric.instTietzeExtensionClosedBall
File: Mathlib/Analysis/Complex/Tietze.lean

Proof steps:
state_before: 𝕜 : Type v
inst✝³ : RCLike 𝕜
E : Type w
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
y : E
r : ℝ
hr : 0 < r
⊢ ↑(closedBall y r) ≃ₜ ?m.76321
state_after: 𝕜 : Type v
inst✝³ : RCLike 𝕜
E : Type w
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
y : E
r : ℝ
hr : 0 < r
⊢ ↑(closedBall y r) ≃ₜ ↑(closedBall 0 1)
tactic: show (Metric.closedBall y r) ≃ₜ (Metric.closedBall (0 : E) 1)
state_before: 𝕜 : Type v
inst✝³ : RCLike 𝕜
E : Type w
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
y : E
r : ℝ
hr : 0 < r
⊢ ↑(closedBall y r) ≃ₜ ↑(closedBall 0 1)
state_after: 𝕜 : Type v
inst✝³ : RCLike 𝕜
E : Type w
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
y : E
r : ℝ
hr : 0 < r
⊢ ↑(closedBall 0 1) ≃ₜ ↑(closedBall y r)
tactic: symm
state_before: 𝕜 : Type v
inst✝³ : RCLike 𝕜
E : Type w
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
y : E
r : ℝ
hr : 0 < r
⊢ ↑(closedBall 0 1) ≃ₜ ↑(closedBall y r)
state_after: 𝕜 : Type v
inst✝³ : RCLike 𝕜
E : Type w
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
y : E
r : ℝ
hr : 0 < r
⊢ closedBall 0 1 = ⇑(DilationEquiv.smulTorsor y ⋯).toHomeomorph ⁻¹' closedBall y r
tactic: apply (DilationEquiv.smulTorsor y (k := (r : 𝕜)) <| by exact_mod_cast hr.ne').toHomeomorph.sets
state_before: 𝕜 : Type v
inst✝³ : RCLike 𝕜
E : Type w
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
y : E
r : ℝ
hr : 0 < r
⊢ closedBall 0 1 = ⇑(DilationEquiv.smulTorsor y ⋯).toHomeomorph ⁻¹' closedBall y r
state_after: case h
𝕜 : Type v
inst✝³ : RCLike 𝕜
E : Type w
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
y : E
r : ℝ
hr : 0 < r
x : E
⊢ x ∈ closedBall 0 1 ↔ x ∈ ⇑(DilationEquiv.smulTorsor y ⋯).toHomeomorph ⁻¹' closedBall y r
tactic: ext x
state_before: case h
𝕜 : Type v
inst✝³ : RCLike 𝕜
E : Type w
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
y : E
r : ℝ
hr : 0 < r
x : E
⊢ x ∈ closedBall 0 1 ↔ x ∈ ⇑(DilationEquiv.smulTorsor y ⋯).toHomeomorph ⁻¹' closedBall y r
state_after: case h
𝕜 : Type v
inst✝³ : RCLike 𝕜
E : Type w
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
y : E
r : ℝ
hr : 0 < r
x : E
⊢ ‖x‖ ≤ 1 ↔ r * ‖x‖ ≤ r
tactic: simp only [mem_closedBall, dist_zero_right, DilationEquiv.coe_toHomeomorph, Set.mem_preimage,
      DilationEquiv.smulTorsor_apply, vadd_eq_add, dist_add_self_left, norm_smul,
      RCLike.norm_ofReal, abs_of_nonneg hr.le]
state_before: case h
𝕜 : Type v
inst✝³ : RCLike 𝕜
E : Type w
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : FiniteDimensional 𝕜 E
y : E
r : ℝ
hr : 0 < r
x : E
⊢ ‖x‖ ≤ 1 ↔ r * ‖x‖ ≤ r
state_after: no goals
tactic: exact (mul_le_iff_le_one_right hr).symm
Theorem: Nat.isUnit_iff
File: Mathlib/Algebra/Group/Nat.lean

Proof steps:
state_before: m n✝ n : ℕ
⊢ IsUnit n → n = 1
state_after: case intro
m n : ℕ
u : ℕˣ
⊢ ↑u = 1
tactic: rintro ⟨u, rfl⟩
state_before: case intro
m n : ℕ
u : ℕˣ
⊢ ↑u = 1
state_after: case intro
m n : ℕ
⊢ ↑1 = 1
tactic: obtain rfl := Nat.units_eq_one u
state_before: case intro
m n : ℕ
⊢ ↑1 = 1
state_after: no goals
tactic: rfl
Theorem: Cardinal.lift_le_one_iff
File: Mathlib/SetTheory/Cardinal/Basic.lean

Proof steps:
state_before: α β : Type u
a : Cardinal.{u}
⊢ lift.{v, u} a ≤ 1 ↔ a ≤ 1
state_after: no goals
tactic: simpa using lift_le_nat_iff (n := 1)
Theorem: Function.Semiconj₂.isIdempotent_left
File: Mathlib/Logic/Function/Conjugate.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β
ga : α → α → α
gb : β → β → β
inst✝ : Std.IdempotentOp gb
h : Semiconj₂ f ga gb
h_inj : Injective f
x : α
⊢ f (ga x x) = f x
state_after: no goals
tactic: rw [h.eq, Std.IdempotentOp.idempotent (op := gb)]
Theorem: sSup_iUnion
File: Mathlib/Data/Set/Lattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
inst✝ : CompleteLattice β
t : ι → Set β
⊢ sSup (⋃ i, t i) = ⨆ i, sSup (t i)
state_after: no goals
tactic: simp_rw [sSup_eq_iSup, iSup_iUnion]
Theorem: Matrix.mul_zero
File: Mathlib/Data/Matrix/Basic.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocSemiring α
inst✝ : Fintype n
M : Matrix m n α
⊢ M * 0 = 0
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocSemiring α
inst✝ : Fintype n
M : Matrix m n α
i✝ : m
j✝ : o
⊢ (M * 0) i✝ j✝ = 0 i✝ j✝
tactic: ext
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocSemiring α
inst✝ : Fintype n
M : Matrix m n α
i✝ : m
j✝ : o
⊢ (M * 0) i✝ j✝ = 0 i✝ j✝
state_after: no goals
tactic: apply dotProduct_zero
Theorem: List.sublist_iff_exists_fin_orderEmbedding_get_eq
File: Mathlib/Data/List/NodupEquivFin.lean

Proof steps:
state_before: α : Type u_1
l l' : List α
⊢ l <+ l' ↔ ∃ f, ∀ (ix : Fin l.length), l.get ix = l'.get (f ix)
state_after: α : Type u_1
l l' : List α
⊢ (∃ f, ∀ (ix : ℕ), l.get? ix = l'.get? (f ix)) ↔ ∃ f, ∀ (ix : Fin l.length), l.get ix = l'.get (f ix)
tactic: rw [sublist_iff_exists_orderEmbedding_get?_eq]
state_before: α : Type u_1
l l' : List α
⊢ (∃ f, ∀ (ix : ℕ), l.get? ix = l'.get? (f ix)) ↔ ∃ f, ∀ (ix : Fin l.length), l.get ix = l'.get (f ix)
state_after: case mp
α : Type u_1
l l' : List α
⊢ (∃ f, ∀ (ix : ℕ), l.get? ix = l'.get? (f ix)) → ∃ f, ∀ (ix : Fin l.length), l.get ix = l'.get (f ix)

case mpr
α : Type u_1
l l' : List α
⊢ (∃ f, ∀ (ix : Fin l.length), l.get ix = l'.get (f ix)) → ∃ f, ∀ (ix : ℕ), l.get? ix = l'.get? (f ix)
tactic: constructor
Theorem: Set.subsingleton_or_nontrivial
File: Mathlib/Data/Set/Subsingleton.lean

Proof steps:
state_before: α : Type u
a : α
s✝ t s : Set α
⊢ s.Subsingleton ∨ s.Nontrivial
state_after: no goals
tactic: simp [or_iff_not_imp_right]
Theorem: Subgroup.exists_smul_eq
File: Mathlib/GroupTheory/SchurZassenhaus.lean

Proof steps:
state_before: G : Type u_1
inst✝³ : Group G
H : Subgroup G
inst✝² : H.IsCommutative
inst✝¹ : H.FiniteIndex
α✝¹ β✝¹ : ↑(leftTransversals ↑H)
inst✝ : H.Normal
hH : (Nat.card ↥H).Coprime H.index
α✝ β✝ : H.QuotientDiff
β α : ↑(leftTransversals ↑H)
⊢ diff (MonoidHom.id ↥H) β α * ((powCoprime hH).symm (diff (MonoidHom.id ↥H) β α))⁻¹ ^ H.index = 1
state_after: no goals
tactic: rw [inv_pow, ← powCoprime_apply hH, Equiv.apply_symm_apply, mul_inv_self]
Theorem: HomologicalComplex.opcycles_right_exact
File: Mathlib/Algebra/Homology/HomologySequence.lean

Proof steps:
state_before: C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{?u.55275, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Epi S.g
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
⊢ opcyclesMap S.f i ≫ opcyclesMap S.g i = 0
state_after: no goals
tactic: rw [← opcyclesMap_comp, S.zero, opcyclesMap_zero]
state_before: C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Epi S.g
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
⊢ (ShortComplex.mk (opcyclesMap S.f i) (opcyclesMap S.g i) ⋯).Exact
state_after: C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Epi S.g
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
this : Epi (S.map (eval C c i)).g
⊢ (ShortComplex.mk (opcyclesMap S.f i) (opcyclesMap S.g i) ⋯).Exact
tactic: have : Epi (ShortComplex.map S (eval C c i)).g := by dsimp; infer_instance
state_before: C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Epi S.g
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
this : Epi (S.map (eval C c i)).g
⊢ (ShortComplex.mk (opcyclesMap S.f i) (opcyclesMap S.g i) ⋯).Exact
state_after: C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Epi S.g
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
this : Epi (S.map (eval C c i)).g
hj : IsColimit (CokernelCofork.ofπ (S.map (eval C c i)).g ⋯)
⊢ (ShortComplex.mk (opcyclesMap S.f i) (opcyclesMap S.g i) ⋯).Exact
tactic: have hj := (hS.map (HomologicalComplex.eval C c i)).gIsCokernel
state_before: C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Epi S.g
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
this : Epi (S.map (eval C c i)).g
hj : IsColimit (CokernelCofork.ofπ (S.map (eval C c i)).g ⋯)
⊢ (ShortComplex.mk (opcyclesMap S.f i) (opcyclesMap S.g i) ⋯).Exact
state_after: case hS
C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Epi S.g
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
this : Epi (S.map (eval C c i)).g
hj : IsColimit (CokernelCofork.ofπ (S.map (eval C c i)).g ⋯)
⊢ IsColimit (CokernelCofork.ofπ (ShortComplex.mk (opcyclesMap S.f i) (opcyclesMap S.g i) ⋯).g ⋯)
tactic: apply ShortComplex.exact_of_g_is_cokernel