tasksource/leandojo huggingface dataset:
Theorem: List.length_pos_of_prod_ne_one
File: Mathlib/Data/List/BigOperators/Basic.lean

tactic: cases L
state_before: ι : Type ?u.58476
α : Type ?u.58479
M : Type u_1
N : Type ?u.58485
P : Type ?u.58488
M₀ : Type ?u.58491
G : Type ?u.58494
R : Type ?u.58497
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l l₁ l₂ : List M
a : M
L : List M
h : prod L ≠ 1
⊢ 0 < length L

tactic: contrapose h
state_before: case nil
ι : Type ?u.58476
α : Type ?u.58479
M : Type u_1
N : Type ?u.58485
P : Type ?u.58488
M₀ : Type ?u.58491
G : Type ?u.58494
R : Type ?u.58497
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l l₁ l₂ : List M
a : M
h : prod [] ≠ 1
⊢ 0 < length []

tactic: simp
state_before: case nil
ι : Type ?u.58476
α : Type ?u.58479
M : Type u_1
N : Type ?u.58485
P : Type ?u.58488
M₀ : Type ?u.58491
G : Type ?u.58494
R : Type ?u.58497
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l l₁ l₂ : List M
a : M
h : ¬0 < length []
⊢ ¬prod [] ≠ 1

tactic: simp
state_before: case cons
ι : Type ?u.58476
α : Type ?u.58479
M : Type u_1
N : Type ?u.58485
P : Type ?u.58488
M₀ : Type ?u.58491
G : Type ?u.58494
R : Type ?u.58497
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l l₁ l₂ : List M
a head✝ : M
tail✝ : List M
h : prod (head✝ :: tail✝) ≠ 1
⊢ 0 < length (head✝ :: tail✝)
Theorem: Int.bodd_add
File: Mathlib/Data/Int/Bitwise.lean

tactic: cases' m with m m <;>
cases' n with n n <;>
simp only [ofNat_eq_coe, ofNat_add_negSucc, negSucc_add_ofNat,
           negSucc_add_negSucc, bodd_subNatNat] <;>
simp only [negSucc_coe, bodd_neg, bodd_coe, ←Nat.bodd_add, Bool.xor_comm, ←Nat.cast_add]
state_before: m n : ℤ
⊢ bodd (m + n) = xor (bodd m) (bodd n)

tactic: rw [←Nat.succ_add, add_assoc]
state_before: case negSucc.negSucc
m n : ℕ
⊢ Nat.bodd (Nat.succ (m + n) + 1) = Nat.bodd (m + 1 + (n + 1))
Theorem: Pell.isPell_norm
File: Mathlib/NumberTheory/PellMatiyasevic.lean

tactic: simp [Zsqrtd.ext, IsPell, mul_comm]
state_before: d x y : ℤ
⊢ IsPell { re := x, im := y } ↔ { re := x, im := y } * star { re := x, im := y } = 1

tactic: ring_nf
state_before: d x y : ℤ
⊢ x * x - y * (d * y) = 1 ↔ x * x + -(y * (d * y)) = 1
Theorem: Set.MapsTo.iterate_restrict
File: Mathlib/Data/Set/Function.lean

tactic: funext x
state_before: α : Type u_1
β : Type ?u.18768
γ : Type ?u.18771
ι : Sort ?u.18774
π : α → Type ?u.18779
s✝ s₁ s₂ : Set α
t t₁ t₂ : Set β
p : Set γ
f✝ f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b : β
f : α → α
s : Set α
h : MapsTo f s s
n : ℕ
⊢ restrict f s s h^[n] = restrict (f^[n]) s s (_ : MapsTo (f^[n]) s s)

tactic: rw [Subtype.ext_iff, MapsTo.val_restrict_apply]
state_before: case h
α : Type u_1
β : Type ?u.18768
γ : Type ?u.18771
ι : Sort ?u.18774
π : α → Type ?u.18779
s✝ s₁ s₂ : Set α
t t₁ t₂ : Set β
p : Set γ
f✝ f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b : β
f : α → α
s : Set α
h : MapsTo f s s
n : ℕ
x : ↑s
⊢ (restrict f s s h^[n]) x = restrict (f^[n]) s s (_ : MapsTo (f^[n]) s s) x

tactic: induction' n with n ihn generalizing x
state_before: case h
α : Type u_1
β : Type ?u.18768
γ : Type ?u.18771
ι : Sort ?u.18774
π : α → Type ?u.18779
s✝ s₁ s₂ : Set α
t t₁ t₂ : Set β
p : Set γ
f✝ f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b : β
f : α → α
s : Set α
h : MapsTo f s s
n : ℕ
x : ↑s
⊢ ↑((restrict f s s h^[n]) x) = (f^[n]) ↑x

tactic: rfl
state_before: case h.zero
α : Type u_1
β : Type ?u.18768
γ : Type ?u.18771
ι : Sort ?u.18774
π : α → Type ?u.18779
s✝ s₁ s₂ : Set α
t t₁ t₂ : Set β
p : Set γ
f✝ f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b : β
f : α → α
s : Set α
h : MapsTo f s s
x✝ x : ↑s
⊢ ↑((restrict f s s h^[Nat.zero]) x) = (f^[Nat.zero]) ↑x

tactic: simp [Nat.iterate, ihn]
state_before: case h.succ
α : Type u_1
β : Type ?u.18768
γ : Type ?u.18771
ι : Sort ?u.18774
π : α → Type ?u.18779
s✝ s₁ s₂ : Set α
t t₁ t₂ : Set β
p : Set γ
f✝ f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b : β
f : α → α
s : Set α
h : MapsTo f s s
x✝ : ↑s
n : ℕ
ihn : ∀ (x : ↑s), ↑((restrict f s s h^[n]) x) = (f^[n]) ↑x
x : ↑s
⊢ ↑((restrict f s s h^[Nat.succ n]) x) = (f^[Nat.succ n]) ↑x
Theorem: homotopic_genLoopZeroEquiv_symm_iff
File: Mathlib/Topology/Homotopy/HomotopyGroup.lean

tactic: rw [GenLoop.Homotopic, Cube.boundary_zero, homotopicRel_empty]
state_before: X : Type u
inst✝ : TopologicalSpace X
n : ℕ
x a b : X
⊢ GenLoop.Homotopic (↑genLoopZeroEquiv.symm a) (↑genLoopZeroEquiv.symm b) ↔ Joined a b

tactic: exact homotopic_const_iff
state_before: X : Type u
inst✝ : TopologicalSpace X
n : ℕ
x a b : X
⊢ Homotopic (↑genLoopZeroEquiv.symm a).toContinuousMap (↑genLoopZeroEquiv.symm b).toContinuousMap ↔ Joined a b
Theorem: ZNum.neg_of_int
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [Int.cast_neg, Int.cast_zero]
state_before: α : Type ?u.1055224
⊢ ↑(-0) = -↑0
Theorem: CategoryTheory.Limits.biprod.total
File: Mathlib/CategoryTheory/Preadditive/Biproducts.lean

tactic: ext <;> simp [add_comp]
state_before: C : Type u
inst✝³ : Category C
inst✝² : Preadditive C
J : Type
inst✝¹ : Fintype J
X Y : C
inst✝ : HasBinaryBiproduct X Y
⊢ fst ≫ inl + snd ≫ inr = 𝟙 (X ⊞ Y)
Theorem: FreeSemigroup.length_map
File: Mathlib/Algebra/Free.lean

tactic: simp only [map_mul, length_mul, *]
state_before: α : Type u
β : Type v
f : α → β
x✝ : FreeSemigroup α
x : α
y : FreeSemigroup α
hx : length (↑(map f) (of x)) = length (of x)
hy : length (↑(map f) y) = length y
⊢ length (↑(map f) (of x * y)) = length (of x * y)
Theorem: Equiv.Perm.perm_inv_on_of_perm_on_finset
File: Mathlib/GroupTheory/Perm/Sign.lean

tactic: have h0 : ∀ y ∈ s, ∃ (x : _)(hx : x ∈ s), y = (fun i (_ : i ∈ s) => f i) x hx :=
  Finset.surj_on_of_inj_on_of_card_le (fun x hx => (fun i _ => f i) x hx) (fun a ha => h a ha)
    (fun a₁ a₂ ha₁ ha₂ heq => (Equiv.apply_eq_iff_eq f).mp heq) rfl.ge
state_before: α : Type u
β : Type v
s : Finset α
f : Perm α
h : ∀ (x : α), x ∈ s → ↑f x ∈ s
y : α
hy : y ∈ s
⊢ ↑f⁻¹ y ∈ s

tactic: obtain ⟨y2, hy2, heq⟩ := h0 y hy
state_before: α : Type u
β : Type v
s : Finset α
f : Perm α
h : ∀ (x : α), x ∈ s → ↑f x ∈ s
y : α
hy : y ∈ s
h0 : ∀ (y : α), y ∈ s → ∃ x hx, y = (fun i x => ↑f i) x hx
⊢ ↑f⁻¹ y ∈ s

tactic: convert hy2
state_before: case intro.intro
α : Type u
β : Type v
s : Finset α
f : Perm α
h : ∀ (x : α), x ∈ s → ↑f x ∈ s
y : α
hy : y ∈ s
h0 : ∀ (y : α), y ∈ s → ∃ x hx, y = (fun i x => ↑f i) x hx
y2 : α
hy2 : y2 ∈ s
heq : y = (fun i x => ↑f i) y2 hy2
⊢ ↑f⁻¹ y ∈ s

tactic: rw [heq]
state_before: case h.e'_4
α : Type u
β : Type v
s : Finset α
f : Perm α
h : ∀ (x : α), x ∈ s → ↑f x ∈ s
y : α
hy : y ∈ s
h0 : ∀ (y : α), y ∈ s → ∃ x hx, y = (fun i x => ↑f i) x hx
y2 : α
hy2 : y2 ∈ s
heq : y = (fun i x => ↑f i) y2 hy2
⊢ ↑f⁻¹ y = y2

tactic: simp only [inv_apply_self]
state_before: case h.e'_4
α : Type u
β : Type v
s : Finset α
f : Perm α
h : ∀ (x : α), x ∈ s → ↑f x ∈ s
y : α
hy : y ∈ s
h0 : ∀ (y : α), y ∈ s → ∃ x hx, y = (fun i x => ↑f i) x hx
y2 : α
hy2 : y2 ∈ s
heq : y = (fun i x => ↑f i) y2 hy2
⊢ ↑f⁻¹ ((fun i x => ↑f i) y2 hy2) = y2
Theorem: hasStrictFDerivAt_exp_zero_of_radius_pos
File: Mathlib/Analysis/SpecialFunctions/Exponential.lean

tactic: convert (hasFPowerSeriesAt_exp_zero_of_radius_pos h).hasStrictFDerivAt
state_before: 𝕂 : Type u_1
𝔸 : Type u_2
inst✝³ : NontriviallyNormedField 𝕂
inst✝² : NormedRing 𝔸
inst✝¹ : NormedAlgebra 𝕂 𝔸
inst✝ : CompleteSpace 𝔸
h : 0 < FormalMultilinearSeries.radius (expSeries 𝕂 𝔸)
⊢ HasStrictFDerivAt (exp 𝕂) 1 0

tactic: ext x
state_before: case h.e'_10
𝕂 : Type u_1
𝔸 : Type u_2
inst✝³ : NontriviallyNormedField 𝕂
inst✝² : NormedRing 𝔸
inst✝¹ : NormedAlgebra 𝕂 𝔸
inst✝ : CompleteSpace 𝔸
h : 0 < FormalMultilinearSeries.radius (expSeries 𝕂 𝔸)
⊢ 1 = ↑(continuousMultilinearCurryFin1 𝕂 𝔸 𝔸) (expSeries 𝕂 𝔸 1)

tactic: change x = expSeries 𝕂 𝔸 1 fun _ => x
state_before: case h.e'_10.h
𝕂 : Type u_1
𝔸 : Type u_2
inst✝³ : NontriviallyNormedField 𝕂
inst✝² : NormedRing 𝔸
inst✝¹ : NormedAlgebra 𝕂 𝔸
inst✝ : CompleteSpace 𝔸
h : 0 < FormalMultilinearSeries.radius (expSeries 𝕂 𝔸)
x : 𝔸
⊢ ↑1 x = ↑(↑(continuousMultilinearCurryFin1 𝕂 𝔸 𝔸) (expSeries 𝕂 𝔸 1)) x

tactic: simp [expSeries_apply_eq]
state_before: case h.e'_10.h
𝕂 : Type u_1
𝔸 : Type u_2
inst✝³ : NontriviallyNormedField 𝕂
inst✝² : NormedRing 𝔸
inst✝¹ : NormedAlgebra 𝕂 𝔸
inst✝ : CompleteSpace 𝔸
h : 0 < FormalMultilinearSeries.radius (expSeries 𝕂 𝔸)
x : 𝔸
⊢ x = ↑(expSeries 𝕂 𝔸 1) fun x_1 => x
Theorem: Matrix.updateColumn_subsingleton
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext x y
state_before: l : Type ?u.1221200
m : Type u_2
n : Type u_1
o : Type ?u.1221209
m' : o → Type ?u.1221214
n' : o → Type ?u.1221219
R : Type u_3
S : Type ?u.1221225
α : Type v
β : Type w
γ : Type ?u.1221232
M : Matrix m n α
i✝ : m
j : n
b✝ : n → α
c : m → α
inst✝ : Subsingleton n
A : Matrix m n R
i : n
b : m → R
⊢ updateColumn A i b = submatrix (col b) id (Function.const n ())

tactic: simp [updateColumn_apply, Subsingleton.elim i y]
state_before: case a.h
l : Type ?u.1221200
m : Type u_2
n : Type u_1
o : Type ?u.1221209
m' : o → Type ?u.1221214
n' : o → Type ?u.1221219
R : Type u_3
S : Type ?u.1221225
α : Type v
β : Type w
γ : Type ?u.1221232
M : Matrix m n α
i✝ : m
j : n
b✝ : n → α
c : m → α
inst✝ : Subsingleton n
A : Matrix m n R
i : n
b : m → R
x : m
y : n
⊢ updateColumn A i b x y = submatrix (col b) id (Function.const n ()) x y
Theorem: MvPolynomial.isWeightedHomogeneous_of_total_degree_zero
File: Mathlib/RingTheory/MvPolynomial/WeightedHomogeneous.lean

tactic: intro d hd
state_before: R : Type u_3
M : Type u_1
inst✝³ : CommSemiring R
σ : Type u_2
inst✝² : AddCommMonoid M
inst✝¹ : SemilatticeSup M
inst✝ : OrderBot M
w : σ → M
p : MvPolynomial σ R
hp : weightedTotalDegree w p = ⊥
⊢ IsWeightedHomogeneous w p ⊥

tactic: have h := weightedTotalDegree_coe w p (MvPolynomial.ne_zero_iff.mpr ⟨d, hd⟩)
state_before: R : Type u_3
M : Type u_1
inst✝³ : CommSemiring R
σ : Type u_2
inst✝² : AddCommMonoid M
inst✝¹ : SemilatticeSup M
inst✝ : OrderBot M
w : σ → M
p : MvPolynomial σ R
hp : weightedTotalDegree w p = ⊥
d : σ →₀ ℕ
hd : coeff d p ≠ 0
⊢ ↑(weightedDegree' w) d = ⊥

tactic: simp only [weightedTotalDegree', hp] at h
state_before: R : Type u_3
M : Type u_1
inst✝³ : CommSemiring R
σ : Type u_2
inst✝² : AddCommMonoid M
inst✝¹ : SemilatticeSup M
inst✝ : OrderBot M
w : σ → M
p : MvPolynomial σ R
hp : weightedTotalDegree w p = ⊥
d : σ →₀ ℕ
hd : coeff d p ≠ 0
h : weightedTotalDegree' w p = ↑(weightedTotalDegree w p)
⊢ ↑(weightedDegree' w) d = ⊥

tactic: rw [eq_bot_iff, ← WithBot.coe_le_coe, ← h]
state_before: R : Type u_3
M : Type u_1
inst✝³ : CommSemiring R
σ : Type u_2
inst✝² : AddCommMonoid M
inst✝¹ : SemilatticeSup M
inst✝ : OrderBot M
w : σ → M
p : MvPolynomial σ R
hp : weightedTotalDegree w p = ⊥
d : σ →₀ ℕ
hd : coeff d p ≠ 0
h : (sup (support p) fun s => ↑(↑(weightedDegree' w) s)) = ↑⊥
⊢ ↑(weightedDegree' w) d = ⊥

tactic: apply Finset.le_sup (mem_support_iff.mpr hd)
state_before: R : Type u_3
M : Type u_1
inst✝³ : CommSemiring R
σ : Type u_2
inst✝² : AddCommMonoid M
inst✝¹ : SemilatticeSup M
inst✝ : OrderBot M
w : σ → M
p : MvPolynomial σ R
hp : weightedTotalDegree w p = ⊥
d : σ →₀ ℕ
hd : coeff d p ≠ 0
h : (sup (support p) fun s => ↑(↑(weightedDegree' w) s)) = ↑⊥
⊢ ↑(↑(weightedDegree' w) d) ≤ sup (support p) fun s => ↑(↑(weightedDegree' w) s)
Theorem: Set.iInter_eq_compl_iUnion_compl
File: Mathlib/Data/Set/Lattice.lean

tactic: simp only [compl_iUnion, compl_compl]
state_before: α : Type ?u.69319
β : Type u_1
γ : Type ?u.69325
ι : Sort u_2
ι' : Sort ?u.69331
ι₂ : Sort ?u.69334
κ : ι → Sort ?u.69339
κ₁ : ι → Sort ?u.69344
κ₂ : ι → Sort ?u.69349
κ' : ι' → Sort ?u.69354
s : ι → Set β
⊢ (⋂ (i : ι), s i) = (⋃ (i : ι), s iᶜ)ᶜ
Theorem: Ring.inverse_star
File: Mathlib/Algebra/Star/Basic.lean

tactic: by_cases ha : IsUnit a
state_before: R : Type u
inst✝¹ : Semiring R
inst✝ : StarRing R
a : R
⊢ inverse (star a) = star (inverse a)

tactic: rw [Ring.inverse_non_unit _ ha, Ring.inverse_non_unit _ (mt isUnit_star.mp ha), star_zero]
state_before: case neg
R : Type u
inst✝¹ : Semiring R
inst✝ : StarRing R
a : R
ha : ¬IsUnit a
⊢ inverse (star a) = star (inverse a)

tactic: obtain ⟨u, rfl⟩ := ha
state_before: case pos
R : Type u
inst✝¹ : Semiring R
inst✝ : StarRing R
a : R
ha : IsUnit a
⊢ inverse (star a) = star (inverse a)

tactic: rw [Ring.inverse_unit, ← Units.coe_star, Ring.inverse_unit, ← Units.coe_star_inv]
state_before: case pos.intro
R : Type u
inst✝¹ : Semiring R
inst✝ : StarRing R
u : Rˣ
⊢ inverse (star ↑u) = star (inverse ↑u)
Theorem: addSalemSpencer_sphere
File: Mathlib/Combinatorics/Additive/SalemSpencer.lean

tactic: obtain rfl | hr := eq_or_ne r 0
state_before: F : Type ?u.119922
α : Type ?u.119925
β : Type ?u.119928
𝕜 : Type ?u.119931
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : StrictConvexSpace ℝ E
x : E
r : ℝ
⊢ AddSalemSpencer (sphere x r)

tactic: rw [sphere_zero]
state_before: case inl
F : Type ?u.119922
α : Type ?u.119925
β : Type ?u.119928
𝕜 : Type ?u.119931
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : StrictConvexSpace ℝ E
x : E
⊢ AddSalemSpencer (sphere x 0)

tactic: exact addSalemSpencer_singleton _
state_before: case inl
F : Type ?u.119922
α : Type ?u.119925
β : Type ?u.119928
𝕜 : Type ?u.119931
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : StrictConvexSpace ℝ E
x : E
⊢ AddSalemSpencer {x}

tactic: convert addSalemSpencer_frontier isClosed_ball (strictConvex_closedBall ℝ x r)
state_before: case inr
F : Type ?u.119922
α : Type ?u.119925
β : Type ?u.119928
𝕜 : Type ?u.119931
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : StrictConvexSpace ℝ E
x : E
r : ℝ
hr : r ≠ 0
⊢ AddSalemSpencer (sphere x r)

tactic: exact (frontier_closedBall _ hr).symm
state_before: case h.e'_3
F : Type ?u.119922
α : Type ?u.119925
β : Type ?u.119928
𝕜 : Type ?u.119931
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : StrictConvexSpace ℝ E
x : E
r : ℝ
hr : r ≠ 0
⊢ sphere x r = frontier (closedBall x r)
Theorem: mem_nhds_iff_exists_Ioo_subset'
File: Mathlib/Topology/Order/Basic.lean

tactic: constructor
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderTopology α
a : α
s : Set α
hl : ∃ l, l < a
hu : ∃ u, a < u
⊢ s ∈ 𝓝 a ↔ ∃ l u, a ∈ Ioo l u ∧ Ioo l u ⊆ s

tactic: intro h
state_before: case mp
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderTopology α
a : α
s : Set α
hl : ∃ l, l < a
hu : ∃ u, a < u
⊢ s ∈ 𝓝 a → ∃ l u, a ∈ Ioo l u ∧ Ioo l u ⊆ s

tactic: rcases exists_Ico_subset_of_mem_nhds h hu with ⟨u, au, hu⟩
state_before: case mp
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderTopology α
a : α
s : Set α
hl : ∃ l, l < a
hu : ∃ u, a < u
h : s ∈ 𝓝 a
⊢ ∃ l u, a ∈ Ioo l u ∧ Ioo l u ⊆ s

tactic: rcases exists_Ioc_subset_of_mem_nhds h hl with ⟨l, la, hl⟩
state_before: case mp.intro.intro
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderTopology α
a : α
s : Set α
hl : ∃ l, l < a
hu✝ : ∃ u, a < u
h : s ∈ 𝓝 a
u : α
au : a < u
hu : Ico a u ⊆ s
⊢ ∃ l u, a ∈ Ioo l u ∧ Ioo l u ⊆ s

tactic: exact ⟨l, u, ⟨la, au⟩, Ioc_union_Ico_eq_Ioo la au ▸ union_subset hl hu⟩
state_before: case mp.intro.intro.intro.intro
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderTopology α
a : α
s : Set α
hl✝ : ∃ l, l < a
hu✝ : ∃ u, a < u
h : s ∈ 𝓝 a
u : α
au : a < u
hu : Ico a u ⊆ s
l : α
la : l < a
hl : Ioc l a ⊆ s
⊢ ∃ l u, a ∈ Ioo l u ∧ Ioo l u ⊆ s

tactic: rintro ⟨l, u, ha, h⟩
state_before: case mpr
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderTopology α
a : α
s : Set α
hl : ∃ l, l < a
hu : ∃ u, a < u
⊢ (∃ l u, a ∈ Ioo l u ∧ Ioo l u ⊆ s) → s ∈ 𝓝 a

tactic: apply mem_of_superset (Ioo_mem_nhds ha.1 ha.2) h
state_before: case mpr.intro.intro.intro
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderTopology α
a : α
s : Set α
hl : ∃ l, l < a
hu : ∃ u, a < u
l u : α
ha : a ∈ Ioo l u
h : Ioo l u ⊆ s
⊢ s ∈ 𝓝 a
Theorem: Finsupp.neLocus_self_add_left
File: Mathlib/Data/Finsupp/NeLocus.lean

tactic: rw [neLocus_comm, neLocus_self_add_right]
state_before: α : Type u_1
M : Type ?u.35751
N : Type u_2
P : Type ?u.35757
inst✝² : DecidableEq α
inst✝¹ : DecidableEq N
inst✝ : AddGroup N
f f₁ f₂ g g₁ g₂ : α →₀ N
⊢ neLocus (f + g) f = g.support
Theorem: Convex.add_smul_mem
File: Mathlib/Analysis/Convex/Basic.lean

tactic: have h : x + t • y = (1 - t) • x + t • (x + y) := by
  rw [smul_add, ← add_assoc, ← add_smul, sub_add_cancel, one_smul]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.204606
β : Type ?u.204609
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t✝ : Set E
hs : Convex 𝕜 s
x y : E
hx : x ∈ s
hy : x + y ∈ s
t : 𝕜
ht : t ∈ Icc 0 1
⊢ x + t • y ∈ s

tactic: rw [h]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.204606
β : Type ?u.204609
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t✝ : Set E
hs : Convex 𝕜 s
x y : E
hx : x ∈ s
hy : x + y ∈ s
t : 𝕜
ht : t ∈ Icc 0 1
h : x + t • y = (1 - t) • x + t • (x + y)
⊢ x + t • y ∈ s

tactic: exact hs hx hy (sub_nonneg_of_le ht.2) ht.1 (sub_add_cancel _ _)
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.204606
β : Type ?u.204609
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t✝ : Set E
hs : Convex 𝕜 s
x y : E
hx : x ∈ s
hy : x + y ∈ s
t : 𝕜
ht : t ∈ Icc 0 1
h : x + t • y = (1 - t) • x + t • (x + y)
⊢ (1 - t) • x + t • (x + y) ∈ s

tactic: rw [smul_add, ← add_assoc, ← add_smul, sub_add_cancel, one_smul]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.204606
β : Type ?u.204609
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t✝ : Set E
hs : Convex 𝕜 s
x y : E
hx : x ∈ s
hy : x + y ∈ s
t : 𝕜
ht : t ∈ Icc 0 1
⊢ x + t • y = (1 - t) • x + t • (x + y)
Theorem: Matrix.mem_orthogonalGroup_iff
File: Mathlib/LinearAlgebra/UnitaryGroup.lean

tactic: refine' ⟨And.right, fun hA => ⟨_, hA⟩⟩
state_before: n : Type u
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
α : Type v
inst✝² : CommRing α
inst✝¹ : StarRing α
A✝ : Matrix n n α
β : Type v
inst✝ : CommRing β
A : Matrix n n β
⊢ A ∈ orthogonalGroup n β ↔ A * star A = 1

tactic: simpa only [mul_eq_mul, mul_eq_one_comm] using hA
state_before: n : Type u
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
α : Type v
inst✝² : CommRing α
inst✝¹ : StarRing α
A✝ : Matrix n n α
β : Type v
inst✝ : CommRing β
A : Matrix n n β
hA : A * star A = 1
⊢ star A * A = 1
Theorem: Complex.ofReal_bit1
File: Mathlib/Data/Complex/Basic.lean

tactic: simp [bit1]
state_before: r : ℝ
⊢ (↑(bit1 r)).re = (bit1 ↑r).re ∧ (↑(bit1 r)).im = (bit1 ↑r).im
Theorem: Filter.frequently_lt_of_lt_limsSup
File: Mathlib/Order/LiminfLimsup.lean

tactic: contrapose! h
state_before: α : Type u_1
β : Type ?u.185642
γ : Type ?u.185645
ι : Type ?u.185648
f : Filter α
inst✝ : ConditionallyCompleteLinearOrder α
a : α
hf : autoParam (IsCobounded (fun x x_1 => x ≤ x_1) f) _auto✝
h : a < limsSup f
⊢ ∃ᶠ (n : α) in f, a < n

tactic: simp only [not_frequently, not_lt] at h
state_before: α : Type u_1
β : Type ?u.185642
γ : Type ?u.185645
ι : Type ?u.185648
f : Filter α
inst✝ : ConditionallyCompleteLinearOrder α
a : α
hf : autoParam (IsCobounded (fun x x_1 => x ≤ x_1) f) _auto✝
h : ¬∃ᶠ (n : α) in f, a < n
⊢ limsSup f ≤ a

tactic: exact limsSup_le_of_le hf h
state_before: α : Type u_1
β : Type ?u.185642
γ : Type ?u.185645
ι : Type ?u.185648
f : Filter α
inst✝ : ConditionallyCompleteLinearOrder α
a : α
hf : autoParam (IsCobounded (fun x x_1 => x ≤ x_1) f) _auto✝
h : ∀ᶠ (x : α) in f, x ≤ a
⊢ limsSup f ≤ a
Theorem: CategoryTheory.Limits.coprod.map_swap
File: Mathlib/CategoryTheory/Limits/Shapes/BinaryProducts.lean

tactic: simp
state_before: C : Type u
inst✝¹ : Category C
X✝ Y✝ A B X Y : C
f : A ⟶ B
g : X ⟶ Y
inst✝ : HasColimitsOfShape (Discrete WalkingPair) C
⊢ map (𝟙 X) f ≫ map g (𝟙 B) = map g (𝟙 A) ≫ map (𝟙 Y) f
Theorem: Finset.sum_range_by_parts
File: Mathlib/Algebra/BigOperators/Intervals.lean

tactic: by_cases hn : n = 0
state_before: R : Type u_2
M : Type u_1
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : ℕ → R
g : ℕ → M
m n : ℕ
⊢ ∑ i in range n, f i • g i =
    f (n - 1) • ∑ i in range n, g i - ∑ i in range (n - 1), (f (i + 1) - f i) • ∑ i in range (i + 1), g i

tactic: simp [hn]
state_before: case pos
R : Type u_2
M : Type u_1
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : ℕ → R
g : ℕ → M
m n : ℕ
hn : n = 0
⊢ ∑ i in range n, f i • g i =
    f (n - 1) • ∑ i in range n, g i - ∑ i in range (n - 1), (f (i + 1) - f i) • ∑ i in range (i + 1), g i

tactic: rw [range_eq_Ico, sum_Ico_by_parts f g (Nat.pos_of_ne_zero hn), sum_range_zero, smul_zero,
  sub_zero, range_eq_Ico]
state_before: case neg
R : Type u_2
M : Type u_1
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : ℕ → R
g : ℕ → M
m n : ℕ
hn : ¬n = 0
⊢ ∑ i in range n, f i • g i =
    f (n - 1) • ∑ i in range n, g i - ∑ i in range (n - 1), (f (i + 1) - f i) • ∑ i in range (i + 1), g i
Theorem: finprod_mem_inter_mulSupport
File: Mathlib/Algebra/BigOperators/Finprod.lean

tactic: rw [finprod_mem_def, finprod_mem_def, mulIndicator_inter_mulSupport]
state_before: α : Type u_1
β : Type ?u.206039
ι : Type ?u.206042
G : Type ?u.206045
M : Type u_2
N : Type ?u.206051
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
s : Set α
⊢ (∏ᶠ (i : α) (_ : i ∈ s ∩ mulSupport f), f i) = ∏ᶠ (i : α) (_ : i ∈ s), f i
Theorem: List.drop_take
File: Mathlib/Data/List/Basic.lean

tactic: simp
state_before: ι : Type ?u.217889
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
n : ℕ
x✝ : List α
⊢ drop 0 (take (0 + n) x✝) = take n (drop 0 x✝)

tactic: simp
state_before: ι : Type ?u.217889
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
m n : ℕ
⊢ drop (m + 1) (take (m + 1 + n) []) = take n (drop (m + 1) [])

tactic: have h : m + 1 + n = m + n + 1 := by ac_rfl
state_before: ι : Type ?u.217889
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
m n : ℕ
head✝ : α
l : List α
⊢ drop (m + 1) (take (m + 1 + n) (head✝ :: l)) = take n (drop (m + 1) (head✝ :: l))

tactic: simpa [take_cons, h] using drop_take m n l
state_before: ι : Type ?u.217889
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
m n : ℕ
head✝ : α
l : List α
h : m + 1 + n = m + n + 1
⊢ drop (m + 1) (take (m + 1 + n) (head✝ :: l)) = take n (drop (m + 1) (head✝ :: l))

tactic: ac_rfl
state_before: ι : Type ?u.217889
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
m n : ℕ
head✝ : α
l : List α
⊢ m + 1 + n = m + n + 1