1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: upperBounds_range_partialSups
File: Mathlib/Order/PartialSups.lean

tactic: ext a
state_before: α : Type u_1
inst✝ : SemilatticeSup α
f : ℕ → α
⊢ upperBounds (Set.range ⇑(partialSups f)) = upperBounds (Set.range f)
state_after: case h
α : Type u_1
inst✝ : SemilatticeSup α
f : ℕ → α
a : α
⊢ a ∈ upperBounds (Set.range ⇑(partialSups f)) ↔ a ∈ upperBounds (Set.range f)

tactic: simp only [mem_upperBounds, Set.forall_mem_range, partialSups_le_iff]
state_before: case h
α : Type u_1
inst✝ : SemilatticeSup α
f : ℕ → α
a : α
⊢ a ∈ upperBounds (Set.range ⇑(partialSups f)) ↔ a ∈ upperBounds (Set.range f)
state_after: case h
α : Type u_1
inst✝ : SemilatticeSup α
f : ℕ → α
a : α
⊢ (∀ (i k : ℕ), k ≤ i → f k ≤ a) ↔ ∀ (i : ℕ), f i ≤ a

tactic: exact ⟨fun h _ ↦ h _ _ le_rfl, fun h _ _ _ ↦ h _⟩
state_before: case h
α : Type u_1
inst✝ : SemilatticeSup α
f : ℕ → α
a : α
⊢ (∀ (i k : ℕ), k ≤ i → f k ≤ a) ↔ ∀ (i : ℕ), f i ≤ a
state_after: no goals
Theorem: groupCohomology.dZero_eq_zero
File: Mathlib/RepresentationTheory/GroupCohomology/LowDegree.lean

tactic: ext
state_before: k G : Type u
inst✝² : CommRing k
inst✝¹ : Group G
A : Rep k G
inst✝ : A.IsTrivial
⊢ dZero A = 0
state_after: case h.h
k G : Type u
inst✝² : CommRing k
inst✝¹ : Group G
A : Rep k G
inst✝ : A.IsTrivial
x✝¹ : CoeSort.coe A
x✝ : G
⊢ (dZero A) x✝¹ x✝ = 0 x✝¹ x✝

tactic: simp only [dZero_apply, apply_eq_self, sub_self, LinearMap.zero_apply, Pi.zero_apply]
state_before: case h.h
k G : Type u
inst✝² : CommRing k
inst✝¹ : Group G
A : Rep k G
inst✝ : A.IsTrivial
x✝¹ : CoeSort.coe A
x✝ : G
⊢ (dZero A) x✝¹ x✝ = 0 x✝¹ x✝
state_after: no goals
Theorem: CategoryTheory.Idempotents.Karoubi.decompId_i_naturality
File: Mathlib/CategoryTheory/Idempotents/Karoubi.lean

tactic: exact Hom.mk f.f (by simp)
state_before: C : Type u_1
inst✝ : Category.{?u.42069, u_1} C
P Q : Karoubi C
f : P ⟶ Q
⊢ { X := P.X, p := 𝟙 P.X, idem := ⋯ } ⟶ { X := Q.X, p := 𝟙 Q.X, idem := ⋯ }
state_after: no goals

tactic: simp
state_before: C : Type u_1
inst✝ : Category.{?u.42069, u_1} C
P Q : Karoubi C
f : P ⟶ Q
⊢ f.f = { X := P.X, p := 𝟙 P.X, idem := ⋯ }.p ≫ f.f ≫ { X := Q.X, p := 𝟙 Q.X, idem := ⋯ }.p
state_after: no goals

tactic: aesop_cat
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
P Q : Karoubi C
f : P ⟶ Q
⊢ f ≫ Q.decompId_i = P.decompId_i ≫ { f := f.f, comm := ⋯ }
state_after: no goals
Theorem: SimpleGraph.Reachable.elim_path
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: classical exact h.elim fun q => hp q.toPath
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
p : Prop
u v : V
h : G.Reachable u v
hp : G.Path u v → p
⊢ p
state_after: no goals

tactic: exact h.elim fun q => hp q.toPath
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
p : Prop
u v : V
h : G.Reachable u v
hp : G.Path u v → p
⊢ p
state_after: no goals
Theorem: Set.not_equitableOn
File: Mathlib/Data/Set/Equitable.lean

tactic: simp [EquitableOn]
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrder β
inst✝¹ : Add β
inst✝ : One β
s : Set α
f : α → β
⊢ ¬s.EquitableOn f ↔ ∃ a ∈ s, ∃ b ∈ s, f b + 1 < f a
state_after: no goals
Theorem: List.scanl_eq_scanlTR
File: .lake/packages/batteries/Batteries/Data/List/Basic.lean

tactic: funext α f n l
state_before: ⊢ @scanl = @scanlTR
state_after: case h.h.h.h
α : Type u_2
f : Type u_1
n : α → f → α
l : α
⊢ scanl n l = scanlTR n l

tactic: simp (config := { unfoldPartialApp := true }) [scanlTR, scanlTR_go_eq]
state_before: case h.h.h.h
α : Type u_2
f : Type u_1
n : α → f → α
l : α
⊢ scanl n l = scanlTR n l
state_after: no goals
Theorem: Real.isBigO_one_exp_comp
File: Mathlib/Analysis/SpecialFunctions/Exp.lean

tactic: simp only [← exp_zero, isBigO_exp_comp_exp_comp, Pi.sub_def, zero_sub, isBoundedUnder_le_neg]
state_before: α : Type u_1
x y z : ℝ
l : Filter α
f : α → ℝ
⊢ ((fun x => 1) =O[l] fun x => rexp (f x)) ↔ IsBoundedUnder (fun x x_1 => x ≥ x_1) l f
state_after: no goals
Theorem: jacobiSym.one_left
File: Mathlib/NumberTheory/LegendreSymbol/JacobiSymbol.lean

tactic: let ⟨p, hp, he⟩ := List.mem_pmap.1 hz
state_before: b : ℕ
z : ℤ
hz : z ∈ List.pmap (fun p pp => legendreSym p 1) b.factors ⋯
⊢ z = 1
state_after: b : ℕ
z : ℤ
hz : z ∈ List.pmap (fun p pp => legendreSym p 1) b.factors ⋯
p : ℕ
hp : p ∈ b.factors
he : legendreSym p 1 = z
⊢ z = 1

tactic: letI : Fact p.Prime := ⟨prime_of_mem_factors hp⟩
state_before: b : ℕ
z : ℤ
hz : z ∈ List.pmap (fun p pp => legendreSym p 1) b.factors ⋯
p : ℕ
hp : p ∈ b.factors
he : legendreSym p 1 = z
⊢ z = 1
state_after: b : ℕ
z : ℤ
hz : z ∈ List.pmap (fun p pp => legendreSym p 1) b.factors ⋯
p : ℕ
hp : p ∈ b.factors
he : legendreSym p 1 = z
this : Fact (Nat.Prime p) := { out := prime_of_mem_factors hp }
⊢ z = 1

tactic: rw [← he, legendreSym.at_one]
state_before: b : ℕ
z : ℤ
hz : z ∈ List.pmap (fun p pp => legendreSym p 1) b.factors ⋯
p : ℕ
hp : p ∈ b.factors
he : legendreSym p 1 = z
this : Fact (Nat.Prime p) := { out := prime_of_mem_factors hp }
⊢ z = 1
state_after: no goals
Theorem: EMetric.cauchy_iff
File: Mathlib/Topology/EMetricSpace/Basic.lean

tactic: rw [← neBot_iff]
state_before: α : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α
f : Filter α
⊢ Cauchy f ↔ f ≠ ⊥ ∧ ∀ ε > 0, ∃ t ∈ f, ∀ x ∈ t, ∀ y ∈ t, edist x y < ε
state_after: α : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α
f : Filter α
⊢ Cauchy f ↔ f.NeBot ∧ ∀ ε > 0, ∃ t ∈ f, ∀ x ∈ t, ∀ y ∈ t, edist x y < ε

tactic: exact uniformity_basis_edist.cauchy_iff
state_before: α : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α
f : Filter α
⊢ Cauchy f ↔ f.NeBot ∧ ∀ ε > 0, ∃ t ∈ f, ∀ x ∈ t, ∀ y ∈ t, edist x y < ε
state_after: no goals
Theorem: Finsupp.single_eq_indicator
File: Mathlib/Data/Finsupp/Indicator.lean

tactic: classical
ext j
simp [single_apply, indicator_apply, @eq_comm _ j]
state_before: ι : Type u_1
α : Type u_2
inst✝ : Zero α
s : Finset ι
f : (i : ι) → i ∈ s → α
i : ι
b : α
⊢ single i b = indicator {i} fun x x => b
state_after: no goals

tactic: ext j
state_before: ι : Type u_1
α : Type u_2
inst✝ : Zero α
s : Finset ι
f : (i : ι) → i ∈ s → α
i : ι
b : α
⊢ single i b = indicator {i} fun x x => b
state_after: case h
ι : Type u_1
α : Type u_2
inst✝ : Zero α
s : Finset ι
f : (i : ι) → i ∈ s → α
i : ι
b : α
j : ι
⊢ (single i b) j = (indicator {i} fun x x => b) j

tactic: simp [single_apply, indicator_apply, @eq_comm _ j]
state_before: case h
ι : Type u_1
α : Type u_2
inst✝ : Zero α
s : Finset ι
f : (i : ι) → i ∈ s → α
i : ι
b : α
j : ι
⊢ (single i b) j = (indicator {i} fun x x => b) j
state_after: no goals
Theorem: ZMod.natCast_zmod_val
File: Mathlib/Data/ZMod/Basic.lean

tactic: cases n
state_before: n✝ : ℕ
R : Type u_1
n : ℕ
inst✝ : NeZero n
a : ZMod n
⊢ ↑a.val = a
state_after: case zero
n : ℕ
R : Type u_1
inst✝ : NeZero 0
a : ZMod 0
⊢ ↑a.val = a

case succ
n : ℕ
R : Type u_1
n✝ : ℕ
inst✝ : NeZero (n✝ + 1)
a : ZMod (n✝ + 1)
⊢ ↑a.val = a

tactic: cases NeZero.ne 0 rfl
state_before: case zero
n : ℕ
R : Type u_1
inst✝ : NeZero 0
a : ZMod 0
⊢ ↑a.val = a
state_after: no goals

tactic: apply Fin.cast_val_eq_self
state_before: case succ
n : ℕ
R : Type u_1
n✝ : ℕ
inst✝ : NeZero (n✝ + 1)
a : ZMod (n✝ + 1)
⊢ ↑a.val = a
state_after: no goals
Theorem: Rat.mk'_zero
File: Mathlib/Data/Rat/Defs.lean

tactic: congr
state_before: q : ℚ
d : ℕ
h : d ≠ 0
w : (Int.natAbs 0).Coprime d
⊢ { num := 0, den := d, den_nz := h, reduced := w } = 0
state_after: case e_den
q : ℚ
d : ℕ
h : d ≠ 0
w : (Int.natAbs 0).Coprime d
⊢ d = 1

tactic: simp_all
state_before: case e_den
q : ℚ
d : ℕ
h : d ≠ 0
w : (Int.natAbs 0).Coprime d
⊢ d = 1
state_after: no goals
Theorem: String.Iterator.ValidFor.toEnd
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

tactic: simp only [Iterator.toEnd, h.toString, endPos_eq, utf8Len_reverseAux]
state_before: l r : List Char
it : Iterator
h : ValidFor l r it
⊢ ValidFor (r.reverse ++ l) [] it.toEnd
state_after: l r : List Char
it : Iterator
h : ValidFor l r it
⊢ ValidFor (r.reverse ++ l) [] { s := { data := l.reverseAux r }, i := { byteIdx := utf8Len l + utf8Len r } }

tactic: exact .of_eq _ (by simp [List.reverseAux_eq]) (by simp [Nat.add_comm])
state_before: l r : List Char
it : Iterator
h : ValidFor l r it
⊢ ValidFor (r.reverse ++ l) [] { s := { data := l.reverseAux r }, i := { byteIdx := utf8Len l + utf8Len r } }
state_after: no goals

tactic: simp [List.reverseAux_eq]
state_before: l r : List Char
it : Iterator
h : ValidFor l r it
⊢ { s := { data := l.reverseAux r }, i := { byteIdx := utf8Len l + utf8Len r } }.s.data = (r.reverse ++ l).reverseAux []
state_after: no goals

tactic: simp [Nat.add_comm]
state_before: l r : List Char
it : Iterator
h : ValidFor l r it
⊢ { s := { data := l.reverseAux r }, i := { byteIdx := utf8Len l + utf8Len r } }.i.byteIdx = utf8Len (r.reverse ++ l)
state_after: no goals
Theorem: Polynomial.comp_zero
File: Mathlib/Algebra/Polynomial/Eval.lean

tactic: rw [← C_0, comp_C]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
⊢ p.comp 0 = C (eval 0 p)
state_after: no goals
Theorem: Set.Finite.multipliable
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

tactic: have := hs.toFinset.multipliable f
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : CommMonoid α
inst✝ : TopologicalSpace α
f✝ g : β → α
a b : α
s✝ : Finset β
s : Set β
hs : s.Finite
f : β → α
⊢ Multipliable (f ∘ Subtype.val)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : CommMonoid α
inst✝ : TopologicalSpace α
f✝ g : β → α
a b : α
s✝ : Finset β
s : Set β
hs : s.Finite
f : β → α
this : Multipliable (f ∘ Subtype.val)
⊢ Multipliable (f ∘ Subtype.val)

tactic: rwa [hs.coe_toFinset] at this
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : CommMonoid α
inst✝ : TopologicalSpace α
f✝ g : β → α
a b : α
s✝ : Finset β
s : Set β
hs : s.Finite
f : β → α
this : Multipliable (f ∘ Subtype.val)
⊢ Multipliable (f ∘ Subtype.val)
state_after: no goals
Theorem: SimpleGraph.Subgraph.connected_iff
File: Mathlib/Combinatorics/SimpleGraph/Connectivity/Subgraph.lean

tactic: rw [H.connected_iff', connected_iff, H.preconnected_iff, Set.nonempty_coe_sort]
state_before: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
H : G.Subgraph
⊢ H.Connected ↔ H.Preconnected ∧ H.verts.Nonempty
state_after: no goals
Theorem: Matrix.vecMul_fromBlocks
File: Mathlib/Data/Matrix/Block.lean

tactic: ext i
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : Fintype n
inst✝¹ : Fintype o
inst✝ : NonUnitalNonAssocSemiring α
A : Matrix n l α
B : Matrix n m α
C : Matrix o l α
D : Matrix o m α
x : n ⊕ o → α
⊢ x ᵥ* fromBlocks A B C D = Sum.elim (x ∘ Sum.inl ᵥ* A + x ∘ Sum.inr ᵥ* C) (x ∘ Sum.inl ᵥ* B + x ∘ Sum.inr ᵥ* D)
state_after: case h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : Fintype n
inst✝¹ : Fintype o
inst✝ : NonUnitalNonAssocSemiring α
A : Matrix n l α
B : Matrix n m α
C : Matrix o l α
D : Matrix o m α
x : n ⊕ o → α
i : l ⊕ m
⊢ (x ᵥ* fromBlocks A B C D) i = Sum.elim (x ∘ Sum.inl ᵥ* A + x ∘ Sum.inr ᵥ* C) (x ∘ Sum.inl ᵥ* B + x ∘ Sum.inr ᵥ* D) i

tactic: cases i <;> simp [vecMul, dotProduct]
state_before: case h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝² : Fintype n
inst✝¹ : Fintype o
inst✝ : NonUnitalNonAssocSemiring α
A : Matrix n l α
B : Matrix n m α
C : Matrix o l α
D : Matrix o m α
x : n ⊕ o → α
i : l ⊕ m
⊢ (x ᵥ* fromBlocks A B C D) i = Sum.elim (x ∘ Sum.inl ᵥ* A + x ∘ Sum.inr ᵥ* C) (x ∘ Sum.inl ᵥ* B + x ∘ Sum.inr ᵥ* D) i
state_after: no goals
Theorem: Subgroup.IsComplement.equiv_mul_left
File: Mathlib/GroupTheory/Complement.lean

tactic: have : (hHT.equiv (h * g)).2 = (hHT.equiv g).2 := hHT.equiv_snd_eq_iff_rightCosetEquivalence.2 ?_
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
h : ↥H
g : G
⊢ hHT.equiv (↑h * g) = (h * (hHT.equiv g).1, (hHT.equiv g).2)
state_after: case refine_2
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
h : ↥H
g : G
this : (hHT.equiv (↑h * g)).2 = (hHT.equiv g).2
⊢ hHT.equiv (↑h * g) = (h * (hHT.equiv g).1, (hHT.equiv g).2)

case refine_1
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
h : ↥H
g : G
⊢ RightCosetEquivalence (↑H) (↑h * g) g

tactic: ext
state_before: case refine_2
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
h : ↥H
g : G
this : (hHT.equiv (↑h * g)).2 = (hHT.equiv g).2
⊢ hHT.equiv (↑h * g) = (h * (hHT.equiv g).1, (hHT.equiv g).2)
state_after: case refine_2.a.a
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
h : ↥H
g : G
this : (hHT.equiv (↑h * g)).2 = (hHT.equiv g).2
⊢ ↑(hHT.equiv (↑h * g)).1 = ↑(h * (hHT.equiv g).1, (hHT.equiv g).2).1

case refine_2.a.a
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
h : ↥H
g : G
this : (hHT.equiv (↑h * g)).2 = (hHT.equiv g).2
⊢ ↑(hHT.equiv (↑h * g)).2 = ↑(h * (hHT.equiv g).1, (hHT.equiv g).2).2

tactic: rw [coe_mul, equiv_fst_eq_mul_inv, this, equiv_fst_eq_mul_inv, mul_assoc]
state_before: case refine_2.a.a
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
h : ↥H
g : G
this : (hHT.equiv (↑h * g)).2 = (hHT.equiv g).2
⊢ ↑(hHT.equiv (↑h * g)).1 = ↑(h * (hHT.equiv g).1, (hHT.equiv g).2).1
state_after: no goals

tactic: rw [this]
state_before: case refine_2.a.a
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
h : ↥H
g : G
this : (hHT.equiv (↑h * g)).2 = (hHT.equiv g).2
⊢ ↑(hHT.equiv (↑h * g)).2 = ↑(h * (hHT.equiv g).1, (hHT.equiv g).2).2
state_after: no goals

tactic: simp [RightCosetEquivalence, ← smul_smul]
state_before: case refine_1
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hST : IsComplement S T
hHT : IsComplement (↑H) T
hSK : IsComplement S ↑K
h : ↥H
g : G
⊢ RightCosetEquivalence (↑H) (↑h * g) g
state_after: no goals
Theorem: TruncatedWittVector.truncate_truncate
File: Mathlib/RingTheory/WittVector/Truncated.lean

tactic: obtain ⟨x, rfl⟩ := @WittVector.truncate_surjective p _ n₃ R _ x
state_before: p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
n₁ n₂ n₃ : ℕ
h1 : n₁ ≤ n₂
h2 : n₂ ≤ n₃
x : TruncatedWittVector p n₃ R
⊢ (truncate h1) ((truncate h2) x) = (truncate ⋯) x
state_after: case intro
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
n₁ n₂ n₃ : ℕ
h1 : n₁ ≤ n₂
h2 : n₂ ≤ n₃
x : 𝕎 R
⊢ (truncate h1) ((truncate h2) ((WittVector.truncate n₃) x)) = (truncate ⋯) ((WittVector.truncate n₃) x)

tactic: simp only [truncate_wittVector_truncate]
state_before: case intro
p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
n₁ n₂ n₃ : ℕ
h1 : n₁ ≤ n₂
h2 : n₂ ≤ n₃
x : 𝕎 R
⊢ (truncate h1) ((truncate h2) ((WittVector.truncate n₃) x)) = (truncate ⋯) ((WittVector.truncate n₃) x)
state_after: no goals
Theorem: CategoryTheory.OverPresheafAux.OverArrows.yonedaCollectionPresheafToA_val_fst
File: Mathlib/CategoryTheory/Comma/Presheaf.lean

tactic: simpa [YonedaCollection.yonedaEquivFst_eq] using p.app_val
state_before: C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
X : C
s : yoneda.obj X ⟶ A
p : OverArrows (yonedaCollectionPresheafToA F) s
⊢ YonedaCollection.fst p.val = s
state_after: no goals
Theorem: EuclideanSpace.ball_zero_eq
File: Mathlib/Analysis/InnerProductSpace/PiL2.lean

tactic: ext x
state_before: ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
n : Type u_8
inst✝ : Fintype n
r : ℝ
hr : 0 ≤ r
⊢ Metric.ball 0 r = {x | ∑ i : n, x i ^ 2 < r ^ 2}
state_after: case h
ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
n : Type u_8
inst✝ : Fintype n
r : ℝ
hr : 0 ≤ r
x : EuclideanSpace ℝ n
⊢ x ∈ Metric.ball 0 r ↔ x ∈ {x | ∑ i : n, x i ^ 2 < r ^ 2}

tactic: have : (0 : ℝ) ≤ ∑ i, x i ^ 2 := Finset.sum_nonneg fun _ _ => sq_nonneg _
state_before: case h
ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
n : Type u_8
inst✝ : Fintype n
r : ℝ
hr : 0 ≤ r
x : EuclideanSpace ℝ n
⊢ x ∈ Metric.ball 0 r ↔ x ∈ {x | ∑ i : n, x i ^ 2 < r ^ 2}
state_after: case h
ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
n : Type u_8
inst✝ : Fintype n
r : ℝ
hr : 0 ≤ r
x : EuclideanSpace ℝ n
this : 0 ≤ ∑ i : n, x i ^ 2
⊢ x ∈ Metric.ball 0 r ↔ x ∈ {x | ∑ i : n, x i ^ 2 < r ^ 2}

tactic: simp_rw [mem_setOf, mem_ball_zero_iff, norm_eq, norm_eq_abs, sq_abs, sqrt_lt this hr]
state_before: case h
ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝⁹ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type u_7
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
n : Type u_8
inst✝ : Fintype n
r : ℝ
hr : 0 ≤ r
x : EuclideanSpace ℝ n
this : 0 ≤ ∑ i : n, x i ^ 2
⊢ x ∈ Metric.ball 0 r ↔ x ∈ {x | ∑ i : n, x i ^ 2 < r ^ 2}
state_after: no goals
Theorem: Orientation.two_zsmul_oangle_left_of_span_eq
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

tactic: rw [Submodule.span_singleton_eq_span_singleton] at h
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y z : V
h : Submodule.span ℝ {x} = Submodule.span ℝ {y}
⊢ 2 • o.oangle x z = 2 • o.oangle y z
state_after: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y z : V
h : ∃ z, z • x = y
⊢ 2 • o.oangle x z = 2 • o.oangle y z

tactic: rcases h with ⟨r, rfl⟩
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y z : V
h : ∃ z, z • x = y
⊢ 2 • o.oangle x z = 2 • o.oangle y z
state_after: case intro
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x z : V
r : ℝˣ
⊢ 2 • o.oangle x z = 2 • o.oangle (r • x) z

tactic: exact (o.two_zsmul_oangle_smul_left_of_ne_zero _ _ (Units.ne_zero _)).symm
state_before: case intro
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x z : V
r : ℝˣ
⊢ 2 • o.oangle x z = 2 • o.oangle (r • x) z
state_after: no goals
Theorem: List.replicate_sublist_replicate
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: refine ⟨fun h => ?_, fun h => ?_⟩
state_before: α : Type u_1
m n : Nat
a : α
⊢ replicate m a <+ replicate n a ↔ m ≤ n
state_after: case refine_1
α : Type u_1
m n : Nat
a : α
h : replicate m a <+ replicate n a
⊢ m ≤ n

case refine_2
α : Type u_1
m n : Nat
a : α
h : m ≤ n
⊢ replicate m a <+ replicate n a

tactic: have := h.length_le
state_before: case refine_1
α : Type u_1
m n : Nat
a : α
h : replicate m a <+ replicate n a
⊢ m ≤ n
state_after: case refine_1
α : Type u_1
m n : Nat
a : α
h : replicate m a <+ replicate n a
this : (replicate m a).length ≤ (replicate n a).length
⊢ m ≤ n

tactic: simp only [length_replicate] at this ⊢
state_before: case refine_1
α : Type u_1
m n : Nat
a : α
h : replicate m a <+ replicate n a
this : (replicate m a).length ≤ (replicate n a).length
⊢ m ≤ n
state_after: case refine_1
α : Type u_1
m n : Nat
a : α
h : replicate m a <+ replicate n a
this : m ≤ n
⊢ m ≤ n

tactic: exact this
state_before: case refine_1
α : Type u_1
m n : Nat
a : α
h : replicate m a <+ replicate n a
this : m ≤ n
⊢ m ≤ n
state_after: no goals

tactic: induction h with
| refl => apply Sublist.refl
| step => simp [*, replicate, Sublist.cons]
state_before: case refine_2
α : Type u_1
m n : Nat
a : α
h : m ≤ n
⊢ replicate m a <+ replicate n a
state_after: no goals

tactic: apply Sublist.refl
state_before: case refine_2.refl
α : Type u_1
m n : Nat
a : α
⊢ replicate m a <+ replicate m a
state_after: no goals

tactic: simp [*, replicate, Sublist.cons]
state_before: case refine_2.step
α : Type u_1
m n : Nat
a : α
m✝ : Nat
a✝ : m.le m✝
a_ih✝ : replicate m a <+ replicate m✝ a
⊢ replicate m a <+ replicate m✝.succ a
state_after: no goals
Theorem: Monoid.closure_subset
File: Mathlib/Deprecated/Submonoid.lean

tactic: induction ha <;> simp [h _, *, IsSubmonoid.one_mem, IsSubmonoid.mul_mem]
state_before: M : Type u_1
inst✝¹ : Monoid M
s✝ : Set M
A : Type u_2
inst✝ : AddMonoid A
t✝ : Set A
s t : Set M
ht : IsSubmonoid t
h : s ⊆ t
a : M
ha : a ∈ Closure s
⊢ a ∈ t
state_after: no goals
Theorem: SetTheory.PGame.neg_equiv_zero_iff
File: Mathlib/SetTheory/Game/PGame.lean

tactic: rw [neg_equiv_iff, neg_zero]
state_before: xl xr : Type u
x : PGame
⊢ -x ≈ 0 ↔ x ≈ 0
state_after: no goals