tasksource/leandojo huggingface dataset:
Theorem: Polynomial.degree_of_subsingleton
File: Mathlib/Data/Polynomial/Degree/Definitions.lean

tactic: rw [Subsingleton.elim p 0, degree_zero]
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝¹ : Semiring R
p q r : R[X]
inst✝ : Subsingleton R
⊢ degree p = ⊥
Theorem: Nat.ceil_natCast
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [ceil_le, cast_le]
state_before: F : Type ?u.50519
α : Type u_1
β : Type ?u.50525
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a✝ : α
n✝ n a : ℕ
⊢ ⌈↑n⌉₊ ≤ a ↔ n ≤ a
Theorem: differentiableAt_const_sub_iff
File: Mathlib/Analysis/Calculus/FDeriv/Add.lean

tactic: simp [sub_eq_add_neg]
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type ?u.553278
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.553373
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
c : F
⊢ DifferentiableAt 𝕜 (fun y => c - f y) x ↔ DifferentiableAt 𝕜 f x
Theorem: Finmap.ext
File: Mathlib/Data/Finmap.lean

tactic: congr
state_before: α : Type u
β : α → Type v
l₁ : Multiset (Sigma β)
h₁ : Multiset.NodupKeys l₁
l₂ : Multiset (Sigma β)
nodupKeys✝ : Multiset.NodupKeys l₂
H : { entries := l₁, nodupKeys := h₁ }.entries = { entries := l₂, nodupKeys := nodupKeys✝ }.entries
⊢ { entries := l₁, nodupKeys := h₁ } = { entries := l₂, nodupKeys := nodupKeys✝ }
Theorem: StrictMono.minimal_preimage_bot
File: Mathlib/Order/BoundedOrder.lean

tactic: rw [h_bot]
state_before: α : Type u
β : Type v
γ : Type ?u.24778
δ : Type ?u.24781
inst✝² : LinearOrder α
inst✝¹ : PartialOrder β
inst✝ : OrderBot β
f : α → β
H : StrictMono f
a : α
h_bot : f a = ⊥
x : α
p : β
⊢ f a ≤ p

tactic: exact bot_le
state_before: α : Type u
β : Type v
γ : Type ?u.24778
δ : Type ?u.24781
inst✝² : LinearOrder α
inst✝¹ : PartialOrder β
inst✝ : OrderBot β
f : α → β
H : StrictMono f
a : α
h_bot : f a = ⊥
x : α
p : β
⊢ ⊥ ≤ p
Theorem: Basis.exists_op_norm_le
File: Mathlib/Analysis/NormedSpace/FiniteDimension.lean

tactic: obtain ⟨C, hC, h⟩ := v.exists_op_nnnorm_le (F := F)
state_before: 𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
v : Basis ι 𝕜 E
⊢ ∃ C, C > 0 ∧ ∀ {u : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : ι), ‖↑u (↑v i)‖ ≤ M) → ‖u‖ ≤ C * M

tactic: refine ⟨C, hC, ?_⟩
state_before: case intro.intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
v : Basis ι 𝕜 E
C : ℝ≥0
hC : C > 0
h : ∀ {u : E →L[𝕜] F} (M : ℝ≥0), (∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M) → ‖u‖₊ ≤ C * M
⊢ ∃ C, C > 0 ∧ ∀ {u : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : ι), ‖↑u (↑v i)‖ ≤ M) → ‖u‖ ≤ C * M

tactic: intro u M hM H
state_before: case intro.intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
v : Basis ι 𝕜 E
C : ℝ≥0
hC : C > 0
h : ∀ {u : E →L[𝕜] F} (M : ℝ≥0), (∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M) → ‖u‖₊ ≤ C * M
⊢ ∀ {u : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : ι), ‖↑u (↑v i)‖ ≤ M) → ‖u‖ ≤ ↑C * M

tactic: simpa using h ⟨M, hM⟩ H
state_before: case intro.intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
v : Basis ι 𝕜 E
C : ℝ≥0
hC : C > 0
h : ∀ {u : E →L[𝕜] F} (M : ℝ≥0), (∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M) → ‖u‖₊ ≤ C * M
u : E →L[𝕜] F
M : ℝ
hM : 0 ≤ M
H : ∀ (i : ι), ‖↑u (↑v i)‖ ≤ M
⊢ ‖u‖ ≤ ↑C * M
Theorem: CategoryTheory.tensorRightHomEquiv_naturality
File: Mathlib/CategoryTheory/Monoidal/Rigid/Basic.lean

tactic: dsimp [tensorRightHomEquiv]
state_before: C : Type u₁
inst✝² : Category C
inst✝¹ : MonoidalCategory C
X Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
g : Z ⟶ Z'
⊢ ↑(tensorRightHomEquiv X Y Y' Z') (f ≫ g) = ↑(tensorRightHomEquiv X Y Y' Z) f ≫ (g ⊗ 𝟙 Y')

tactic: simp only [comp_tensor_id, Category.assoc]
state_before: C : Type u₁
inst✝² : Category C
inst✝¹ : MonoidalCategory C
X Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
g : Z ⟶ Z'
⊢ (ρ_ X).inv ≫ (𝟙 X ⊗ η_ Y Y') ≫ (α_ X Y Y').inv ≫ (f ≫ g ⊗ 𝟙 Y') =
    ((ρ_ X).inv ≫ (𝟙 X ⊗ η_ Y Y') ≫ (α_ X Y Y').inv ≫ (f ⊗ 𝟙 Y')) ≫ (g ⊗ 𝟙 Y')
Theorem: Quaternion.im_sq
File: Mathlib/Algebra/Quaternion.lean

tactic: simp_rw [sq, ← star_mul_self, im_star, neg_mul, neg_neg]
state_before: S : Type ?u.771397
T : Type ?u.771400
R : Type u_1
inst✝ : CommRing R
r x y z : R
a b c : ℍ[R]
⊢ im a ^ 2 = -↑(↑normSq (im a))
Theorem: Trivialization.apply_eq_prod_continuousLinearEquivAt
File: Mathlib/Topology/VectorBundle/Basic.lean

tactic: ext
state_before: R : Type u_4
B : Type u_1
F : Type u_2
E : B → Type u_3
inst✝⁹ : NontriviallyNormedField R
inst✝⁸ : (x : B) → AddCommMonoid (E x)
inst✝⁷ : (x : B) → Module R (E x)
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace R F
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace (TotalSpace E)
inst✝² : (x : B) → TopologicalSpace (E x)
inst✝¹ : FiberBundle F E
e : Trivialization F TotalSpace.proj
inst✝ : Trivialization.IsLinear R e
b : B
hb : b ∈ e.baseSet
z : E b
⊢ ↑e { fst := b, snd := z } = (b, ↑(continuousLinearEquivAt R e b hb) z)

tactic: refine' e.coe_fst _
state_before: case h₁
R : Type u_4
B : Type u_1
F : Type u_2
E : B → Type u_3
inst✝⁹ : NontriviallyNormedField R
inst✝⁸ : (x : B) → AddCommMonoid (E x)
inst✝⁷ : (x : B) → Module R (E x)
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace R F
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace (TotalSpace E)
inst✝² : (x : B) → TopologicalSpace (E x)
inst✝¹ : FiberBundle F E
e : Trivialization F TotalSpace.proj
inst✝ : Trivialization.IsLinear R e
b : B
hb : b ∈ e.baseSet
z : E b
⊢ (↑e { fst := b, snd := z }).fst = (b, ↑(continuousLinearEquivAt R e b hb) z).fst

tactic: rw [e.source_eq]
state_before: case h₁
R : Type u_4
B : Type u_1
F : Type u_2
E : B → Type u_3
inst✝⁹ : NontriviallyNormedField R
inst✝⁸ : (x : B) → AddCommMonoid (E x)
inst✝⁷ : (x : B) → Module R (E x)
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace R F
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace (TotalSpace E)
inst✝² : (x : B) → TopologicalSpace (E x)
inst✝¹ : FiberBundle F E
e : Trivialization F TotalSpace.proj
inst✝ : Trivialization.IsLinear R e
b : B
hb : b ∈ e.baseSet
z : E b
⊢ { fst := b, snd := z } ∈ e.source

tactic: exact hb
state_before: case h₁
R : Type u_4
B : Type u_1
F : Type u_2
E : B → Type u_3
inst✝⁹ : NontriviallyNormedField R
inst✝⁸ : (x : B) → AddCommMonoid (E x)
inst✝⁷ : (x : B) → Module R (E x)
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace R F
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace (TotalSpace E)
inst✝² : (x : B) → TopologicalSpace (E x)
inst✝¹ : FiberBundle F E
e : Trivialization F TotalSpace.proj
inst✝ : Trivialization.IsLinear R e
b : B
hb : b ∈ e.baseSet
z : E b
⊢ { fst := b, snd := z } ∈ TotalSpace.proj ⁻¹' e.baseSet

tactic: simp only [coe_coe, continuousLinearEquivAt_apply]
state_before: case h₂
R : Type u_4
B : Type u_1
F : Type u_2
E : B → Type u_3
inst✝⁹ : NontriviallyNormedField R
inst✝⁸ : (x : B) → AddCommMonoid (E x)
inst✝⁷ : (x : B) → Module R (E x)
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace R F
inst✝⁴ : TopologicalSpace B
inst✝³ : TopologicalSpace (TotalSpace E)
inst✝² : (x : B) → TopologicalSpace (E x)
inst✝¹ : FiberBundle F E
e : Trivialization F TotalSpace.proj
inst✝ : Trivialization.IsLinear R e
b : B
hb : b ∈ e.baseSet
z : E b
⊢ (↑e { fst := b, snd := z }).snd = (b, ↑(continuousLinearEquivAt R e b hb) z).snd
Theorem: Set.iUnion_image_left
File: Mathlib/Data/Set/Lattice.lean

tactic: ext y
state_before: α : Type u_2
β : Type u_3
γ : Type u_1
ι : Sort ?u.244602
ι' : Sort ?u.244605
ι₂ : Sort ?u.244608
κ : ι → Sort ?u.244613
κ₁ : ι → Sort ?u.244618
κ₂ : ι → Sort ?u.244623
κ' : ι' → Sort ?u.244628
f : α → β → γ
s : Set α
t : Set β
⊢ (⋃ (a : α) (_ : a ∈ s), f a '' t) = image2 f s t

tactic: constructor <;> simp only [mem_iUnion] <;> rintro ⟨a, ha, x, hx, ax⟩ <;> exact ⟨a, x, ha, hx, ax⟩
state_before: case h
α : Type u_2
β : Type u_3
γ : Type u_1
ι : Sort ?u.244602
ι' : Sort ?u.244605
ι₂ : Sort ?u.244608
κ : ι → Sort ?u.244613
κ₁ : ι → Sort ?u.244618
κ₂ : ι → Sort ?u.244623
κ' : ι' → Sort ?u.244628
f : α → β → γ
s : Set α
t : Set β
y : γ
⊢ (y ∈ ⋃ (a : α) (_ : a ∈ s), f a '' t) ↔ y ∈ image2 f s t
Theorem: Real.range_exp
File: Mathlib/Analysis/SpecialFunctions/Exp.lean

tactic: rw [← coe_comp_expOrderIso, range_comp, expOrderIso.range_eq, image_univ, Subtype.range_coe]
state_before: α : Type ?u.52919
x y z : ℝ
l : Filter α
⊢ Set.range exp = Set.Ioi 0
Theorem: Subgroup.card_quotient_dvd_card
File: Mathlib/GroupTheory/Coset.lean

tactic: simp [card_eq_card_quotient_mul_card_subgroup s, @dvd_mul_right ℕ]
state_before: α : Type u_1
inst✝² : Group α
s✝ t : Subgroup α
inst✝¹ : Fintype α
s : Subgroup α
inst✝ : DecidablePred fun x => x ∈ s
⊢ Fintype.card (α ⧸ s) ∣ Fintype.card α
Theorem: Fin.castSucc_pos
File: Mathlib/Data/Fin/Basic.lean

tactic: simpa [lt_iff_val_lt_val] using h
state_before: n m : ℕ
inst✝ : NeZero n
i : Fin n
h : 0 < i
⊢ 0 < ↑castSucc i
Theorem: Decidable.or_congr_left'
File: Std/Logic.lean

tactic: rw [or_iff_not_imp_right, or_iff_not_imp_right]
state_before: c a b : Prop
inst✝ : Decidable c
h : ¬c → (a ↔ b)
⊢ a ∨ c ↔ b ∨ c

tactic: exact imp_congr_right h
state_before: c a b : Prop
inst✝ : Decidable c
h : ¬c → (a ↔ b)
⊢ ¬c → a ↔ ¬c → b
Theorem: Ordinal.iSup_lt_lift
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: rw [← ord_lt_ord, iSup_ord (Cardinal.bddAbove_range.{u, v} _)]
state_before: α : Type ?u.30918
r : α → α → Prop
ι : Type u
f : ι → Cardinal
c : Cardinal
hι : Cardinal.lift (#ι) < cof (ord c)
hf : ∀ (i : ι), f i < c
⊢ iSup f < c

tactic: refine' sup_lt_ord_lift hι fun i => _
state_before: α : Type ?u.30918
r : α → α → Prop
ι : Type u
f : ι → Cardinal
c : Cardinal
hι : Cardinal.lift (#ι) < cof (ord c)
hf : ∀ (i : ι), f i < c
⊢ (⨆ (i : ι), ord (f i)) < ord c

tactic: rw [ord_lt_ord]
state_before: α : Type ?u.30918
r : α → α → Prop
ι : Type u
f : ι → Cardinal
c : Cardinal
hι : Cardinal.lift (#ι) < cof (ord c)
hf : ∀ (i : ι), f i < c
i : ι
⊢ ord (f i) < ord c

tactic: apply hf
state_before: α : Type ?u.30918
r : α → α → Prop
ι : Type u
f : ι → Cardinal
c : Cardinal
hι : Cardinal.lift (#ι) < cof (ord c)
hf : ∀ (i : ι), f i < c
i : ι
⊢ f i < c
Theorem: LieModuleHom.coe_linear_mk
File: Mathlib/Algebra/Lie/Basic.lean

tactic: rfl
state_before: R : Type u
L : Type v
M : Type w
N : Type w₁
P : Type w₂
inst✝¹⁴ : CommRing R
inst✝¹³ : LieRing L
inst✝¹² : LieAlgebra R L
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup N
inst✝⁹ : AddCommGroup P
inst✝⁸ : Module R M
inst✝⁷ : Module R N
inst✝⁶ : Module R P
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieRingModule L N
inst✝³ : LieRingModule L P
inst✝² : LieModule R L M
inst✝¹ : LieModule R L N
inst✝ : LieModule R L P
f : M →ₗ[R] N
h : ∀ {x : L} {m : M}, AddHom.toFun f.toAddHom ⁅x, m⁆ = ⁅x, AddHom.toFun f.toAddHom m⁆
⊢ ↑{ toLinearMap := f, map_lie' := h } = f
Theorem: LinearPMap.IsClosable.closure_isClosed
File: Mathlib/Topology/Algebra/Module/LinearPMap.lean

tactic: rw [IsClosed, ← hf.graph_closure_eq_closure_graph]
state_before: R : Type u_1
E : Type u_2
F : Type u_3
inst✝¹¹ : CommRing R
inst✝¹⁰ : AddCommGroup E
inst✝⁹ : AddCommGroup F
inst✝⁸ : Module R E
inst✝⁷ : Module R F
inst✝⁶ : TopologicalSpace E
inst✝⁵ : TopologicalSpace F
inst✝⁴ : ContinuousAdd E
inst✝³ : ContinuousAdd F
inst✝² : TopologicalSpace R
inst✝¹ : ContinuousSMul R E
inst✝ : ContinuousSMul R F
f : E →ₗ.[R] F
hf : IsClosable f
⊢ IsClosed (closure f)

tactic: exact f.graph.isClosed_topologicalClosure
state_before: R : Type u_1
E : Type u_2
F : Type u_3
inst✝¹¹ : CommRing R
inst✝¹⁰ : AddCommGroup E
inst✝⁹ : AddCommGroup F
inst✝⁸ : Module R E
inst✝⁷ : Module R F
inst✝⁶ : TopologicalSpace E
inst✝⁵ : TopologicalSpace F
inst✝⁴ : ContinuousAdd E
inst✝³ : ContinuousAdd F
inst✝² : TopologicalSpace R
inst✝¹ : ContinuousSMul R E
inst✝ : ContinuousSMul R F
f : E →ₗ.[R] F
hf : IsClosable f
⊢ _root_.IsClosed ↑(Submodule.topologicalClosure (graph f))
Theorem: Colex.forall_lt_of_colex_lt_of_forall_lt
File: Mathlib/Combinatorics/Colex.lean

tactic: rw [Colex.lt_def] at h₁
state_before: α : Type u_1
inst✝ : LinearOrder α
A B : Finset α
t : α
h₁ : toColex A < toColex B
h₂ : ∀ (x : α), x ∈ B → x < t
⊢ ∀ (x : α), x ∈ A → x < t

tactic: rcases h₁ with ⟨k, z, _, _⟩
state_before: α : Type u_1
inst✝ : LinearOrder α
A B : Finset α
t : α
h₁ : ∃ k, (∀ {x : α}, k < x → (x ∈ A ↔ x ∈ B)) ∧ ¬k ∈ A ∧ k ∈ B
h₂ : ∀ (x : α), x ∈ B → x < t
⊢ ∀ (x : α), x ∈ A → x < t

tactic: intro x hx
state_before: case intro.intro.intro
α : Type u_1
inst✝ : LinearOrder α
A B : Finset α
t : α
h₂ : ∀ (x : α), x ∈ B → x < t
k : α
z : ∀ {x : α}, k < x → (x ∈ A ↔ x ∈ B)
left✝ : ¬k ∈ A
right✝ : k ∈ B
⊢ ∀ (x : α), x ∈ A → x < t

tactic: apply lt_of_not_ge
state_before: case intro.intro.intro
α : Type u_1
inst✝ : LinearOrder α
A B : Finset α
t : α
h₂ : ∀ (x : α), x ∈ B → x < t
k : α
z : ∀ {x : α}, k < x → (x ∈ A ↔ x ∈ B)
left✝ : ¬k ∈ A
right✝ : k ∈ B
x : α
hx : x ∈ A
⊢ x < t

tactic: intro a
state_before: case intro.intro.intro.h
α : Type u_1
inst✝ : LinearOrder α
A B : Finset α
t : α
h₂ : ∀ (x : α), x ∈ B → x < t
k : α
z : ∀ {x : α}, k < x → (x ∈ A ↔ x ∈ B)
left✝ : ¬k ∈ A
right✝ : k ∈ B
x : α
hx : x ∈ A
⊢ ¬x ≥ t

tactic: refine' not_lt_of_ge a (h₂ x _)
state_before: case intro.intro.intro.h
α : Type u_1
inst✝ : LinearOrder α
A B : Finset α
t : α
h₂ : ∀ (x : α), x ∈ B → x < t
k : α
z : ∀ {x : α}, k < x → (x ∈ A ↔ x ∈ B)
left✝ : ¬k ∈ A
right✝ : k ∈ B
x : α
hx : x ∈ A
a : x ≥ t
⊢ False

tactic: rwa [← z]
state_before: case intro.intro.intro.h
α : Type u_1
inst✝ : LinearOrder α
A B : Finset α
t : α
h₂ : ∀ (x : α), x ∈ B → x < t
k : α
z : ∀ {x : α}, k < x → (x ∈ A ↔ x ∈ B)
left✝ : ¬k ∈ A
right✝ : k ∈ B
x : α
hx : x ∈ A
a : x ≥ t
⊢ x ∈ B

tactic: apply lt_of_lt_of_le (h₂ k ‹_›) a
state_before: case intro.intro.intro.h
α : Type u_1
inst✝ : LinearOrder α
A B : Finset α
t : α
h₂ : ∀ (x : α), x ∈ B → x < t
k : α
z : ∀ {x : α}, k < x → (x ∈ A ↔ x ∈ B)
left✝ : ¬k ∈ A
right✝ : k ∈ B
x : α
hx : x ∈ A
a : x ≥ t
⊢ k < x
Theorem: Nat.triangle_succ
File: Mathlib/Data/Nat/Choose/Basic.lean

tactic: rw [← add_mul_div_left, mul_comm 2 n, ← mul_add, add_tsub_cancel_right, mul_comm]
state_before: n : ℕ
⊢ (n + 1) * (n + 1 - 1) / 2 = n * (n - 1) / 2 + n

tactic: cases n <;> rfl
state_before: n : ℕ
⊢ n * (n + 1) / 2 = n * (n - 1 + 2) / 2

case H
n : ℕ
⊢ 0 < 2

tactic: apply zero_lt_succ
state_before: case H
n : ℕ
⊢ 0 < 2
Theorem: Fin.nndist_insertNth_insertNth
File: Mathlib/Topology/MetricSpace/Basic.lean

tactic: simp [nndist_pi_le_iff, i.forall_iff_succAbove]
state_before: α✝ : Type u
β : Type v
X : Type ?u.407920
ι : Type ?u.407923
inst✝³ : PseudoMetricSpace α✝
π : β → Type ?u.407931
inst✝² : Fintype β
inst✝¹ : (b : β) → PseudoMetricSpace (π b)
n : ℕ
α : Fin (n + 1) → Type u_1
inst✝ : (i : Fin (n + 1)) → PseudoMetricSpace (α i)
i : Fin (n + 1)
x y : α i
f g : (j : Fin n) → α (↑(succAbove i) j)
c : ℝ≥0
⊢ nndist (insertNth i x f) (insertNth i y g) ≤ c ↔ max (nndist x y) (nndist f g) ≤ c
Theorem: ENNReal.rpow_le_self_of_le_one
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: nth_rw 2 [← ENNReal.rpow_one x]
state_before: x : ℝ≥0∞
z : ℝ
hx : x ≤ 1
h_one_le : 1 ≤ z
⊢ x ^ z ≤ x

tactic: exact ENNReal.rpow_le_rpow_of_exponent_ge hx h_one_le
state_before: x : ℝ≥0∞
z : ℝ
hx : x ≤ 1
h_one_le : 1 ≤ z
⊢ x ^ z ≤ x ^ 1
Theorem: Finset.exists_smaller_set
File: Mathlib/Data/Finset/Card.lean

tactic: simpa
state_before: α : Type u_1
β : Type ?u.45242
s t : Finset α
f : α → β
n : ℕ
A : Finset α
i : ℕ
h₁ : i ≤ card A
⊢ i + card ∅ ≤ card A
Theorem: SameRay.exists_eq_smul_add
File: Mathlib/LinearAlgebra/Ray.lean

tactic: rcases h with (rfl | rfl | ⟨r₁, r₂, h₁, h₂, H⟩)
state_before: R : Type u_1
inst✝² : LinearOrderedField R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y v₁ v₂ : M
h : SameRay R v₁ v₂
⊢ ∃ a b, 0 ≤ a ∧ 0 ≤ b ∧ a + b = 1 ∧ v₁ = a • (v₁ + v₂) ∧ v₂ = b • (v₁ + v₂)

tactic: use 0, 1
state_before: case inl
R : Type u_1
inst✝² : LinearOrderedField R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y v₂ : M
⊢ ∃ a b, 0 ≤ a ∧ 0 ≤ b ∧ a + b = 1 ∧ 0 = a • (0 + v₂) ∧ v₂ = b • (0 + v₂)

tactic: simp
state_before: case inl
R : Type u_1
inst✝² : LinearOrderedField R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y v₂ : M
⊢ 0 ≤ 0 ∧ 0 ≤ 1 ∧ 0 + 1 = 1 ∧ 0 = 0 • (0 + v₂) ∧ v₂ = 1 • (0 + v₂)

tactic: use 1, 0
state_before: case inr.inl
R : Type u_1
inst✝² : LinearOrderedField R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y v₁ : M
⊢ ∃ a b, 0 ≤ a ∧ 0 ≤ b ∧ a + b = 1 ∧ v₁ = a • (v₁ + 0) ∧ 0 = b • (v₁ + 0)

tactic: simp
state_before: case inr.inl
R : Type u_1
inst✝² : LinearOrderedField R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y v₁ : M
⊢ 0 ≤ 1 ∧ 0 ≤ 0 ∧ 1 + 0 = 1 ∧ v₁ = 1 • (v₁ + 0) ∧ 0 = 0 • (v₁ + 0)

tactic: have h₁₂ : 0 < r₁ + r₂ := add_pos h₁ h₂
state_before: case inr.inr.intro.intro.intro.intro
R : Type u_1
inst✝² : LinearOrderedField R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y v₁ v₂ : M
r₁ r₂ : R
h₁ : 0 < r₁
h₂ : 0 < r₂
H : r₁ • v₁ = r₂ • v₂
⊢ ∃ a b, 0 ≤ a ∧ 0 ≤ b ∧ a + b = 1 ∧ v₁ = a • (v₁ + v₂) ∧ v₂ = b • (v₁ + v₂)

tactic: refine'
  ⟨r₂ / (r₁ + r₂), r₁ / (r₁ + r₂), div_nonneg h₂.le h₁₂.le, div_nonneg h₁.le h₁₂.le, _, _, _⟩
state_before: case inr.inr.intro.intro.intro.intro
R : Type u_1
inst✝² : LinearOrderedField R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y v₁ v₂ : M
r₁ r₂ : R
h₁ : 0 < r₁
h₂ : 0 < r₂
H : r₁ • v₁ = r₂ • v₂
h₁₂ : 0 < r₁ + r₂
⊢ ∃ a b, 0 ≤ a ∧ 0 ≤ b ∧ a + b = 1 ∧ v₁ = a • (v₁ + v₂) ∧ v₂ = b • (v₁ + v₂)

tactic: rw [← add_div, add_comm, div_self h₁₂.ne']
state_before: case inr.inr.intro.intro.intro.intro.refine'_1
R : Type u_1
inst✝² : LinearOrderedField R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y v₁ v₂ : M
r₁ r₂ : R
h₁ : 0 < r₁
h₂ : 0 < r₂
H : r₁ • v₁ = r₂ • v₂
h₁₂ : 0 < r₁ + r₂
⊢ r₂ / (r₁ + r₂) + r₁ / (r₁ + r₂) = 1

tactic: rw [div_eq_inv_mul, mul_smul, smul_add, ← H, ← add_smul, add_comm r₂, inv_smul_smul₀ h₁₂.ne']
state_before: case inr.inr.intro.intro.intro.intro.refine'_2
R : Type u_1
inst✝² : LinearOrderedField R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y v₁ v₂ : M
r₁ r₂ : R
h₁ : 0 < r₁
h₂ : 0 < r₂
H : r₁ • v₁ = r₂ • v₂
h₁₂ : 0 < r₁ + r₂
⊢ v₁ = (r₂ / (r₁ + r₂)) • (v₁ + v₂)

tactic: rw [div_eq_inv_mul, mul_smul, smul_add, H, ← add_smul, add_comm r₂, inv_smul_smul₀ h₁₂.ne']
state_before: case inr.inr.intro.intro.intro.intro.refine'_3
R : Type u_1
inst✝² : LinearOrderedField R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
x y v₁ v₂ : M
r₁ r₂ : R
h₁ : 0 < r₁
h₂ : 0 < r₂
H : r₁ • v₁ = r₂ • v₂
h₁₂ : 0 < r₁ + r₂
⊢ v₂ = (r₁ / (r₁ + r₂)) • (v₁ + v₂)
Theorem: Fin.coe_fin_one
File: Mathlib/Data/Fin/Basic.lean

tactic: simp [Subsingleton.elim a 0]
state_before: n m : ℕ
a : Fin 1
⊢ ↑a = 0
Theorem: ManifoldWithCorners.metrizableSpace
File: Mathlib/Geometry/Manifold/Metrizable.lean

tactic: haveI := I.locally_compact
state_before: E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
H : Type u_2
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
inst✝¹ : SigmaCompactSpace M
inst✝ : T2Space M
⊢ MetrizableSpace M

tactic: haveI := ChartedSpace.locallyCompact H M
state_before: E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
H : Type u_2
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
inst✝¹ : SigmaCompactSpace M
inst✝ : T2Space M
this : LocallyCompactSpace H
⊢ MetrizableSpace M

tactic: haveI : NormalSpace M := normal_of_paracompact_t2
state_before: E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
H : Type u_2
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
inst✝¹ : SigmaCompactSpace M
inst✝ : T2Space M
this✝ : LocallyCompactSpace H
this : LocallyCompactSpace M
⊢ MetrizableSpace M

tactic: haveI := I.secondCountableTopology
state_before: E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
H : Type u_2
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
inst✝¹ : SigmaCompactSpace M
inst✝ : T2Space M
this✝¹ : LocallyCompactSpace H
this✝ : LocallyCompactSpace M
this : NormalSpace M
⊢ MetrizableSpace M

tactic: haveI := ChartedSpace.secondCountable_of_sigma_compact H M
state_before: E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
H : Type u_2
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
inst✝¹ : SigmaCompactSpace M
inst✝ : T2Space M
this✝² : LocallyCompactSpace H
this✝¹ : LocallyCompactSpace M
this✝ : NormalSpace M
this : SecondCountableTopology H
⊢ MetrizableSpace M

tactic: exact metrizableSpace_of_t3_second_countable M
state_before: E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
H : Type u_2
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type u_3
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
inst✝¹ : SigmaCompactSpace M
inst✝ : T2Space M
this✝³ : LocallyCompactSpace H
this✝² : LocallyCompactSpace M
this✝¹ : NormalSpace M
this✝ : SecondCountableTopology H
this : SecondCountableTopology M
⊢ MetrizableSpace M
Theorem: Submodule.mem_ideal_smul_span_iff_exists_sum'
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: rw [← Submodule.mem_ideal_smul_span_iff_exists_sum, ← Set.image_eq_range]
state_before: R : Type u
M : Type v
F : Type ?u.155008
G : Type ?u.155011
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
I J : Ideal R
N P : Submodule R M
S : Set R
T : Set M
M' : Type w
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
ι : Type u_1
s : Set ι
f : ι → M
x : M
⊢ x ∈ I • span R (f '' s) ↔ ∃ a x_1, (Finsupp.sum a fun i c => c • f ↑i) = x
Theorem: PiNat.exists_retraction_of_isClosed
File: Mathlib/Topology/MetricSpace/PiNat.lean

tactic: rcases exists_lipschitz_retraction_of_isClosed hs hne with ⟨f, fs, frange, hf⟩
state_before: E : ℕ → Type u_1
inst✝¹ : (n : ℕ) → TopologicalSpace (E n)
inst✝ : ∀ (n : ℕ), DiscreteTopology (E n)
s : Set ((n : ℕ) → E n)
hs : IsClosed s
hne : Set.Nonempty s
⊢ ∃ f, (∀ (x : (n : ℕ) → E n), x ∈ s → f x = x) ∧ range f = s ∧ Continuous f

tactic: exact ⟨f, fs, frange, hf.continuous⟩
state_before: case intro.intro.intro
E : ℕ → Type u_1
inst✝¹ : (n : ℕ) → TopologicalSpace (E n)
inst✝ : ∀ (n : ℕ), DiscreteTopology (E n)
s : Set ((n : ℕ) → E n)
hs : IsClosed s
hne : Set.Nonempty s
f : ((n : ℕ) → E n) → (n : ℕ) → E n
fs : ∀ (x : (n : ℕ) → E n), x ∈ s → f x = x
frange : range f = s
hf : LipschitzWith 1 f
⊢ ∃ f, (∀ (x : (n : ℕ) → E n), x ∈ s → f x = x) ∧ range f = s ∧ Continuous f