ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: CategoryTheory.BraidedCategory.braiding_tensor_right
File: Mathlib/CategoryTheory/Monoidal/Braided/Basic.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X Y Z : C
⊢ (β_ X (Y ⊗ Z)).hom = (α_ X Y Z).inv ≫ (β_ X Y).hom ▷ Z ≫ (α_ Y X Z).hom ≫ Y ◁ (β_ X Z).hom ≫ (α_ Y Z X).inv
state_after: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X Y Z : C
⊢ (α_ X Y Z).hom ≫ (β_ X (Y ⊗ Z)).hom =
    (α_ X Y Z).hom ≫ (α_ X Y Z).inv ≫ (β_ X Y).hom ▷ Z ≫ (α_ Y X Z).hom ≫ Y ◁ (β_ X Z).hom ≫ (α_ Y Z X).inv
tactic: apply (cancel_epi (α_ X Y Z).hom).1
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X Y Z : C
⊢ (α_ X Y Z).hom ≫ (β_ X (Y ⊗ Z)).hom =
    (α_ X Y Z).hom ≫ (α_ X Y Z).inv ≫ (β_ X Y).hom ▷ Z ≫ (α_ Y X Z).hom ≫ Y ◁ (β_ X Z).hom ≫ (α_ Y Z X).inv
state_after: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X Y Z : C
⊢ ((α_ X Y Z).hom ≫ (β_ X (Y ⊗ Z)).hom) ≫ (α_ Y Z X).hom =
    ((α_ X Y Z).hom ≫ (α_ X Y Z).inv ≫ (β_ X Y).hom ▷ Z ≫ (α_ Y X Z).hom ≫ Y ◁ (β_ X Z).hom ≫ (α_ Y Z X).inv) ≫
      (α_ Y Z X).hom
tactic: apply (cancel_mono (α_ Y Z X).hom).1
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X Y Z : C
⊢ ((α_ X Y Z).hom ≫ (β_ X (Y ⊗ Z)).hom) ≫ (α_ Y Z X).hom =
    ((α_ X Y Z).hom ≫ (α_ X Y Z).inv ≫ (β_ X Y).hom ▷ Z ≫ (α_ Y X Z).hom ≫ Y ◁ (β_ X Z).hom ≫ (α_ Y Z X).inv) ≫
      (α_ Y Z X).hom
state_after: no goals
tactic: simp [hexagon_forward]
Theorem: Associates.quot_out_zero
File: Mathlib/Algebra/Associated/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : MonoidWithZero α
⊢ Quot.out 0 = 0
state_after: no goals
tactic: rw [← mk_eq_zero, quot_out]
Theorem: Ideal.iInf_pow_eq_bot_of_localRing
File: Mathlib/RingTheory/Filtration.lean

Proof steps:
state_before: R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : LocalRing R
h : I ≠ ⊤
⊢ ⨅ i, I ^ i = ⊥
state_after: case h.e'_2.h.e'_4.h
R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : LocalRing R
h : I ≠ ⊤
x✝ : ℕ
⊢ I ^ x✝ = I ^ x✝ • ⊤
tactic: convert I.iInf_pow_smul_eq_bot_of_localRing (M := R) h
state_before: case h.e'_2.h.e'_4.h
R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : LocalRing R
h : I ≠ ⊤
x✝ : ℕ
⊢ I ^ x✝ = I ^ x✝ • ⊤
state_after: case h.e'_2.h.e'_4.h.h
R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : LocalRing R
h : I ≠ ⊤
x✝ : ℕ
i : R
⊢ i ∈ I ^ x✝ ↔ i ∈ I ^ x✝ • ⊤
tactic: ext i
state_before: case h.e'_2.h.e'_4.h.h
R M : Type u
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : Module R M
I : Ideal R
F F' : I.Filtration M
inst✝¹ : IsNoetherianRing R
inst✝ : LocalRing R
h : I ≠ ⊤
x✝ : ℕ
i : R
⊢ i ∈ I ^ x✝ ↔ i ∈ I ^ x✝ • ⊤
state_after: no goals
tactic: rw [smul_eq_mul, ← Ideal.one_eq_top, mul_one]
Theorem: GaussianFourier.norm_cexp_neg_mul_sq_add_mul_I
File: Mathlib/Analysis/SpecialFunctions/Gaussian/FourierTransform.lean

Proof steps:
state_before: b✝ b : ℂ
c T : ℝ
⊢ ‖cexp (-b * (↑T + ↑c * I) ^ 2)‖ = rexp (-(b.re * T ^ 2 - 2 * b.im * c * T - b.re * c ^ 2))
state_after: b✝ b : ℂ
c T : ℝ
⊢ rexp (-((↑b.re + ↑b.im * I) * (↑T + ↑c * I) ^ 2).re) =
    rexp (-((↑b.re + ↑b.im * I).re * T ^ 2 - 2 * (↑b.re + ↑b.im * I).im * c * T - (↑b.re + ↑b.im * I).re * c ^ 2))
tactic: rw [Complex.norm_eq_abs, Complex.abs_exp, neg_mul, neg_re, ← re_add_im b]
state_before: b✝ b : ℂ
c T : ℝ
⊢ rexp (-((↑b.re + ↑b.im * I) * (↑T + ↑c * I) ^ 2).re) =
    rexp (-((↑b.re + ↑b.im * I).re * T ^ 2 - 2 * (↑b.re + ↑b.im * I).im * c * T - (↑b.re + ↑b.im * I).re * c ^ 2))
state_after: b✝ b : ℂ
c T : ℝ
⊢ rexp
      (-(b.re * ((T + (c * 0 - 0 * 1)) * (T + (c * 0 - 0 * 1)) - (0 + (c * 1 + 0 * 0)) * (0 + (c * 1 + 0 * 0))) -
          b.im * ((T + (c * 0 - 0 * 1)) * (0 + (c * 1 + 0 * 0)) + (0 + (c * 1 + 0 * 0)) * (T + (c * 0 - 0 * 1))))) =
    rexp (-(b.re * (T * T) - 2 * b.im * c * T - b.re * (c * c)))
tactic: simp only [sq, re_add_im, mul_re, mul_im, add_re, add_im, ofReal_re, ofReal_im, I_re, I_im]
state_before: b✝ b : ℂ
c T : ℝ
⊢ rexp
      (-(b.re * ((T + (c * 0 - 0 * 1)) * (T + (c * 0 - 0 * 1)) - (0 + (c * 1 + 0 * 0)) * (0 + (c * 1 + 0 * 0))) -
          b.im * ((T + (c * 0 - 0 * 1)) * (0 + (c * 1 + 0 * 0)) + (0 + (c * 1 + 0 * 0)) * (T + (c * 0 - 0 * 1))))) =
    rexp (-(b.re * (T * T) - 2 * b.im * c * T - b.re * (c * c)))
state_after: no goals
tactic: ring_nf
Theorem: Nat.superFactorial_four_mul
File: Mathlib/Data/Nat/Factorial/SuperFactorial.lean

Proof steps:
state_before: n✝ : ℕ
R : Type u_1
inst✝ : CommRing R
n : ℕ
⊢ sf 4 * n = (∏ i ∈ range (2 * n), (2 * i + 1)!) ^ 2 * 2 ^ (2 * n) * (2 * n)!
state_after: no goals
tactic: rw [← superFactorial_two_mul, ← mul_assoc, Nat.mul_two]
state_before: n✝ : ℕ
R : Type u_1
inst✝ : CommRing R
n : ℕ
⊢ (∏ i ∈ range (2 * n), (2 * i + 1)!) ^ 2 * 2 ^ (2 * n) * (2 * n)! =
    ((∏ i ∈ range (2 * n), (2 * i + 1)!) * 2 ^ n) ^ 2 * (2 * n)!
state_after: no goals
tactic: rw [pow_mul', mul_pow]
Theorem: Module.Baer.chain_linearPMap_of_chain_extensionOf
File: Mathlib/Algebra/Module/Injective.lean

Proof steps:
state_before: R : Type u
inst✝⁶ : Ring R
Q : Type v
inst✝⁵ : AddCommGroup Q
inst✝⁴ : Module R Q
M : Type u_1
N : Type u_2
inst✝³ : AddCommGroup M
inst✝² : AddCommGroup N
inst✝¹ : Module R M
inst✝ : Module R N
i : M →ₗ[R] N
f : M →ₗ[R] Q
c : Set (ExtensionOf i f)
hchain : IsChain (fun x x_1 => x ≤ x_1) c
⊢ IsChain (fun x x_1 => x ≤ x_1) ((fun x => x.toLinearPMap) '' c)
state_after: case intro.intro.intro.intro
R : Type u
inst✝⁶ : Ring R
Q : Type v
inst✝⁵ : AddCommGroup Q
inst✝⁴ : Module R Q
M : Type u_1
N : Type u_2
inst✝³ : AddCommGroup M
inst✝² : AddCommGroup N
inst✝¹ : Module R M
inst✝ : Module R N
i : M →ₗ[R] N
f : M →ₗ[R] Q
c : Set (ExtensionOf i f)
hchain : IsChain (fun x x_1 => x ≤ x_1) c
a : ExtensionOf i f
a_mem : a ∈ c
b : ExtensionOf i f
b_mem : b ∈ c
neq : (fun x => x.toLinearPMap) a ≠ (fun x => x.toLinearPMap) b
⊢ (fun x x_1 => x ≤ x_1) ((fun x => x.toLinearPMap) a) ((fun x => x.toLinearPMap) b) ∨
    (fun x x_1 => x ≤ x_1) ((fun x => x.toLinearPMap) b) ((fun x => x.toLinearPMap) a)
tactic: rintro _ ⟨a, a_mem, rfl⟩ _ ⟨b, b_mem, rfl⟩ neq
state_before: case intro.intro.intro.intro
R : Type u
inst✝⁶ : Ring R
Q : Type v
inst✝⁵ : AddCommGroup Q
inst✝⁴ : Module R Q
M : Type u_1
N : Type u_2
inst✝³ : AddCommGroup M
inst✝² : AddCommGroup N
inst✝¹ : Module R M
inst✝ : Module R N
i : M →ₗ[R] N
f : M →ₗ[R] Q
c : Set (ExtensionOf i f)
hchain : IsChain (fun x x_1 => x ≤ x_1) c
a : ExtensionOf i f
a_mem : a ∈ c
b : ExtensionOf i f
b_mem : b ∈ c
neq : (fun x => x.toLinearPMap) a ≠ (fun x => x.toLinearPMap) b
⊢ (fun x x_1 => x ≤ x_1) ((fun x => x.toLinearPMap) a) ((fun x => x.toLinearPMap) b) ∨
    (fun x x_1 => x ≤ x_1) ((fun x => x.toLinearPMap) b) ((fun x => x.toLinearPMap) a)
state_after: no goals
tactic: exact hchain a_mem b_mem (ne_of_apply_ne _ neq)
Theorem: Cardinal.empty_infinite_Theory_isComplete
File: Mathlib/ModelTheory/Satisfiability.lean

Proof steps:
state_before: L : Language
κ : Cardinal.{w}
T : L.Theory
⊢ lift.{0, 0} Language.empty.card ≤ lift.{0, 0} ℵ₀
state_after: no goals
tactic: simp
Theorem: latticeClosure_prod
File: Mathlib/Order/SupClosed.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : DistribLattice α
inst✝ : DistribLattice β
s✝ s : Set α
t : Set β
⊢ latticeClosure (s ×ˢ t) = latticeClosure s ×ˢ latticeClosure t
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : DistribLattice α
inst✝ : DistribLattice β
s✝ s : Set α
t : Set β
⊢ supClosure (infClosure (s ×ˢ t)) = supClosure (infClosure s) ×ˢ supClosure (infClosure t)
tactic: simp_rw [← supClosure_infClosure]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : DistribLattice α
inst✝ : DistribLattice β
s✝ s : Set α
t : Set β
⊢ supClosure (infClosure (s ×ˢ t)) = supClosure (infClosure s) ×ˢ supClosure (infClosure t)
state_after: no goals
tactic: simp
Theorem: tprod_eq_one_iff
File: Mathlib/Topology/Algebra/InfiniteSum/Order.lean

Proof steps:
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝² : CanonicallyOrderedCommMonoid α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
f : ι → α
a : α
hf : Multipliable f
⊢ ∏' (i : ι), f i = 1 ↔ ∀ (x : ι), f x = 1
state_after: no goals
tactic: rw [← hasProd_one_iff, hf.hasProd_iff]
Theorem: Cycle.chain_ne_nil
File: Mathlib/Data/List/Cycle.lean

Proof steps:
state_before: α : Type u_1
r : α → α → Prop
l : List α
⊢ ∀ (l : List α) (a : α),
    (∀ (hl : l ≠ []), Chain r ↑l ↔ List.Chain r (l.getLast hl) l) →
      ∀ (hl : l ++ [a] ≠ []), Chain r ↑(l ++ [a]) ↔ List.Chain r ((l ++ [a]).getLast hl) (l ++ [a])
state_after: α : Type u_1
r : α → α → Prop
l m : List α
a : α
_H : ∀ (hl : m ≠ []), Chain r ↑m ↔ List.Chain r (m.getLast hl) m
hl✝ : m ++ [a] ≠ []
⊢ Chain r ↑(m ++ [a]) ↔ List.Chain r ((m ++ [a]).getLast hl✝) (m ++ [a])
tactic: intro m a _H _
state_before: α : Type u_1
r : α → α → Prop
l m : List α
a : α
_H : ∀ (hl : m ≠ []), Chain r ↑m ↔ List.Chain r (m.getLast hl) m
hl✝ : m ++ [a] ≠ []
⊢ Chain r ↑(m ++ [a]) ↔ List.Chain r ((m ++ [a]).getLast hl✝) (m ++ [a])
state_after: no goals
tactic: rw [← coe_cons_eq_coe_append, chain_coe_cons, getLast_append_singleton]
Theorem: CategoryTheory.Limits.le_kernelSubobject
File: Mathlib/CategoryTheory/Subobject/Limits.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
X Y Z : C
inst✝¹ : HasZeroMorphisms C
f : X ⟶ Y
inst✝ : HasKernel f
A : Subobject X
h : A.arrow ≫ f = 0
⊢ kernel.lift f A.arrow h ≫ kernel.ι f = A.arrow
state_after: no goals
tactic: simp
Theorem: odd_neg_one
File: Mathlib/Algebra/Ring/Parity.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
inst✝ : Ring α
a b : α
n : ℕ
⊢ Odd (-1)
state_after: no goals
tactic: simp
Theorem: hasFPowerSeriesOnBall_inv_one_sub
File: Mathlib/Analysis/Analytic/Constructions.lean

Proof steps:
state_before: α : Type u_1
𝕜✝ : Type u_2
inst✝¹⁵ : NontriviallyNormedField 𝕜✝
E : Type u_3
F : Type u_4
G : Type u_5
H : Type u_6
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace 𝕜✝ E
inst✝¹² : NormedAddCommGroup F
inst✝¹¹ : NormedSpace 𝕜✝ F
inst✝¹⁰ : NormedAddCommGroup G
inst✝⁹ : NormedSpace 𝕜✝ G
inst✝⁸ : NormedAddCommGroup H
inst✝⁷ : NormedSpace 𝕜✝ H
𝕝✝ : Type u_7
inst✝⁶ : NontriviallyNormedField 𝕝✝
inst✝⁵ : NormedAlgebra 𝕜✝ 𝕝✝
A : Type u_8
inst✝⁴ : NormedRing A
inst✝³ : NormedAlgebra 𝕜✝ A
𝕜 : Type u_9
𝕝 : Type u_10
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NontriviallyNormedField 𝕝
inst✝ : NormedAlgebra 𝕜 𝕝
⊢ HasFPowerSeriesOnBall (fun x => (1 - x)⁻¹) (formalMultilinearSeries_geometric 𝕜 𝕝) 0 1
state_after: case r_le
α : Type u_1
𝕜✝ : Type u_2
inst✝¹⁵ : NontriviallyNormedField 𝕜✝
E : Type u_3
F : Type u_4
G : Type u_5
H : Type u_6
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace 𝕜✝ E
inst✝¹² : NormedAddCommGroup F
inst✝¹¹ : NormedSpace 𝕜✝ F
inst✝¹⁰ : NormedAddCommGroup G
inst✝⁹ : NormedSpace 𝕜✝ G
inst✝⁸ : NormedAddCommGroup H
inst✝⁷ : NormedSpace 𝕜✝ H
𝕝✝ : Type u_7
inst✝⁶ : NontriviallyNormedField 𝕝✝
inst✝⁵ : NormedAlgebra 𝕜✝ 𝕝✝
A : Type u_8
inst✝⁴ : NormedRing A
inst✝³ : NormedAlgebra 𝕜✝ A
𝕜 : Type u_9
𝕝 : Type u_10
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NontriviallyNormedField 𝕝
inst✝ : NormedAlgebra 𝕜 𝕝
⊢ 1 ≤ (formalMultilinearSeries_geometric 𝕜 𝕝).radius

case r_pos
α : Type u_1
𝕜✝ : Type u_2
inst✝¹⁵ : NontriviallyNormedField 𝕜✝
E : Type u_3
F : Type u_4
G : Type u_5
H : Type u_6
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace 𝕜✝ E
inst✝¹² : NormedAddCommGroup F
inst✝¹¹ : NormedSpace 𝕜✝ F
inst✝¹⁰ : NormedAddCommGroup G
inst✝⁹ : NormedSpace 𝕜✝ G
inst✝⁸ : NormedAddCommGroup H
inst✝⁷ : NormedSpace 𝕜✝ H
𝕝✝ : Type u_7
inst✝⁶ : NontriviallyNormedField 𝕝✝
inst✝⁵ : NormedAlgebra 𝕜✝ 𝕝✝
A : Type u_8
inst✝⁴ : NormedRing A
inst✝³ : NormedAlgebra 𝕜✝ A
𝕜 : Type u_9
𝕝 : Type u_10
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NontriviallyNormedField 𝕝
inst✝ : NormedAlgebra 𝕜 𝕝
⊢ 0 < 1

case hasSum
α : Type u_1
𝕜✝ : Type u_2
inst✝¹⁵ : NontriviallyNormedField 𝕜✝
E : Type u_3
F : Type u_4
G : Type u_5
H : Type u_6
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace 𝕜✝ E
inst✝¹² : NormedAddCommGroup F
inst✝¹¹ : NormedSpace 𝕜✝ F
inst✝¹⁰ : NormedAddCommGroup G
inst✝⁹ : NormedSpace 𝕜✝ G
inst✝⁸ : NormedAddCommGroup H
inst✝⁷ : NormedSpace 𝕜✝ H
𝕝✝ : Type u_7
inst✝⁶ : NontriviallyNormedField 𝕝✝
inst✝⁵ : NormedAlgebra 𝕜✝ 𝕝✝
A : Type u_8
inst✝⁴ : NormedRing A
inst✝³ : NormedAlgebra 𝕜✝ A
𝕜 : Type u_9
𝕝 : Type u_10
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NontriviallyNormedField 𝕝
inst✝ : NormedAlgebra 𝕜 𝕝
⊢ ∀ {y : 𝕝},
    y ∈ EMetric.ball 0 1 → HasSum (fun n => (formalMultilinearSeries_geometric 𝕜 𝕝 n) fun x => y) (1 - (0 + y))⁻¹
tactic: constructor
Theorem: Orientation.norm_div_sin_oangle_add_right_of_oangle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Oriented/RightAngle.lean

Proof steps:
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
⊢ ‖y‖ / (o.oangle x (x + y)).sin = ‖x + y‖
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
hs : (o.oangle x (x + y)).sign = 1
⊢ ‖y‖ / (o.oangle x (x + y)).sin = ‖x + y‖
tactic: have hs : (o.oangle x (x + y)).sign = 1 := by
    rw [oangle_sign_add_right, h, Real.Angle.sign_coe_pi_div_two]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
hs : (o.oangle x (x + y)).sign = 1
⊢ ‖y‖ / (o.oangle x (x + y)).sin = ‖x + y‖
state_after: no goals
tactic: rw [o.oangle_eq_angle_of_sign_eq_one hs, Real.Angle.sin_coe,
    InnerProductGeometry.norm_div_sin_angle_add_of_inner_eq_zero
      (o.inner_eq_zero_of_oangle_eq_pi_div_two h)
      (Or.inr (o.right_ne_zero_of_oangle_eq_pi_div_two h))]
Theorem: Submodule.card_quotient_mul_card_quotient
File: Mathlib/LinearAlgebra/Isomorphisms.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
M₂ : Type u_3
M₃ : Type u_4
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup M₃
inst✝² : Module R M
inst✝¹ : Module R M₂
inst✝ : Module R M₃
f : M →ₗ[R] M₂
S✝ T✝ : Submodule R M
h : S✝ ≤ T✝
S T : Submodule R M
hST : T ≤ S
⊢ Nat.card ↥(map T.mkQ S) * Nat.card (M ⧸ S) = Nat.card (M ⧸ T)
state_after: no goals
tactic: rw [Submodule.card_eq_card_quotient_mul_card (map T.mkQ S),
    Nat.card_congr (quotientQuotientEquivQuotient T S hST).toEquiv]
Theorem: continuousWithinAt_Ioo_iff_Iio
File: Mathlib/Topology/Order/OrderClosed.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : ClosedIicTopology α
inst✝ : TopologicalSpace β
a b c : α
f : α → β
h : a < b
⊢ ContinuousWithinAt f (Ioo a b) b ↔ ContinuousWithinAt f (Iio b) b
state_after: no goals
tactic: simp only [ContinuousWithinAt, nhdsWithin_Ioo_eq_nhdsWithin_Iio h]
Theorem: PNat.XgcdType.step_v
File: Mathlib/Data/PNat/Xgcd.lean

Proof steps:
state_before: u : XgcdType
hr : u.r ≠ 0
⊢ u.step.v = u.v.swap
state_after: u : XgcdType
hr : u.r ≠ 0
ha : u.r + ↑u.b * u.q = ↑u.a := rq_eq u
⊢ u.step.v = u.v.swap
tactic: let ha : u.r + u.b * u.q = u.a := u.rq_eq
state_before: u : XgcdType
hr : u.r ≠ 0
ha : u.r + ↑u.b * u.q = ↑u.a := rq_eq u
⊢ u.step.v = u.v.swap
state_after: u : XgcdType
hr✝ : u.r ≠ 0
ha : u.r + ↑u.b * u.q = ↑u.a := rq_eq u
hr : u.r - 1 + 1 = u.r := Eq.trans (add_comm (u.r - 1) 1) (add_tsub_cancel_of_le (Nat.pos_of_ne_zero hr✝))
⊢ u.step.v = u.v.swap
tactic: let hr : u.r - 1 + 1 = u.r := (add_comm _ 1).trans (add_tsub_cancel_of_le (Nat.pos_of_ne_zero hr))
state_before: u : XgcdType
hr✝ : u.r ≠ 0
ha : u.r + ↑u.b * u.q = ↑u.a := rq_eq u
hr : u.r - 1 + 1 = u.r := Eq.trans (add_comm (u.r - 1) 1) (add_tsub_cancel_of_le (Nat.pos_of_ne_zero hr✝))
⊢ u.step.v = u.v.swap
state_after: case a
u : XgcdType
hr✝ : u.r ≠ 0
ha : u.r + ↑u.b * u.q = ↑u.a := rq_eq u
hr : u.r - 1 + 1 = u.r := Eq.trans (add_comm (u.r - 1) 1) (add_tsub_cancel_of_le (Nat.pos_of_ne_zero hr✝))
⊢ u.step.v.1 = u.v.swap.1

case a
u : XgcdType
hr✝ : u.r ≠ 0
ha : u.r + ↑u.b * u.q = ↑u.a := rq_eq u
hr : u.r - 1 + 1 = u.r := Eq.trans (add_comm (u.r - 1) 1) (add_tsub_cancel_of_le (Nat.pos_of_ne_zero hr✝))
⊢ u.step.v.2 = u.v.swap.2
tactic: ext
Theorem: Set.encard_univ_coe
File: Mathlib/Data/Set/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
s✝ t s : Set α
⊢ univ.encard = s.encard
state_after: no goals
tactic: rw [encard, encard, PartENat.card_congr (Equiv.Set.univ ↑s)]
Theorem: parallelepiped_single
File: Mathlib/MeasureTheory/Measure/Haar/OfBasis.lean

Proof steps:
state_before: ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁶ : Fintype ι
inst✝⁵ : Fintype ι'
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : AddCommGroup F
inst✝¹ : Module ℝ F
inst✝ : DecidableEq ι
a : ι → ℝ
⊢ (parallelepiped fun i => Pi.single i (a i)) = uIcc 0 a
state_after: case h
ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁶ : Fintype ι
inst✝⁵ : Fintype ι'
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : AddCommGroup F
inst✝¹ : Module ℝ F
inst✝ : DecidableEq ι
a x : ι → ℝ
⊢ (x ∈ parallelepiped fun i => Pi.single i (a i)) ↔ x ∈ uIcc 0 a
tactic: ext x
state_before: case h
ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁶ : Fintype ι
inst✝⁵ : Fintype ι'
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : AddCommGroup F
inst✝¹ : Module ℝ F
inst✝ : DecidableEq ι
a x : ι → ℝ
⊢ (x ∈ parallelepiped fun i => Pi.single i (a i)) ↔ x ∈ uIcc 0 a
state_after: case h
ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁶ : Fintype ι
inst✝⁵ : Fintype ι'
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : AddCommGroup F
inst✝¹ : Module ℝ F
inst✝ : DecidableEq ι
a x : ι → ℝ
⊢ (∃ t, (∀ (x : ι), 0 ≤ t x ∧ t x ≤ 1) ∧ x = t • a) ↔ ∀ (x_1 : ι), 0 ⊓ a x_1 ≤ x x_1 ∧ x x_1 ≤ 0 ⊔ a x_1
tactic: simp_rw [Set.uIcc, mem_parallelepiped_iff, Set.mem_Icc, Pi.le_def, ← forall_and, Pi.inf_apply,
    Pi.sup_apply, ← Pi.single_smul', Pi.one_apply, Pi.zero_apply, ← Pi.smul_apply',
    Finset.univ_sum_single (_ : ι → ℝ)]
state_before: case h
ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁶ : Fintype ι
inst✝⁵ : Fintype ι'
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : AddCommGroup F
inst✝¹ : Module ℝ F
inst✝ : DecidableEq ι
a x : ι → ℝ
⊢ (∃ t, (∀ (x : ι), 0 ≤ t x ∧ t x ≤ 1) ∧ x = t • a) ↔ ∀ (x_1 : ι), 0 ⊓ a x_1 ≤ x x_1 ∧ x x_1 ≤ 0 ⊔ a x_1
state_after: case h.mp
ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁶ : Fintype ι
inst✝⁵ : Fintype ι'
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : AddCommGroup F
inst✝¹ : Module ℝ F
inst✝ : DecidableEq ι
a x : ι → ℝ
⊢ (∃ t, (∀ (x : ι), 0 ≤ t x ∧ t x ≤ 1) ∧ x = t • a) → ∀ (x_1 : ι), 0 ⊓ a x_1 ≤ x x_1 ∧ x x_1 ≤ 0 ⊔ a x_1

case h.mpr
ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁶ : Fintype ι
inst✝⁵ : Fintype ι'
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : AddCommGroup F
inst✝¹ : Module ℝ F
inst✝ : DecidableEq ι
a x : ι → ℝ
⊢ (∀ (x_1 : ι), 0 ⊓ a x_1 ≤ x x_1 ∧ x x_1 ≤ 0 ⊔ a x_1) → ∃ t, (∀ (x : ι), 0 ≤ t x ∧ t x ≤ 1) ∧ x = t • a
tactic: constructor
Theorem: MeromorphicAt.zpow
File: Mathlib/Analysis/Analytic/Meromorphic.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → 𝕜
x : 𝕜
hf : MeromorphicAt f x
n : ℤ
⊢ MeromorphicAt (f ^ n) x
state_after: case ofNat
𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → 𝕜
x : 𝕜
hf : MeromorphicAt f x
m : ℕ
⊢ MeromorphicAt (f ^ Int.ofNat m) x

case negSucc
𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → 𝕜
x : 𝕜
hf : MeromorphicAt f x
m : ℕ
⊢ MeromorphicAt (f ^ Int.negSucc m) x
tactic: induction' n with m m
Theorem: Int.natAbs_inj_of_nonpos_of_nonneg
File: Mathlib/Data/Int/Lemmas.lean

Proof steps:
state_before: a✝ b✝ : ℤ
n : ℕ
a b : ℤ
ha : a ≤ 0
hb : 0 ≤ b
⊢ a.natAbs = b.natAbs ↔ -a = b
state_after: no goals
tactic: simpa only [Int.natAbs_neg] using natAbs_inj_of_nonneg_of_nonneg (neg_nonneg_of_nonpos ha) hb
Theorem: List.formPerm_disjoint_iff
File: Mathlib/GroupTheory/Perm/Cycle/Concrete.lean

Proof steps:
state_before: α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.Nodup
hl' : l'.Nodup
hn : 2 ≤ l.length
hn' : 2 ≤ l'.length
⊢ l.formPerm.Disjoint l'.formPerm ↔ l.Disjoint l'
state_after: α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.Nodup
hl' : l'.Nodup
hn : 2 ≤ l.length
hn' : 2 ≤ l'.length
⊢ (∀ (x : α), l.formPerm x = x ∨ l'.formPerm x = x) ↔ ∀ ⦃a : α⦄, a ∈ l → a ∈ l' → False
tactic: rw [disjoint_iff_eq_or_eq, List.Disjoint]
state_before: α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.Nodup
hl' : l'.Nodup
hn : 2 ≤ l.length
hn' : 2 ≤ l'.length
⊢ (∀ (x : α), l.formPerm x = x ∨ l'.formPerm x = x) ↔ ∀ ⦃a : α⦄, a ∈ l → a ∈ l' → False
state_after: case mp
α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.Nodup
hl' : l'.Nodup
hn : 2 ≤ l.length
hn' : 2 ≤ l'.length
⊢ (∀ (x : α), l.formPerm x = x ∨ l'.formPerm x = x) → ∀ ⦃a : α⦄, a ∈ l → a ∈ l' → False

case mpr
α : Type u_1
inst✝ : DecidableEq α
l l' : List α
hl : l.Nodup
hl' : l'.Nodup
hn : 2 ≤ l.length
hn' : 2 ≤ l'.length
⊢ (∀ ⦃a : α⦄, a ∈ l → a ∈ l' → False) → ∀ (x : α), l.formPerm x = x ∨ l'.formPerm x = x
tactic: constructor
Theorem: ENNReal.continuous_sub_left
File: Mathlib/Topology/Instances/ENNReal.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
a : ℝ≥0∞
a_ne_top : a ≠ ⊤
⊢ Continuous (uncurry Sub.sub ∘ fun x => (a, x))
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
a : ℝ≥0∞
a_ne_top : a ≠ ⊤
x : ℝ≥0∞
⊢ (a, x) ∈ {p | p ≠ (⊤, ⊤)}
tactic: refine continuousOn_sub.comp_continuous (Continuous.Prod.mk a) fun x => ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
a : ℝ≥0∞
a_ne_top : a ≠ ⊤
x : ℝ≥0∞
⊢ (a, x) ∈ {p | p ≠ (⊤, ⊤)}
state_after: no goals
tactic: simp only [a_ne_top, Ne, mem_setOf_eq, Prod.mk.inj_iff, false_and_iff, not_false_iff]
Theorem: Ordinal.le_enum_succ
File: Mathlib/SetTheory/Ordinal/Basic.lean

Proof steps:
state_before: α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{?u.104963}
a : (Quotient.out (succ o)).α
⊢ o < type fun x x_1 => x < x_1
state_after: α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{?u.104963}
a : (Quotient.out (succ o)).α
⊢ o < succ o
tactic: rw [type_lt]
state_before: α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{?u.104963}
a : (Quotient.out (succ o)).α
⊢ o < succ o
state_after: no goals
tactic: exact lt_succ o
state_before: α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u_3}
a : (Quotient.out (succ o)).α
⊢ typein (fun x x_1 => x < x_1) a < succ o
state_after: no goals
tactic: apply typein_lt_self
Theorem: QuotientGroup.rightRel_apply
File: Mathlib/GroupTheory/Coset.lean

Proof steps:
state_before: α : Type u_1
inst✝ : Group α
s : Subgroup α
x y : α
⊢ (∃ a, ↑a * y = x) ↔ ∃ a, y * x⁻¹ = ↑a⁻¹
state_after: no goals
tactic: simp only [mul_inv_eq_iff_eq_mul, Subgroup.coe_inv, eq_inv_mul_iff_mul_eq]
state_before: α : Type u_1
inst✝ : Group α
s : Subgroup α
x y : α
⊢ (∃ a, y * x⁻¹ = ↑a⁻¹) ↔ y * x⁻¹ ∈ s
state_after: no goals
tactic: simp [exists_inv_mem_iff_exists_mem]