tasksource/leandojo huggingface dataset:
Theorem: List.join_drop_length_sub_one
File: Mathlib/Data/List/Join.lean

tactic: induction L using List.reverseRecOn
state_before: α : Type u_1
β : Type ?u.16380
L : List (List α)
h : L ≠ []
⊢ join (drop (length L - 1) L) = getLast L h

tactic: cases h rfl
state_before: case H0
α : Type u_1
β : Type ?u.16380
h : [] ≠ []
⊢ join (drop (length [] - 1) []) = getLast [] h

tactic: simp
state_before: case H1
α : Type u_1
β : Type ?u.16380
l✝ : List (List α)
a✝¹ : List α
a✝ : ∀ (h : l✝ ≠ []), join (drop (length l✝ - 1) l✝) = getLast l✝ h
h : l✝ ++ [a✝¹] ≠ []
⊢ join (drop (length (l✝ ++ [a✝¹]) - 1) (l✝ ++ [a✝¹])) = getLast (l✝ ++ [a✝¹]) h
Theorem: exists_vector_succ
File: Mathlib/Data/Vector3.lean

tactic: rw [cons_head_tail v]
state_before: α : Type u_1
m n : ℕ
f : Vector3 α (succ n) → Prop
x✝ : Exists f
v : Vector3 α (succ n)
fv : f v
⊢ f (?m.40988 f x✝ v fv :: ?m.40989 f x✝ v fv)

tactic: exact fv
state_before: α : Type u_1
m n : ℕ
f : Vector3 α (succ n) → Prop
x✝ : Exists f
v : Vector3 α (succ n)
fv : f v
⊢ f v
Theorem: IsSimpleGroup.derivedSeries_succ
File: Mathlib/GroupTheory/Solvable.lean

tactic: induction' n with n ih
state_before: G : Type u_1
G' : Type ?u.73657
inst✝² : Group G
inst✝¹ : Group G'
f : G →* G'
inst✝ : IsSimpleGroup G
n : ℕ
⊢ derivedSeries G (Nat.succ n) = _root_.commutator G

tactic: rw [_root_.derivedSeries_succ, ih, _root_.commutator]
state_before: case succ
G : Type u_1
G' : Type ?u.73657
inst✝² : Group G
inst✝¹ : Group G'
f : G →* G'
inst✝ : IsSimpleGroup G
n : ℕ
ih : derivedSeries G (Nat.succ n) = _root_.commutator G
⊢ derivedSeries G (Nat.succ (Nat.succ n)) = _root_.commutator G

tactic: cases' (commutator_normal (⊤ : Subgroup G) (⊤ : Subgroup G)).eq_bot_or_eq_top with h h
state_before: case succ
G : Type u_1
G' : Type ?u.73657
inst✝² : Group G
inst✝¹ : Group G'
f : G →* G'
inst✝ : IsSimpleGroup G
n : ℕ
ih : derivedSeries G (Nat.succ n) = _root_.commutator G
⊢ ⁅⁅⊤, ⊤⁆, ⁅⊤, ⊤⁆⁆ = ⁅⊤, ⊤⁆

tactic: exact derivedSeries_one G
state_before: case zero
G : Type u_1
G' : Type ?u.73657
inst✝² : Group G
inst✝¹ : Group G'
f : G →* G'
inst✝ : IsSimpleGroup G
⊢ derivedSeries G (Nat.succ Nat.zero) = _root_.commutator G

tactic: rw [h, commutator_bot_left]
state_before: case succ.inl
G : Type u_1
G' : Type ?u.73657
inst✝² : Group G
inst✝¹ : Group G'
f : G →* G'
inst✝ : IsSimpleGroup G
n : ℕ
ih : derivedSeries G (Nat.succ n) = _root_.commutator G
h : ⁅⊤, ⊤⁆ = ⊥
⊢ ⁅⁅⊤, ⊤⁆, ⁅⊤, ⊤⁆⁆ = ⁅⊤, ⊤⁆

tactic: rwa [h]
state_before: case succ.inr
G : Type u_1
G' : Type ?u.73657
inst✝² : Group G
inst✝¹ : Group G'
f : G →* G'
inst✝ : IsSimpleGroup G
n : ℕ
ih : derivedSeries G (Nat.succ n) = _root_.commutator G
h : ⁅⊤, ⊤⁆ = ⊤
⊢ ⁅⁅⊤, ⊤⁆, ⁅⊤, ⊤⁆⁆ = ⁅⊤, ⊤⁆
Theorem: Polynomial.coeff_bit0_mul
File: Mathlib/Data/Polynomial/Coeff.lean

tactic: simp [bit0, add_mul, two_mul]
state_before: R : Type u
S : Type v
a b : R
n✝ m : ℕ
inst✝ : Semiring R
p q r P Q : R[X]
n : ℕ
⊢ coeff (bit0 P * Q) n = 2 * coeff (P * Q) n
Theorem: Inducing.continuous_iff
File: Mathlib/Topology/Maps.lean

tactic: simp_rw [continuous_iff_continuousAt, hg.continuousAt_iff]
state_before: α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.3864
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
g : β → γ
hg : Inducing g
⊢ Continuous f ↔ Continuous (g ∘ f)
Theorem: Metric.hausdorffDist_comm
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: simp [hausdorffDist, hausdorffEdist_comm]
state_before: ι : Sort ?u.74744
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
⊢ hausdorffDist s t = hausdorffDist t s
Theorem: Pmf.bind_const
File: Mathlib/Probability/ProbabilityMassFunction/Monad.lean

tactic: rw [bind_apply, ENNReal.tsum_mul_right, tsum_coe, one_mul]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.62680
p✝ : Pmf α
f : α → Pmf β
g : β → Pmf γ
p : Pmf α
q : Pmf β
x : β
⊢ ↑(bind p fun x => q) x = ↑q x
Theorem: Finset.sup_coe
File: Mathlib/Data/Finset/Lattice.lean

tactic: letI := Subtype.semilatticeSup Psup
state_before: F : Type ?u.65870
α : Type u_1
β : Type u_2
γ : Type ?u.65879
ι : Type ?u.65882
κ : Type ?u.65885
inst✝¹ : SemilatticeSup α
inst✝ : OrderBot α
s s₁ s₂ : Finset β
f✝ g : β → α
a : α
P : α → Prop
Pbot : P ⊥
Psup : ∀ ⦃x y : α⦄, P x → P y → P (x ⊔ y)
t : Finset β
f : β → { x // P x }
⊢ ↑(sup t f) = sup t fun x => ↑(f x)

tactic: letI := Subtype.orderBot Pbot
state_before: F : Type ?u.65870
α : Type u_1
β : Type u_2
γ : Type ?u.65879
ι : Type ?u.65882
κ : Type ?u.65885
inst✝¹ : SemilatticeSup α
inst✝ : OrderBot α
s s₁ s₂ : Finset β
f✝ g : β → α
a : α
P : α → Prop
Pbot : P ⊥
Psup : ∀ ⦃x y : α⦄, P x → P y → P (x ⊔ y)
t : Finset β
f : β → { x // P x }
this : SemilatticeSup { x // P x } := Subtype.semilatticeSup Psup
⊢ ↑(sup t f) = sup t fun x => ↑(f x)

tactic: apply comp_sup_eq_sup_comp Subtype.val <;> intros <;> rfl
state_before: F : Type ?u.65870
α : Type u_1
β : Type u_2
γ : Type ?u.65879
ι : Type ?u.65882
κ : Type ?u.65885
inst✝¹ : SemilatticeSup α
inst✝ : OrderBot α
s s₁ s₂ : Finset β
f✝ g : β → α
a : α
P : α → Prop
Pbot : P ⊥
Psup : ∀ ⦃x y : α⦄, P x → P y → P (x ⊔ y)
t : Finset β
f : β → { x // P x }
this✝ : SemilatticeSup { x // P x } := Subtype.semilatticeSup Psup
this : OrderBot { x // P x } := Subtype.orderBot Pbot
⊢ ↑(sup t f) = sup t fun x => ↑(f x)
Theorem: Multiset.filter_nsmul
File: Mathlib/Data/Multiset/Basic.lean

tactic: refine' s.induction_on _ _
state_before: α : Type u_1
β : Type ?u.233049
γ : Type ?u.233052
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
n : ℕ
⊢ filter p (n • s) = n • filter p s

tactic: simp only [filter_zero, nsmul_zero]
state_before: case refine'_1
α : Type u_1
β : Type ?u.233049
γ : Type ?u.233052
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
n : ℕ
⊢ filter p (n • 0) = n • filter p 0

tactic: intro a ha ih
state_before: case refine'_2
α : Type u_1
β : Type ?u.233049
γ : Type ?u.233052
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
n : ℕ
⊢ ∀ ⦃a : α⦄ {s : Multiset α}, filter p (n • s) = n • filter p s → filter p (n • (a ::ₘ s)) = n • filter p (a ::ₘ s)

tactic: rw [nsmul_cons, filter_add, ih, filter_cons, nsmul_add]
state_before: case refine'_2
α : Type u_1
β : Type ?u.233049
γ : Type ?u.233052
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
n : ℕ
a : α
ha : Multiset α
ih : filter p (n • ha) = n • filter p ha
⊢ filter p (n • (a ::ₘ ha)) = n • filter p (a ::ₘ ha)

tactic: congr
state_before: case refine'_2
α : Type u_1
β : Type ?u.233049
γ : Type ?u.233052
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
n : ℕ
a : α
ha : Multiset α
ih : filter p (n • ha) = n • filter p ha
⊢ filter p (n • {a}) + n • filter p ha = (n • if p a then {a} else 0) + n • filter p ha

tactic: simp only [filter_eq_self, nsmul_zero, filter_eq_nil]
state_before: case refine'_2.e_a.inr
α : Type u_1
β : Type ?u.233049
γ : Type ?u.233052
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
n : ℕ
a : α
ha : Multiset α
ih : filter p (n • ha) = n • filter p ha
hp : ¬p a
⊢ filter p (n • {a}) = n • 0

tactic: intro b hb
state_before: case refine'_2.e_a.inr
α : Type u_1
β : Type ?u.233049
γ : Type ?u.233052
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
n : ℕ
a : α
ha : Multiset α
ih : filter p (n • ha) = n • filter p ha
hp : ¬p a
⊢ ∀ (a_1 : α), a_1 ∈ n • {a} → ¬p a_1

tactic: rwa [mem_singleton.mp (mem_of_mem_nsmul hb)]
state_before: case refine'_2.e_a.inr
α : Type u_1
β : Type ?u.233049
γ : Type ?u.233052
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
n : ℕ
a : α
ha : Multiset α
ih : filter p (n • ha) = n • filter p ha
hp : ¬p a
b : α
hb : b ∈ n • {a}
⊢ ¬p b
Theorem: Multiset.prod_map_inv
File: Mathlib/Algebra/BigOperators/Multiset/Basic.lean

tactic: simp_rw [←(m.map f).prod_map_inv', map_map, Function.comp_apply]
state_before: ι : Type u_2
α : Type u_1
β : Type ?u.93370
γ : Type ?u.93373
inst✝ : DivisionCommMonoid α
m : Multiset ι
f g : ι → α
⊢ prod (map (fun i => (f i)⁻¹) m) = (prod (map f m))⁻¹
Theorem: Real.sin_pos_of_pos_of_le_one
File: Mathlib/Data/Complex/Exponential.lean

tactic: gcongr
state_before: x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ abs' x ^ 4 * (5 / 96) + x ^ 3 / 6 ≤ x * (5 / 96) + x / 6

tactic: calc
  |x| ^ 4 ≤ |x| ^ 1 :=
    pow_le_pow_of_le_one (abs_nonneg _)
      (by rwa [_root_.abs_of_nonneg (le_of_lt hx0)]) (by decide)
  _ = x := by simp [_root_.abs_of_nonneg (le_of_lt hx0)]
state_before: case h₁.h
x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ abs' x ^ 4 ≤ x

tactic: rwa [_root_.abs_of_nonneg (le_of_lt hx0)]
state_before: x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ abs' x ≤ 1

tactic: decide
state_before: x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ 1 ≤ 4

tactic: simp [_root_.abs_of_nonneg (le_of_lt hx0)]
state_before: x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ abs' x ^ 1 = x

tactic: calc
  x ^ 3 ≤ x ^ 1 := pow_le_pow_of_le_one (le_of_lt hx0) hx (by decide)
  _ = x := pow_one _
state_before: case h₂.h
x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ x ^ 3 ≤ x

tactic: decide
state_before: x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ 1 ≤ 3

tactic: linarith
state_before: x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ x * (5 / 96) + x / 6 < x

tactic: rwa [_root_.abs_of_nonneg (le_of_lt hx0)]
state_before: x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ abs' x ≤ 1
Theorem: Real.Angle.nsmul_toReal_eq_mul
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: nth_rw 1 [← coe_toReal θ]
state_before: n : ℕ
h : n ≠ 0
θ : Angle
⊢ toReal (n • θ) = ↑n * toReal θ ↔ toReal θ ∈ Set.Ioc (-π / ↑n) (π / ↑n)

tactic: have h' : 0 < (n : ℝ) := by exact_mod_cast Nat.pos_of_ne_zero h
state_before: n : ℕ
h : n ≠ 0
θ : Angle
⊢ toReal (n • ↑(toReal θ)) = ↑n * toReal θ ↔ toReal θ ∈ Set.Ioc (-π / ↑n) (π / ↑n)

tactic: rw [← coe_nsmul, nsmul_eq_mul, toReal_coe_eq_self_iff, Set.mem_Ioc, div_lt_iff' h',
  le_div_iff' h']
state_before: n : ℕ
h : n ≠ 0
θ : Angle
h' : 0 < ↑n
⊢ toReal (n • ↑(toReal θ)) = ↑n * toReal θ ↔ toReal θ ∈ Set.Ioc (-π / ↑n) (π / ↑n)

tactic: exact_mod_cast Nat.pos_of_ne_zero h
state_before: n : ℕ
h : n ≠ 0
θ : Angle
⊢ 0 < ↑n
Theorem: MeasureTheory.diff_ae_eq_self
File: Mathlib/MeasureTheory/Measure/MeasureSpaceDef.lean

tactic: simp [eventuallyLE_antisymm_iff, ae_le_set, diff_diff_right, diff_diff,
  diff_eq_empty.2 (Set.subset_union_right _ _)]
state_before: α : Type u_1
β : Type ?u.106226
γ : Type ?u.106229
δ : Type ?u.106232
ι : Type ?u.106235
inst✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s s₁ s₂ t : Set α
⊢ s \ t =ᵐ[μ] s ↔ ↑↑μ (s ∩ t) = 0
Theorem: BilinForm.toMatrix'_mul
File: Mathlib/LinearAlgebra/Matrix/BilinearForm.lean

tactic: simp only [toMatrix'_compRight, toMatrix'_toLin']
state_before: R : Type ?u.903066
M✝ : Type ?u.903069
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M✝
inst✝¹⁶ : Module R M✝
R₁ : Type ?u.903105
M₁ : Type ?u.903108
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type ?u.903720
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.903907
M₃ : Type ?u.903910
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.904498
K : Type ?u.904501
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B✝ : BilinForm R M✝
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_2
o : Type ?u.905718
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : DecidableEq n
inst✝ : DecidableEq o
B : BilinForm R₂ (n → R₂)
M : Matrix n n R₂
⊢ ↑toMatrix' B ⬝ M = ↑toMatrix' (compRight B (↑Matrix.toLin' M))
Theorem: intervalIntegral.integral_hasDerivWithinAt_of_tendsto_ae_left
File: Mathlib/MeasureTheory/Integral/FundThmCalculus.lean

tactic: simp only [integral_symm b]
state_before: ι : Type ?u.1767200
𝕜 : Type ?u.1767203
E : Type u_1
F : Type ?u.1767209
A : Type ?u.1767212
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedSpace ℝ E
f : ℝ → E
c ca cb : E
l l' la la' lb lb' : Filter ℝ
lt : Filter ι
a b z : ℝ
u v ua ub va vb : ι → ℝ
inst✝² : FTCFilter a la la'
inst✝¹ : FTCFilter b lb lb'
hf : IntervalIntegrable f volume a b
s t : Set ℝ
inst✝ : FTCFilter a (𝓝[s] a) (𝓝[t] a)
hmeas : StronglyMeasurableAtFilter f (𝓝[t] a)
ha : Tendsto f (𝓝[t] a ⊓ Measure.ae volume) (𝓝 c)
⊢ HasDerivWithinAt (fun u => ∫ (x : ℝ) in u..b, f x) (-c) s a

tactic: exact (integral_hasDerivWithinAt_of_tendsto_ae_right hf.symm hmeas ha).neg
state_before: ι : Type ?u.1767200
𝕜 : Type ?u.1767203
E : Type u_1
F : Type ?u.1767209
A : Type ?u.1767212
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedSpace ℝ E
f : ℝ → E
c ca cb : E
l l' la la' lb lb' : Filter ℝ
lt : Filter ι
a b z : ℝ
u v ua ub va vb : ι → ℝ
inst✝² : FTCFilter a la la'
inst✝¹ : FTCFilter b lb lb'
hf : IntervalIntegrable f volume a b
s t : Set ℝ
inst✝ : FTCFilter a (𝓝[s] a) (𝓝[t] a)
hmeas : StronglyMeasurableAtFilter f (𝓝[t] a)
ha : Tendsto f (𝓝[t] a ⊓ Measure.ae volume) (𝓝 c)
⊢ HasDerivWithinAt (fun u => -∫ (x : ℝ) in b..u, f x) (-c) s a
Theorem: FractionalIdeal.eq_spanSingleton_mul
File: Mathlib/RingTheory/FractionalIdeal.lean

tactic: simp only [le_antisymm_iff, le_spanSingleton_mul_iff, spanSingleton_mul_le_iff]
state_before: R : Type u_1
inst✝⁷ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁶ : CommRing P
inst✝⁵ : Algebra R P
loc : IsLocalization S P
R₁ : Type ?u.1739872
inst✝⁴ : CommRing R₁
K : Type ?u.1739878
inst✝³ : Field K
inst✝² : Algebra R₁ K
inst✝¹ : IsFractionRing R₁ K
inst✝ : IsDomain R₁
x : P
I J : FractionalIdeal S P
⊢ I = spanSingleton S x * J ↔ (∀ (zI : P), zI ∈ I → ∃ zJ, zJ ∈ J ∧ x * zJ = zI) ∧ ∀ (z : P), z ∈ J → x * z ∈ I
Theorem: RatFunc.num_zero
File: Mathlib/FieldTheory/RatFunc.lean

tactic: convert num_div' (0 : K[X]) one_ne_zero <;> simp
state_before: K : Type u
inst✝ : Field K
⊢ num 0 = 0
Theorem: inv_pos_lt_iff_one_lt_mul'
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [inv_eq_one_div]
state_before: ι : Type ?u.41314
α : Type u_1
β : Type ?u.41320
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 0 < a
⊢ a⁻¹ < b ↔ 1 < a * b

tactic: exact div_lt_iff' ha
state_before: ι : Type ?u.41314
α : Type u_1
β : Type ?u.41320
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 0 < a
⊢ 1 / a < b ↔ 1 < a * b
Theorem: inner_lt_one_iff_real_of_norm_one
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: convert inner_lt_norm_mul_iff_real (F := F) <;> simp [hx, hy]
state_before: 𝕜 : Type ?u.3244202
E : Type ?u.3244205
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
x y : F
hx : ‖x‖ = 1
hy : ‖y‖ = 1
⊢ inner x y < 1 ↔ x ≠ y
Theorem: CompositionAsSet.blocks_sum
File: Mathlib/Combinatorics/Composition.lean

tactic: have : c.blocks.take c.length = c.blocks := take_all_of_le (by simp [blocks])
state_before: n : ℕ
c : CompositionAsSet n
⊢ sum (blocks c) = n

tactic: rw [← this, c.blocks_partial_sum c.length_lt_card_boundaries, c.boundary_length]
state_before: n : ℕ
c : CompositionAsSet n
this : take (length c) (blocks c) = blocks c
⊢ sum (blocks c) = n

tactic: rfl
state_before: n : ℕ
c : CompositionAsSet n
this : take (length c) (blocks c) = blocks c
⊢ ↑(Fin.last n) = n

tactic: simp [blocks]
state_before: n : ℕ
c : CompositionAsSet n
⊢ List.length (blocks c) ≤ length c
Theorem: MeasureTheory.JordanDecomposition.real_smul_posPart_nonneg
File: Mathlib/MeasureTheory/Decomposition/Jordan.lean

tactic: rw [real_smul_def, ← smul_posPart, if_pos hr]
state_before: α : Type u_1
β : Type ?u.11681
inst✝ : MeasurableSpace α
j : JordanDecomposition α
r : ℝ
hr : 0 ≤ r
⊢ (r • j).posPart = Real.toNNReal r • j.posPart
Theorem: Real.arccos_eq_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Inverse.lean

tactic: simp [arccos]
state_before: x : ℝ
⊢ arccos x = π / 2 ↔ x = 0
Theorem: Orthonormal.inner_products_summable
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: use ⨆ s : Finset ι, ∑ i in s, ‖⟪v i, x⟫‖ ^ 2
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.3502141
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
ι : Type u_3
x : E
v : ι → E
hv : Orthonormal 𝕜 v
⊢ Summable fun i => ‖inner (v i) x‖ ^ 2

tactic: apply hasSum_of_isLUB_of_nonneg
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.3502141
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
ι : Type u_3
x : E
v : ι → E
hv : Orthonormal 𝕜 v
⊢ HasSum (fun i => ‖inner (v i) x‖ ^ 2) (⨆ (s : Finset ι), ∑ i in s, ‖inner (v i) x‖ ^ 2)

tactic: intro b
state_before: case h
𝕜 : Type u_1
E : Type u_2
F : Type ?u.3502141
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
ι : Type u_3
x : E
v : ι → E
hv : Orthonormal 𝕜 v
⊢ ∀ (i : ι), 0 ≤ ‖inner (v i) x‖ ^ 2

tactic: simp only [norm_nonneg, pow_nonneg]
state_before: case h
𝕜 : Type u_1
E : Type u_2
F : Type ?u.3502141
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
ι : Type u_3
x : E
v : ι → E
hv : Orthonormal 𝕜 v
b : ι
⊢ 0 ≤ ‖inner (v b) x‖ ^ 2

tactic: refine' isLUB_ciSup _
state_before: case hf
𝕜 : Type u_1
E : Type u_2
F : Type ?u.3502141
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
ι : Type u_3
x : E
v : ι → E
hv : Orthonormal 𝕜 v
⊢ IsLUB (Set.range fun s => ∑ i in s, ‖inner (v i) x‖ ^ 2) (⨆ (s : Finset ι), ∑ i in s, ‖inner (v i) x‖ ^ 2)

tactic: use ‖x‖ ^ 2
state_before: case hf
𝕜 : Type u_1
E : Type u_2
F : Type ?u.3502141
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
ι : Type u_3
x : E
v : ι → E
hv : Orthonormal 𝕜 v
⊢ BddAbove (Set.range fun s => ∑ i in s, ‖inner (v i) x‖ ^ 2)

tactic: rintro y ⟨s, rfl⟩
state_before: case hf
𝕜 : Type u_1
E : Type u_2
F : Type ?u.3502141
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
ι : Type u_3
x : E
v : ι → E
hv : Orthonormal 𝕜 v
⊢ ‖x‖ ^ 2 ∈ upperBounds (Set.range fun s => ∑ i in s, ‖inner (v i) x‖ ^ 2)

tactic: exact hv.sum_inner_products_le x
state_before: case hf.intro
𝕜 : Type u_1
E : Type u_2
F : Type ?u.3502141
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
ι : Type u_3
x : E
v : ι → E
hv : Orthonormal 𝕜 v
s : Finset ι
⊢ (fun s => ∑ i in s, ‖inner (v i) x‖ ^ 2) s ≤ ‖x‖ ^ 2
Theorem: Num.lor'_to_nat
File: Mathlib/Data/Num/Lemmas.lean

tactic: apply bitwise'_to_nat fun x y => pos (PosNum.lor x y) <;> intros <;> cases_type* Bool <;> rfl
state_before: α : Type ?u.603128
⊢ ∀ (m n : Num), ↑(lor m n) = Nat.lor' ↑m ↑n
Theorem: isGδ_iInter_of_open
File: Mathlib/Topology/GDelta.lean

tactic: rwa [forall_range_iff]
state_before: α : Type u_2
β : Type ?u.1617
γ : Type ?u.1620
ι : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : Encodable ι
f : ι → Set α
hf : ∀ (i : ι), IsOpen (f i)
⊢ ∀ (t : Set α), t ∈ range f → IsOpen t

tactic: rw [sInter_range]
state_before: α : Type u_2
β : Type ?u.1617
γ : Type ?u.1620
ι : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : Encodable ι
f : ι → Set α
hf : ∀ (i : ι), IsOpen (f i)
⊢ (⋂ (i : ι), f i) = ⋂₀ range f
Theorem: BoxIntegral.Box.coe_mk'
File: Mathlib/Analysis/BoxIntegral/Box/Basic.lean

tactic: rw [mk']
state_before: ι : Type u_1
I J : Box ι
x y l u : ι → ℝ
⊢ ↑(mk' l u) = Set.pi univ fun i => Ioc (l i) (u i)

tactic: split_ifs with h
state_before: ι : Type u_1
I J : Box ι
x y l u : ι → ℝ
⊢ ↑(if h : ∀ (i : ι), l i < u i then ↑{ lower := l, upper := u, lower_lt_upper := h } else ⊥) =
    Set.pi univ fun i => Ioc (l i) (u i)

tactic: exact coe_eq_pi _
state_before: case inl
ι : Type u_1
I J : Box ι
x y l u : ι → ℝ
h : ∀ (i : ι), l i < u i
⊢ ↑↑{ lower := l, upper := u, lower_lt_upper := h } = Set.pi univ fun i => Ioc (l i) (u i)

tactic: rcases not_forall.mp h with ⟨i, hi⟩
state_before: case inr
ι : Type u_1
I J : Box ι
x y l u : ι → ℝ
h : ¬∀ (i : ι), l i < u i
⊢ ↑⊥ = Set.pi univ fun i => Ioc (l i) (u i)

tactic: rw [coe_bot, univ_pi_eq_empty]
state_before: case inr.intro
ι : Type u_1
I J : Box ι
x y l u : ι → ℝ
h : ¬∀ (i : ι), l i < u i
i : ι
hi : ¬l i < u i
⊢ ↑⊥ = Set.pi univ fun i => Ioc (l i) (u i)

tactic: exact Ioc_eq_empty hi
state_before: case inr.intro
ι : Type u_1
I J : Box ι
x y l u : ι → ℝ
h : ¬∀ (i : ι), l i < u i
i : ι
hi : ¬l i < u i
⊢ Ioc (l ?m.271838) (u ?m.271838) = ∅

ι : Type u_1
I J : Box ι
x y l u : ι → ℝ
h : ¬∀ (i : ι), l i < u i
i : ι
hi : ¬l i < u i
⊢ ι
Theorem: List.Func.add_nil
File: Mathlib/Data/List/Func.lean

tactic: rw [add, @pointwise_nil α α α ⟨0⟩ ⟨0⟩]
state_before: α✝ : Type u
β : Type v
γ : Type w
α : Type u
inst✝ : AddMonoid α
as : List α
⊢ add as [] = as

tactic: apply Eq.trans _ (map_id as)
state_before: α✝ : Type u
β : Type v
γ : Type w
α : Type u
inst✝ : AddMonoid α
as : List α
⊢ map (fun a => a + default) as = as

tactic: congr with x
state_before: α✝ : Type u
β : Type v
γ : Type w
α : Type u
inst✝ : AddMonoid α
as : List α
⊢ map (fun a => a + default) as = map id as

tactic: exact add_zero x
state_before: case e_f.h
α✝ : Type u
β : Type v
γ : Type w
α : Type u
inst✝ : AddMonoid α
as : List α
x : α
⊢ x + default = id x
Theorem: LiouvilleWith.rat_mul_iff
File: Mathlib/NumberTheory/Liouville/LiouvilleWith.lean

tactic: rw [mul_comm, mul_rat_iff hr]
state_before: p q x y : ℝ
r : ℚ
m : ℤ
n : ℕ
hr : r ≠ 0
⊢ LiouvilleWith p (↑r * x) ↔ LiouvilleWith p x
Theorem: Filter.tendsto_const_mul_atBot_of_neg
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: simpa only [neg_mul, tendsto_neg_atTop_iff] using tendsto_const_mul_atTop_of_pos (neg_pos.2 hr)
state_before: ι : Type ?u.230840
ι' : Type ?u.230843
α : Type u_1
β : Type u_2
γ : Type ?u.230852
inst✝ : LinearOrderedField α
l : Filter β
f : β → α
r : α
hr : r < 0
⊢ Tendsto (fun x => r * f x) l atBot ↔ Tendsto f l atTop
Theorem: Nat.digits_eq_nil_iff_eq_zero
File: Mathlib/Data/Nat/Digits.lean

tactic: constructor
state_before: n✝ b n : ℕ
⊢ digits b n = [] ↔ n = 0

tactic: intro h
state_before: case mp
n✝ b n : ℕ
⊢ digits b n = [] → n = 0

tactic: have : ofDigits b (digits b n) = ofDigits b [] := by rw [h]
state_before: case mp
n✝ b n : ℕ
h : digits b n = []
⊢ n = 0

tactic: convert this
state_before: case mp
n✝ b n : ℕ
h : digits b n = []
this : ofDigits b (digits b n) = ofDigits b []
⊢ n = 0

tactic: rw [ofDigits_digits]
state_before: case h.e'_2
n✝ b n : ℕ
h : digits b n = []
this : ofDigits b (digits b n) = ofDigits b []
⊢ n = ofDigits b (digits b n)

tactic: rw [h]
state_before: n✝ b n : ℕ
h : digits b n = []
⊢ ofDigits b (digits b n) = ofDigits b []

tactic: rintro rfl
state_before: case mpr
n✝ b n : ℕ
⊢ n = 0 → digits b n = []

tactic: simp
state_before: case mpr
n b : ℕ
⊢ digits b 0 = []
Theorem: Codisjoint.left_le_of_le_inf_left
File: Mathlib/Order/Disjoint.lean

tactic: rwa [inf_comm]
state_before: α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : OrderTop α
a b c : α
h : b ⊓ a ≤ c
hd : Codisjoint b c
⊢ a ⊓ b ≤ c
Theorem: Nat.sub_add_comm
File: Std/Data/Nat/Lemmas.lean

tactic: rw [Nat.sub_eq_iff_eq_add (Nat.le_trans h (Nat.le_add_right ..))]
state_before: n m k : Nat
h : k ≤ n
⊢ n + m - k = n - k + m

tactic: rwa [Nat.add_right_comm, Nat.sub_add_cancel]
state_before: n m k : Nat
h : k ≤ n
⊢ n + m = n - k + m + k
Theorem: Filter.Eventually.volume_pos_of_nhds_real
File: Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean

tactic: rcases h.exists_Ioo_subset with ⟨l, u, hx, hs⟩
state_before: ι : Type ?u.374914
inst✝ : Fintype ι
p : ℝ → Prop
a : ℝ
h : ∀ᶠ (x : ℝ) in 𝓝 a, p x
⊢ 0 < ↑↑volume {x | p x}

tactic: refine' lt_of_lt_of_le _ (measure_mono hs)
state_before: case intro.intro.intro
ι : Type ?u.374914
inst✝ : Fintype ι
p : ℝ → Prop
a : ℝ
h : ∀ᶠ (x : ℝ) in 𝓝 a, p x
l u : ℝ
hx : a ∈ Ioo l u
hs : Ioo l u ⊆ {x | p x}
⊢ 0 < ↑↑volume {x | p x}

tactic: simpa [-mem_Ioo] using hx.1.trans hx.2
state_before: case intro.intro.intro
ι : Type ?u.374914
inst✝ : Fintype ι
p : ℝ → Prop
a : ℝ
h : ∀ᶠ (x : ℝ) in 𝓝 a, p x
l u : ℝ
hx : a ∈ Ioo l u
hs : Ioo l u ⊆ {x | p x}
⊢ 0 < ↑↑volume (Ioo l u)