ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: NonUnitalAlgHom.coe_distribMulActionHom_mk
File: Mathlib/Algebra/Algebra/NonUnitalHom.lean

Proof steps:
state_before: R : Type u
S : Type u₁
T : Type u_1
inst✝⁸ : Monoid R
inst✝⁷ : Monoid S
inst✝⁶ : Monoid T
φ : R →* S
A : Type v
B : Type w
C : Type w₁
inst✝⁵ : NonUnitalNonAssocSemiring A
inst✝⁴ : DistribMulAction R A
inst✝³ : NonUnitalNonAssocSemiring B
inst✝² : DistribMulAction S B
inst✝¹ : NonUnitalNonAssocSemiring C
inst✝ : DistribMulAction T C
f : A →ₛₙₐ[φ] B
h₁ : ∀ (m : R) (x : A), f (m • x) = φ m • f x
h₂ : { toFun := ⇑f, map_smul' := h₁ }.toFun 0 = 0
h₃ :
  ∀ (x y : A),
    { toFun := ⇑f, map_smul' := h₁ }.toFun (x + y) =
      { toFun := ⇑f, map_smul' := h₁ }.toFun x + { toFun := ⇑f, map_smul' := h₁ }.toFun y
h₄ :
  ∀ (x y : A),
    { toFun := ⇑f, map_smul' := h₁, map_zero' := h₂, map_add' := h₃ }.toFun (x * y) =
      { toFun := ⇑f, map_smul' := h₁, map_zero' := h₂, map_add' := h₃ }.toFun x *
        { toFun := ⇑f, map_smul' := h₁, map_zero' := h₂, map_add' := h₃ }.toFun y
⊢ ↑{ toFun := ⇑f, map_smul' := h₁, map_zero' := h₂, map_add' := h₃, map_mul' := h₄ } =
    { toFun := ⇑f, map_smul' := h₁, map_zero' := h₂, map_add' := h₃ }
state_after: no goals
tactic: rfl
Theorem: card_derangements_fin_eq_numDerangements
File: Mathlib/Combinatorics/Derangements/Finite.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
n : ℕ
⊢ card ↑(derangements (Fin n)) = numDerangements n
state_after: case h
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
n : ℕ
hyp : ∀ m < n, card ↑(derangements (Fin m)) = numDerangements m
⊢ card ↑(derangements (Fin n)) = numDerangements n
tactic: induction' n using Nat.strong_induction_on with n hyp
state_before: case h
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
n : ℕ
hyp : ∀ m < n, card ↑(derangements (Fin m)) = numDerangements m
⊢ card ↑(derangements (Fin n)) = numDerangements n
state_after: case h.zero
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hyp : ∀ m < 0, card ↑(derangements (Fin m)) = numDerangements m
⊢ card ↑(derangements (Fin 0)) = numDerangements 0

case h.succ.zero
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
hyp : ∀ m < 0 + 1, card ↑(derangements (Fin m)) = numDerangements m
⊢ card ↑(derangements (Fin (0 + 1))) = numDerangements (0 + 1)

case h.succ.succ
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
n : ℕ
hyp : ∀ m < n + 1 + 1, card ↑(derangements (Fin m)) = numDerangements m
⊢ card ↑(derangements (Fin (n + 1 + 1))) = numDerangements (n + 1 + 1)
tactic: rcases n with _ | _ | n
state_before: case h.succ.succ
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
n : ℕ
hyp : ∀ m < n + 1 + 1, card ↑(derangements (Fin m)) = numDerangements m
⊢ card ↑(derangements (Fin (n + 1 + 1))) = numDerangements (n + 1 + 1)
state_after: no goals
tactic: rw [numDerangements_add_two, card_derangements_fin_add_two, mul_add, hyp, hyp] <;> omega
Theorem: left_mem_openSegment_iff
File: Mathlib/Analysis/Convex/Segment.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : LinearOrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
x y : E
inst✝¹ : DenselyOrdered 𝕜
inst✝ : NoZeroSMulDivisors 𝕜 E
⊢ x ∈ openSegment 𝕜 x y ↔ x = y
state_after: case mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : LinearOrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
x y : E
inst✝¹ : DenselyOrdered 𝕜
inst✝ : NoZeroSMulDivisors 𝕜 E
⊢ x ∈ openSegment 𝕜 x y → x = y

case mpr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : LinearOrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
x y : E
inst✝¹ : DenselyOrdered 𝕜
inst✝ : NoZeroSMulDivisors 𝕜 E
⊢ x = y → x ∈ openSegment 𝕜 x y
tactic: constructor
Theorem: Set.Sized.shadow
File: Mathlib/Combinatorics/SetFamily/Shadow.lean

Proof steps:
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
s t : Finset α
a : α
k r : ℕ
h𝒜 : Set.Sized r ↑𝒜
⊢ Set.Sized (r - 1) ↑(∂ 𝒜)
state_after: α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
s t : Finset α
a : α
k r : ℕ
h𝒜 : Set.Sized r ↑𝒜
A : Finset α
h : A ∈ ↑(∂ 𝒜)
⊢ A.card = r - 1
tactic: intro A h
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
s t : Finset α
a : α
k r : ℕ
h𝒜 : Set.Sized r ↑𝒜
A : Finset α
h : A ∈ ↑(∂ 𝒜)
⊢ A.card = r - 1
state_after: case intro.intro.intro.intro
α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
s t : Finset α
a : α
k r : ℕ
h𝒜 : Set.Sized r ↑𝒜
A : Finset α
hA : A ∈ 𝒜
i : α
hi : i ∈ A
h : A.erase i ∈ ↑(∂ 𝒜)
⊢ (A.erase i).card = r - 1
tactic: obtain ⟨A, hA, i, hi, rfl⟩ := mem_shadow_iff.1 h
state_before: case intro.intro.intro.intro
α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
s t : Finset α
a : α
k r : ℕ
h𝒜 : Set.Sized r ↑𝒜
A : Finset α
hA : A ∈ 𝒜
i : α
hi : i ∈ A
h : A.erase i ∈ ↑(∂ 𝒜)
⊢ (A.erase i).card = r - 1
state_after: no goals
tactic: rw [card_erase_of_mem hi, h𝒜 hA]
Theorem: Num.cmp_swap
File: Mathlib/Data/Num/Lemmas.lean

Proof steps:
state_before: α : Type u_1
m n : Num
⊢ (m.cmp n).swap = n.cmp m
state_after: case pos.pos
α : Type u_1
a✝¹ a✝ : PosNum
⊢ ((pos a✝¹).cmp (pos a✝)).swap = (pos a✝).cmp (pos a✝¹)
tactic: cases m <;> cases n <;> try { rfl }
state_before: case pos.pos
α : Type u_1
a✝¹ a✝ : PosNum
⊢ ((pos a✝¹).cmp (pos a✝)).swap = (pos a✝).cmp (pos a✝¹)
state_after: no goals
tactic: apply PosNum.cmp_swap
Theorem: MeasureTheory.ProbabilityMeasure.eq_of_forall_apply_eq
File: Mathlib/MeasureTheory/Measure/ProbabilityMeasure.lean

Proof steps:
state_before: Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ ν : ProbabilityMeasure Ω
h : ∀ (s : Set Ω), MeasurableSet s → μ s = ν s
⊢ μ = ν
state_after: case h
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ ν : ProbabilityMeasure Ω
h : ∀ (s : Set Ω), MeasurableSet s → μ s = ν s
s : Set Ω
s_mble : MeasurableSet s
⊢ ↑μ s = ↑ν s
tactic: ext1 s s_mble
state_before: case h
Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ ν : ProbabilityMeasure Ω
h : ∀ (s : Set Ω), MeasurableSet s → μ s = ν s
s : Set Ω
s_mble : MeasurableSet s
⊢ ↑μ s = ↑ν s
state_after: no goals
tactic: simpa [ennreal_coeFn_eq_coeFn_toMeasure] using congr_arg ((↑) : ℝ≥0 → ℝ≥0∞) (h s s_mble)
Theorem: isSeparatedMap_iff_isClosed_diagonal
File: Mathlib/Topology/SeparatedMap.lean

Proof steps:
state_before: X : Type u_1
Y : Sort u_2
A : Type ?u.7784
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
⊢ IsSeparatedMap f ↔ IsClosed (Function.pullbackDiagonal f)
state_after: X : Type u_1
Y : Sort u_2
A : Type ?u.7784
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
⊢ (∀ (x₁ x₂ : X), f x₁ = f x₂ → x₁ ≠ x₂ → ∃ s₁ ∈ 𝓝 x₁, ∃ s₂ ∈ 𝓝 x₂, Disjoint s₁ s₂) ↔
    ∀ (a b : X) (b_1 : f a = f b),
      ⟨(a, b), b_1⟩ ∈ (Function.pullbackDiagonal f)ᶜ → (Function.pullbackDiagonal f)ᶜ ∈ comap Subtype.val (𝓝 a ×ˢ 𝓝 b)
tactic: simp_rw [isSeparatedMap_iff_nhds, ← isOpen_compl_iff, isOpen_iff_mem_nhds,
    Subtype.forall, Prod.forall, nhds_induced, nhds_prod_eq]
state_before: X : Type u_1
Y : Sort u_2
A : Type ?u.7784
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
⊢ (∀ (x₁ x₂ : X), f x₁ = f x₂ → x₁ ≠ x₂ → ∃ s₁ ∈ 𝓝 x₁, ∃ s₂ ∈ 𝓝 x₂, Disjoint s₁ s₂) ↔
    ∀ (a b : X) (b_1 : f a = f b),
      ⟨(a, b), b_1⟩ ∈ (Function.pullbackDiagonal f)ᶜ → (Function.pullbackDiagonal f)ᶜ ∈ comap Subtype.val (𝓝 a ×ˢ 𝓝 b)
state_after: case refine_1
X : Type u_1
Y : Sort u_2
A : Type ?u.7784
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
x₁ x₂ : X
x✝¹ : f x₁ = f x₂
x✝ : x₁ ≠ x₂
h : ∃ s₁ ∈ 𝓝 x₁, ∃ s₂ ∈ 𝓝 x₂, Disjoint s₁ s₂
⊢ (Function.pullbackDiagonal f)ᶜ ∈ comap Subtype.val (𝓝 x₁ ×ˢ 𝓝 x₂)

case refine_2
X : Type u_1
Y : Sort u_2
A : Type ?u.7784
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace A
f : X → Y
x₁ x₂ : X
x✝² : f x₁ = f x₂
x✝¹ : x₁ ≠ x₂
x✝ : (Function.pullbackDiagonal f)ᶜ ∈ comap Subtype.val (𝓝 x₁ ×ˢ 𝓝 x₂)
t : Set (X × X)
ht : t ∈ 𝓝 x₁ ×ˢ 𝓝 x₂
t_sub : Subtype.val ⁻¹' t ⊆ (Function.pullbackDiagonal f)ᶜ
⊢ ∃ s₁ ∈ 𝓝 x₁, ∃ s₂ ∈ 𝓝 x₂, Disjoint s₁ s₂
tactic: refine forall₄_congr fun x₁ x₂ _ _ ↦ ⟨fun h ↦ ?_, fun ⟨t, ht, t_sub⟩ ↦ ?_⟩
Theorem: FractionalIdeal.constant_factor_ne_zero
File: Mathlib/RingTheory/FractionalIdeal/Operations.lean

Proof steps:
state_before: R✝ : Type u_1
inst✝¹¹ : CommRing R✝
S : Submonoid R✝
P : Type u_2
inst✝¹⁰ : CommRing P
inst✝⁹ : Algebra R✝ P
loc : IsLocalization S P
R₁ : Type u_3
inst✝⁸ : CommRing R₁
K✝ : Type u_4
inst✝⁷ : Field K✝
inst✝⁶ : Algebra R₁ K✝
inst✝⁵ : IsFractionRing R₁ K✝
inst✝⁴ : IsDomain R₁
R : Type u_6
inst✝³ : CommRing R
K : Type u_5
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
I : FractionalIdeal R⁰ K
hI : I ≠ 0
a : R
J : Ideal R
haJ : I = spanSingleton R⁰ ((algebraMap R K) a)⁻¹ * ↑J
h : Ideal.span {a} = 0
⊢ False
state_after: R✝ : Type u_1
inst✝¹¹ : CommRing R✝
S : Submonoid R✝
P : Type u_2
inst✝¹⁰ : CommRing P
inst✝⁹ : Algebra R✝ P
loc : IsLocalization S P
R₁ : Type u_3
inst✝⁸ : CommRing R₁
K✝ : Type u_4
inst✝⁷ : Field K✝
inst✝⁶ : Algebra R₁ K✝
inst✝⁵ : IsFractionRing R₁ K✝
inst✝⁴ : IsDomain R₁
R : Type u_6
inst✝³ : CommRing R
K : Type u_5
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
I : FractionalIdeal R⁰ K
hI : I ≠ 0
a : R
J : Ideal R
haJ : I = spanSingleton R⁰ ((algebraMap R K) a)⁻¹ * ↑J
h : a = 0
⊢ False
tactic: rw [Ideal.zero_eq_bot, Ideal.span_singleton_eq_bot] at h
state_before: R✝ : Type u_1
inst✝¹¹ : CommRing R✝
S : Submonoid R✝
P : Type u_2
inst✝¹⁰ : CommRing P
inst✝⁹ : Algebra R✝ P
loc : IsLocalization S P
R₁ : Type u_3
inst✝⁸ : CommRing R₁
K✝ : Type u_4
inst✝⁷ : Field K✝
inst✝⁶ : Algebra R₁ K✝
inst✝⁵ : IsFractionRing R₁ K✝
inst✝⁴ : IsDomain R₁
R : Type u_6
inst✝³ : CommRing R
K : Type u_5
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
I : FractionalIdeal R⁰ K
hI : I ≠ 0
a : R
J : Ideal R
haJ : I = spanSingleton R⁰ ((algebraMap R K) a)⁻¹ * ↑J
h : a = 0
⊢ False
state_after: R✝ : Type u_1
inst✝¹¹ : CommRing R✝
S : Submonoid R✝
P : Type u_2
inst✝¹⁰ : CommRing P
inst✝⁹ : Algebra R✝ P
loc : IsLocalization S P
R₁ : Type u_3
inst✝⁸ : CommRing R₁
K✝ : Type u_4
inst✝⁷ : Field K✝
inst✝⁶ : Algebra R₁ K✝
inst✝⁵ : IsFractionRing R₁ K✝
inst✝⁴ : IsDomain R₁
R : Type u_6
inst✝³ : CommRing R
K : Type u_5
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
I : FractionalIdeal R⁰ K
hI : I ≠ 0
a : R
J : Ideal R
haJ : I = 0
h : a = 0
⊢ False
tactic: rw [h, RingHom.map_zero, inv_zero, spanSingleton_zero, MulZeroClass.zero_mul] at haJ
state_before: R✝ : Type u_1
inst✝¹¹ : CommRing R✝
S : Submonoid R✝
P : Type u_2
inst✝¹⁰ : CommRing P
inst✝⁹ : Algebra R✝ P
loc : IsLocalization S P
R₁ : Type u_3
inst✝⁸ : CommRing R₁
K✝ : Type u_4
inst✝⁷ : Field K✝
inst✝⁶ : Algebra R₁ K✝
inst✝⁵ : IsFractionRing R₁ K✝
inst✝⁴ : IsDomain R₁
R : Type u_6
inst✝³ : CommRing R
K : Type u_5
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
I : FractionalIdeal R⁰ K
hI : I ≠ 0
a : R
J : Ideal R
haJ : I = 0
h : a = 0
⊢ False
state_after: no goals
tactic: exact hI haJ
Theorem: Real.abs_sin_half
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

Proof steps:
state_before: x : ℝ
⊢ |sin (x / 2)| = √((1 - cos x) / 2)
state_after: no goals
tactic: rw [← sqrt_sq_eq_abs, sin_sq_eq_half_sub, two_mul, add_halves, sub_div]
Theorem: vsub_sub_vsub_comm
File: Mathlib/Algebra/AddTorsor.lean

Proof steps:
state_before: G : Type u_1
P : Type u_2
inst✝¹ : AddCommGroup G
inst✝ : AddTorsor G P
p₁ p₂ p₃ p₄ : P
⊢ p₁ -ᵥ p₂ - (p₃ -ᵥ p₄) = p₁ -ᵥ p₃ - (p₂ -ᵥ p₄)
state_after: no goals
tactic: rw [← vsub_vadd_eq_vsub_sub, vsub_vadd_comm, vsub_vadd_eq_vsub_sub]
Theorem: IsIntegral.map
File: Mathlib/RingTheory/IntegralClosure/IsIntegral/Basic.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
B✝ : Type u_3
S : Type u_4
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Ring B✝
inst✝¹² : CommRing S
inst✝¹¹ : Algebra R A
inst✝¹⁰ : Algebra R B✝
f✝ : R →+* S
B : Type u_5
C : Type u_6
F : Type u_7
inst✝⁹ : Ring B
inst✝⁸ : Ring C
inst✝⁷ : Algebra R B
inst✝⁶ : Algebra A B
inst✝⁵ : Algebra R C
inst✝⁴ : IsScalarTower R A B
inst✝³ : Algebra A C
inst✝² : IsScalarTower R A C
b : B
inst✝¹ : FunLike F B C
inst✝ : AlgHomClass F A B C
f : F
hb : IsIntegral R b
⊢ IsIntegral R (f b)
state_after: case intro
R : Type u_1
A : Type u_2
B✝ : Type u_3
S : Type u_4
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Ring B✝
inst✝¹² : CommRing S
inst✝¹¹ : Algebra R A
inst✝¹⁰ : Algebra R B✝
f✝ : R →+* S
B : Type u_5
C : Type u_6
F : Type u_7
inst✝⁹ : Ring B
inst✝⁸ : Ring C
inst✝⁷ : Algebra R B
inst✝⁶ : Algebra A B
inst✝⁵ : Algebra R C
inst✝⁴ : IsScalarTower R A B
inst✝³ : Algebra A C
inst✝² : IsScalarTower R A C
b : B
inst✝¹ : FunLike F B C
inst✝ : AlgHomClass F A B C
f : F
P : R[X]
hP : P.Monic ∧ eval₂ (algebraMap R B) b P = 0
⊢ IsIntegral R (f b)
tactic: obtain ⟨P, hP⟩ := hb
state_before: case intro
R : Type u_1
A : Type u_2
B✝ : Type u_3
S : Type u_4
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Ring B✝
inst✝¹² : CommRing S
inst✝¹¹ : Algebra R A
inst✝¹⁰ : Algebra R B✝
f✝ : R →+* S
B : Type u_5
C : Type u_6
F : Type u_7
inst✝⁹ : Ring B
inst✝⁸ : Ring C
inst✝⁷ : Algebra R B
inst✝⁶ : Algebra A B
inst✝⁵ : Algebra R C
inst✝⁴ : IsScalarTower R A B
inst✝³ : Algebra A C
inst✝² : IsScalarTower R A C
b : B
inst✝¹ : FunLike F B C
inst✝ : AlgHomClass F A B C
f : F
P : R[X]
hP : P.Monic ∧ eval₂ (algebraMap R B) b P = 0
⊢ IsIntegral R (f b)
state_after: case intro
R : Type u_1
A : Type u_2
B✝ : Type u_3
S : Type u_4
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Ring B✝
inst✝¹² : CommRing S
inst✝¹¹ : Algebra R A
inst✝¹⁰ : Algebra R B✝
f✝ : R →+* S
B : Type u_5
C : Type u_6
F : Type u_7
inst✝⁹ : Ring B
inst✝⁸ : Ring C
inst✝⁷ : Algebra R B
inst✝⁶ : Algebra A B
inst✝⁵ : Algebra R C
inst✝⁴ : IsScalarTower R A B
inst✝³ : Algebra A C
inst✝² : IsScalarTower R A C
b : B
inst✝¹ : FunLike F B C
inst✝ : AlgHomClass F A B C
f : F
P : R[X]
hP : P.Monic ∧ eval₂ (algebraMap R B) b P = 0
⊢ eval₂ (algebraMap R C) (f b) P = 0
tactic: refine ⟨P, hP.1, ?_⟩
state_before: case intro
R : Type u_1
A : Type u_2
B✝ : Type u_3
S : Type u_4
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Ring B✝
inst✝¹² : CommRing S
inst✝¹¹ : Algebra R A
inst✝¹⁰ : Algebra R B✝
f✝ : R →+* S
B : Type u_5
C : Type u_6
F : Type u_7
inst✝⁹ : Ring B
inst✝⁸ : Ring C
inst✝⁷ : Algebra R B
inst✝⁶ : Algebra A B
inst✝⁵ : Algebra R C
inst✝⁴ : IsScalarTower R A B
inst✝³ : Algebra A C
inst✝² : IsScalarTower R A C
b : B
inst✝¹ : FunLike F B C
inst✝ : AlgHomClass F A B C
f : F
P : R[X]
hP : P.Monic ∧ eval₂ (algebraMap R B) b P = 0
⊢ eval₂ (algebraMap R C) (f b) P = 0
state_after: no goals
tactic: rw [← aeval_def, ← aeval_map_algebraMap A,
    aeval_algHom_apply, aeval_map_algebraMap, aeval_def, hP.2, _root_.map_zero]
Theorem: Matrix.fromBlocks_multiply
File: Mathlib/Data/Matrix/Block.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : Fintype l
inst✝¹ : Fintype m
inst✝ : NonUnitalNonAssocSemiring α
A : Matrix n l α
B : Matrix n m α
C : Matrix o l α
D : Matrix o m α
A' : Matrix l p α
B' : Matrix l q α
C' : Matrix m p α
D' : Matrix m q α
⊢ fromBlocks A B C D * fromBlocks A' B' C' D' =
    fromBlocks (A * A' + B * C') (A * B' + B * D') (C * A' + D * C') (C * B' + D * D')
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : Fintype l
inst✝¹ : Fintype m
inst✝ : NonUnitalNonAssocSemiring α
A : Matrix n l α
B : Matrix n m α
C : Matrix o l α
D : Matrix o m α
A' : Matrix l p α
B' : Matrix l q α
C' : Matrix m p α
D' : Matrix m q α
i : n ⊕ o
j : p ⊕ q
⊢ (fromBlocks A B C D * fromBlocks A' B' C' D') i j =
    fromBlocks (A * A' + B * C') (A * B' + B * D') (C * A' + D * C') (C * B' + D * D') i j
tactic: ext i j
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : Fintype l
inst✝¹ : Fintype m
inst✝ : NonUnitalNonAssocSemiring α
A : Matrix n l α
B : Matrix n m α
C : Matrix o l α
D : Matrix o m α
A' : Matrix l p α
B' : Matrix l q α
C' : Matrix m p α
D' : Matrix m q α
i : n ⊕ o
j : p ⊕ q
⊢ (fromBlocks A B C D * fromBlocks A' B' C' D') i j =
    fromBlocks (A * A' + B * C') (A * B' + B * D') (C * A' + D * C') (C * B' + D * D') i j
state_after: no goals
tactic: rcases i with ⟨⟩ <;> rcases j with ⟨⟩ <;> simp only [fromBlocks, mul_apply, of_apply,
      Sum.elim_inr, Fintype.sum_sum_type, Sum.elim_inl, add_apply]
Theorem: Prod.image_mk_openSegment_right
File: Mathlib/Analysis/Convex/Segment.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x : E
y₁ y₂ : F
⊢ (fun y => (x, y)) '' openSegment 𝕜 y₁ y₂ = openSegment 𝕜 (x, y₁) (x, y₂)
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x : E
y₁ y₂ : F
⊢ (fun x_1 => (x, x_1.1 • y₁ + x_1.2 • y₂)) '' {p | 0 < p.1 ∧ 0 < p.2 ∧ p.1 + p.2 = 1} =
    (fun p => p.1 • (x, y₁) + p.2 • (x, y₂)) '' {p | 0 < p.1 ∧ 0 < p.2 ∧ p.1 + p.2 = 1}
tactic: rw [openSegment_eq_image₂, openSegment_eq_image₂, image_image]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x : E
y₁ y₂ : F
⊢ (fun x_1 => (x, x_1.1 • y₁ + x_1.2 • y₂)) '' {p | 0 < p.1 ∧ 0 < p.2 ∧ p.1 + p.2 = 1} =
    (fun p => p.1 • (x, y₁) + p.2 • (x, y₂)) '' {p | 0 < p.1 ∧ 0 < p.2 ∧ p.1 + p.2 = 1}
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x : E
y₁ y₂ : F
a : 𝕜 × 𝕜
ha : a ∈ {p | 0 < p.1 ∧ 0 < p.2 ∧ p.1 + p.2 = 1}
⊢ (x, a.1 • y₁ + a.2 • y₂) = a.1 • (x, y₁) + a.2 • (x, y₂)
tactic: refine EqOn.image_eq fun a ha ↦ ?_
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x : E
y₁ y₂ : F
a : 𝕜 × 𝕜
ha : a ∈ {p | 0 < p.1 ∧ 0 < p.2 ∧ p.1 + p.2 = 1}
⊢ (x, a.1 • y₁ + a.2 • y₂) = a.1 • (x, y₁) + a.2 • (x, y₂)
state_after: no goals
tactic: simp [Convex.combo_self ha.2.2]
Theorem: WeierstrassCurve.Jacobian.add_smul_equiv
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

Proof steps:
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
u v : R
hu : IsUnit u
hv : IsUnit v
⊢ W'.add (u • P) (v • Q) ≈ W'.add P Q
state_after: case pos
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
u v : R
hu : IsUnit u
hv : IsUnit v
h : P ≈ Q
⊢ W'.add (u • P) (v • Q) ≈ W'.add P Q

case neg
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
u v : R
hu : IsUnit u
hv : IsUnit v
h : ¬P ≈ Q
⊢ W'.add (u • P) (v • Q) ≈ W'.add P Q
tactic: by_cases h : P ≈ Q
Theorem: CategoryTheory.GradedObject.Monoidal.associator_naturality
File: Mathlib/CategoryTheory/GradedObject/Monoidal.lean

Proof steps:
state_before: I : Type u
inst✝¹⁴ : AddMonoid I
C : Type u_1
inst✝¹³ : Category.{u_2, u_1} C
inst✝¹² : MonoidalCategory C
Z : C
X₁ X₂ X₃ : GradedObject I C
inst✝¹¹ : X₁.HasTensor X₂
inst✝¹⁰ : X₂.HasTensor X₃
inst✝⁹ : (tensorObj X₁ X₂).HasTensor X₃
inst✝⁸ : X₁.HasTensor (tensorObj X₂ X₃)
Y₁ Y₂ Y₃ : GradedObject I C
inst✝⁷ : Y₁.HasTensor Y₂
inst✝⁶ : Y₂.HasTensor Y₃
inst✝⁵ : (tensorObj Y₁ Y₂).HasTensor Y₃
inst✝⁴ : Y₁.HasTensor (tensorObj Y₂ Y₃)
f₁ : X₁ ⟶ Y₁
f₂ : X₂ ⟶ Y₂
f₃ : X₃ ⟶ Y₃
inst✝³ : X₁.HasGoodTensor₁₂Tensor X₂ X₃
inst✝² : X₁.HasGoodTensorTensor₂₃ X₂ X₃
inst✝¹ : Y₁.HasGoodTensor₁₂Tensor Y₂ Y₃
inst✝ : Y₁.HasGoodTensorTensor₂₃ Y₂ Y₃
⊢ tensorHom (tensorHom f₁ f₂) f₃ ≫ (associator Y₁ Y₂ Y₃).hom =
    (associator X₁ X₂ X₃).hom ≫ tensorHom f₁ (tensorHom f₂ f₃)
state_after: no goals
tactic: aesop_cat
Theorem: CochainComplex.mappingCone.inr_f_triangle_mor₃_f
File: Mathlib/Algebra/Homology/HomotopyCategory/Pretriangulated.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{u_3, u_1} C
inst✝⁶ : Category.{?u.11099, u_2} D
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasBinaryBiproducts C
inst✝² : Preadditive D
inst✝¹ : HasZeroObject D
inst✝ : HasBinaryBiproducts D
K L : CochainComplex C ℤ
φ : K ⟶ L
p : ℤ
⊢ (inr φ).f p ≫ (triangle φ).mor₃.f p = 0
state_after: no goals
tactic: simp [triangle, Cochain.rightShift_v _ 1 0 _ p p (add_zero p) (p+1) rfl]
Theorem: MeasureTheory.Measure.singularPart_zero_right
File: Mathlib/MeasureTheory/Decomposition/Lebesgue.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν μ : Measure α
⊢ μ.singularPart 0 = μ
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν μ : Measure α
⊢ μ.singularPart 0 = μ.singularPart 0 + withDensity 0 (μ.rnDeriv 0)
tactic: conv_rhs => rw [haveLebesgueDecomposition_add μ 0]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν μ : Measure α
⊢ μ.singularPart 0 = μ.singularPart 0 + withDensity 0 (μ.rnDeriv 0)
state_after: no goals
tactic: simp
Theorem: Polynomial.natDegree_X_pow_mul
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

Proof steps:
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝¹ : Semiring R
inst✝ : Nontrivial R
p q : R[X]
n : ℕ
hp : p ≠ 0
⊢ (X ^ n * p).natDegree = p.natDegree + n
state_after: no goals
tactic: rw [commute_X_pow, natDegree_mul_X_pow n hp]
Theorem: Irreducible.isUnit_gcd_iff
File: Mathlib/Algebra/GCDMonoid/Basic.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
x y : α
hx : Irreducible x
⊢ IsUnit (gcd x y) ↔ ¬x ∣ y
state_after: no goals
tactic: rw [hx.isUnit_iff_not_associated_of_dvd (gcd_dvd_left x y), not_iff_not, associated_gcd_left_iff]