ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: ClosureOperator.IsClosed.closure_le_iff
File: Mathlib/Order/Closure.lean

Proof steps:
state_before: α : Type u_1
ι : Sort u_2
κ : ι → Sort u_3
inst✝ : PartialOrder α
c : ClosureOperator α
x y : α
hy : c.IsClosed y
⊢ c x ≤ y ↔ x ≤ y
state_after: no goals
tactic: rw [← hy.closure_eq, ← le_closure_iff]
Theorem: indicator_ae_eq_restrict
File: Mathlib/MeasureTheory/Measure/Restrict.lean

Proof steps:
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
inst✝¹ : MeasurableSpace α
μ : Measure α
s t : Set α
f : α → β
inst✝ : Zero β
hs : MeasurableSet s
⊢ s.indicator f =ᶠ[ae (μ.restrict s)] f
state_after: no goals
tactic: classical exact piecewise_ae_eq_restrict hs
Theorem: CochainComplex.HomComplex.Cochain.map_comp
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplex.lean

Proof steps:
state_before: C : Type u
inst✝⁷ : Category.{v, u} C
inst✝⁶ : Preadditive C
R : Type u_1
inst✝⁵ : Ring R
inst✝⁴ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
D : Type u_2
inst✝³ : Category.{u_3, u_2} D
inst✝² : Preadditive D
z z' : Cochain K L n
f : K ⟶ L
Φ✝ : C ⥤ D
inst✝¹ : Φ✝.Additive
n₁ n₂ n₁₂ : ℤ
z₁ : Cochain F G n₁
z₂ : Cochain G K n₂
h : n₁ + n₂ = n₁₂
Φ : C ⥤ D
inst✝ : Φ.Additive
⊢ (z₁.comp z₂ h).map Φ = (z₁.map Φ).comp (z₂.map Φ) h
state_after: case h
C : Type u
inst✝⁷ : Category.{v, u} C
inst✝⁶ : Preadditive C
R : Type u_1
inst✝⁵ : Ring R
inst✝⁴ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
D : Type u_2
inst✝³ : Category.{u_3, u_2} D
inst✝² : Preadditive D
z z' : Cochain K L n
f : K ⟶ L
Φ✝ : C ⥤ D
inst✝¹ : Φ✝.Additive
n₁ n₂ n₁₂ : ℤ
z₁ : Cochain F G n₁
z₂ : Cochain G K n₂
h : n₁ + n₂ = n₁₂
Φ : C ⥤ D
inst✝ : Φ.Additive
p q : ℤ
hpq : p + n₁₂ = q
⊢ ((z₁.comp z₂ h).map Φ).v p q hpq = ((z₁.map Φ).comp (z₂.map Φ) h).v p q hpq
tactic: ext p q hpq
state_before: case h
C : Type u
inst✝⁷ : Category.{v, u} C
inst✝⁶ : Preadditive C
R : Type u_1
inst✝⁵ : Ring R
inst✝⁴ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
D : Type u_2
inst✝³ : Category.{u_3, u_2} D
inst✝² : Preadditive D
z z' : Cochain K L n
f : K ⟶ L
Φ✝ : C ⥤ D
inst✝¹ : Φ✝.Additive
n₁ n₂ n₁₂ : ℤ
z₁ : Cochain F G n₁
z₂ : Cochain G K n₂
h : n₁ + n₂ = n₁₂
Φ : C ⥤ D
inst✝ : Φ.Additive
p q : ℤ
hpq : p + n₁₂ = q
⊢ ((z₁.comp z₂ h).map Φ).v p q hpq = ((z₁.map Φ).comp (z₂.map Φ) h).v p q hpq
state_after: case h
C : Type u
inst✝⁷ : Category.{v, u} C
inst✝⁶ : Preadditive C
R : Type u_1
inst✝⁵ : Ring R
inst✝⁴ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
D : Type u_2
inst✝³ : Category.{u_3, u_2} D
inst✝² : Preadditive D
z z' : Cochain K L n
f : K ⟶ L
Φ✝ : C ⥤ D
inst✝¹ : Φ✝.Additive
n₁ n₂ n₁₂ : ℤ
z₁ : Cochain F G n₁
z₂ : Cochain G K n₂
h : n₁ + n₂ = n₁₂
Φ : C ⥤ D
inst✝ : Φ.Additive
p q : ℤ
hpq : p + n₁₂ = q
⊢ Φ.map ((z₁.comp z₂ h).v p q hpq) = ((z₁.map Φ).comp (z₂.map Φ) h).v p q hpq
tactic: dsimp
state_before: case h
C : Type u
inst✝⁷ : Category.{v, u} C
inst✝⁶ : Preadditive C
R : Type u_1
inst✝⁵ : Ring R
inst✝⁴ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
D : Type u_2
inst✝³ : Category.{u_3, u_2} D
inst✝² : Preadditive D
z z' : Cochain K L n
f : K ⟶ L
Φ✝ : C ⥤ D
inst✝¹ : Φ✝.Additive
n₁ n₂ n₁₂ : ℤ
z₁ : Cochain F G n₁
z₂ : Cochain G K n₂
h : n₁ + n₂ = n₁₂
Φ : C ⥤ D
inst✝ : Φ.Additive
p q : ℤ
hpq : p + n₁₂ = q
⊢ Φ.map ((z₁.comp z₂ h).v p q hpq) = ((z₁.map Φ).comp (z₂.map Φ) h).v p q hpq
state_after: no goals
tactic: simp only [map_v, comp_v _ _ h p _ q rfl (by omega), Φ.map_comp]
Theorem: Set.pairwise_disjoint_Ioo_intCast
File: Mathlib/Algebra/Order/Interval/Set/Group.lean

Proof steps:
state_before: α : Type u_1
inst✝ : OrderedRing α
a : α
⊢ Pairwise (Disjoint on fun n => Ioo (↑n) (↑n + 1))
state_after: no goals
tactic: simpa only [zero_add] using pairwise_disjoint_Ioo_add_intCast (0 : α)
Theorem: Finset.prod_const_one
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 β
⊢ ∏ _x ∈ s, 1 = 1
state_after: no goals
tactic: simp only [Finset.prod, Multiset.map_const', Multiset.prod_replicate, one_pow]
Theorem: CategoryTheory.ShortComplex.LeftHomologyMapData.leftHomologyMap_comm
File: Mathlib/Algebra/Homology/ShortComplex/LeftHomology.lean

Proof steps:
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.LeftHomologyData
h₂ : S₂.LeftHomologyData
γ : LeftHomologyMapData φ h₁ h₂
inst✝¹ : S₁.HasLeftHomology
inst✝ : S₂.HasLeftHomology
⊢ leftHomologyMap φ ≫ h₂.leftHomologyIso.hom = h₁.leftHomologyIso.hom ≫ γ.φH
state_after: no goals
tactic: simp only [γ.leftHomologyMap_eq, assoc, Iso.inv_hom_id, comp_id]
Theorem: AlgebraicGeometry.IsPreimmersion.of_comp
File: Mathlib/AlgebraicGeometry/Morphisms/Preimmersion.lean

Proof steps:
state_before: X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
inst✝¹ : IsPreimmersion g
inst✝ : IsPreimmersion (f ≫ g)
⊢ Embedding ⇑f.val.base
state_after: X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
inst✝¹ : IsPreimmersion g
inst✝ : IsPreimmersion (f ≫ g)
h : Embedding ⇑(f ≫ g).val.base
⊢ Embedding ⇑f.val.base
tactic: have h := (f ≫ g).embedding
state_before: X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
inst✝¹ : IsPreimmersion g
inst✝ : IsPreimmersion (f ≫ g)
h : Embedding ⇑(f ≫ g).val.base
⊢ Embedding ⇑f.val.base
state_after: no goals
tactic: rwa [← g.embedding.of_comp_iff]
state_before: X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
inst✝¹ : IsPreimmersion g
inst✝ : IsPreimmersion (f ≫ g)
x : ↑↑X.toPresheafedSpace
⊢ Function.Surjective ⇑(Scheme.Hom.stalkMap f x)
state_after: X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
inst✝¹ : IsPreimmersion g
inst✝ : IsPreimmersion (f ≫ g)
x : ↑↑X.toPresheafedSpace
h : Function.Surjective ⇑(Scheme.Hom.stalkMap (f ≫ g) x)
⊢ Function.Surjective ⇑(Scheme.Hom.stalkMap f x)
tactic: have h := (f ≫ g).stalkMap_surjective x
state_before: X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
inst✝¹ : IsPreimmersion g
inst✝ : IsPreimmersion (f ≫ g)
x : ↑↑X.toPresheafedSpace
h : Function.Surjective ⇑(Scheme.Hom.stalkMap (f ≫ g) x)
⊢ Function.Surjective ⇑(Scheme.Hom.stalkMap f x)
state_after: X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
inst✝¹ : IsPreimmersion g
inst✝ : IsPreimmersion (f ≫ g)
x : ↑↑X.toPresheafedSpace
h : Function.Surjective ⇑(Scheme.Hom.stalkMap g (f.val.base x) ≫ Scheme.Hom.stalkMap f x)
⊢ Function.Surjective ⇑(Scheme.Hom.stalkMap f x)
tactic: rw [Scheme.stalkMap_comp] at h
state_before: X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
inst✝¹ : IsPreimmersion g
inst✝ : IsPreimmersion (f ≫ g)
x : ↑↑X.toPresheafedSpace
h : Function.Surjective ⇑(Scheme.Hom.stalkMap g (f.val.base x) ≫ Scheme.Hom.stalkMap f x)
⊢ Function.Surjective ⇑(Scheme.Hom.stalkMap f x)
state_after: no goals
tactic: exact Function.Surjective.of_comp h
Theorem: Vector3.append_left
File: Mathlib/Data/Vector3.lean

Proof steps:
state_before: α : Type u_1
m✝ n✝ m : ℕ
v : Vector3 α (m + 1)
n : ℕ
w : Vector3 α n
a : α
_t : Vector3 α m
⊢ ((a :: _t) +-+ w) (left n fz) = (a :: _t) fz
state_after: no goals
tactic: simp [*, left]
state_before: α : Type u_1
m✝ n✝ m : ℕ
i : Fin2 m
v : Vector3 α (m + 1)
n : ℕ
w : Vector3 α n
_a : α
t : Vector3 α m
⊢ ((_a :: t) +-+ w) (left n i.fs) = (_a :: t) i.fs
state_after: no goals
tactic: simp [append_left, left]
Theorem: exists_finset_linearIndependent_of_le_rank
File: Mathlib/LinearAlgebra/Dimension/Finite.lean

Proof steps:
state_before: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
inst✝ : StrongRankCondition R
n : ℕ
hn : ↑n ≤ Module.rank R M
⊢ ∃ s, s.card = n ∧ LinearIndependent R Subtype.val
state_after: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
inst✝ : StrongRankCondition R
n : ℕ
hn : ↑n ≤ Module.rank R M
this :
  ∀ (R : Type ?u.181016) (M : Type ?u.181015) [inst : Semiring R] [inst_1 : AddCommMonoid M] [inst_2 : Module R M],
    Nonempty { s // LinearIndependent (ι := { x // x ∈ s }) R Subtype.val }
⊢ ∃ s, s.card = n ∧ LinearIndependent R Subtype.val
tactic: have := nonempty_linearIndependent_set
state_before: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
inst✝ : StrongRankCondition R
n : ℕ
hn : ↑n ≤ Module.rank R M
this :
  ∀ (R : Type ?u.181016) (M : Type ?u.181015) [inst : Semiring R] [inst_1 : AddCommMonoid M] [inst_2 : Module R M],
    Nonempty { s // LinearIndependent (ι := { x // x ∈ s }) R Subtype.val }
⊢ ∃ s, s.card = n ∧ LinearIndependent R Subtype.val
state_after: case inl
R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
inst✝ : StrongRankCondition R
n : ℕ
hn : ↑n ≤ Module.rank R M
this :
  ∀ (R : Type ?u.181016) (M : Type ?u.181015) [inst : Semiring R] [inst_1 : AddCommMonoid M] [inst_2 : Module R M],
    Nonempty { s // LinearIndependent (ι := { x // x ∈ s }) R Subtype.val }
h : ↑n = Module.rank R M
⊢ ∃ s, s.card = n ∧ LinearIndependent R Subtype.val

case inr
R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M₁
inst✝ : StrongRankCondition R
n : ℕ
hn : ↑n ≤ Module.rank R M
this :
  ∀ (R : Type ?u.181016) (M : Type ?u.181015) [inst : Semiring R] [inst_1 : AddCommMonoid M] [inst_2 : Module R M],
    Nonempty { s // LinearIndependent (ι := { x // x ∈ s }) R Subtype.val }
h : ↑n < Module.rank R M
⊢ ∃ s, s.card = n ∧ LinearIndependent R Subtype.val
tactic: cases' hn.eq_or_lt with h h
Theorem: eventually_nhdsWithin_pos_mul_left
File: Mathlib/Topology/Algebra/Order/Field.lean

Proof steps:
state_before: 𝕜 : Type u_1
α : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
l : Filter α
f g : α → 𝕜
x : 𝕜
hx : 0 < x
p : 𝕜 → Prop
h : ∀ᶠ (ε : 𝕜) in 𝓝[>] 0, p ε
⊢ ∀ᶠ (ε : 𝕜) in 𝓝[>] 0, p (x * ε)
state_after: 𝕜 : Type u_1
α : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
l : Filter α
f g : α → 𝕜
x : 𝕜
hx : 0 < x
p : 𝕜 → Prop
h : ∀ᶠ (ε : 𝕜) in 𝓝[>] 0, p ε
⊢ ∀ᶠ (ε : 𝕜) in comap (fun x_1 => x * x_1) (𝓝[>] 0), p (x * ε)
tactic: rw [← nhdsWithin_pos_comap_mul_left hx]
state_before: 𝕜 : Type u_1
α : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
l : Filter α
f g : α → 𝕜
x : 𝕜
hx : 0 < x
p : 𝕜 → Prop
h : ∀ᶠ (ε : 𝕜) in 𝓝[>] 0, p ε
⊢ ∀ᶠ (ε : 𝕜) in comap (fun x_1 => x * x_1) (𝓝[>] 0), p (x * ε)
state_after: no goals
tactic: exact h.comap fun ε => x * ε
Theorem: Finsupp.sumFinsuppLEquivProdFinsupp_symm_apply
File: Mathlib/LinearAlgebra/Finsupp.lean

Proof steps:
state_before: α✝ : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α : Type u_7
β : Type u_8
⊢ ∀ (m : R) (x : α ⊕ β →₀ M),
    { toFun := __src✝.toFun, map_add' := ⋯ }.toFun (m • x) =
      (RingHom.id R) m • { toFun := __src✝.toFun, map_add' := ⋯ }.toFun x
state_after: α✝ : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α : Type u_7
β : Type u_8
m✝ : R
x✝ : α ⊕ β →₀ M
⊢ { toFun := __src✝.toFun, map_add' := ⋯ }.toFun (m✝ • x✝) =
    (RingHom.id R) m✝ • { toFun := __src✝.toFun, map_add' := ⋯ }.toFun x✝
tactic: intros
state_before: α✝ : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
α : Type u_7
β : Type u_8
m✝ : R
x✝ : α ⊕ β →₀ M
⊢ { toFun := __src✝.toFun, map_add' := ⋯ }.toFun (m✝ • x✝) =
    (RingHom.id R) m✝ • { toFun := __src✝.toFun, map_add' := ⋯ }.toFun x✝
state_after: no goals
tactic: ext <;>
        -- Porting note: `add_equiv.to_fun_eq_coe` →
        --               `Equiv.toFun_as_coe` & `AddEquiv.toEquiv_eq_coe` & `AddEquiv.coe_toEquiv`
        simp only [Equiv.toFun_as_coe, AddEquiv.toEquiv_eq_coe, AddEquiv.coe_toEquiv, Prod.smul_fst,
          Prod.smul_snd, smul_apply,
          snd_sumFinsuppAddEquivProdFinsupp, fst_sumFinsuppAddEquivProdFinsupp,
          RingHom.id_apply]
Theorem: Matroid.Base.eq_of_subset_indep
File: Mathlib/Data/Matroid/Basic.lean

Proof steps:
state_before: α : Type u_1
M : Matroid α
B B'✝ I J D X : Set α
e f : α
hB : M.Base B
hI : M.Indep I
hBI : B ⊆ I
B' : Set α
hB' : M.Base B'
hB'I : I ⊆ B'
⊢ I ⊆ B
state_after: no goals
tactic: rwa [hB.eq_of_subset_base hB' (hBI.trans hB'I)]
Theorem: UniformSpace.Completion.mem_uniformity_dist
File: Mathlib/Topology/MetricSpace/Completion.lean

Proof steps:
state_before: α : Type u
β : Type v
inst✝ : PseudoMetricSpace α
s : Set (Completion α × Completion α)
⊢ s ∈ 𝓤 (Completion α) ↔ ∃ ε > 0, ∀ {a b : Completion α}, dist a b < ε → (a, b) ∈ s
state_after: case mp
α : Type u
β : Type v
inst✝ : PseudoMetricSpace α
s : Set (Completion α × Completion α)
⊢ s ∈ 𝓤 (Completion α) → ∃ ε > 0, ∀ {a b : Completion α}, dist a b < ε → (a, b) ∈ s

case mpr
α : Type u
β : Type v
inst✝ : PseudoMetricSpace α
s : Set (Completion α × Completion α)
⊢ (∃ ε > 0, ∀ {a b : Completion α}, dist a b < ε → (a, b) ∈ s) → s ∈ 𝓤 (Completion α)
tactic: constructor
Theorem: gold_irrational
File: Mathlib/Data/Real/GoldenRatio.lean

Proof steps:
state_before: ⊢ Irrational φ
state_after: this : Irrational √↑5
⊢ Irrational φ
tactic: have := Nat.Prime.irrational_sqrt (show Nat.Prime 5 by norm_num)
state_before: this : Irrational √↑5
⊢ Irrational φ
state_after: this✝ : Irrational √↑5
this : Irrational (↑1 + √↑5)
⊢ Irrational φ
tactic: have := this.rat_add 1
state_before: this✝ : Irrational √↑5
this : Irrational (↑1 + √↑5)
⊢ Irrational φ
state_after: this✝¹ : Irrational √↑5
this✝ : Irrational (↑1 + √↑5)
this : Irrational (↑0.5 * (↑1 + √↑5))
⊢ Irrational φ
tactic: have := this.rat_mul (show (0.5 : ℚ) ≠ 0 by norm_num)
state_before: this✝¹ : Irrational √↑5
this✝ : Irrational (↑1 + √↑5)
this : Irrational (↑0.5 * (↑1 + √↑5))
⊢ Irrational φ
state_after: case h.e'_1
this✝¹ : Irrational √↑5
this✝ : Irrational (↑1 + √↑5)
this : Irrational (↑0.5 * (↑1 + √↑5))
⊢ φ = ↑0.5 * (↑1 + √↑5)
tactic: convert this
state_before: case h.e'_1
this✝¹ : Irrational √↑5
this✝ : Irrational (↑1 + √↑5)
this : Irrational (↑0.5 * (↑1 + √↑5))
⊢ φ = ↑0.5 * (↑1 + √↑5)
state_after: case h.e'_1
this✝¹ : Irrational √↑5
this✝ : Irrational (↑1 + √↑5)
this : Irrational (↑0.5 * (↑1 + √↑5))
⊢ φ = 1 / 2 * (1 + √5)
tactic: norm_num
state_before: case h.e'_1
this✝¹ : Irrational √↑5
this✝ : Irrational (↑1 + √↑5)
this : Irrational (↑0.5 * (↑1 + √↑5))
⊢ φ = 1 / 2 * (1 + √5)
state_after: no goals
tactic: field_simp
Theorem: Lagrange.nodal_ne_zero
File: Mathlib/LinearAlgebra/Lagrange.lean

Proof steps:
state_before: R : Type u_1
inst✝¹ : CommRing R
ι : Type u_2
s : Finset ι
v : ι → R
inst✝ : Nontrivial R
⊢ nodal s v ≠ 0
state_after: case inl
R : Type u_1
inst✝¹ : CommRing R
ι : Type u_2
v : ι → R
inst✝ : Nontrivial R
⊢ nodal ∅ v ≠ 0

case inr
R : Type u_1
inst✝¹ : CommRing R
ι : Type u_2
s : Finset ι
v : ι → R
inst✝ : Nontrivial R
h : s.Nonempty
⊢ nodal s v ≠ 0
tactic: rcases s.eq_empty_or_nonempty with (rfl | h)
Theorem: tendsto_iff_edist_tendsto_0
File: Mathlib/Topology/Instances/ENNReal.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : PseudoEMetricSpace α
l : Filter β
f : β → α
y : α
⊢ Tendsto f l (𝓝 y) ↔ Tendsto (fun x => edist (f x) y) l (𝓝 0)
state_after: no goals
tactic: simp only [EMetric.nhds_basis_eball.tendsto_right_iff, EMetric.mem_ball,
    @tendsto_order ℝ≥0∞ β _ _, forall_prop_of_false ENNReal.not_lt_zero, forall_const, true_and_iff]
Theorem: WeierstrassCurve.baseChange_Φ
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

Proof steps:
state_before: R : Type r
S : Type s
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
W : WeierstrassCurve R
inst✝⁸ : Algebra R S
A : Type u
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
inst✝⁵ : Algebra S A
inst✝⁴ : IsScalarTower R S A
B : Type v
inst✝³ : CommRing B
inst✝² : Algebra R B
inst✝¹ : Algebra S B
inst✝ : IsScalarTower R S B
f : A →ₐ[S] B
n : ℤ
⊢ (W.baseChange B).Φ n = Polynomial.map (↑f) ((W.baseChange A).Φ n)
state_after: no goals
tactic: rw [← map_Φ, map_baseChange]
Theorem: HasDerivWithinAt.clog
File: Mathlib/Analysis/SpecialFunctions/Complex/LogDeriv.lean

Proof steps:
state_before: α : Type u_1
inst✝² : TopologicalSpace α
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f : ℂ → ℂ
f' x : ℂ
s : Set ℂ
h₁ : HasDerivWithinAt f f' s x
h₂ : f x ∈ slitPlane
⊢ HasDerivWithinAt (fun t => log (f t)) (f' / f x) s x
state_after: α : Type u_1
inst✝² : TopologicalSpace α
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f : ℂ → ℂ
f' x : ℂ
s : Set ℂ
h₁ : HasDerivWithinAt f f' s x
h₂ : f x ∈ slitPlane
⊢ HasDerivWithinAt (fun t => log (f t)) ((f x)⁻¹ * f') s x
tactic: rw [div_eq_inv_mul]
state_before: α : Type u_1
inst✝² : TopologicalSpace α
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f : ℂ → ℂ
f' x : ℂ
s : Set ℂ
h₁ : HasDerivWithinAt f f' s x
h₂ : f x ∈ slitPlane
⊢ HasDerivWithinAt (fun t => log (f t)) ((f x)⁻¹ * f') s x
state_after: no goals
tactic: exact (hasStrictDerivAt_log h₂).hasDerivAt.comp_hasDerivWithinAt x h₁
Theorem: zpow_le_of_le
File: Mathlib/Algebra/Order/Field/Power.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 1 ≤ a
h : m ≤ n
⊢ a ^ m ≤ a ^ n
state_after: α : Type u_1
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 1 ≤ a
h : m ≤ n
ha₀ : 0 < a
⊢ a ^ m ≤ a ^ n
tactic: have ha₀ : 0 < a := one_pos.trans_le ha
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 1 ≤ a
h : m ≤ n
ha₀ : 0 < a
⊢ a ^ m ≤ a ^ n
state_after: case intro
α : Type u_1
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 1 ≤ a
h : m ≤ n
ha₀ : 0 < a
k : ℕ
hk : ↑k = n - m
⊢ a ^ m ≤ a ^ n
tactic: lift n - m to ℕ using sub_nonneg.2 h with k hk
state_before: case intro
α : Type u_1
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 1 ≤ a
h : m ≤ n
ha₀ : 0 < a
k : ℕ
hk : ↑k = n - m
⊢ a ^ m ≤ a ^ n
state_after: no goals
tactic: calc
    a ^ m = a ^ m * 1 := (mul_one _).symm
    _ ≤ a ^ m * a ^ k :=
      mul_le_mul_of_nonneg_left (one_le_pow_of_one_le ha _) (zpow_nonneg ha₀.le _)
    _ = a ^ n := by rw [← zpow_natCast, ← zpow_add₀ ha₀.ne', hk, add_sub_cancel]
Theorem: Real.sqrt_eq_cases
File: Mathlib/Data/Real/Sqrt.lean

Proof steps:
state_before: x y : ℝ
⊢ √x = y ↔ y * y = x ∧ 0 ≤ y ∨ x < 0 ∧ y = 0
state_after: case mp
x y : ℝ
⊢ √x = y → y * y = x ∧ 0 ≤ y ∨ x < 0 ∧ y = 0

case mpr
x y : ℝ
⊢ y * y = x ∧ 0 ≤ y ∨ x < 0 ∧ y = 0 → √x = y
tactic: constructor
Theorem: Ideal.prod_le_prime
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

Proof steps:
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K
inst✝ : IsDedekindDomain R
ι : Type u_4
s : Finset ι
f : ι → Ideal R
P : Ideal R
hP : P.IsPrime
⊢ ∏ i ∈ s, f i ≤ P ↔ ∃ i ∈ s, f i ≤ P
state_after: case pos
R : Type u_1
A : Type u_2
K : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K
inst✝ : IsDedekindDomain R
ι : Type u_4
s : Finset ι
f : ι → Ideal R
P : Ideal R
hP : P.IsPrime
hP0 : P = ⊥
⊢ ∏ i ∈ s, f i ≤ P ↔ ∃ i ∈ s, f i ≤ P

case neg
R : Type u_1
A : Type u_2
K : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K
inst✝ : IsDedekindDomain R
ι : Type u_4
s : Finset ι
f : ι → Ideal R
P : Ideal R
hP : P.IsPrime
hP0 : ¬P = ⊥
⊢ ∏ i ∈ s, f i ≤ P ↔ ∃ i ∈ s, f i ≤ P
tactic: by_cases hP0 : P = ⊥
state_before: case neg
R : Type u_1
A : Type u_2
K : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K
inst✝ : IsDedekindDomain R
ι : Type u_4
s : Finset ι
f : ι → Ideal R
P : Ideal R
hP : P.IsPrime
hP0 : ¬P = ⊥
⊢ ∏ i ∈ s, f i ≤ P ↔ ∃ i ∈ s, f i ≤ P
state_after: case neg
R : Type u_1
A : Type u_2
K : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K
inst✝ : IsDedekindDomain R
ι : Type u_4
s : Finset ι
f : ι → Ideal R
P : Ideal R
hP : P.IsPrime
hP0 : ¬P = ⊥
⊢ P ∣ ∏ i ∈ s, f i ↔ ∃ i ∈ s, P ∣ f i
tactic: simp only [← Ideal.dvd_iff_le]
state_before: case neg
R : Type u_1
A : Type u_2
K : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K
inst✝ : IsDedekindDomain R
ι : Type u_4
s : Finset ι
f : ι → Ideal R
P : Ideal R
hP : P.IsPrime
hP0 : ¬P = ⊥
⊢ P ∣ ∏ i ∈ s, f i ↔ ∃ i ∈ s, P ∣ f i
state_after: no goals
tactic: exact ((Ideal.prime_iff_isPrime hP0).mpr hP).dvd_finset_prod_iff _
Theorem: Polynomial.isNilpotent_iff
File: Mathlib/RingTheory/Polynomial/Nilpotent.lean

Proof steps:
state_before: R : Type u_1
r : R
inst✝ : CommRing R
P : R[X]
⊢ IsNilpotent P ↔ ∀ (i : ℕ), IsNilpotent (P.coeff i)
state_after: case refine_1
R : Type u_1
r : R
inst✝ : CommRing R
P : R[X]
h : ∀ (i : ℕ), IsNilpotent (P.coeff i)
⊢ IsNilpotent P

case refine_2
R : Type u_1
r✝ : R
inst✝ : CommRing R
P p : R[X]
r : R
hp₀ : p.coeff 0 = 0
x✝ : r ≠ 0
hp : IsNilpotent p → ∀ (i : ℕ), IsNilpotent (p.coeff i)
hpr : IsNilpotent (p + C r)
i : ℕ
⊢ IsNilpotent ((p + C r).coeff i)

case refine_3
R : Type u_1
r : R
inst✝ : CommRing R
P p : R[X]
x✝ : p ≠ 0
hnp : IsNilpotent p → ∀ (i : ℕ), IsNilpotent (p.coeff i)
hpX : IsNilpotent (p * X)
i : ℕ
⊢ IsNilpotent ((p * X).coeff i)
tactic: refine
    ⟨P.recOnHorner (by simp) (fun p r hp₀ _ hp hpr i ↦ ?_) (fun p _ hnp hpX i ↦ ?_), fun h ↦ ?_⟩
Theorem: UnitAddCircle.mem_approxAddOrderOf_iff
File: Mathlib/NumberTheory/WellApproximable.lean

Proof steps:
state_before: δ : ℝ
x : UnitAddCircle
n : ℕ
hn : 0 < n
⊢ x ∈ approxAddOrderOf UnitAddCircle n δ ↔ ∃ m < n, gcd m n = 1 ∧ ‖x - ↑(↑m / ↑n)‖ < δ
state_after: δ : ℝ
x : UnitAddCircle
n : ℕ
hn : 0 < n
⊢ (∃ b, (∃ m < n, m.gcd n = 1 ∧ ↑(↑m / ↑n) = b) ∧ ‖x - b‖ < δ) ↔ ∃ m < n, gcd m n = 1 ∧ ‖x - ↑(↑m / ↑n)‖ < δ
tactic: simp only [mem_approx_add_orderOf_iff, mem_setOf_eq, ball, exists_prop, dist_eq_norm,
    AddCircle.addOrderOf_eq_pos_iff hn, mul_one]
state_before: δ : ℝ
x : UnitAddCircle
n : ℕ
hn : 0 < n
⊢ (∃ b, (∃ m < n, m.gcd n = 1 ∧ ↑(↑m / ↑n) = b) ∧ ‖x - b‖ < δ) ↔ ∃ m < n, gcd m n = 1 ∧ ‖x - ↑(↑m / ↑n)‖ < δ
state_after: case mp
δ : ℝ
x : UnitAddCircle
n : ℕ
hn : 0 < n
⊢ (∃ b, (∃ m < n, m.gcd n = 1 ∧ ↑(↑m / ↑n) = b) ∧ ‖x - b‖ < δ) → ∃ m < n, gcd m n = 1 ∧ ‖x - ↑(↑m / ↑n)‖ < δ

case mpr
δ : ℝ
x : UnitAddCircle
n : ℕ
hn : 0 < n
⊢ (∃ m < n, gcd m n = 1 ∧ ‖x - ↑(↑m / ↑n)‖ < δ) → ∃ b, (∃ m < n, m.gcd n = 1 ∧ ↑(↑m / ↑n) = b) ∧ ‖x - b‖ < δ
tactic: constructor
Theorem: Ordnode.Bounded.to_sep
File: Mathlib/Data/Ordmap/Ordset.lean

Proof steps:
state_before: α : Type u_1
inst✝ : Preorder α
t₁ t₂ : Ordnode α
o₁ : WithBot α
o₂ : WithTop α
x : α
h₁ : t₁.Bounded o₁ ↑x
h₂ : t₂.Bounded (↑x) o₂
⊢ All (fun y => All (fun z => y < z) t₂) t₁
state_after: α : Type u_1
inst✝ : Preorder α
t₁ t₂ : Ordnode α
o₁ : WithBot α
o₂ : WithTop α
x : α
h₁ : t₁.Bounded o₁ ↑x
h₂ : t₂.Bounded (↑x) o₂
y : α
yx : y < x
⊢ All (fun z => y < z) t₂
tactic: refine h₁.mem_lt.imp fun y yx => ?_
state_before: α : Type u_1
inst✝ : Preorder α
t₁ t₂ : Ordnode α
o₁ : WithBot α
o₂ : WithTop α
x : α
h₁ : t₁.Bounded o₁ ↑x
h₂ : t₂.Bounded (↑x) o₂
y : α
yx : y < x
⊢ All (fun z => y < z) t₂
state_after: no goals
tactic: exact h₂.mem_gt.imp fun z xz => lt_trans yx xz
Theorem: CliffordAlgebra.evenOdd_map_involute
File: Mathlib/LinearAlgebra/CliffordAlgebra/Conjugation.lean

Proof steps:
state_before: R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
n : ZMod 2
⊢ Submodule.map involute.toLinearMap (evenOdd Q n) = evenOdd Q n
state_after: no goals
tactic: simp_rw [evenOdd, Submodule.map_iSup, Submodule.map_pow, ι_range_map_involute]