ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Polynomial.prod_multiset_root_eq_finset_root
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✝ : DecidableEq R
⊢ (Multiset.map (fun a => X - C a) p.roots).prod = ∏ a ∈ p.roots.toFinset, (X - C a) ^ rootMultiplicity a p
state_after: no goals
tactic: simp only [count_roots, Finset.prod_multiset_map_count]
Theorem: AlgebraicGeometry.IsAffineOpen.fromSpec_preimage_self
File: Mathlib/AlgebraicGeometry/AffineScheme.lean

Proof steps:
state_before: X Y : Scheme
U : X.Opens
hU : IsAffineOpen U
f : ↑Γ(X, U)
⊢ hU.fromSpec ⁻¹ᵁ U = ⊤
state_after: case h
X Y : Scheme
U : X.Opens
hU : IsAffineOpen U
f : ↑Γ(X, U)
⊢ ↑(hU.fromSpec ⁻¹ᵁ U) = ↑⊤
tactic: ext1
state_before: case h
X Y : Scheme
U : X.Opens
hU : IsAffineOpen U
f : ↑Γ(X, U)
⊢ ↑(hU.fromSpec ⁻¹ᵁ U) = ↑⊤
state_after: case h
X Y : Scheme
U : X.Opens
hU : IsAffineOpen U
f : ↑Γ(X, U)
⊢ ⇑hU.fromSpec.val.base ⁻¹' (⇑hU.fromSpec.val.base '' Set.univ) = Set.univ
tactic: rw [Opens.map_coe, Opens.coe_top, ← hU.range_fromSpec, ← Set.image_univ]
state_before: case h
X Y : Scheme
U : X.Opens
hU : IsAffineOpen U
f : ↑Γ(X, U)
⊢ ⇑hU.fromSpec.val.base ⁻¹' (⇑hU.fromSpec.val.base '' Set.univ) = Set.univ
state_after: no goals
tactic: exact Set.preimage_image_eq _ PresheafedSpace.IsOpenImmersion.base_open.inj
Theorem: Nat.coprime_sub_self_left
File: Mathlib/Data/Nat/GCD/Basic.lean

Proof steps:
state_before: m n : ℕ
h : m ≤ n
⊢ (n - m).Coprime m ↔ n.Coprime m
state_after: no goals
tactic: rw [Coprime, Coprime, gcd_sub_self_left h]
Theorem: Equiv.Perm.IsCycleOn.conj
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s t : Set α
a b x✝ y✝ : α
h : f.IsCycleOn s
x : α
hx : x ∈ ⇑g '' s
y : α
hy : y ∈ ⇑g '' s
⊢ (g * f * g⁻¹).SameCycle x y
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s t : Set α
a b x✝ y✝ : α
h : f.IsCycleOn s
x : α
hx : x ∈ ⇑g⁻¹ ⁻¹' s
y : α
hy : y ∈ ⇑g⁻¹ ⁻¹' s
⊢ (g * f * g⁻¹).SameCycle x y
tactic: rw [← preimage_inv] at hx hy
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s t : Set α
a b x✝ y✝ : α
h : f.IsCycleOn s
x : α
hx : x ∈ ⇑g⁻¹ ⁻¹' s
y : α
hy : y ∈ ⇑g⁻¹ ⁻¹' s
⊢ (g * f * g⁻¹).SameCycle x y
state_after: no goals
tactic: convert Equiv.Perm.SameCycle.conj (h.2 hx hy) (g := g) <;> rw [apply_inv_self]
Theorem: CategoryTheory.MonoOver.isoMk_hom
File: Mathlib/CategoryTheory/Subobject/MonoOver.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
f g : MonoOver X
h : f.obj.left ≅ g.obj.left
w : autoParam (h.hom ≫ g.arrow = f.arrow) _auto✝
⊢ h.inv ≫ f.arrow = g.arrow
state_after: no goals
tactic: rw [h.inv_comp_eq, w]
Theorem: Nat.two_le_iff
File: Mathlib/Data/Nat/Defs.lean

Proof steps:
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ 2 ≤ 0 ↔ 0 ≠ 0 ∧ 0 ≠ 1
state_after: no goals
tactic: simp
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ 2 ≤ 1 ↔ 1 ≠ 0 ∧ 1 ≠ 1
state_after: no goals
tactic: simp
state_before: a b c d m n✝ k : ℕ
p q : ℕ → Prop
n : ℕ
⊢ 2 ≤ n + 2 ↔ n + 2 ≠ 0 ∧ n + 2 ≠ 1
state_after: no goals
tactic: simp
Theorem: CategoryTheory.ShortComplex.opcyclesMap'_sub
File: Mathlib/Algebra/Homology/ShortComplex/Preadditive.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ φ' : S₁ ⟶ S₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
⊢ opcyclesMap' (φ - φ') h₁ h₂ = opcyclesMap' φ h₁ h₂ - opcyclesMap' φ' h₁ h₂
state_after: no goals
tactic: simp only [sub_eq_add_neg, opcyclesMap'_add, opcyclesMap'_neg]
Theorem: ContinuousMap.ker_evalStarAlgHom_inter_adjoin_id
File: Mathlib/Topology/ContinuousFunction/StoneWeierstrass.lean

Proof steps:
state_before: X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
⊢ ↑(StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}) ∩ ↑(RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)) =
    ↑(adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)})
state_after: case h
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
⊢ f ∈ ↑(StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}) ∩ ↑(RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)) ↔
    f ∈ ↑(adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)})
tactic: ext f
state_before: case h
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
⊢ f ∈ ↑(StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}) ∩ ↑(RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)) ↔
    f ∈ ↑(adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)})
state_after: case h.mp
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
⊢ f ∈ ↑(StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}) ∩ ↑(RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩)) →
    f ∈ ↑(adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)})

case h.mpr
X : Type u_1
inst✝¹ : TopologicalSpace X
𝕜 : Type u_2
inst✝ : RCLike 𝕜
s : Set 𝕜
h0 : 0 ∈ s
f : C(↑s, 𝕜)
⊢ f ∈ ↑(adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}) →
    f ∈ ↑(StarAlgebra.adjoin 𝕜 {restrict s (ContinuousMap.id 𝕜)}) ∩ ↑(RingHom.ker (evalStarAlgHom 𝕜 𝕜 ⟨0, h0⟩))
tactic: constructor
Theorem: Con.lift_comp_mk'
File: Mathlib/GroupTheory/Congruence/Basic.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x y : M
f : M →* P
H : c ≤ ker f
⊢ (c.lift f H).comp c.mk' = f
state_after: case h
M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x y : M
f : M →* P
H : c ≤ ker f
x✝ : M
⊢ ((c.lift f H).comp c.mk') x✝ = f x✝
tactic: ext
state_before: case h
M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
c : Con M
x y : M
f : M →* P
H : c ≤ ker f
x✝ : M
⊢ ((c.lift f H).comp c.mk') x✝ = f x✝
state_after: no goals
tactic: rfl
Theorem: Set.PairwiseDisjoint.subset_of_biUnion_subset_biUnion
File: Mathlib/Data/Set/Pairwise/Lattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
κ : Sort u_6
r p q : α → α → Prop
f : ι → Set α
s t : Set ι
h₀ : (s ∪ t).PairwiseDisjoint f
h₁ : ∀ i ∈ s, (f i).Nonempty
h : ⋃ i ∈ s, f i ⊆ ⋃ i ∈ t, f i
⊢ s ⊆ t
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
κ : Sort u_6
r p q : α → α → Prop
f : ι → Set α
s t : Set ι
h₀ : (s ∪ t).PairwiseDisjoint f
h₁ : ∀ i ∈ s, (f i).Nonempty
h : ⋃ i ∈ s, f i ⊆ ⋃ i ∈ t, f i
i : ι
hi : i ∈ s
⊢ i ∈ t
tactic: rintro i hi
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
κ : Sort u_6
r p q : α → α → Prop
f : ι → Set α
s t : Set ι
h₀ : (s ∪ t).PairwiseDisjoint f
h₁ : ∀ i ∈ s, (f i).Nonempty
h : ⋃ i ∈ s, f i ⊆ ⋃ i ∈ t, f i
i : ι
hi : i ∈ s
⊢ i ∈ t
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
κ : Sort u_6
r p q : α → α → Prop
f : ι → Set α
s t : Set ι
h₀ : (s ∪ t).PairwiseDisjoint f
h₁ : ∀ i ∈ s, (f i).Nonempty
h : ⋃ i ∈ s, f i ⊆ ⋃ i ∈ t, f i
i : ι
hi : i ∈ s
a : α
hai : a ∈ f i
⊢ i ∈ t
tactic: obtain ⟨a, hai⟩ := h₁ i hi
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
κ : Sort u_6
r p q : α → α → Prop
f : ι → Set α
s t : Set ι
h₀ : (s ∪ t).PairwiseDisjoint f
h₁ : ∀ i ∈ s, (f i).Nonempty
h : ⋃ i ∈ s, f i ⊆ ⋃ i ∈ t, f i
i : ι
hi : i ∈ s
a : α
hai : a ∈ f i
⊢ i ∈ t
state_after: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
κ : Sort u_6
r p q : α → α → Prop
f : ι → Set α
s t : Set ι
h₀ : (s ∪ t).PairwiseDisjoint f
h₁ : ∀ i ∈ s, (f i).Nonempty
h : ⋃ i ∈ s, f i ⊆ ⋃ i ∈ t, f i
i : ι
hi : i ∈ s
a : α
hai : a ∈ f i
j : ι
hj : j ∈ t
haj : a ∈ f j
⊢ i ∈ t
tactic: obtain ⟨j, hj, haj⟩ := mem_iUnion₂.1 (h <| mem_iUnion₂_of_mem hi hai)
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
κ : Sort u_6
r p q : α → α → Prop
f : ι → Set α
s t : Set ι
h₀ : (s ∪ t).PairwiseDisjoint f
h₁ : ∀ i ∈ s, (f i).Nonempty
h : ⋃ i ∈ s, f i ⊆ ⋃ i ∈ t, f i
i : ι
hi : i ∈ s
a : α
hai : a ∈ f i
j : ι
hj : j ∈ t
haj : a ∈ f j
⊢ i ∈ t
state_after: no goals
tactic: rwa [h₀.eq (subset_union_left hi) (subset_union_right hj)
      (not_disjoint_iff.2 ⟨a, hai, haj⟩)]
Theorem: Coheyting.hnot_boundary
File: Mathlib/Order/Heyting/Boundary.lean

Proof steps:
state_before: α : Type u_1
inst✝ : CoheytingAlgebra α
a✝ b a : α
⊢ ￢∂ a = ⊤
state_after: no goals
tactic: rw [boundary, hnot_inf_distrib, sup_hnot_self]
Theorem: GaloisConnection.l_sup
File: Mathlib/Order/GaloisConnection.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
κ : ι → Sort u_1
a a₁ a₂ : α
b b₁ b₂ : β
inst✝¹ : SemilatticeSup α
inst✝ : SemilatticeSup β
l : α → β
u : β → α
gc : GaloisConnection l u
⊢ IsLUB (l '' {a₁, a₂}) (l a₁ ⊔ l a₂)
state_after: no goals
tactic: simp only [image_pair, isLUB_pair]
Theorem: SimpleGraph.Coloring.odd_length_iff_not_congr
File: Mathlib/Combinatorics/SimpleGraph/ConcreteColorings.lean

Proof steps:
state_before: α : Type u_1
G : SimpleGraph α
c : G.Coloring Bool
u v : α
p : G.Walk u v
⊢ Odd p.length ↔ (¬c u = true ↔ c v = true)
state_after: α : Type u_1
G : SimpleGraph α
c : G.Coloring Bool
u v : α
p : G.Walk u v
⊢ ¬(c u = true ↔ c v = true) ↔ (¬c u = true ↔ c v = true)
tactic: rw [Nat.odd_iff_not_even, c.even_length_iff_congr p]
state_before: α : Type u_1
G : SimpleGraph α
c : G.Coloring Bool
u v : α
p : G.Walk u v
⊢ ¬(c u = true ↔ c v = true) ↔ (¬c u = true ↔ c v = true)
state_after: no goals
tactic: tauto
Theorem: CauSeq.lt_irrefl
File: Mathlib/Algebra/Order/CauSeq/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrderedField α
f : CauSeq α abs
x✝ : f < f
h : f < f := x✝
⊢ (f - f).LimZero
state_after: no goals
tactic: simp [zero_limZero]
Theorem: CochainComplex.HomComplex.Cochain.rightUnshift_zero
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplexShift.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
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a n' : ℤ
hn' : n' + a = n
⊢ rightUnshift 0 n hn' = 0
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a n' : ℤ
hn' : n' + a = n
⊢ (rightShiftAddEquiv K L n a n' hn').symm 0 = 0
tactic: change (rightShiftAddEquiv K L n a n' hn').symm 0 = 0
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a n' : ℤ
hn' : n' + a = n
⊢ (rightShiftAddEquiv K L n a n' hn').symm 0 = 0
state_after: no goals
tactic: apply _root_.map_zero
Theorem: Cardinal.card_ord
File: Mathlib/SetTheory/Ordinal/Basic.lean

Proof steps:
state_before: α✝ : Type u
β : Type u_1
γ : Type u_2
r : α✝ → α✝ → Prop
s : β → β → Prop
t : γ → γ → Prop
c : Cardinal.{u_3}
α : Type u_3
⊢ (ord ⟦α⟧).card = ⟦α⟧
state_after: α✝ : Type u
β : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s : β → β → Prop
t : γ → γ → Prop
c : Cardinal.{u_3}
α : Type u_3
r : α → α → Prop
w✝ : IsWellOrder α r
e : (#α).ord = type r
⊢ (ord ⟦α⟧).card = ⟦α⟧
tactic: let ⟨r, _, e⟩ := ord_eq α
state_before: α✝ : Type u
β : Type u_1
γ : Type u_2
r✝ : α✝ → α✝ → Prop
s : β → β → Prop
t : γ → γ → Prop
c : Cardinal.{u_3}
α : Type u_3
r : α → α → Prop
w✝ : IsWellOrder α r
e : (#α).ord = type r
⊢ (ord ⟦α⟧).card = ⟦α⟧
state_after: no goals
tactic: simp only [mk'_def, e, card_type]
Theorem: Associated.neg_left
File: Mathlib/Algebra/Associated/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : Monoid α
inst✝ : HasDistribNeg α
a b : α
h : a ~ᵤ b
u : αˣ
hu : a * ↑u = b
⊢ -a * ↑(-u) = b
state_after: no goals
tactic: simp [hu]
Theorem: Real.inv_sign
File: Mathlib/Data/Real/Sign.lean

Proof steps:
state_before: r : ℝ
⊢ r.sign⁻¹ = r.sign
state_after: case inl
r : ℝ
hn : r.sign = -1
⊢ r.sign⁻¹ = r.sign

case inr.inl
r : ℝ
hz : r.sign = 0
⊢ r.sign⁻¹ = r.sign

case inr.inr
r : ℝ
hp : r.sign = 1
⊢ r.sign⁻¹ = r.sign
tactic: obtain hn | hz | hp := sign_apply_eq r
Theorem: WithLp.prod_dist_eq_card
File: Mathlib/Analysis/Normed/Lp/ProdLp.lean

Proof steps:
state_before: p : ℝ≥0∞
𝕜 : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Dist α
inst✝ : Dist β
f g : WithLp 0 (α × β)
⊢ dist f g = (if dist f.1 g.1 = 0 then 0 else 1) + if dist f.2 g.2 = 0 then 0 else 1
state_after: no goals
tactic: convert if_pos rfl
Theorem: mem_segment_sub_add
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✝ : Invertible 2
x y : E
⊢ x ∈ [x - y-[𝕜]x + y]
state_after: case h.e'_4
𝕜 : 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✝ : Invertible 2
x y : E
⊢ x = midpoint 𝕜 (x - y) (x + y)
tactic: convert @midpoint_mem_segment 𝕜 _ _ _ _ _ (x - y) (x + y)
state_before: case h.e'_4
𝕜 : 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✝ : Invertible 2
x y : E
⊢ x = midpoint 𝕜 (x - y) (x + y)
state_after: no goals
tactic: rw [midpoint_sub_add]
Theorem: Orthonormal.linearIndependent
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
ι : Type u_4
v : ι → E
hv : Orthonormal 𝕜 v
⊢ LinearIndependent 𝕜 v
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
ι : Type u_4
v : ι → E
hv : Orthonormal 𝕜 v
⊢ ∀ (l : ι →₀ 𝕜), (Finsupp.total ι E 𝕜 v) l = 0 → l = 0
tactic: rw [linearIndependent_iff]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
ι : Type u_4
v : ι → E
hv : Orthonormal 𝕜 v
⊢ ∀ (l : ι →₀ 𝕜), (Finsupp.total ι E 𝕜 v) l = 0 → l = 0
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
ι : Type u_4
v : ι → E
hv : Orthonormal 𝕜 v
l : ι →₀ 𝕜
hl : (Finsupp.total ι E 𝕜 v) l = 0
⊢ l = 0
tactic: intro l hl
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
ι : Type u_4
v : ι → E
hv : Orthonormal 𝕜 v
l : ι →₀ 𝕜
hl : (Finsupp.total ι E 𝕜 v) l = 0
⊢ l = 0
state_after: case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
ι : Type u_4
v : ι → E
hv : Orthonormal 𝕜 v
l : ι →₀ 𝕜
hl : (Finsupp.total ι E 𝕜 v) l = 0
i : ι
⊢ l i = 0 i
tactic: ext i
state_before: case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
ι : Type u_4
v : ι → E
hv : Orthonormal 𝕜 v
l : ι →₀ 𝕜
hl : (Finsupp.total ι E 𝕜 v) l = 0
i : ι
⊢ l i = 0 i
state_after: case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
ι : Type u_4
v : ι → E
hv : Orthonormal 𝕜 v
l : ι →₀ 𝕜
hl : (Finsupp.total ι E 𝕜 v) l = 0
i : ι
key : ⟪v i, (Finsupp.total ι E 𝕜 v) l⟫_𝕜 = ⟪v i, 0⟫_𝕜
⊢ l i = 0 i
tactic: have key : ⟪v i, Finsupp.total ι E 𝕜 v l⟫ = ⟪v i, 0⟫ := by rw [hl]
state_before: case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
ι : Type u_4
v : ι → E
hv : Orthonormal 𝕜 v
l : ι →₀ 𝕜
hl : (Finsupp.total ι E 𝕜 v) l = 0
i : ι
key : ⟪v i, (Finsupp.total ι E 𝕜 v) l⟫_𝕜 = ⟪v i, 0⟫_𝕜
⊢ l i = 0 i
state_after: no goals
tactic: simpa only [hv.inner_right_finsupp, inner_zero_right] using key
Theorem: reflection_singleton_apply
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : HasOrthogonalProjection K
u v : E
⊢ (reflection (Submodule.span 𝕜 {u})) v = 2 • (⟪u, v⟫_𝕜 / ↑‖u‖ ^ 2) • u - v
state_after: no goals
tactic: rw [reflection_apply, orthogonalProjection_singleton, ofReal_pow]
Theorem: MeasurableSet.exists_isOpen_diff_lt
File: Mathlib/MeasureTheory/Measure/Regular.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace α
μ : Measure α
inst✝ : μ.OuterRegular
A : Set α
hA : MeasurableSet A
hA' : μ A ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
⊢ ∃ U ⊇ A, IsOpen U ∧ μ U < ⊤ ∧ μ (U \ A) < ε
state_after: case intro.intro.intro
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace α
μ : Measure α
inst✝ : μ.OuterRegular
A : Set α
hA : MeasurableSet A
hA' : μ A ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
U : Set α
hAU : U ⊇ A
hUo : IsOpen U
hU : μ U < μ A + ε
⊢ ∃ U ⊇ A, IsOpen U ∧ μ U < ⊤ ∧ μ (U \ A) < ε
tactic: rcases A.exists_isOpen_lt_add hA' hε with ⟨U, hAU, hUo, hU⟩
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace α
μ : Measure α
inst✝ : μ.OuterRegular
A : Set α
hA : MeasurableSet A
hA' : μ A ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
U : Set α
hAU : U ⊇ A
hUo : IsOpen U
hU : μ U < μ A + ε
⊢ ∃ U ⊇ A, IsOpen U ∧ μ U < ⊤ ∧ μ (U \ A) < ε
state_after: case right
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace α
μ : Measure α
inst✝ : μ.OuterRegular
A : Set α
hA : MeasurableSet A
hA' : μ A ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
U : Set α
hAU : U ⊇ A
hUo : IsOpen U
hU : μ U < μ A + ε
⊢ μ (U \ A) < ε
tactic: use U, hAU, hUo, hU.trans_le le_top
state_before: case right
α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace α
μ : Measure α
inst✝ : μ.OuterRegular
A : Set α
hA : MeasurableSet A
hA' : μ A ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
U : Set α
hAU : U ⊇ A
hUo : IsOpen U
hU : μ U < μ A + ε
⊢ μ (U \ A) < ε
state_after: no goals
tactic: exact measure_diff_lt_of_lt_add hA hAU hA' hU
Theorem: Complex.log_conj_eq_ite
File: Mathlib/Analysis/SpecialFunctions/Complex/Log.lean

Proof steps:
state_before: x : ℂ
⊢ log ((starRingEnd ℂ) x) = if x.arg = π then log x else (starRingEnd ℂ) (log x)
state_after: x : ℂ
⊢ ↑(Real.log (abs x)) + ↑(if x.arg = π then π else -x.arg) * I =
    if x.arg = π then ↑(Real.log (abs x)) + ↑x.arg * I else ↑(Real.log (abs x)) + ↑x.arg * (starRingEnd ℂ) I
tactic: simp_rw [log, abs_conj, arg_conj, map_add, map_mul, conj_ofReal]
state_before: x : ℂ
⊢ ↑(Real.log (abs x)) + ↑(if x.arg = π then π else -x.arg) * I =
    if x.arg = π then ↑(Real.log (abs x)) + ↑x.arg * I else ↑(Real.log (abs x)) + ↑x.arg * (starRingEnd ℂ) I
state_after: case pos
x : ℂ
hx : x.arg = π
⊢ ↑(Real.log (abs x)) + ↑π * I = ↑(Real.log (abs x)) + ↑x.arg * I

case neg
x : ℂ
hx : ¬x.arg = π
⊢ ↑(Real.log (abs x)) + ↑(-x.arg) * I = ↑(Real.log (abs x)) + ↑x.arg * (starRingEnd ℂ) I
tactic: split_ifs with hx
state_before: case neg
x : ℂ
hx : ¬x.arg = π
⊢ ↑(Real.log (abs x)) + ↑(-x.arg) * I = ↑(Real.log (abs x)) + ↑x.arg * (starRingEnd ℂ) I
state_after: no goals
tactic: simp_rw [ofReal_neg, conj_I, mul_neg, neg_mul]
Theorem: Int.cobounded_eq
File: Mathlib/Topology/Instances/Int.lean

Proof steps:
state_before: ⊢ Bornology.cobounded ℤ = atBot ⊔ atTop
state_after: ⊢ comap (fun x => ↑|x|) atTop = comap (Int.cast ∘ abs) atTop
tactic: simp_rw [← comap_dist_right_atTop (0 : ℤ), dist_eq', sub_zero,
    ← comap_abs_atTop, ← @Int.comap_cast_atTop ℝ, comap_comap]
state_before: ⊢ comap (fun x => ↑|x|) atTop = comap (Int.cast ∘ abs) atTop
state_after: no goals
tactic: rfl
Theorem: NumberField.Units.unitLattice_rank
File: Mathlib/NumberTheory/NumberField/Units/DirichletTheorem.lean

Proof steps:
state_before: K : Type u_1
inst✝² : Field K
inst✝¹ inst✝ : NumberField K
⊢ finrank ℤ ↥(unitLattice K) = rank K
state_after: no goals
tactic: rw [← Units.finrank_eq_rank, Zlattice.rank ℝ]
Theorem: MeasureTheory.measure_le_inter_add_diff
File: Mathlib/MeasureTheory/OuterMeasure/Basic.lean

Proof steps:
state_before: α : Type u_1
ι : Type u_2
F : Type u_3
inst✝¹ : FunLike F (Set α) ℝ≥0∞
inst✝ : OuterMeasureClass F α
μ✝ : F
s✝ t✝ : Set α
μ : F
s t : Set α
⊢ μ s ≤ μ (s ∩ t) + μ (s \ t)
state_after: no goals
tactic: simpa using measure_union_le (s ∩ t) (s \ t)
Theorem: Set.Definable.mono
File: Mathlib/ModelTheory/Definability.lean

Proof steps:
state_before: M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s : Set (α → M)
hAs : A.Definable L s
hAB : A ⊆ B
⊢ B.Definable L s
state_after: M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s : Set (α → M)
hAs : ∅.Definable (L[[↑A]]) s
hAB : A ⊆ B
⊢ ∅.Definable (L[[↑B]]) s
tactic: rw [definable_iff_empty_definable_with_params] at *
state_before: M : Type w
A : Set M
L : Language
inst✝ : L.Structure M
α : Type u₁
β : Type u_1
B : Set M
s : Set (α → M)
hAs : ∅.Definable (L[[↑A]]) s
hAB : A ⊆ B
⊢ ∅.Definable (L[[↑B]]) s
state_after: no goals
tactic: exact hAs.map_expansion (L.lhomWithConstantsMap (Set.inclusion hAB))
Theorem: Prod.fst_eq_or_snd_eq_of_wcovBy
File: Mathlib/Order/Cover.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
⊢ x ⩿ y → x.1 = y.1 ∨ x.2 = y.2
state_after: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
h : x ⩿ y
hab : ¬(x.1 = y.1 ∨ x.2 = y.2)
⊢ False
tactic: refine fun h => of_not_not fun hab => ?_
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
h : x ⩿ y
hab : ¬(x.1 = y.1 ∨ x.2 = y.2)
⊢ False
state_after: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
h : x ⩿ y
hab : x.1 ≠ y.1 ∧ x.2 ≠ y.2
⊢ False
tactic: push_neg at hab
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
h : x ⩿ y
hab : x.1 ≠ y.1 ∧ x.2 ≠ y.2
⊢ False
state_after: no goals
tactic: exact
    h.2 (mk_lt_mk.2 <| Or.inl ⟨hab.1.lt_of_le h.1.1, le_rfl⟩)
      (mk_lt_mk.2 <| Or.inr ⟨le_rfl, hab.2.lt_of_le h.1.2⟩)
Theorem: OreLocalization.neg_def
File: Mathlib/RingTheory/OreLocalization/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝³ : Monoid R
S : Submonoid R
inst✝² : OreSet S
X : Type u_2
inst✝¹ : AddGroup X
inst✝ : DistribMulAction R X
r : X
s : ↥S
⊢ -(r /ₒ s) = -r /ₒ s
state_after: no goals
tactic: with_unfolding_all rfl
Theorem: ENNReal.ofReal_lt_ofReal_iff
File: Mathlib/Data/ENNReal/Real.lean

Proof steps:
state_before: a b c d : ℝ≥0∞
r p✝ q✝ : ℝ≥0
p q : ℝ
h : 0 < q
⊢ ENNReal.ofReal p < ENNReal.ofReal q ↔ p < q
state_after: no goals
tactic: rw [ENNReal.ofReal, ENNReal.ofReal, coe_lt_coe, Real.toNNReal_lt_toNNReal_iff h]