ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Nat.nth_strictMonoOn
File: Mathlib/Data/Nat/Nth.lean

Proof steps:
state_before: p : ℕ → Prop
hf : (setOf p).Finite
⊢ StrictMonoOn (nth p) (Set.Iio hf.toFinset.card)
state_after: p : ℕ → Prop
hf : (setOf p).Finite
m : ℕ
hm : m < hf.toFinset.card
n : ℕ
hn : n < hf.toFinset.card
h : m < n
⊢ nth p m < nth p n
tactic: rintro m (hm : m < _) n (hn : n < _) h
state_before: p : ℕ → Prop
hf : (setOf p).Finite
m : ℕ
hm : m < hf.toFinset.card
n : ℕ
hn : n < hf.toFinset.card
h : m < n
⊢ nth p m < nth p n
state_after: p : ℕ → Prop
hf : (setOf p).Finite
m : ℕ
hm : m < hf.toFinset.card
n : ℕ
hn : n < hf.toFinset.card
h : m < n
⊢ (⋯.toFinset.orderEmbOfFin ⋯) ⟨m, ⋯⟩ < (⋯.toFinset.orderEmbOfFin ⋯) ⟨n, ⋯⟩
tactic: simp only [nth_eq_orderEmbOfFin, *]
state_before: p : ℕ → Prop
hf : (setOf p).Finite
m : ℕ
hm : m < hf.toFinset.card
n : ℕ
hn : n < hf.toFinset.card
h : m < n
⊢ (⋯.toFinset.orderEmbOfFin ⋯) ⟨m, ⋯⟩ < (⋯.toFinset.orderEmbOfFin ⋯) ⟨n, ⋯⟩
state_after: no goals
tactic: exact OrderEmbedding.strictMono _ h
Theorem: ZeroAtInftyContinuousMap.toBCF_injective
File: Mathlib/Topology/ContinuousFunction/ZeroAtInfty.lean

Proof steps:
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : PseudoMetricSpace β
inst✝² : Zero β
inst✝¹ : FunLike F α β
inst✝ : ZeroAtInftyContinuousMapClass F α β
f g : α →C₀ β
h : f.toBCF = g.toBCF
⊢ f = g
state_after: case h
F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : PseudoMetricSpace β
inst✝² : Zero β
inst✝¹ : FunLike F α β
inst✝ : ZeroAtInftyContinuousMapClass F α β
f g : α →C₀ β
h : f.toBCF = g.toBCF
x : α
⊢ f x = g x
tactic: ext x
state_before: case h
F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : PseudoMetricSpace β
inst✝² : Zero β
inst✝¹ : FunLike F α β
inst✝ : ZeroAtInftyContinuousMapClass F α β
f g : α →C₀ β
h : f.toBCF = g.toBCF
x : α
⊢ f x = g x
state_after: no goals
tactic: simpa only using DFunLike.congr_fun h x
Theorem: CategoryTheory.Adjunction.natIsoEquiv_apply_hom
File: Mathlib/CategoryTheory/Adjunction/Unique.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝¹ : Category.{?u.18053, u_1} C
inst✝ : Category.{?u.18057, u_2} D
F F' : C ⥤ D
G G' : D ⥤ C
adj1 : F ⊣ G
adj2 : F' ⊣ G'
i : G ≅ G'
⊢ (fun i =>
        { hom := (adj1.natTransEquiv adj2).symm i.hom, inv := (adj2.natTransEquiv adj1).symm i.inv, hom_inv_id := ⋯,
          inv_hom_id := ⋯ })
      ((fun i =>
          { hom := (adj1.natTransEquiv adj2) i.hom, inv := (adj2.natTransEquiv adj1) i.inv, hom_inv_id := ⋯,
            inv_hom_id := ⋯ })
        i) =
    i
state_after: no goals
tactic: simp
state_before: C : Type u_1
D : Type u_2
inst✝¹ : Category.{?u.18053, u_1} C
inst✝ : Category.{?u.18057, u_2} D
F F' : C ⥤ D
G G' : D ⥤ C
adj1 : F ⊣ G
adj2 : F' ⊣ G'
i : F' ≅ F
⊢ (fun i =>
        { hom := (adj1.natTransEquiv adj2) i.hom, inv := (adj2.natTransEquiv adj1) i.inv, hom_inv_id := ⋯,
          inv_hom_id := ⋯ })
      ((fun i =>
          { hom := (adj1.natTransEquiv adj2).symm i.hom, inv := (adj2.natTransEquiv adj1).symm i.inv, hom_inv_id := ⋯,
            inv_hom_id := ⋯ })
        i) =
    i
state_after: no goals
tactic: simp
Theorem: HomologicalComplex.homotopyCofiber.ext_from_X'
File: Mathlib/Algebra/Homology/HomotopyCofiber.lean

Proof steps:
state_before: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i : ι
hi : ¬c.Rel i (c.next i)
A : C
f g : X φ i ⟶ A
h : inrX φ i ≫ f = inrX φ i ≫ g
⊢ f = g
state_after: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i : ι
hi : ¬c.Rel i (c.next i)
A : C
f g : X φ i ⟶ A
h : inrX φ i ≫ f = inrX φ i ≫ g
⊢ (XIso φ i hi).inv ≫ f = (XIso φ i hi).inv ≫ g
tactic: rw [← cancel_epi (XIso φ i hi).inv]
state_before: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i : ι
hi : ¬c.Rel i (c.next i)
A : C
f g : X φ i ⟶ A
h : inrX φ i ≫ f = inrX φ i ≫ g
⊢ (XIso φ i hi).inv ≫ f = (XIso φ i hi).inv ≫ g
state_after: no goals
tactic: simpa only [inrX, dif_neg hi] using h
Theorem: IsPreconnected.union'
File: Mathlib/Topology/Connected/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s✝ t✝ u v s t : Set α
H : (s ∩ t).Nonempty
hs : IsPreconnected s
ht : IsPreconnected t
⊢ IsPreconnected (s ∪ t)
state_after: case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s✝ t✝ u v s t : Set α
hs : IsPreconnected s
ht : IsPreconnected t
x : α
hxs : x ∈ s
hxt : x ∈ t
⊢ IsPreconnected (s ∪ t)
tactic: rcases H with ⟨x, hxs, hxt⟩
state_before: case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s✝ t✝ u v s t : Set α
hs : IsPreconnected s
ht : IsPreconnected t
x : α
hxs : x ∈ s
hxt : x ∈ t
⊢ IsPreconnected (s ∪ t)
state_after: no goals
tactic: exact hs.union x hxs hxt ht
Theorem: Finset.subset_map_iff
File: Mathlib/Data/Finset/Preimage.lean

Proof steps:
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
f : α ↪ β
s : Finset β
t : Finset α
⊢ s ⊆ map f t ↔ ∃ u ⊆ t, s = map f u
state_after: no goals
tactic: classical
  simp_rw [← coe_subset, coe_map, subset_image_iff, map_eq_image, eq_comm]
Theorem: Module.map_eval_injective
File: Mathlib/LinearAlgebra/Dual.lean

Proof steps:
state_before: K : Type uK
V : Type uV
inst✝³ : CommRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Free K V
⊢ Function.Injective (Submodule.map (eval K V))
state_after: case hf
K : Type uK
V : Type uV
inst✝³ : CommRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Free K V
⊢ Function.Injective ⇑(eval K V)
tactic: apply Submodule.map_injective_of_injective
state_before: case hf
K : Type uK
V : Type uV
inst✝³ : CommRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Free K V
⊢ Function.Injective ⇑(eval K V)
state_after: case hf
K : Type uK
V : Type uV
inst✝³ : CommRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Free K V
⊢ ker (eval K V) = ⊥
tactic: rw [← LinearMap.ker_eq_bot]
state_before: case hf
K : Type uK
V : Type uV
inst✝³ : CommRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Free K V
⊢ ker (eval K V) = ⊥
state_after: no goals
tactic: exact eval_ker K V
Theorem: Ideal.add_pow_mem_of_pow_mem_of_le
File: Mathlib/RingTheory/Ideal/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
a b : α
inst✝ : CommSemiring α
I : Ideal α
m n k : ℕ
ha : a ^ m ∈ I
hb : b ^ n ∈ I
hk : m + n ≤ k + 1
⊢ (a + b) ^ k ∈ I
state_after: α : Type u
β : Type v
a b : α
inst✝ : CommSemiring α
I : Ideal α
m n k : ℕ
ha : a ^ m ∈ I
hb : b ^ n ∈ I
hk : m + n ≤ k + 1
⊢ ∑ m ∈ Finset.range (k + 1), a ^ m * b ^ (k - m) * ↑(k.choose m) ∈ I
tactic: rw [add_pow]
state_before: α : Type u
β : Type v
a b : α
inst✝ : CommSemiring α
I : Ideal α
m n k : ℕ
ha : a ^ m ∈ I
hb : b ^ n ∈ I
hk : m + n ≤ k + 1
⊢ ∑ m ∈ Finset.range (k + 1), a ^ m * b ^ (k - m) * ↑(k.choose m) ∈ I
state_after: α : Type u
β : Type v
a b : α
inst✝ : CommSemiring α
I : Ideal α
m n k : ℕ
ha : a ^ m ∈ I
hb : b ^ n ∈ I
hk : m + n ≤ k + 1
⊢ ∀ c ∈ Finset.range (k + 1), a ^ c * b ^ (k - c) * ↑(k.choose c) ∈ I
tactic: apply I.sum_mem
state_before: α : Type u
β : Type v
a b : α
inst✝ : CommSemiring α
I : Ideal α
m n k : ℕ
ha : a ^ m ∈ I
hb : b ^ n ∈ I
hk : m + n ≤ k + 1
⊢ ∀ c ∈ Finset.range (k + 1), a ^ c * b ^ (k - c) * ↑(k.choose c) ∈ I
state_after: α : Type u
β : Type v
a b : α
inst✝ : CommSemiring α
I : Ideal α
m n k : ℕ
ha : a ^ m ∈ I
hb : b ^ n ∈ I
hk : m + n ≤ k + 1
c : ℕ
a✝ : c ∈ Finset.range (k + 1)
⊢ a ^ c * b ^ (k - c) * ↑(k.choose c) ∈ I
tactic: intro c _
state_before: α : Type u
β : Type v
a b : α
inst✝ : CommSemiring α
I : Ideal α
m n k : ℕ
ha : a ^ m ∈ I
hb : b ^ n ∈ I
hk : m + n ≤ k + 1
c : ℕ
a✝ : c ∈ Finset.range (k + 1)
⊢ a ^ c * b ^ (k - c) * ↑(k.choose c) ∈ I
state_after: case h
α : Type u
β : Type v
a b : α
inst✝ : CommSemiring α
I : Ideal α
m n k : ℕ
ha : a ^ m ∈ I
hb : b ^ n ∈ I
hk : m + n ≤ k + 1
c : ℕ
a✝ : c ∈ Finset.range (k + 1)
⊢ a ^ c * b ^ (k - c) ∈ I
tactic: apply mul_mem_right
state_before: case h
α : Type u
β : Type v
a b : α
inst✝ : CommSemiring α
I : Ideal α
m n k : ℕ
ha : a ^ m ∈ I
hb : b ^ n ∈ I
hk : m + n ≤ k + 1
c : ℕ
a✝ : c ∈ Finset.range (k + 1)
⊢ a ^ c * b ^ (k - c) ∈ I
state_after: case pos
α : Type u
β : Type v
a b : α
inst✝ : CommSemiring α
I : Ideal α
m n k : ℕ
ha : a ^ m ∈ I
hb : b ^ n ∈ I
hk : m + n ≤ k + 1
c : ℕ
a✝ : c ∈ Finset.range (k + 1)
h : m ≤ c
⊢ a ^ c * b ^ (k - c) ∈ I

case neg
α : Type u
β : Type v
a b : α
inst✝ : CommSemiring α
I : Ideal α
m n k : ℕ
ha : a ^ m ∈ I
hb : b ^ n ∈ I
hk : m + n ≤ k + 1
c : ℕ
a✝ : c ∈ Finset.range (k + 1)
h : ¬m ≤ c
⊢ a ^ c * b ^ (k - c) ∈ I
tactic: by_cases h : m ≤ c
Theorem: FirstOrder.Sequence₂.sum_card
File: Mathlib/ModelTheory/Basic.lean

Proof steps:
state_before: a₀ a₁ a₂ : Type u
⊢ (sum fun i => #(Sequence₂ a₀ a₁ a₂ i)) = #a₀ + #a₁ + #a₂
state_after: a₀ a₁ a₂ : Type u
⊢ #(Sequence₂ a₀ a₁ a₂ 0) +
      (#(Sequence₂ a₀ a₁ a₂ (0 + 1)) +
        (#(Sequence₂ a₀ a₁ a₂ (0 + 1 + 1)) + sum fun i => #(Sequence₂ a₀ a₁ a₂ (i + 1 + 1 + 1)))) =
    #a₀ + #a₁ + #a₂
tactic: rw [sum_nat_eq_add_sum_succ, sum_nat_eq_add_sum_succ, sum_nat_eq_add_sum_succ]
state_before: a₀ a₁ a₂ : Type u
⊢ #(Sequence₂ a₀ a₁ a₂ 0) +
      (#(Sequence₂ a₀ a₁ a₂ (0 + 1)) +
        (#(Sequence₂ a₀ a₁ a₂ (0 + 1 + 1)) + sum fun i => #(Sequence₂ a₀ a₁ a₂ (i + 1 + 1 + 1)))) =
    #a₀ + #a₁ + #a₂
state_after: no goals
tactic: simp [add_assoc, Sequence₂]
Theorem: Ideal.comap_of_equiv
File: Mathlib/RingTheory/Ideal/Maps.lean

Proof steps:
state_before: R : Type u
S : Type v
F : Type u_1
inst✝³ : Semiring R
inst✝² : Semiring S
inst✝¹ : FunLike F R S
rc : RingHomClass F R S
f✝ : F
I✝ J : Ideal R
K L : Ideal S
G : Type u_2
inst✝ : FunLike G S R
rcg : RingHomClass G S R
ι : Sort u_3
I : Ideal R
f : R ≃+* S
⊢ comap (↑f) (comap (↑f.symm) I) = I
state_after: no goals
tactic: rw [← RingEquiv.toRingHom_eq_coe, ← RingEquiv.toRingHom_eq_coe, comap_comap,
    RingEquiv.toRingHom_eq_coe, RingEquiv.toRingHom_eq_coe, RingEquiv.symm_comp, comap_id]
Theorem: ContinuousLinearMap.comp_sub
File: Mathlib/Topology/Algebra/Module/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝¹⁶ : Ring R
R₂ : Type u_2
inst✝¹⁵ : Ring R₂
R₃ : Type u_3
inst✝¹⁴ : Ring R₃
M : Type u_4
inst✝¹³ : TopologicalSpace M
inst✝¹² : AddCommGroup M
M₂ : Type u_5
inst✝¹¹ : TopologicalSpace M₂
inst✝¹⁰ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁹ : TopologicalSpace M₃
inst✝⁸ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁷ : TopologicalSpace M₄
inst✝⁶ : AddCommGroup M₄
inst✝⁵ : Module R M
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝¹ : TopologicalAddGroup M₂
inst✝ : TopologicalAddGroup M₃
g : M₂ →SL[σ₂₃] M₃
f₁ f₂ : M →SL[σ₁₂] M₂
⊢ g.comp (f₁ - f₂) = g.comp f₁ - g.comp f₂
state_after: case h
R : Type u_1
inst✝¹⁶ : Ring R
R₂ : Type u_2
inst✝¹⁵ : Ring R₂
R₃ : Type u_3
inst✝¹⁴ : Ring R₃
M : Type u_4
inst✝¹³ : TopologicalSpace M
inst✝¹² : AddCommGroup M
M₂ : Type u_5
inst✝¹¹ : TopologicalSpace M₂
inst✝¹⁰ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁹ : TopologicalSpace M₃
inst✝⁸ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁷ : TopologicalSpace M₄
inst✝⁶ : AddCommGroup M₄
inst✝⁵ : Module R M
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝¹ : TopologicalAddGroup M₂
inst✝ : TopologicalAddGroup M₃
g : M₂ →SL[σ₂₃] M₃
f₁ f₂ : M →SL[σ₁₂] M₂
x✝ : M
⊢ (g.comp (f₁ - f₂)) x✝ = (g.comp f₁ - g.comp f₂) x✝
tactic: ext
state_before: case h
R : Type u_1
inst✝¹⁶ : Ring R
R₂ : Type u_2
inst✝¹⁵ : Ring R₂
R₃ : Type u_3
inst✝¹⁴ : Ring R₃
M : Type u_4
inst✝¹³ : TopologicalSpace M
inst✝¹² : AddCommGroup M
M₂ : Type u_5
inst✝¹¹ : TopologicalSpace M₂
inst✝¹⁰ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁹ : TopologicalSpace M₃
inst✝⁸ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁷ : TopologicalSpace M₄
inst✝⁶ : AddCommGroup M₄
inst✝⁵ : Module R M
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝¹ : TopologicalAddGroup M₂
inst✝ : TopologicalAddGroup M₃
g : M₂ →SL[σ₂₃] M₃
f₁ f₂ : M →SL[σ₁₂] M₂
x✝ : M
⊢ (g.comp (f₁ - f₂)) x✝ = (g.comp f₁ - g.comp f₂) x✝
state_after: no goals
tactic: simp
Theorem: Matrix.kroneckerMap_diagonal_diagonal
File: Mathlib/Data/Matrix/Kronecker.lean

Proof steps:
state_before: R : Type u_1
α : Type u_2
α' : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
l : Type u_8
m : Type u_9
n : Type u_10
p : Type u_11
q : Type u_12
r : Type u_13
l' : Type u_14
m' : Type u_15
n' : Type u_16
p' : Type u_17
inst✝⁴ : Zero α
inst✝³ : Zero β
inst✝² : Zero γ
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
f : α → β → γ
hf₁ : ∀ (b : β), f 0 b = 0
hf₂ : ∀ (a : α), f a 0 = 0
a : m → α
b : n → β
⊢ kroneckerMap f (diagonal a) (diagonal b) = diagonal fun mn => f (a mn.1) (b mn.2)
state_after: case a.mk.mk
R : Type u_1
α : Type u_2
α' : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
l : Type u_8
m : Type u_9
n : Type u_10
p : Type u_11
q : Type u_12
r : Type u_13
l' : Type u_14
m' : Type u_15
n' : Type u_16
p' : Type u_17
inst✝⁴ : Zero α
inst✝³ : Zero β
inst✝² : Zero γ
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
f : α → β → γ
hf₁ : ∀ (b : β), f 0 b = 0
hf₂ : ∀ (a : α), f a 0 = 0
a : m → α
b : n → β
i₁ : m
i₂ : n
j₁ : m
j₂ : n
⊢ kroneckerMap f (diagonal a) (diagonal b) (i₁, i₂) (j₁, j₂) =
    diagonal (fun mn => f (a mn.1) (b mn.2)) (i₁, i₂) (j₁, j₂)
tactic: ext ⟨i₁, i₂⟩ ⟨j₁, j₂⟩
state_before: case a.mk.mk
R : Type u_1
α : Type u_2
α' : Type u_3
β : Type u_4
β' : Type u_5
γ : Type u_6
γ' : Type u_7
l : Type u_8
m : Type u_9
n : Type u_10
p : Type u_11
q : Type u_12
r : Type u_13
l' : Type u_14
m' : Type u_15
n' : Type u_16
p' : Type u_17
inst✝⁴ : Zero α
inst✝³ : Zero β
inst✝² : Zero γ
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
f : α → β → γ
hf₁ : ∀ (b : β), f 0 b = 0
hf₂ : ∀ (a : α), f a 0 = 0
a : m → α
b : n → β
i₁ : m
i₂ : n
j₁ : m
j₂ : n
⊢ kroneckerMap f (diagonal a) (diagonal b) (i₁, i₂) (j₁, j₂) =
    diagonal (fun mn => f (a mn.1) (b mn.2)) (i₁, i₂) (j₁, j₂)
state_after: no goals
tactic: simp [diagonal, apply_ite f, ite_and, ite_apply, apply_ite (f (a i₁)), hf₁, hf₂]
Theorem: Int.fract_int
File: Mathlib/Algebra/Order/Floor.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a : α
x : ℤ
⊢ fract x = 0 x
state_after: no goals
tactic: simp [fract]
Theorem: Basis.ofZlatticeBasis_span
File: Mathlib/Algebra/Module/Zlattice/Basic.lean

Proof steps:
state_before: K : Type u_1
inst✝⁷ : NormedLinearOrderedField K
inst✝⁶ : HasSolidNorm K
inst✝⁵ : FloorRing K
E : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace K E
inst✝² : FiniteDimensional K E
inst✝¹ : ProperSpace E
L : AddSubgroup E
inst✝ : DiscreteTopology ↥L
ι : Type u_3
hs : IsZlattice K L
b : Basis ι ℤ ↥L
⊢ (span ℤ (Set.range ⇑(ofZlatticeBasis K L b))).toAddSubgroup = L
state_after: no goals
tactic: calc (span ℤ (Set.range (b.ofZlatticeBasis K))).toAddSubgroup
    _ = (span ℤ (L.subtype.toIntLinearMap '' (Set.range b))).toAddSubgroup := by congr; ext; simp
    _ = (map L.subtype.toIntLinearMap (span ℤ (Set.range b))).toAddSubgroup := by
        rw [Submodule.map_span]
    _ = L := by simp [b.span_eq]
Theorem: PrimeSpectrum.zeroLocus_ideal_mem_irreducibleComponents
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝ : CommSemiring R
I : Ideal R
⊢ zeroLocus ↑I ∈ irreducibleComponents (PrimeSpectrum R) ↔ I.radical ∈ minimalPrimes R
state_after: R : Type u
S : Type v
inst✝ : CommSemiring R
I : Ideal R
⊢ zeroLocus ↑I ∈ irreducibleComponents (PrimeSpectrum R) ↔ vanishingIdeal (zeroLocus ↑I) ∈ minimalPrimes R
tactic: rw [← vanishingIdeal_zeroLocus_eq_radical]
state_before: R : Type u
S : Type v
inst✝ : CommSemiring R
I : Ideal R
⊢ zeroLocus ↑I ∈ irreducibleComponents (PrimeSpectrum R) ↔ vanishingIdeal (zeroLocus ↑I) ∈ minimalPrimes R
state_after: R : Type u
S : Type v
inst✝ : CommSemiring R
I : Ideal R
⊢ closure (zeroLocus ↑I) ∈ irreducibleComponents (PrimeSpectrum R) ↔ vanishingIdeal (zeroLocus ↑I) ∈ minimalPrimes R
tactic: conv_lhs => rw [← (isClosed_zeroLocus _).closure_eq]
state_before: R : Type u
S : Type v
inst✝ : CommSemiring R
I : Ideal R
⊢ closure (zeroLocus ↑I) ∈ irreducibleComponents (PrimeSpectrum R) ↔ vanishingIdeal (zeroLocus ↑I) ∈ minimalPrimes R
state_after: no goals
tactic: exact vanishingIdeal_mem_minimalPrimes.symm
Theorem: Orientation.tan_oangle_sub_left_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)
⊢ (o.oangle (x - y) x).tan = ‖y‖ / ‖x‖
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 y x = ↑(π / 2)
⊢ ((-o).oangle x (x - y)).tan = ‖y‖ / ‖x‖
tactic: rw [← neg_inj, oangle_rev, ← oangle_neg_orientation_eq_neg, neg_inj] at h ⊢
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 y x = ↑(π / 2)
⊢ ((-o).oangle x (x - y)).tan = ‖y‖ / ‖x‖
state_after: no goals
tactic: exact (-o).tan_oangle_sub_right_of_oangle_eq_pi_div_two h
Theorem: CompleteSublattice.coe_sSup'
File: Mathlib/Order/CompleteSublattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : CompleteLattice α
inst✝ : CompleteLattice β
f : CompleteLatticeHom α β
L : CompleteSublattice α
S : Set ↥L
⊢ ↑(sSup S) = ⨆ N ∈ S, ↑N
state_after: no goals
tactic: rw [coe_sSup, ← Set.image, sSup_image]
Theorem: cfcHom_le_iff
File: Mathlib/Analysis/CstarAlgebra/ContinuousFunctionalCalculus/Unital.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹⁴ : OrderedCommRing R
inst✝¹³ : StarRing R
inst✝¹² : MetricSpace R
inst✝¹¹ : TopologicalRing R
inst✝¹⁰ : ContinuousStar R
inst✝⁹ : ∀ (α : Type ?u.835033) [inst : TopologicalSpace α], StarOrderedRing C(α, R)
inst✝⁸ : TopologicalSpace A
inst✝⁷ : Ring A
inst✝⁶ : StarRing A
inst✝⁵ : PartialOrder A
inst✝⁴ : StarOrderedRing A
inst✝³ : Algebra R A
inst✝² : StarModule R A
inst✝¹ : ContinuousFunctionalCalculus R p
inst✝ : NonnegSpectrumClass R A
a : A
ha : p a
f g : C(↑(spectrum R a), R)
⊢ (cfcHom ha) f ≤ (cfcHom ha) g ↔ f ≤ g
state_after: no goals
tactic: rw [← sub_nonneg, ← map_sub, cfcHom_nonneg_iff, sub_nonneg]
Theorem: Complex.Gamma_zero
File: Mathlib/Analysis/SpecialFunctions/Gamma/Basic.lean

Proof steps:
state_before: ⊢ Gamma 0 = 0
state_after: no goals
tactic: simp_rw [Gamma, zero_re, sub_zero, Nat.floor_one, GammaAux, div_zero]
Theorem: InnerProductGeometry.angle_neg_left
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Basic.lean

Proof steps:
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
⊢ angle (-x) y = π - angle x y
state_after: no goals
tactic: rw [← angle_neg_neg, neg_neg, angle_neg_right]
Theorem: rank_eq_one_iff
File: Mathlib/LinearAlgebra/Dimension/FreeAndStrongRankCondition.lean

Proof steps:
state_before: K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Module.Free K V
⊢ Module.rank K V = 1 ↔ ∃ v₀, v₀ ≠ 0 ∧ ∀ (v : V), ∃ r, r • v₀ = v
state_after: K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Module.Free K V
this : Nontrivial K
⊢ Module.rank K V = 1 ↔ ∃ v₀, v₀ ≠ 0 ∧ ∀ (v : V), ∃ r, r • v₀ = v
tactic: haveI := nontrivial_of_invariantBasisNumber K
state_before: K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Module.Free K V
this : Nontrivial K
⊢ Module.rank K V = 1 ↔ ∃ v₀, v₀ ≠ 0 ∧ ∀ (v : V), ∃ r, r • v₀ = v
state_after: case refine_1
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Module.Free K V
this : Nontrivial K
h : Module.rank K V = 1
⊢ ∃ v₀, v₀ ≠ 0 ∧ ∀ (v : V), ∃ r, r • v₀ = v

case refine_2
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : StrongRankCondition K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : Module.Free K V
this : Nontrivial K
x✝ : ∃ v₀, v₀ ≠ 0 ∧ ∀ (v : V), ∃ r, r • v₀ = v
v₀ : V
h : v₀ ≠ 0
hv : ∀ (v : V), ∃ r, r • v₀ = v
⊢ 1 ≤ Module.rank K V
tactic: refine ⟨fun h ↦ ?_, fun ⟨v₀, h, hv⟩ ↦ (rank_le_one_iff.2 ⟨v₀, hv⟩).antisymm ?_⟩
Theorem: Multiset.filter_cons_of_neg
File: Mathlib/Data/Multiset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type v
γ : Type u_2
p : α → Prop
inst✝ : DecidablePred p
a : α
s : Multiset α
l : List α
h : ¬p a
⊢ ¬decide (p a) = true
state_after: no goals
tactic: simpa using h
Theorem: Finset.indicator_biUnion_apply
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι : Type u_1
κ✝¹ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
κ✝ : Type u_6
κ : Type u_7
s : Finset ι
t : ι → Set κ
f : κ → β
h : (↑s).PairwiseDisjoint t
x : κ
⊢ (⋃ i ∈ s, t i).mulIndicator f x = ∏ i ∈ s, (t i).mulIndicator f x
state_after: no goals
tactic: rw [mulIndicator_biUnion s t h]
Theorem: ProjectiveSpectrum.mem_compl_zeroLocus_iff_not_mem
File: Mathlib/AlgebraicGeometry/ProjectiveSpectrum/Topology.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommSemiring R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
I : ProjectiveSpectrum 𝒜
⊢ I ∈ (zeroLocus 𝒜 {f})ᶜ ↔ f ∉ I.asHomogeneousIdeal
state_after: R : Type u_1
A : Type u_2
inst✝³ : CommSemiring R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
I : ProjectiveSpectrum 𝒜
⊢ f ∉ ↑I.asHomogeneousIdeal ↔ f ∉ I.asHomogeneousIdeal
tactic: rw [Set.mem_compl_iff, mem_zeroLocus, Set.singleton_subset_iff]
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommSemiring R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
I : ProjectiveSpectrum 𝒜
⊢ f ∉ ↑I.asHomogeneousIdeal ↔ f ∉ I.asHomogeneousIdeal
state_after: no goals
tactic: rfl
Theorem: Language.mem_kstar_iff_exists_nonempty
File: Mathlib/Computability/Language.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
l m : Language α
a b x✝ x : List α
⊢ x ∈ l∗ ↔ ∃ S, x = S.join ∧ ∀ y ∈ S, y ∈ l ∧ y ≠ []
state_after: case mp
α : Type u_1
β : Type u_2
γ : Type u_3
l m : Language α
a b x✝ x : List α
⊢ x ∈ l∗ → ∃ S, x = S.join ∧ ∀ y ∈ S, y ∈ l ∧ y ≠ []

case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
l m : Language α
a b x✝ x : List α
⊢ (∃ S, x = S.join ∧ ∀ y ∈ S, y ∈ l ∧ y ≠ []) → x ∈ l∗
tactic: constructor