ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: AlgebraicGeometry.IsAffineOpen.isCompact
File: Mathlib/AlgebraicGeometry/AffineScheme.lean

Proof steps:
state_before: X Y : Scheme
U : X.Opens
hU : IsAffineOpen U
f : ↑Γ(X, U)
⊢ IsCompact ↑U
state_after: case h.e'_3
X Y : Scheme
U : X.Opens
hU : IsAffineOpen U
f : ↑Γ(X, U)
⊢ ↑U = ⇑hU.fromSpec.val.base '' Set.univ
tactic: convert @IsCompact.image _ _ _ _ Set.univ hU.fromSpec.1.base PrimeSpectrum.compactSpace.1
    (by fun_prop)
state_before: case h.e'_3
X Y : Scheme
U : X.Opens
hU : IsAffineOpen U
f : ↑Γ(X, U)
⊢ ↑U = ⇑hU.fromSpec.val.base '' Set.univ
state_after: case h.e'_3
X Y : Scheme
U : X.Opens
hU : IsAffineOpen U
f : ↑Γ(X, U)
⊢ ⇑hU.fromSpec.val.base '' Set.univ = Set.range ⇑hU.fromSpec.val.base
tactic: convert hU.range_fromSpec.symm
state_before: case h.e'_3
X Y : Scheme
U : X.Opens
hU : IsAffineOpen U
f : ↑Γ(X, U)
⊢ ⇑hU.fromSpec.val.base '' Set.univ = Set.range ⇑hU.fromSpec.val.base
state_after: no goals
tactic: exact Set.image_univ
Theorem: Real.lt_sqrt
File: Mathlib/Data/Real/Sqrt.lean

Proof steps:
state_before: x✝ y✝ x y : ℝ
hx : 0 ≤ x
⊢ x < √y ↔ x ^ 2 < y
state_after: no goals
tactic: rw [← sqrt_lt_sqrt_iff (sq_nonneg _), sqrt_sq hx]
Theorem: CategoryTheory.Limits.Types.FilteredColimit.eqvGen_quot_rel_of_rel
File: Mathlib/CategoryTheory/Limits/TypesFiltered.lean

Proof steps:
state_before: J : Type v
inst✝ : Category.{w, v} J
F : J ⥤ Type u
x y : (j : J) × F.obj j
x✝ : FilteredColimit.Rel F x y
k : J
f : x.fst ⟶ k
g : y.fst ⟶ k
h : F.map f x.snd = F.map g y.snd
⊢ EqvGen (Quot.Rel F) x y
state_after: case refine_1
J : Type v
inst✝ : Category.{w, v} J
F : J ⥤ Type u
x y : (j : J) × F.obj j
x✝ : FilteredColimit.Rel F x y
k : J
f : x.fst ⟶ k
g : y.fst ⟶ k
h : F.map f x.snd = F.map g y.snd
⊢ EqvGen (Quot.Rel F) x ⟨k, F.map f x.snd⟩

case refine_2
J : Type v
inst✝ : Category.{w, v} J
F : J ⥤ Type u
x y : (j : J) × F.obj j
x✝ : FilteredColimit.Rel F x y
k : J
f : x.fst ⟶ k
g : y.fst ⟶ k
h : F.map f x.snd = F.map g y.snd
⊢ EqvGen (Quot.Rel F) ⟨k, F.map f x.snd⟩ y
tactic: refine EqvGen.trans _ ⟨k, F.map f x.2⟩ _ ?_ ?_
Theorem: Polynomial.natDegree_comp_le
File: Mathlib/Algebra/Polynomial/Degree/Lemmas.lean

Proof steps:
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
this : DecidableEq R := Classical.decEq R
h0 : p.comp q = 0
⊢ (p.comp q).natDegree ≤ p.natDegree * q.natDegree
state_after: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
this : DecidableEq R := Classical.decEq R
h0 : p.comp q = 0
⊢ 0 ≤ p.natDegree * q.natDegree
tactic: rw [h0, natDegree_zero]
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
this : DecidableEq R := Classical.decEq R
h0 : p.comp q = 0
⊢ 0 ≤ p.natDegree * q.natDegree
state_after: no goals
tactic: exact Nat.zero_le _
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q r : R[X]
this : DecidableEq R := Classical.decEq R
h0 : ¬p.comp q = 0
n : ℕ
hn : n ∈ p.support
⊢ ↑(C (p.coeff n)).natDegree + n • ↑q.natDegree = ↑(n * q.natDegree)
state_after: R : Type u
S : Type v
ι : Type w
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q r : R[X]
this : DecidableEq R := Classical.decEq R
h0 : ¬p.comp q = 0
n : ℕ
hn : n ∈ p.support
⊢ ↑n * ↑q.natDegree = ↑(n * q.natDegree)
tactic: rw [natDegree_C, Nat.cast_zero, zero_add, nsmul_eq_mul]
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q r : R[X]
this : DecidableEq R := Classical.decEq R
h0 : ¬p.comp q = 0
n : ℕ
hn : n ∈ p.support
⊢ ↑n * ↑q.natDegree = ↑(n * q.natDegree)
state_after: no goals
tactic: simp
Theorem: BoxIntegral.Prepartition.le_biUnion_iff
File: Mathlib/Analysis/BoxIntegral/Partition/Basic.lean

Proof steps:
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi✝ πi₁ πi₂ πi : (J : Box ι) → Prepartition J
π' : Prepartition I
⊢ π' ≤ π.biUnion πi ↔ π' ≤ π ∧ ∀ J ∈ π, π'.restrict J ≤ πi J
state_after: case refine_1
ι : Type u_1
I J✝ J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi✝ πi₁ πi₂ πi : (J : Box ι) → Prepartition J
π' : Prepartition I
H : π' ≤ π.biUnion πi
J : Box ι
hJ : J ∈ π
⊢ π'.restrict J ≤ πi J

case refine_2
ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi✝ πi₁ πi₂ πi : (J : Box ι) → Prepartition J
π' : Prepartition I
⊢ (π' ≤ π ∧ ∀ J ∈ π, π'.restrict J ≤ πi J) → π' ≤ π.biUnion πi
tactic: refine ⟨fun H => ⟨H.trans (π.biUnion_le πi), fun J hJ => ?_⟩, ?_⟩
Theorem: CategoryTheory.ShortComplex.Homotopy.symm_h₂
File: Mathlib/Algebra/Homology/ShortComplex/Preadditive.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{?u.97646, u_1} C
inst✝ : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ₁ φ₂ φ₃ φ₄ : S₁ ⟶ S₂
h : Homotopy φ₁ φ₂
⊢ φ₂.τ₁ = S₁.f ≫ (-h.h₁) + -h.h₀ + φ₁.τ₁
state_after: C : Type u_1
inst✝¹ : Category.{?u.97646, u_1} C
inst✝ : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ₁ φ₂ φ₃ φ₄ : S₁ ⟶ S₂
h : Homotopy φ₁ φ₂
⊢ φ₂.τ₁ = -S₁.f ≫ h.h₁ + -h.h₀ + (S₁.f ≫ h.h₁ + h.h₀ + φ₂.τ₁)
tactic: rw [h.comm₁, comp_neg]
state_before: C : Type u_1
inst✝¹ : Category.{?u.97646, u_1} C
inst✝ : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ₁ φ₂ φ₃ φ₄ : S₁ ⟶ S₂
h : Homotopy φ₁ φ₂
⊢ φ₂.τ₁ = -S₁.f ≫ h.h₁ + -h.h₀ + (S₁.f ≫ h.h₁ + h.h₀ + φ₂.τ₁)
state_after: no goals
tactic: abel
state_before: C : Type u_1
inst✝¹ : Category.{?u.97646, u_1} C
inst✝ : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ₁ φ₂ φ₃ φ₄ : S₁ ⟶ S₂
h : Homotopy φ₁ φ₂
⊢ φ₂.τ₂ = S₁.g ≫ (-h.h₂) + (-h.h₁) ≫ S₂.f + φ₁.τ₂
state_after: C : Type u_1
inst✝¹ : Category.{?u.97646, u_1} C
inst✝ : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ₁ φ₂ φ₃ φ₄ : S₁ ⟶ S₂
h : Homotopy φ₁ φ₂
⊢ φ₂.τ₂ = -S₁.g ≫ h.h₂ + -h.h₁ ≫ S₂.f + (S₁.g ≫ h.h₂ + h.h₁ ≫ S₂.f + φ₂.τ₂)
tactic: rw [h.comm₂, comp_neg, neg_comp]
state_before: C : Type u_1
inst✝¹ : Category.{?u.97646, u_1} C
inst✝ : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ₁ φ₂ φ₃ φ₄ : S₁ ⟶ S₂
h : Homotopy φ₁ φ₂
⊢ φ₂.τ₂ = -S₁.g ≫ h.h₂ + -h.h₁ ≫ S₂.f + (S₁.g ≫ h.h₂ + h.h₁ ≫ S₂.f + φ₂.τ₂)
state_after: no goals
tactic: abel
state_before: C : Type u_1
inst✝¹ : Category.{?u.97646, u_1} C
inst✝ : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ₁ φ₂ φ₃ φ₄ : S₁ ⟶ S₂
h : Homotopy φ₁ φ₂
⊢ φ₂.τ₃ = -h.h₃ + (-h.h₂) ≫ S₂.g + φ₁.τ₃
state_after: C : Type u_1
inst✝¹ : Category.{?u.97646, u_1} C
inst✝ : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ₁ φ₂ φ₃ φ₄ : S₁ ⟶ S₂
h : Homotopy φ₁ φ₂
⊢ φ₂.τ₃ = -h.h₃ + -h.h₂ ≫ S₂.g + (h.h₃ + h.h₂ ≫ S₂.g + φ₂.τ₃)
tactic: rw [h.comm₃, neg_comp]
state_before: C : Type u_1
inst✝¹ : Category.{?u.97646, u_1} C
inst✝ : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ₁ φ₂ φ₃ φ₄ : S₁ ⟶ S₂
h : Homotopy φ₁ φ₂
⊢ φ₂.τ₃ = -h.h₃ + -h.h₂ ≫ S₂.g + (h.h₃ + h.h₂ ≫ S₂.g + φ₂.τ₃)
state_after: no goals
tactic: abel
Theorem: Module.End.exp_ne_zero_of_hasGenEigenvalue
File: Mathlib/LinearAlgebra/Eigenspace/Basic.lean

Proof steps:
state_before: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End R M
μ : R
k : ℕ
h : f.HasGenEigenvalue μ k
⊢ k ≠ 0
state_after: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End R M
μ : R
h : f.HasGenEigenvalue μ 0
⊢ False
tactic: rintro rfl
state_before: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End R M
μ : R
h : f.HasGenEigenvalue μ 0
⊢ False
state_after: no goals
tactic: exact h LinearMap.ker_id
Theorem: SimpleGraph.card_ConnectedComponent_eq_rank_ker_lapMatrix
File: Mathlib/Combinatorics/SimpleGraph/LapMatrix.lean

Proof steps:
state_before: V : Type u_1
R : Type u_2
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
⊢ Fintype.card G.ConnectedComponent = FiniteDimensional.finrank ℝ ↥(LinearMap.ker (toLin' (lapMatrix ℝ G)))
state_after: no goals
tactic: classical
  rw [FiniteDimensional.finrank_eq_card_basis (lapMatrix_ker_basis G)]
Theorem: Composition.embedding_comp_inv
File: Mathlib/Combinatorics/Enumerative/Composition.lean

Proof steps:
state_before: n : ℕ
c : Composition n
j : Fin n
⊢ (c.embedding (c.index j)) (c.invEmbedding j) = j
state_after: n : ℕ
c : Composition n
j : Fin n
⊢ ↑((c.embedding (c.index j)) (c.invEmbedding j)) = ↑j
tactic: rw [Fin.ext_iff]
state_before: n : ℕ
c : Composition n
j : Fin n
⊢ ↑((c.embedding (c.index j)) (c.invEmbedding j)) = ↑j
state_after: no goals
tactic: apply add_tsub_cancel_of_le (c.sizeUpTo_index_le j)
Theorem: Set.Finite.encard_lt_top
File: Mathlib/Data/Set/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
s t : Set α
h : s.Finite
⊢ s.encard < ⊤
state_after: α : Type u_1
β : Type u_2
s t : Set α
h : s.Finite
⊢ ∀ {a : α} {s : Set α}, a ∉ s → s.Finite → s.encard < ⊤ → (insert a s).encard < ⊤
tactic: refine h.induction_on (by simp) ?_
state_before: α : Type u_1
β : Type u_2
s t : Set α
h : s.Finite
⊢ ∀ {a : α} {s : Set α}, a ∉ s → s.Finite → s.encard < ⊤ → (insert a s).encard < ⊤
state_after: α : Type u_1
β : Type u_2
s t✝ : Set α
h : s.Finite
a : α
t : Set α
hat : a ∉ t
a✝ : t.Finite
ht' : t.encard < ⊤
⊢ (insert a t).encard < ⊤
tactic: rintro a t hat _ ht'
state_before: α : Type u_1
β : Type u_2
s t✝ : Set α
h : s.Finite
a : α
t : Set α
hat : a ∉ t
a✝ : t.Finite
ht' : t.encard < ⊤
⊢ (insert a t).encard < ⊤
state_after: α : Type u_1
β : Type u_2
s t✝ : Set α
h : s.Finite
a : α
t : Set α
hat : a ∉ t
a✝ : t.Finite
ht' : t.encard < ⊤
⊢ t.encard + 1 < ⊤
tactic: rw [encard_insert_of_not_mem hat]
state_before: α : Type u_1
β : Type u_2
s t✝ : Set α
h : s.Finite
a : α
t : Set α
hat : a ∉ t
a✝ : t.Finite
ht' : t.encard < ⊤
⊢ t.encard + 1 < ⊤
state_after: no goals
tactic: exact lt_tsub_iff_right.1 ht'
Theorem: RingHom.isIntegral_respectsIso
File: Mathlib/RingTheory/RingHom/Integral.lean

Proof steps:
state_before: ⊢ RespectsIso fun {R S} [CommRing R] [CommRing S] f => f.IsIntegral
state_after: ⊢ ∀ {R S : Type u_1} [inst : CommRing R] [inst_1 : CommRing S] (e : R ≃+* S), e.toRingHom.IsIntegral
tactic: apply isIntegral_stableUnderComposition.respectsIso
state_before: ⊢ ∀ {R S : Type u_1} [inst : CommRing R] [inst_1 : CommRing S] (e : R ≃+* S), e.toRingHom.IsIntegral
state_after: R S : Type u_1
inst✝¹ : CommRing R
inst✝ : CommRing S
e : R ≃+* S
x : S
⊢ e.toRingHom.IsIntegralElem x
tactic: introv x
state_before: R S : Type u_1
inst✝¹ : CommRing R
inst✝ : CommRing S
e : R ≃+* S
x : S
⊢ e.toRingHom.IsIntegralElem x
state_after: R S : Type u_1
inst✝¹ : CommRing R
inst✝ : CommRing S
e : R ≃+* S
x : S
⊢ e.toRingHom.IsIntegralElem (e (e.symm x))
tactic: rw [← e.apply_symm_apply x]
state_before: R S : Type u_1
inst✝¹ : CommRing R
inst✝ : CommRing S
e : R ≃+* S
x : S
⊢ e.toRingHom.IsIntegralElem (e (e.symm x))
state_after: no goals
tactic: apply RingHom.isIntegralElem_map
Theorem: Polynomial.aroots_zero
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
S : Type u_1
inst✝² : CommRing S
inst✝¹ : IsDomain S
inst✝ : Algebra T S
⊢ aroots 0 S = 0
state_after: no goals
tactic: rw [← C_0, aroots_C]
Theorem: AlgebraicGeometry.Scheme.zero_of_zero_cover
File: Mathlib/AlgebraicGeometry/Cover/Open.lean

Proof steps:
state_before: X✝ Y Z : Scheme
𝒰✝ : X✝.OpenCover
f : X✝ ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (x : 𝒰✝.J), HasPullback (𝒰✝.map x ≫ f) g
X : Scheme
U : X.Opens
s : ↑Γ(X, U)
𝒰 : X.OpenCover
h : ∀ (i : 𝒰.J), (Hom.app (𝒰.map i) U) s = 0
i : 𝒰.J
⊢ (Hom.app (𝒰.map i) U) s = (Hom.app (𝒰.map i) U) 0
state_after: X✝ Y Z : Scheme
𝒰✝ : X✝.OpenCover
f : X✝ ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (x : 𝒰✝.J), HasPullback (𝒰✝.map x ≫ f) g
X : Scheme
U : X.Opens
s : ↑Γ(X, U)
𝒰 : X.OpenCover
h : ∀ (i : 𝒰.J), (Hom.app (𝒰.map i) U) s = 0
i : 𝒰.J
⊢ (Hom.app (𝒰.map i) U) s = 0
tactic: rw [map_zero]
state_before: X✝ Y Z : Scheme
𝒰✝ : X✝.OpenCover
f : X✝ ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (x : 𝒰✝.J), HasPullback (𝒰✝.map x ≫ f) g
X : Scheme
U : X.Opens
s : ↑Γ(X, U)
𝒰 : X.OpenCover
h : ∀ (i : 𝒰.J), (Hom.app (𝒰.map i) U) s = 0
i : 𝒰.J
⊢ (Hom.app (𝒰.map i) U) s = 0
state_after: no goals
tactic: exact h i
Theorem: schnirelmannDensity_setOf_modeq_one
File: Mathlib/Combinatorics/Schnirelmann.lean

Proof steps:
state_before: m : ℕ
⊢ schnirelmannDensity {n | n ≡ 1 [MOD m]} = (↑m)⁻¹
state_after: case inl

⊢ schnirelmannDensity {n | n ≡ 1 [MOD 1]} = (↑1)⁻¹

case inr
m : ℕ
hm : m ≠ 1
⊢ schnirelmannDensity {n | n ≡ 1 [MOD m]} = (↑m)⁻¹
tactic: rcases eq_or_ne m 1 with rfl | hm
state_before: case inr
m : ℕ
hm : m ≠ 1
⊢ schnirelmannDensity {n | n ≡ 1 [MOD m]} = (↑m)⁻¹
state_after: case inr
m : ℕ
hm : m ≠ 1
⊢ schnirelmannDensity {n | n ≡ 1 [MOD m]} = schnirelmannDensity {n | n % m = 1}
tactic: rw [← schnirelmannDensity_setOf_mod_eq_one hm]
state_before: case inr
m : ℕ
hm : m ≠ 1
⊢ schnirelmannDensity {n | n ≡ 1 [MOD m]} = schnirelmannDensity {n | n % m = 1}
state_after: case inr.h
m : ℕ
hm : m ≠ 1
⊢ {n | n ≡ 1 [MOD m]} = {n | n % m = 1}
tactic: apply schnirelmannDensity_congr
state_before: case inr.h
m : ℕ
hm : m ≠ 1
⊢ {n | n ≡ 1 [MOD m]} = {n | n % m = 1}
state_after: case inr.h.h
m : ℕ
hm : m ≠ 1
n : ℕ
⊢ n ∈ {n | n ≡ 1 [MOD m]} ↔ n ∈ {n | n % m = 1}
tactic: ext n
state_before: case inr.h.h
m : ℕ
hm : m ≠ 1
n : ℕ
⊢ n ∈ {n | n ≡ 1 [MOD m]} ↔ n ∈ {n | n % m = 1}
state_after: no goals
tactic: simp only [Set.mem_setOf_eq, Nat.ModEq, Nat.one_mod_of_ne_one hm]
Theorem: ascPochhammer_eval₂
File: Mathlib/RingTheory/Polynomial/Pochhammer.lean

Proof steps:
state_before: S : Type u
inst✝¹ : Semiring S
T : Type v
inst✝ : Semiring T
f : S →+* T
n : ℕ
t : T
⊢ eval t (ascPochhammer T n) = eval₂ f t (ascPochhammer S n)
state_after: S : Type u
inst✝¹ : Semiring S
T : Type v
inst✝ : Semiring T
f : S →+* T
n : ℕ
t : T
⊢ eval t (map f (ascPochhammer S n)) = eval₂ f t (ascPochhammer S n)
tactic: rw [← ascPochhammer_map f]
state_before: S : Type u
inst✝¹ : Semiring S
T : Type v
inst✝ : Semiring T
f : S →+* T
n : ℕ
t : T
⊢ eval t (map f (ascPochhammer S n)) = eval₂ f t (ascPochhammer S n)
state_after: no goals
tactic: exact eval_map f t
Theorem: Matrix.mulVec_cons
File: Mathlib/Data/Matrix/Notation.lean

Proof steps:
state_before: α✝ : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
inst✝¹ : NonUnitalNonAssocSemiring α✝
α : Type u_1
inst✝ : CommSemiring α
A : m' → Fin n.succ → α
x : α
v : Fin n → α
⊢ of A *ᵥ vecCons x v = x • vecHead ∘ A + of (vecTail ∘ A) *ᵥ v
state_after: case h
α✝ : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
inst✝¹ : NonUnitalNonAssocSemiring α✝
α : Type u_1
inst✝ : CommSemiring α
A : m' → Fin n.succ → α
x : α
v : Fin n → α
i : m'
⊢ (of A *ᵥ vecCons x v) i = (x • vecHead ∘ A + of (vecTail ∘ A) *ᵥ v) i
tactic: ext i
state_before: case h
α✝ : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
inst✝¹ : NonUnitalNonAssocSemiring α✝
α : Type u_1
inst✝ : CommSemiring α
A : m' → Fin n.succ → α
x : α
v : Fin n → α
i : m'
⊢ (of A *ᵥ vecCons x v) i = (x • vecHead ∘ A + of (vecTail ∘ A) *ᵥ v) i
state_after: no goals
tactic: simp [mulVec, mul_comm]
Theorem: Cardinal.mk_compl_eq_mk_compl_finite
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

Proof steps:
state_before: α β : Type u
inst✝ : Finite α
s : Set α
t : Set β
h1 : #α = #β
h : #↑s = #↑t
⊢ #↑sᶜ = #↑tᶜ
state_after: α β : Type u
inst✝ : Finite α
s : Set α
t : Set β
h1 : #α = #β
h : #↑s = #↑t
⊢ lift.{u, u} #↑sᶜ = lift.{u, u} #↑tᶜ
tactic: rw [← lift_inj.{u, u}]
state_before: α β : Type u
inst✝ : Finite α
s : Set α
t : Set β
h1 : #α = #β
h : #↑s = #↑t
⊢ lift.{u, u} #↑sᶜ = lift.{u, u} #↑tᶜ
state_after: no goals
tactic: apply mk_compl_eq_mk_compl_finite_lift.{u, u, u}
  <;> rwa [lift_inj]
Theorem: Real.Angle.eq_iff_sign_eq_and_abs_toReal_eq
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

Proof steps:
state_before: θ ψ : Angle
⊢ θ = ψ ↔ θ.sign = ψ.sign ∧ |θ.toReal| = |ψ.toReal|
state_after: case refine_1
θ ψ : Angle
⊢ θ = ψ → θ.sign = ψ.sign ∧ |θ.toReal| = |ψ.toReal|

case refine_2
θ ψ : Angle
h : θ.sign = ψ.sign ∧ |θ.toReal| = |ψ.toReal|
⊢ θ = ψ
tactic: refine ⟨?_, fun h => ?_⟩
state_before: case refine_2
θ ψ : Angle
h : θ.sign = ψ.sign ∧ |θ.toReal| = |ψ.toReal|
⊢ θ = ψ
state_after: case refine_2.intro
θ ψ : Angle
hs : θ.sign = ψ.sign
hr : |θ.toReal| = |ψ.toReal|
⊢ θ = ψ
tactic: rcases h with ⟨hs, hr⟩
state_before: case refine_2.intro
θ ψ : Angle
hs : θ.sign = ψ.sign
hr : |θ.toReal| = |ψ.toReal|
⊢ θ = ψ
state_after: case refine_2.intro
θ ψ : Angle
hs : θ.sign = ψ.sign
hr : θ.toReal = ψ.toReal ∨ θ.toReal = -ψ.toReal
⊢ θ = ψ
tactic: rw [abs_eq_abs] at hr
state_before: case refine_2.intro
θ ψ : Angle
hs : θ.sign = ψ.sign
hr : θ.toReal = ψ.toReal ∨ θ.toReal = -ψ.toReal
⊢ θ = ψ
state_after: case refine_2.intro.inl
θ ψ : Angle
hs : θ.sign = ψ.sign
hr : θ.toReal = ψ.toReal
⊢ θ = ψ

case refine_2.intro.inr
θ ψ : Angle
hs : θ.sign = ψ.sign
hr : θ.toReal = -ψ.toReal
⊢ θ = ψ
tactic: rcases hr with (hr | hr)
Theorem: EMetric.hausdorffEdist_empty
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

Proof steps:
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
ne : s.Nonempty
⊢ hausdorffEdist s ∅ = ⊤
state_after: case intro
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t u : Set α
Φ : α → β
x : α
xs : x ∈ s
⊢ hausdorffEdist s ∅ = ⊤
tactic: rcases ne with ⟨x, xs⟩
state_before: case intro
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t u : Set α
Φ : α → β
x : α
xs : x ∈ s
⊢ hausdorffEdist s ∅ = ⊤
state_after: case intro
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t u : Set α
Φ : α → β
x : α
xs : x ∈ s
this : infEdist x ∅ ≤ hausdorffEdist s ∅
⊢ hausdorffEdist s ∅ = ⊤
tactic: have : infEdist x ∅ ≤ hausdorffEdist s ∅ := infEdist_le_hausdorffEdist_of_mem xs
state_before: case intro
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t u : Set α
Φ : α → β
x : α
xs : x ∈ s
this : infEdist x ∅ ≤ hausdorffEdist s ∅
⊢ hausdorffEdist s ∅ = ⊤
state_after: no goals
tactic: simpa using this
Theorem: Group.conjugatesOf_subset
File: Mathlib/Deprecated/Subgroup.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a✝ a₁ a₂ b c : G
s : Set G
inst✝ : Group G
t : Set G
ht : IsNormalSubgroup t
a : G
h : a ∈ t
x : G
hc : x ∈ conjugatesOf a
⊢ x ∈ t
state_after: case intro
G : Type u_1
H : Type u_2
A : Type u_3
a✝ a₁ a₂ b c✝ : G
s : Set G
inst✝ : Group G
t : Set G
ht : IsNormalSubgroup t
a : G
h : a ∈ t
x : G
hc : x ∈ conjugatesOf a
c : G
w : c * a * c⁻¹ = x
⊢ x ∈ t
tactic: obtain ⟨c, w⟩ := isConj_iff.1 hc
state_before: case intro
G : Type u_1
H : Type u_2
A : Type u_3
a✝ a₁ a₂ b c✝ : G
s : Set G
inst✝ : Group G
t : Set G
ht : IsNormalSubgroup t
a : G
h : a ∈ t
x : G
hc : x ∈ conjugatesOf a
c : G
w : c * a * c⁻¹ = x
⊢ x ∈ t
state_after: case intro
G : Type u_1
H✝ : Type u_2
A : Type u_3
a✝ a₁ a₂ b c✝ : G
s : Set G
inst✝ : Group G
t : Set G
ht : IsNormalSubgroup t
a : G
h : a ∈ t
x : G
hc : x ∈ conjugatesOf a
c : G
w : c * a * c⁻¹ = x
H : c * a * c⁻¹ ∈ t
⊢ x ∈ t
tactic: have H := IsNormalSubgroup.normal ht a h c
state_before: case intro
G : Type u_1
H✝ : Type u_2
A : Type u_3
a✝ a₁ a₂ b c✝ : G
s : Set G
inst✝ : Group G
t : Set G
ht : IsNormalSubgroup t
a : G
h : a ∈ t
x : G
hc : x ∈ conjugatesOf a
c : G
w : c * a * c⁻¹ = x
H : c * a * c⁻¹ ∈ t
⊢ x ∈ t
state_after: no goals
tactic: rwa [← w]
Theorem: Continuous.stronglyMeasurable
File: Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f✝ g : α → β
inst✝⁴ : MeasurableSpace α
inst✝³ : TopologicalSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PseudoMetrizableSpace β
h : SecondCountableTopologyEither α β
f : α → β
hf : Continuous f
⊢ StronglyMeasurable f
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f✝ g : α → β
inst✝⁴ : MeasurableSpace α
inst✝³ : TopologicalSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PseudoMetrizableSpace β
h : SecondCountableTopologyEither α β
f : α → β
hf : Continuous f
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
⊢ StronglyMeasurable f
tactic: borelize β
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f✝ g : α → β
inst✝⁴ : MeasurableSpace α
inst✝³ : TopologicalSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PseudoMetrizableSpace β
h : SecondCountableTopologyEither α β
f : α → β
hf : Continuous f
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
⊢ StronglyMeasurable f
state_after: case inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f✝ g : α → β
inst✝⁴ : MeasurableSpace α
inst✝³ : TopologicalSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PseudoMetrizableSpace β
h : SecondCountableTopologyEither α β
f : α → β
hf : Continuous f
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
h✝ : SecondCountableTopology α
⊢ StronglyMeasurable f

case inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝⁵ : Countable ι
f✝ g : α → β
inst✝⁴ : MeasurableSpace α
inst✝³ : TopologicalSpace α
inst✝² : OpensMeasurableSpace α
inst✝¹ : TopologicalSpace β
inst✝ : PseudoMetrizableSpace β
h : SecondCountableTopologyEither α β
f : α → β
hf : Continuous f
this✝¹ : MeasurableSpace β := borel β
this✝ : BorelSpace β
h✝ : SecondCountableTopology β
⊢ StronglyMeasurable f
tactic: cases h.out
Theorem: InnerProductGeometry.norm_div_sin_angle_add_of_inner_eq_zero
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/RightAngle.lean

Proof steps:
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, y⟫_ℝ = 0
h0 : x = 0 ∨ y ≠ 0
⊢ ‖y‖ / Real.sin (angle x (x + y)) = ‖x + y‖
state_after: case inl
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, y⟫_ℝ = 0
h0 : x = 0
⊢ ‖y‖ / Real.sin (angle x (x + y)) = ‖x + y‖

case inr
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, y⟫_ℝ = 0
h0 : y ≠ 0
⊢ ‖y‖ / Real.sin (angle x (x + y)) = ‖x + y‖
tactic: rcases h0 with (h0 | h0)
state_before: case inr
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, y⟫_ℝ = 0
h0 : y ≠ 0
⊢ ‖y‖ / Real.sin (angle x (x + y)) = ‖x + y‖
state_after: no goals
tactic: rw [sin_angle_add_of_inner_eq_zero h (Or.inr h0), div_div_eq_mul_div, mul_comm, div_eq_mul_inv,
    mul_inv_cancel_right₀ (norm_ne_zero_iff.2 h0)]
Theorem: CategoryTheory.Triangulated.Subcategory.mem_W_iff_of_distinguished
File: Mathlib/CategoryTheory/Triangulated/Subcategory.lean

Proof steps:
state_before: C : Type u_1
inst✝⁶ : Category.{u_2, u_1} C
inst✝⁵ : HasZeroObject C
inst✝⁴ : HasShift C ℤ
inst✝³ : Preadditive C
inst✝² : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝¹ : Pretriangulated C
S : Subcategory C
inst✝ : ClosedUnderIsomorphisms S.P
T : Triangle C
hT : T ∈ distinguishedTriangles
⊢ S.W T.mor₁ ↔ S.P T.obj₃
state_after: case mp
C : Type u_1
inst✝⁶ : Category.{u_2, u_1} C
inst✝⁵ : HasZeroObject C
inst✝⁴ : HasShift C ℤ
inst✝³ : Preadditive C
inst✝² : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝¹ : Pretriangulated C
S : Subcategory C
inst✝ : ClosedUnderIsomorphisms S.P
T : Triangle C
hT : T ∈ distinguishedTriangles
⊢ S.W T.mor₁ → S.P T.obj₃

case mpr
C : Type u_1
inst✝⁶ : Category.{u_2, u_1} C
inst✝⁵ : HasZeroObject C
inst✝⁴ : HasShift C ℤ
inst✝³ : Preadditive C
inst✝² : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝¹ : Pretriangulated C
S : Subcategory C
inst✝ : ClosedUnderIsomorphisms S.P
T : Triangle C
hT : T ∈ distinguishedTriangles
⊢ S.P T.obj₃ → S.W T.mor₁
tactic: constructor
Theorem: UpperSet.compl_iInf
File: Mathlib/Order/UpperLower/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝ : LE α
s t : UpperSet α
a : α
f : ι → UpperSet α
⊢ ↑(⨅ i, f i).compl = ↑(⨅ i, (f i).compl)
state_after: no goals
tactic: simp only [coe_compl, coe_iInf, compl_iUnion, LowerSet.coe_iInf]