ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Cardinal.mk_compl_eq_mk_compl_finite_lift
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

Proof steps:
state_before: α : Type u
β : Type v
inst✝ : Finite α
s : Set α
t : Set β
h1 : lift.{max v w, u} #α = lift.{max u w, v} #β
h2 : lift.{max v w, u} #↑s = lift.{max u w, v} #↑t
⊢ lift.{max v w, u} #↑sᶜ = lift.{max u w, v} #↑tᶜ
state_after: case intro
α : Type u
β : Type v
inst✝ : Finite α
s : Set α
t : Set β
h1 : lift.{max v w, u} #α = lift.{max u w, v} #β
h2 : lift.{max v w, u} #↑s = lift.{max u w, v} #↑t
val✝ : Fintype α
⊢ lift.{max v w, u} #↑sᶜ = lift.{max u w, v} #↑tᶜ
tactic: cases nonempty_fintype α
state_before: case intro
α : Type u
β : Type v
inst✝ : Finite α
s : Set α
t : Set β
h1 : lift.{max v w, u} #α = lift.{max u w, v} #β
h2 : lift.{max v w, u} #↑s = lift.{max u w, v} #↑t
val✝ : Fintype α
⊢ lift.{max v w, u} #↑sᶜ = lift.{max u w, v} #↑tᶜ
state_after: case intro.intro
α : Type u
β : Type v
inst✝ : Finite α
s : Set α
t : Set β
h1 : lift.{max v w, u} #α = lift.{max u w, v} #β
h2 : lift.{max v w, u} #↑s = lift.{max u w, v} #↑t
val✝ : Fintype α
e : α ≃ β
⊢ lift.{max v w, u} #↑sᶜ = lift.{max u w, v} #↑tᶜ
tactic: rcases lift_mk_eq.{u, v, w}.1 h1 with ⟨e⟩
state_before: case intro.intro
α : Type u
β : Type v
inst✝ : Finite α
s : Set α
t : Set β
h1 : lift.{max v w, u} #α = lift.{max u w, v} #β
h2 : lift.{max v w, u} #↑s = lift.{max u w, v} #↑t
val✝ : Fintype α
e : α ≃ β
⊢ lift.{max v w, u} #↑sᶜ = lift.{max u w, v} #↑tᶜ
state_after: case intro.intro
α : Type u
β : Type v
inst✝ : Finite α
s : Set α
t : Set β
h1 : lift.{max v w, u} #α = lift.{max u w, v} #β
h2 : lift.{max v w, u} #↑s = lift.{max u w, v} #↑t
val✝ : Fintype α
e : α ≃ β
this : Fintype β := Fintype.ofEquiv α e
⊢ lift.{max v w, u} #↑sᶜ = lift.{max u w, v} #↑tᶜ
tactic: letI : Fintype β := Fintype.ofEquiv α e
state_before: case intro.intro
α : Type u
β : Type v
inst✝ : Finite α
s : Set α
t : Set β
h1 : lift.{max v w, u} #α = lift.{max u w, v} #β
h2 : lift.{max v w, u} #↑s = lift.{max u w, v} #↑t
val✝ : Fintype α
e : α ≃ β
this : Fintype β := Fintype.ofEquiv α e
⊢ lift.{max v w, u} #↑sᶜ = lift.{max u w, v} #↑tᶜ
state_after: case intro.intro
α : Type u
β : Type v
inst✝ : Finite α
s : Set α
t : Set β
h2 : lift.{max v w, u} #↑s = lift.{max u w, v} #↑t
val✝ : Fintype α
e : α ≃ β
this : Fintype β := Fintype.ofEquiv α e
h1 : Fintype.card α = Fintype.card β
⊢ lift.{max v w, u} #↑sᶜ = lift.{max u w, v} #↑tᶜ
tactic: replace h1 : Fintype.card α = Fintype.card β := (Fintype.ofEquiv_card _).symm
state_before: case intro.intro
α : Type u
β : Type v
inst✝ : Finite α
s : Set α
t : Set β
h2 : lift.{max v w, u} #↑s = lift.{max u w, v} #↑t
val✝ : Fintype α
e : α ≃ β
this : Fintype β := Fintype.ofEquiv α e
h1 : Fintype.card α = Fintype.card β
⊢ lift.{max v w, u} #↑sᶜ = lift.{max u w, v} #↑tᶜ
state_after: no goals
tactic: classical
    lift s to Finset α using s.toFinite
    lift t to Finset β using t.toFinite
    simp only [Finset.coe_sort_coe, mk_fintype, Fintype.card_coe, lift_natCast, Nat.cast_inj] at h2
    simp only [← Finset.coe_compl, Finset.coe_sort_coe, mk_coe_finset, Finset.card_compl,
      lift_natCast, Nat.cast_inj, h1, h2]
Theorem: CategoryTheory.TwoSquare.GuitartExact.whiskerVertical_iff
File: Mathlib/CategoryTheory/GuitartExact/VerticalComposition.lean

Proof steps:
state_before: C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
D₁ : Type u_4
D₂ : Type u_5
D₃ : Type u_6
inst✝⁵ : Category.{u_8, u_1} C₁
inst✝⁴ : Category.{u_7, u_2} C₂
inst✝³ : Category.{?u.17017, u_3} C₃
inst✝² : Category.{u_10, u_4} D₁
inst✝¹ : Category.{u_9, u_5} D₂
inst✝ : Category.{?u.17029, u_6} D₃
T : C₁ ⥤ D₁
L : C₁ ⥤ C₂
R : D₁ ⥤ D₂
B : C₂ ⥤ D₂
w : TwoSquare T L R B
L' : C₁ ⥤ C₂
R' : D₁ ⥤ D₂
α : L ≅ L'
β : R ≅ R'
⊢ (w.whiskerVertical α.hom β.inv).GuitartExact ↔ w.GuitartExact
state_after: case mp
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
D₁ : Type u_4
D₂ : Type u_5
D₃ : Type u_6
inst✝⁵ : Category.{u_8, u_1} C₁
inst✝⁴ : Category.{u_7, u_2} C₂
inst✝³ : Category.{?u.17017, u_3} C₃
inst✝² : Category.{u_10, u_4} D₁
inst✝¹ : Category.{u_9, u_5} D₂
inst✝ : Category.{?u.17029, u_6} D₃
T : C₁ ⥤ D₁
L : C₁ ⥤ C₂
R : D₁ ⥤ D₂
B : C₂ ⥤ D₂
w : TwoSquare T L R B
L' : C₁ ⥤ C₂
R' : D₁ ⥤ D₂
α : L ≅ L'
β : R ≅ R'
⊢ (w.whiskerVertical α.hom β.inv).GuitartExact → w.GuitartExact

case mpr
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
D₁ : Type u_4
D₂ : Type u_5
D₃ : Type u_6
inst✝⁵ : Category.{u_8, u_1} C₁
inst✝⁴ : Category.{u_7, u_2} C₂
inst✝³ : Category.{?u.17017, u_3} C₃
inst✝² : Category.{u_10, u_4} D₁
inst✝¹ : Category.{u_9, u_5} D₂
inst✝ : Category.{?u.17029, u_6} D₃
T : C₁ ⥤ D₁
L : C₁ ⥤ C₂
R : D₁ ⥤ D₂
B : C₂ ⥤ D₂
w : TwoSquare T L R B
L' : C₁ ⥤ C₂
R' : D₁ ⥤ D₂
α : L ≅ L'
β : R ≅ R'
⊢ w.GuitartExact → (w.whiskerVertical α.hom β.inv).GuitartExact
tactic: constructor
Theorem: Complex.toMatrix_conjAe
File: Mathlib/Data/Complex/Module.lean

Proof steps:
state_before: ⊢ (LinearMap.toMatrix basisOneI basisOneI) conjAe.toLinearMap = !![1, 0; 0, -1]
state_after: case a
i j : Fin 2
⊢ (LinearMap.toMatrix basisOneI basisOneI) conjAe.toLinearMap i j = !![1, 0; 0, -1] i j
tactic: ext i j
state_before: case a
i j : Fin 2
⊢ (LinearMap.toMatrix basisOneI basisOneI) conjAe.toLinearMap i j = !![1, 0; 0, -1] i j
state_after: no goals
tactic: fin_cases i <;> fin_cases j <;> simp [LinearMap.toMatrix_apply]
Theorem: Finset.disjiUnion_empty
File: Mathlib/Data/Finset/Union.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s s₁ s₂ : Finset α
t✝ t₁ t₂ t : α → Finset β
⊢ (↑∅).PairwiseDisjoint t
state_after: no goals
tactic: simp
Theorem: USize.size_le
File: .lake/packages/batteries/Batteries/Data/UInt.lean

Proof steps:
state_before: ⊢ size ≤ 2 ^ 64
state_after: ⊢ 2 ^ System.Platform.numBits ≤ 2 ^ 64
tactic: rw [size_eq]
state_before: ⊢ 2 ^ System.Platform.numBits ≤ 2 ^ 64
state_after: ⊢ System.Platform.numBits ≤ 64
tactic: apply Nat.pow_le_pow_of_le_right (by decide)
state_before: ⊢ System.Platform.numBits ≤ 64
state_after: no goals
tactic: cases System.Platform.numBits_eq <;> simp_arith [*]
Theorem: riemannZeta_residue_one
File: Mathlib/NumberTheory/LSeries/RiemannZeta.lean

Proof steps:
state_before: ⊢ Tendsto (fun s => (s - 1) * riemannZeta s) (𝓝[≠] 1) (𝓝 1)
state_after: no goals
tactic: exact hurwitzZetaEven_residue_one 0
Theorem: Nat.shiftLeft'_ne_zero_left
File: Mathlib/Data/Nat/Size.lean

Proof steps:
state_before: b : Bool
m : ℕ
h : m ≠ 0
n : ℕ
⊢ shiftLeft' b m n ≠ 0
state_after: no goals
tactic: induction n <;> simp [bit_ne_zero, shiftLeft', *]
Theorem: Inducing.continuousOn_iff
File: Mathlib/Topology/ContinuousOn.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝³ : (i : ι) → TopologicalSpace (π i)
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
g : β → γ
hg : Inducing g
s : Set α
⊢ ContinuousOn f s ↔ ContinuousOn (g ∘ f) s
state_after: no goals
tactic: simp_rw [ContinuousOn, hg.continuousWithinAt_iff]
Theorem: Ordnode.foldr_cons_eq_toList
File: Mathlib/Data/Ordmap/Ordset.lean

Proof steps:
state_before: α : Type u_1
size✝ : ℕ
l : Ordnode α
x : α
r : Ordnode α
r' : List α
⊢ foldr List.cons (node size✝ l x r) r' = (node size✝ l x r).toList ++ r'
state_after: α : Type u_1
size✝ : ℕ
l : Ordnode α
x : α
r : Ordnode α
r' : List α
⊢ foldr List.cons l (x :: r.toList) ++ r' = (node size✝ l x r).toList ++ r'
tactic: rw [foldr, foldr_cons_eq_toList l, foldr_cons_eq_toList r, ← List.cons_append,
        ← List.append_assoc, ← foldr_cons_eq_toList l]
state_before: α : Type u_1
size✝ : ℕ
l : Ordnode α
x : α
r : Ordnode α
r' : List α
⊢ foldr List.cons l (x :: r.toList) ++ r' = (node size✝ l x r).toList ++ r'
state_after: no goals
tactic: rfl
Theorem: Nat.multiplicative_factorization'
File: Mathlib/Data/Nat/Factorization/Induction.lean

Proof steps:
state_before: a b m n p : ℕ
β : Type u_1
inst✝ : CommMonoid β
f : ℕ → β
h_mult : ∀ (x y : ℕ), x.Coprime y → f (x * y) = f x * f y
hf0 : f 0 = 1
hf1 : f 1 = 1
⊢ f n = n.factorization.prod fun p k => f (p ^ k)
state_after: case inl
a b m p : ℕ
β : Type u_1
inst✝ : CommMonoid β
f : ℕ → β
h_mult : ∀ (x y : ℕ), x.Coprime y → f (x * y) = f x * f y
hf0 : f 0 = 1
hf1 : f 1 = 1
⊢ f 0 = (factorization 0).prod fun p k => f (p ^ k)

case inr
a b m n p : ℕ
β : Type u_1
inst✝ : CommMonoid β
f : ℕ → β
h_mult : ∀ (x y : ℕ), x.Coprime y → f (x * y) = f x * f y
hf0 : f 0 = 1
hf1 : f 1 = 1
hn : n ≠ 0
⊢ f n = n.factorization.prod fun p k => f (p ^ k)
tactic: obtain rfl | hn := eq_or_ne n 0
Theorem: ContinuousMap.toLp_norm_le
File: Mathlib/MeasureTheory/Function/LpSpace.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : TopologicalSpace α
inst✝⁶ : BorelSpace α
inst✝⁵ : SecondCountableTopologyEither α E
inst✝⁴ : CompactSpace α
inst✝³ : IsFiniteMeasure μ
𝕜 : Type u_5
inst✝² : Fact (1 ≤ p)
inst✝¹ : NontriviallyNormedField 𝕜
inst✝ : NormedSpace 𝕜 E
⊢ ‖toLp p μ 𝕜‖ ≤ ↑(measureUnivNNReal μ) ^ p.toReal⁻¹
state_after: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : TopologicalSpace α
inst✝⁶ : BorelSpace α
inst✝⁵ : SecondCountableTopologyEither α E
inst✝⁴ : CompactSpace α
inst✝³ : IsFiniteMeasure μ
𝕜 : Type u_5
inst✝² : Fact (1 ≤ p)
inst✝¹ : NontriviallyNormedField 𝕜
inst✝ : NormedSpace 𝕜 E
⊢ ‖BoundedContinuousFunction.toLp p μ 𝕜‖ ≤ ↑(measureUnivNNReal μ) ^ p.toReal⁻¹
tactic: rw [toLp_norm_eq_toLp_norm_coe]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : TopologicalSpace α
inst✝⁶ : BorelSpace α
inst✝⁵ : SecondCountableTopologyEither α E
inst✝⁴ : CompactSpace α
inst✝³ : IsFiniteMeasure μ
𝕜 : Type u_5
inst✝² : Fact (1 ≤ p)
inst✝¹ : NontriviallyNormedField 𝕜
inst✝ : NormedSpace 𝕜 E
⊢ ‖BoundedContinuousFunction.toLp p μ 𝕜‖ ≤ ↑(measureUnivNNReal μ) ^ p.toReal⁻¹
state_after: no goals
tactic: exact BoundedContinuousFunction.toLp_norm_le μ
Theorem: Profinite.NobelingProof.Products.isGood_nil
File: Mathlib/Topology/Category/Profinite/Nobeling.lean

Proof steps:
state_before: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
⊢ isGood {fun x => false} nil
state_after: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
h : eval {fun x => false} nil ∈ Submodule.span ℤ (eval {fun x => false} '' {m | m < nil})
⊢ False
tactic: intro h
state_before: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
h : eval {fun x => false} nil ∈ Submodule.span ℤ (eval {fun x => false} '' {m | m < nil})
⊢ False
state_after: no goals
tactic: simp only [Products.lt_nil_empty, Products.eval, List.map, List.prod_nil, Set.image_empty,
    Submodule.span_empty, Submodule.mem_bot, one_ne_zero] at h
Theorem: Disjoint.map
File: Mathlib/Order/Hom/Lattice.lean

Proof steps:
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
δ : Type u_6
inst✝⁵ : Lattice α
inst✝⁴ : BoundedOrder α
inst✝³ : Lattice β
inst✝² : BoundedOrder β
inst✝¹ : FunLike F α β
inst✝ : BoundedLatticeHomClass F α β
f : F
a b : α
h : Disjoint a b
⊢ Disjoint (f a) (f b)
state_after: no goals
tactic: rw [disjoint_iff, ← map_inf, h.eq_bot, map_bot]
Theorem: mul_geom_sum
File: Mathlib/Algebra/GeomSum.lean

Proof steps:
state_before: α : Type u
inst✝ : Ring α
x : α
n : ℕ
⊢ op ((x - 1) * ∑ i ∈ range n, x ^ i) = op (x ^ n - 1)
state_after: no goals
tactic: simpa using geom_sum_mul (op x) n
Theorem: Associates.finset_prod_mk
File: Mathlib/Algebra/BigOperators/Associated.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoid α
p : Finset β
f : β → α
⊢ ∏ i ∈ p, Associates.mk (f i) = Associates.mk (∏ i ∈ p, f i)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoid α
p : Finset β
f : β → α
this : (fun i => Associates.mk (f i)) = Associates.mk ∘ f
⊢ ∏ i ∈ p, Associates.mk (f i) = Associates.mk (∏ i ∈ p, f i)
tactic: have : (fun i => Associates.mk (f i)) = Associates.mk ∘ f :=
    funext fun x => Function.comp_apply
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoid α
p : Finset β
f : β → α
this : (fun i => Associates.mk (f i)) = Associates.mk ∘ f
⊢ ∏ i ∈ p, Associates.mk (f i) = Associates.mk (∏ i ∈ p, f i)
state_after: no goals
tactic: rw [Finset.prod_eq_multiset_prod, this, ← Multiset.map_map, prod_mk,
    ← Finset.prod_eq_multiset_prod]
Theorem: HasStrictFDerivAt.multiset_prod
File: Mathlib/Analysis/Calculus/FDeriv/Mul.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type u_3
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
G : Type u_4
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : NormedSpace 𝕜 G
G' : Type u_5
inst✝⁶ : NormedAddCommGroup G'
inst✝⁵ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g✝ : E → F
f'✝ f₀' f₁' g'✝ e : E →L[𝕜] F
x✝ : E
s t : Set E
L L₁ L₂ : Filter E
ι : Type u_6
𝔸 : Type u_7
𝔸' : Type u_8
inst✝⁴ : NormedRing 𝔸
inst✝³ : NormedCommRing 𝔸'
inst✝² : NormedAlgebra 𝕜 𝔸
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸
f' : ι → E →L[𝕜] 𝔸
g : ι → E → 𝔸'
g' : ι → E →L[𝕜] 𝔸'
inst✝ : DecidableEq ι
u : Multiset ι
x : E
h : ∀ i ∈ u, HasStrictFDerivAt (fun x => g i x) (g' i) x
⊢ HasStrictFDerivAt (fun x => (Multiset.map (fun x_1 => g x_1 x) u).prod)
    (Multiset.map (fun i => (Multiset.map (fun x_1 => g x_1 x) (u.erase i)).prod • g' i) u).sum x
state_after: 𝕜 : Type u_1
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type u_3
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
G : Type u_4
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : NormedSpace 𝕜 G
G' : Type u_5
inst✝⁶ : NormedAddCommGroup G'
inst✝⁵ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g✝ : E → F
f'✝ f₀' f₁' g'✝ e : E →L[𝕜] F
x✝ : E
s t : Set E
L L₁ L₂ : Filter E
ι : Type u_6
𝔸 : Type u_7
𝔸' : Type u_8
inst✝⁴ : NormedRing 𝔸
inst✝³ : NormedCommRing 𝔸'
inst✝² : NormedAlgebra 𝕜 𝔸
inst✝¹ : NormedAlgebra 𝕜 𝔸'
u✝ : Finset ι
f : ι → E → 𝔸
f' : ι → E →L[𝕜] 𝔸
g : ι → E → 𝔸'
g' : ι → E →L[𝕜] 𝔸'
inst✝ : DecidableEq ι
u : Multiset ι
x : E
h : ∀ i ∈ u, HasStrictFDerivAt (fun x => g i x) (g' i) x
⊢ HasStrictFDerivAt (fun x => (Multiset.map ((fun x_1 => g x_1 x) ∘ Subtype.val) u.attach).prod)
    (Multiset.map
        ((fun x_1 =>
            (Multiset.map (fun x_2 => g x_2 x) ((Multiset.map Subtype.val u.attach).erase x_1)).prod • g' x_1) ∘
          Subtype.val)
        u.attach).sum
    x
tactic: simp only [← Multiset.attach_map_val u, Multiset.map_map]
Theorem: Profinite.NobelingProof.coe_πs
File: Mathlib/Topology/Category/Profinite/Nobeling.lean

Proof steps:
state_before: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
f : LocallyConstant ↑(π C fun x => ord I x < o) ℤ
⊢ ⇑((πs C o) f) = ⇑f ∘ ProjRestrict C fun x => ord I x < o
state_after: no goals
tactic: rfl
Theorem: Submodule.mem_span_mul_finite_of_mem_mul
File: Mathlib/Algebra/Algebra/Operations.lean

Proof steps:
state_before: ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P✝ Q✝ : Submodule R A
m n : A
P Q : Submodule R A
x : A
hx : x ∈ P * Q
⊢ x ∈ span R (↑P * ↑Q)
state_after: no goals
tactic: rwa [← Submodule.span_eq P, ← Submodule.span_eq Q, Submodule.span_mul_span] at hx
Theorem: bernsteinPolynomial.iterate_derivative_at_0_eq_zero_of_lt
File: Mathlib/RingTheory/Polynomial/Bernstein.lean

Proof steps:
state_before: R : Type u_1
inst✝ : CommRing R
n ν k : ℕ
⊢ k < ν → Polynomial.eval 0 ((⇑Polynomial.derivative)^[k] (bernsteinPolynomial R n ν)) = 0
state_after: case zero
R : Type u_1
inst✝ : CommRing R
n k : ℕ
⊢ k < 0 → Polynomial.eval 0 ((⇑Polynomial.derivative)^[k] (bernsteinPolynomial R n 0)) = 0

case succ
R : Type u_1
inst✝ : CommRing R
n k ν : ℕ
⊢ k < ν + 1 → Polynomial.eval 0 ((⇑Polynomial.derivative)^[k] (bernsteinPolynomial R n (ν + 1))) = 0
tactic: cases' ν with ν
Theorem: CategoryTheory.IsPullback.isoIsPullback_inv_snd
File: Mathlib/CategoryTheory/Limits/Shapes/Pullback/CommSq.lean

Proof steps:
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P X Y Z : C
fst : P ⟶ X
snd : P ⟶ Y
f : X ⟶ Z
g : Y ⟶ Z
P' : C
fst' : P' ⟶ X
snd' : P' ⟶ Y
h : IsPullback fst snd f g
h' : IsPullback fst' snd' f g
⊢ (isoIsPullback X Y h h').inv ≫ snd = snd'
state_after: no goals
tactic: simp only [Iso.inv_comp_eq, isoIsPullback_hom_snd]
Theorem: Prime.exists_mem_multiset_map_dvd
File: Mathlib/Algebra/BigOperators/Associated.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoidWithZero α
p : α
hp : Prime p
s : Multiset β
f : β → α
h : p ∣ (Multiset.map f s).prod
⊢ ∃ a ∈ s, p ∣ f a
state_after: no goals
tactic: simpa only [exists_prop, Multiset.mem_map, exists_exists_and_eq_and] using
    hp.exists_mem_multiset_dvd h
Theorem: UniformInducing.uniformAddGroup
File: Mathlib/Topology/Algebra/UniformGroup.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝⁹ : UniformSpace α
inst✝⁸ : Group α
inst✝⁷ : UniformGroup α
inst✝⁶ : Group β
γ : Type u_3
inst✝⁵ : Group γ
inst✝⁴ : UniformSpace γ
inst✝³ : UniformGroup γ
inst✝² : UniformSpace β
F : Type u_4
inst✝¹ : FunLike F β γ
inst✝ : MonoidHomClass F β γ
f : F
hf : UniformInducing ⇑f
⊢ UniformContinuous fun p => p.1 / p.2
state_after: α : Type u_1
β : Type u_2
inst✝⁹ : UniformSpace α
inst✝⁸ : Group α
inst✝⁷ : UniformGroup α
inst✝⁶ : Group β
γ : Type u_3
inst✝⁵ : Group γ
inst✝⁴ : UniformSpace γ
inst✝³ : UniformGroup γ
inst✝² : UniformSpace β
F : Type u_4
inst✝¹ : FunLike F β γ
inst✝ : MonoidHomClass F β γ
f : F
hf : UniformInducing ⇑f
⊢ UniformContinuous fun x => f x.1 / f x.2
tactic: simp_rw [hf.uniformContinuous_iff, Function.comp_def, map_div]
state_before: α : Type u_1
β : Type u_2
inst✝⁹ : UniformSpace α
inst✝⁸ : Group α
inst✝⁷ : UniformGroup α
inst✝⁶ : Group β
γ : Type u_3
inst✝⁵ : Group γ
inst✝⁴ : UniformSpace γ
inst✝³ : UniformGroup γ
inst✝² : UniformSpace β
F : Type u_4
inst✝¹ : FunLike F β γ
inst✝ : MonoidHomClass F β γ
f : F
hf : UniformInducing ⇑f
⊢ UniformContinuous fun x => f x.1 / f x.2
state_after: no goals
tactic: exact uniformContinuous_div.comp (hf.uniformContinuous.prod_map hf.uniformContinuous)
Theorem: SimpleGraph.Subgraph.coe_deleteEdges_eq
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

Proof steps:
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' : G.Subgraph
s✝ s : Set (Sym2 V)
⊢ (G'.deleteEdges s).coe = G'.coe.deleteEdges (Sym2.map Subtype.val ⁻¹' s)
state_after: case Adj.h.mk.h.mk.a
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' : G.Subgraph
s✝ s : Set (Sym2 V)
v : V
hv : v ∈ (G'.deleteEdges s).verts
w : V
hw : w ∈ (G'.deleteEdges s).verts
⊢ (G'.deleteEdges s).coe.Adj ⟨v, hv⟩ ⟨w, hw⟩ ↔ (G'.coe.deleteEdges (Sym2.map Subtype.val ⁻¹' s)).Adj ⟨v, hv⟩ ⟨w, hw⟩
tactic: ext ⟨v, hv⟩ ⟨w, hw⟩
state_before: case Adj.h.mk.h.mk.a
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' : G.Subgraph
s✝ s : Set (Sym2 V)
v : V
hv : v ∈ (G'.deleteEdges s).verts
w : V
hw : w ∈ (G'.deleteEdges s).verts
⊢ (G'.deleteEdges s).coe.Adj ⟨v, hv⟩ ⟨w, hw⟩ ↔ (G'.coe.deleteEdges (Sym2.map Subtype.val ⁻¹' s)).Adj ⟨v, hv⟩ ⟨w, hw⟩
state_after: no goals
tactic: simp
Theorem: CategoryTheory.IsPushout.IsVanKampen.flip
File: Mathlib/CategoryTheory/Adhesive.lean

Proof steps:
state_before: J : Type v'
inst✝¹ : Category.{u', v'} J
C : Type u
inst✝ : Category.{v, u} C
W X Y Z : C
f : W ⟶ X
g : W ⟶ Y
h : X ⟶ Z
i : Y ⟶ Z
H : IsPushout f g h i
H' : H.IsVanKampen
⊢ ⋯.IsVanKampen
state_after: J : Type v'
inst✝¹ : Category.{u', v'} J
C : Type u
inst✝ : Category.{v, u} C
W X Y Z : C
f : W ⟶ X
g : W ⟶ Y
h : X ⟶ Z
i : Y ⟶ Z
H : IsPushout f g h i
H' : H.IsVanKampen
W' X' Y' Z' : C
f' : W' ⟶ X'
g' : W' ⟶ Y'
h' : X' ⟶ Z'
i' : Y' ⟶ Z'
αW : W' ⟶ W
αX : X' ⟶ Y
αY : Y' ⟶ X
αZ : Z' ⟶ Z
hf : IsPullback f' αW αX g
hg : IsPullback g' αW αY f
hh : CommSq h' αX αZ i
hi : CommSq i' αY αZ h
w : CommSq f' g' h' i'
⊢ IsPushout f' g' h' i' ↔ IsPullback h' αX αZ i ∧ IsPullback i' αY αZ h
tactic: introv W' hf hg hh hi w
state_before: J : Type v'
inst✝¹ : Category.{u', v'} J
C : Type u
inst✝ : Category.{v, u} C
W X Y Z : C
f : W ⟶ X
g : W ⟶ Y
h : X ⟶ Z
i : Y ⟶ Z
H : IsPushout f g h i
H' : H.IsVanKampen
W' X' Y' Z' : C
f' : W' ⟶ X'
g' : W' ⟶ Y'
h' : X' ⟶ Z'
i' : Y' ⟶ Z'
αW : W' ⟶ W
αX : X' ⟶ Y
αY : Y' ⟶ X
αZ : Z' ⟶ Z
hf : IsPullback f' αW αX g
hg : IsPullback g' αW αY f
hh : CommSq h' αX αZ i
hi : CommSq i' αY αZ h
w : CommSq f' g' h' i'
⊢ IsPushout f' g' h' i' ↔ IsPullback h' αX αZ i ∧ IsPullback i' αY αZ h
state_after: no goals
tactic: simpa only [IsPushout.flip_iff, IsPullback.flip_iff, and_comm] using
    H' g' f' i' h' αW αY αX αZ hg hf hi hh w.flip
Theorem: Algebra.isAlgebraic_iff_isIntegral
File: Mathlib/RingTheory/Algebraic.lean

Proof steps:
state_before: K : Type u
A : Type v
inst✝² : Field K
inst✝¹ : Ring A
inst✝ : Algebra K A
⊢ Algebra.IsAlgebraic K A ↔ Algebra.IsIntegral K A
state_after: no goals
tactic: rw [Algebra.isAlgebraic_def, Algebra.isIntegral_def,
      forall_congr' fun _ ↦ isAlgebraic_iff_isIntegral]
Theorem: Commute.smul_left_iff
File: Mathlib/Algebra/Group/Action/Defs.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
G : Type u_3
H : Type u_4
A : Type u_5
B : Type u_6
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
inst✝⁷ : Monoid M
inst✝⁶ : MulAction M α
inst✝⁵ : Group G
inst✝⁴ : MulAction G α
g✝ : G
a✝ b✝ : α
inst✝³ : Mul H
inst✝² : MulAction G H
inst✝¹ : SMulCommClass G H H
inst✝ : IsScalarTower G H H
g : G
a b : H
⊢ Commute (g • a) b ↔ Commute a b
state_after: no goals
tactic: rw [Commute.symm_iff, Commute.smul_right_iff, Commute.symm_iff]
Theorem: FiniteField.cast_card_eq_zero
File: Mathlib/FieldTheory/Finite/Basic.lean

Proof steps:
state_before: K : Type u_1
R : Type u_2
inst✝¹ : Field K
inst✝ : Fintype K
⊢ ↑q = 0
state_after: no goals
tactic: simp
Theorem: QuaternionAlgebra.Basis.self_k
File: Mathlib/Algebra/QuaternionBasis.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁴ : CommRing R
inst✝³ : Ring A
inst✝² : Ring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
c₁ c₂ : R
⊢ { re := 0, imI := 1, imJ := 0, imK := 0 } * { re := 0, imI := 1, imJ := 0, imK := 0 } = c₁ • 1
state_after: no goals
tactic: ext <;> simp
state_before: R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁴ : CommRing R
inst✝³ : Ring A
inst✝² : Ring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
c₁ c₂ : R
⊢ { re := 0, imI := 0, imJ := 1, imK := 0 } * { re := 0, imI := 0, imJ := 1, imK := 0 } = c₂ • 1
state_after: no goals
tactic: ext <;> simp
state_before: R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁴ : CommRing R
inst✝³ : Ring A
inst✝² : Ring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
c₁ c₂ : R
⊢ { re := 0, imI := 1, imJ := 0, imK := 0 } * { re := 0, imI := 0, imJ := 1, imK := 0 } =
    { re := 0, imI := 0, imJ := 0, imK := 1 }
state_after: no goals
tactic: ext <;> simp
state_before: R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁴ : CommRing R
inst✝³ : Ring A
inst✝² : Ring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
c₁ c₂ : R
⊢ { re := 0, imI := 0, imJ := 1, imK := 0 } * { re := 0, imI := 1, imJ := 0, imK := 0 } =
    -{ re := 0, imI := 0, imJ := 0, imK := 1 }
state_after: no goals
tactic: ext <;> simp
Theorem: Nat.left_le_pair
File: Mathlib/Data/Nat/Pairing.lean

Proof steps:
state_before: a b : ℕ
⊢ a ≤ pair a b
state_after: no goals
tactic: simpa using unpair_left_le (pair a b)