tasksource/leandojo huggingface dataset:
Theorem: mem_nhdsWithin_Ici_iff_exists_Icc_subset
File: Mathlib/Topology/Order/Basic.lean

tactic: rw [mem_nhdsWithin_Ici_iff_exists_Ico_subset]
state_before: α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : LinearOrder α
inst✝² : OrderTopology α
inst✝¹ : NoMaxOrder α
inst✝ : DenselyOrdered α
a : α
s : Set α
⊢ s ∈ 𝓝[Ici a] a ↔ ∃ u, a < u ∧ Icc a u ⊆ s

tactic: constructor
state_before: α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : LinearOrder α
inst✝² : OrderTopology α
inst✝¹ : NoMaxOrder α
inst✝ : DenselyOrdered α
a : α
s : Set α
⊢ (∃ u, u ∈ Ioi a ∧ Ico a u ⊆ s) ↔ ∃ u, a < u ∧ Icc a u ⊆ s

tactic: rintro ⟨u, au, as⟩
state_before: case mp
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : LinearOrder α
inst✝² : OrderTopology α
inst✝¹ : NoMaxOrder α
inst✝ : DenselyOrdered α
a : α
s : Set α
⊢ (∃ u, u ∈ Ioi a ∧ Ico a u ⊆ s) → ∃ u, a < u ∧ Icc a u ⊆ s

tactic: rcases exists_between au with ⟨v, hv⟩
state_before: case mp.intro.intro
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : LinearOrder α
inst✝² : OrderTopology α
inst✝¹ : NoMaxOrder α
inst✝ : DenselyOrdered α
a : α
s : Set α
u : α
au : u ∈ Ioi a
as : Ico a u ⊆ s
⊢ ∃ u, a < u ∧ Icc a u ⊆ s

tactic: exact ⟨v, hv.1, fun x hx => as ⟨hx.1, lt_of_le_of_lt hx.2 hv.2⟩⟩
state_before: case mp.intro.intro.intro
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : LinearOrder α
inst✝² : OrderTopology α
inst✝¹ : NoMaxOrder α
inst✝ : DenselyOrdered α
a : α
s : Set α
u : α
au : u ∈ Ioi a
as : Ico a u ⊆ s
v : α
hv : a < v ∧ v < u
⊢ ∃ u, a < u ∧ Icc a u ⊆ s

tactic: rintro ⟨u, au, as⟩
state_before: case mpr
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : LinearOrder α
inst✝² : OrderTopology α
inst✝¹ : NoMaxOrder α
inst✝ : DenselyOrdered α
a : α
s : Set α
⊢ (∃ u, a < u ∧ Icc a u ⊆ s) → ∃ u, u ∈ Ioi a ∧ Ico a u ⊆ s

tactic: exact ⟨u, au, Subset.trans Ico_subset_Icc_self as⟩
state_before: case mpr.intro.intro
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : LinearOrder α
inst✝² : OrderTopology α
inst✝¹ : NoMaxOrder α
inst✝ : DenselyOrdered α
a : α
s : Set α
u : α
au : a < u
as : Icc a u ⊆ s
⊢ ∃ u, u ∈ Ioi a ∧ Ico a u ⊆ s
Theorem: List.asString_eq
File: Mathlib/Data/String/Basic.lean

tactic: rw [← asString_inv_toList s, asString_inj, asString_inv_toList s]
state_before: l : List Char
s : String
⊢ asString l = s ↔ l = toList s
Theorem: Antitone.cauchySeq_series_mul_of_tendsto_zero_of_bounded
File: Mathlib/Analysis/SpecificLimits/Normed.lean

tactic: have hfa' : Monotone fun n ↦ -f n := fun _ _ hab ↦ neg_le_neg <| hfa hab
state_before: α : Type ?u.1506622
β : Type ?u.1506625
ι : Type ?u.1506628
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
b : ℝ
f : ℕ → ℝ
z : ℕ → E
hfa : Antitone f
hf0 : Tendsto f atTop (𝓝 0)
hzb : ∀ (n : ℕ), ‖∑ i in Finset.range n, z i‖ ≤ b
⊢ CauchySeq fun n => ∑ i in Finset.range (n + 1), f i • z i

tactic: have hf0' : Tendsto (fun n ↦ -f n) atTop (𝓝 0) := by
  convert hf0.neg
  norm_num
state_before: α : Type ?u.1506622
β : Type ?u.1506625
ι : Type ?u.1506628
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
b : ℝ
f : ℕ → ℝ
z : ℕ → E
hfa : Antitone f
hf0 : Tendsto f atTop (𝓝 0)
hzb : ∀ (n : ℕ), ‖∑ i in Finset.range n, z i‖ ≤ b
hfa' : Monotone fun n => -f n
⊢ CauchySeq fun n => ∑ i in Finset.range (n + 1), f i • z i

tactic: convert (hfa'.cauchySeq_series_mul_of_tendsto_zero_of_bounded hf0' hzb).neg
state_before: α : Type ?u.1506622
β : Type ?u.1506625
ι : Type ?u.1506628
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
b : ℝ
f : ℕ → ℝ
z : ℕ → E
hfa : Antitone f
hf0 : Tendsto f atTop (𝓝 0)
hzb : ∀ (n : ℕ), ‖∑ i in Finset.range n, z i‖ ≤ b
hfa' : Monotone fun n => -f n
hf0' : Tendsto (fun n => -f n) atTop (𝓝 0)
⊢ CauchySeq fun n => ∑ i in Finset.range (n + 1), f i • z i

tactic: funext
state_before: case h.e'_5.h
α : Type ?u.1506622
β : Type ?u.1506625
ι : Type ?u.1506628
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
b : ℝ
f : ℕ → ℝ
z : ℕ → E
hfa : Antitone f
hf0 : Tendsto f atTop (𝓝 0)
hzb : ∀ (n : ℕ), ‖∑ i in Finset.range n, z i‖ ≤ b
hfa' : Monotone fun n => -f n
hf0' : Tendsto (fun n => -f n) atTop (𝓝 0)
x✝ : ℕ
⊢ ∑ i in Finset.range (x✝ + 1), f i • z i = (-fun n => ∑ i in Finset.range (n + 1), -f i • z i) x✝

tactic: simp
state_before: case h.e'_5.h
α : Type ?u.1506622
β : Type ?u.1506625
ι : Type ?u.1506628
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
b : ℝ
f : ℕ → ℝ
z : ℕ → E
hfa : Antitone f
hf0 : Tendsto f atTop (𝓝 0)
hzb : ∀ (n : ℕ), ‖∑ i in Finset.range n, z i‖ ≤ b
hfa' : Monotone fun n => -f n
hf0' : Tendsto (fun n => -f n) atTop (𝓝 0)
x✝ : ℕ
⊢ ∑ i in Finset.range (x✝ + 1), f i • z i = (-fun n => ∑ i in Finset.range (n + 1), -f i • z i) x✝

tactic: convert hf0.neg
state_before: α : Type ?u.1506622
β : Type ?u.1506625
ι : Type ?u.1506628
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
b : ℝ
f : ℕ → ℝ
z : ℕ → E
hfa : Antitone f
hf0 : Tendsto f atTop (𝓝 0)
hzb : ∀ (n : ℕ), ‖∑ i in Finset.range n, z i‖ ≤ b
hfa' : Monotone fun n => -f n
⊢ Tendsto (fun n => -f n) atTop (𝓝 0)

tactic: norm_num
state_before: case h.e'_5.h.e'_3
α : Type ?u.1506622
β : Type ?u.1506625
ι : Type ?u.1506628
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
b : ℝ
f : ℕ → ℝ
z : ℕ → E
hfa : Antitone f
hf0 : Tendsto f atTop (𝓝 0)
hzb : ∀ (n : ℕ), ‖∑ i in Finset.range n, z i‖ ≤ b
hfa' : Monotone fun n => -f n
⊢ 0 = -0
Theorem: CategoryTheory.GrothendieckTopology.intersection_covering
File: Mathlib/CategoryTheory/Sites/Grothendieck.lean

tactic: apply J.transitive rj _ fun Y f Hf => _
state_before: C : Type u
inst✝ : Category C
X Y : C
S R : Sieve X
J : GrothendieckTopology C
rj : R ∈ sieves J X
sj : S ∈ sieves J X
⊢ R ⊓ S ∈ sieves J X

tactic: intros Y f hf
state_before: C : Type u
inst✝ : Category C
X Y : C
S R : Sieve X
J : GrothendieckTopology C
rj : R ∈ sieves J X
sj : S ∈ sieves J X
⊢ ∀ (Y : C) (f : Y ⟶ X), R.arrows f → Sieve.pullback f (R ⊓ S) ∈ sieves J Y

tactic: rw [Sieve.pullback_inter, R.pullback_eq_top_of_mem hf]
state_before: C : Type u
inst✝ : Category C
X Y✝ : C
S R : Sieve X
J : GrothendieckTopology C
rj : R ∈ sieves J X
sj : S ∈ sieves J X
Y : C
f : Y ⟶ X
hf : R.arrows f
⊢ Sieve.pullback f (R ⊓ S) ∈ sieves J Y

tactic: simp [sj]
state_before: C : Type u
inst✝ : Category C
X Y✝ : C
S R : Sieve X
J : GrothendieckTopology C
rj : R ∈ sieves J X
sj : S ∈ sieves J X
Y : C
f : Y ⟶ X
hf : R.arrows f
⊢ ⊤ ⊓ Sieve.pullback f S ∈ sieves J Y
Theorem: Set.image_subset
File: Mathlib/Data/Set/Image.lean

tactic: simp only [subset_def, mem_image]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.28925
ι : Sort ?u.28928
ι' : Sort ?u.28931
f✝ : α → β
s t a b : Set α
f : α → β
h : a ⊆ b
⊢ f '' a ⊆ f '' b

tactic: exact fun x => fun ⟨w, h1, h2⟩ => ⟨w, h h1, h2⟩
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.28925
ι : Sort ?u.28928
ι' : Sort ?u.28931
f✝ : α → β
s t a b : Set α
f : α → β
h : a ⊆ b
⊢ ∀ (x : β), (∃ x_1, x_1 ∈ a ∧ f x_1 = x) → ∃ x_1, x_1 ∈ b ∧ f x_1 = x
Theorem: MeasureTheory.withDensityᵥ_neg
File: Mathlib/MeasureTheory/Measure/WithDensityVectorMeasure.lean

tactic: by_cases hf : Integrable f μ
state_before: α : Type u_1
β : Type ?u.26390
m : MeasurableSpace α
μ ν : Measure α
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : α → E
⊢ withDensityᵥ μ (-f) = -withDensityᵥ μ f

tactic: ext1 i hi
state_before: case pos
α : Type u_1
β : Type ?u.26390
m : MeasurableSpace α
μ ν : Measure α
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : α → E
hf : Integrable f
⊢ withDensityᵥ μ (-f) = -withDensityᵥ μ f

tactic: rw [VectorMeasure.neg_apply, withDensityᵥ_apply hf hi, ← integral_neg,
  withDensityᵥ_apply hf.neg hi]
state_before: case pos.h
α : Type u_1
β : Type ?u.26390
m : MeasurableSpace α
μ ν : Measure α
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : α → E
hf : Integrable f
i : Set α
hi : MeasurableSet i
⊢ ↑(withDensityᵥ μ (-f)) i = ↑(-withDensityᵥ μ f) i

tactic: rfl
state_before: case pos.h
α : Type u_1
β : Type ?u.26390
m : MeasurableSpace α
μ ν : Measure α
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : α → E
hf : Integrable f
i : Set α
hi : MeasurableSet i
⊢ (∫ (x : α) in i, (-f) x ∂μ) = ∫ (a : α) in i, -f a ∂μ

tactic: rw [withDensityᵥ, withDensityᵥ, dif_neg hf, dif_neg, neg_zero]
state_before: case neg
α : Type u_1
β : Type ?u.26390
m : MeasurableSpace α
μ ν : Measure α
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : α → E
hf : ¬Integrable f
⊢ withDensityᵥ μ (-f) = -withDensityᵥ μ f

tactic: rwa [integrable_neg_iff]
state_before: case neg.hnc
α : Type u_1
β : Type ?u.26390
m : MeasurableSpace α
μ ν : Measure α
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : α → E
hf : ¬Integrable f
⊢ ¬Integrable (-f)
Theorem: UniversalEnvelopingAlgebra.lift_ι_apply'
File: Mathlib/Algebra/Lie/UniversalEnveloping.lean

tactic: simpa using lift_ι_apply R f x
state_before: R : Type u₁
L : Type u₂
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
A : Type u₃
inst✝¹ : Ring A
inst✝ : Algebra R A
f : L →ₗ⁅R⁆ A
x : L
⊢ ↑(↑(lift R) f) (↑(mkAlgHom R L) (↑ιₜ x)) = ↑f x
Theorem: Pmf.toMeasure_map_apply
File: Mathlib/Probability/ProbabilityMassFunction/Constructions.lean

tactic: rw [toMeasure_apply_eq_toOuterMeasure_apply _ s hs,
  toMeasure_apply_eq_toOuterMeasure_apply _ (f ⁻¹' s) (measurableSet_preimage hf hs)]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.44831
f : α → β
p : Pmf α
b : β
s : Set β
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
hf : Measurable f
hs : MeasurableSet s
⊢ ↑↑(toMeasure (map f p)) s = ↑↑(toMeasure p) (f ⁻¹' s)

tactic: exact toOuterMeasure_map_apply f p s
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.44831
f : α → β
p : Pmf α
b : β
s : Set β
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
hf : Measurable f
hs : MeasurableSet s
⊢ ↑(toOuterMeasure (map f p)) s = ↑(toOuterMeasure p) (f ⁻¹' s)
Theorem: LieSubmodule.inf_lie
File: Mathlib/Algebra/Lie/IdealOperations.lean

tactic: rw [le_inf_iff]
state_before: R : Type u
L : Type v
M : Type w
M₂ : Type w₁
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N N' : LieSubmodule R L M
I J : LieIdeal R L
N₂ : LieSubmodule R L M₂
⊢ ⁅I ⊓ J, N⁆ ≤ ⁅I, N⁆ ⊓ ⁅J, N⁆

tactic: constructor <;>
apply mono_lie_left <;> [exact inf_le_left; exact inf_le_right]
state_before: R : Type u
L : Type v
M : Type w
M₂ : Type w₁
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N N' : LieSubmodule R L M
I J : LieIdeal R L
N₂ : LieSubmodule R L M₂
⊢ ⁅I ⊓ J, N⁆ ≤ ⁅I, N⁆ ∧ ⁅I ⊓ J, N⁆ ≤ ⁅J, N⁆
Theorem: eq_or_eq_neg_of_abs_eq
File: Mathlib/Algebra/Order/Group/Abs.lean

tactic: simpa only [← h, eq_comm (a := |a|), neg_eq_iff_eq_neg] using abs_choice a
state_before: α : Type u_1
inst✝¹ : AddGroup α
inst✝ : LinearOrder α
a b : α
h : abs a = b
⊢ a = b ∨ a = -b
Theorem: Matrix.dotProduct_stdBasis_one
File: Mathlib/LinearAlgebra/Matrix/DotProduct.lean

tactic: rw [dotProduct_stdBasis_eq_mul, mul_one]
state_before: R : Type v
n : Type w
inst✝² : Semiring R
inst✝¹ : Fintype n
inst✝ : DecidableEq n
v : n → R
i : n
⊢ v ⬝ᵥ ↑(LinearMap.stdBasis R (fun x => R) i) 1 = v i
Theorem: Finset.mem_smul_finset
File: Mathlib/Data/Finset/Pointwise.lean

tactic: simp only [Finset.smul_finset_def, and_assoc, mem_image, exists_prop, Prod.exists, mem_product]
state_before: F : Type ?u.715334
α : Type u_2
β : Type u_1
γ : Type ?u.715343
inst✝¹ : DecidableEq β
inst✝ : SMul α β
s s₁ s₂ t u : Finset β
a : α
b x : β
⊢ x ∈ a • s ↔ ∃ y, y ∈ s ∧ a • y = x
Theorem: Finset.prod_disjUnion
File: Mathlib/Algebra/BigOperators/Basic.lean

tactic: refine' Eq.trans _ (fold_disjUnion h)
state_before: ι : Type ?u.281798
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : CommMonoid β
h : Disjoint s₁ s₂
⊢ ∏ x in disjUnion s₁ s₂ h, f x = (∏ x in s₁, f x) * ∏ x in s₂, f x

tactic: rw [one_mul]
state_before: ι : Type ?u.281798
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : CommMonoid β
h : Disjoint s₁ s₂
⊢ ∏ x in disjUnion s₁ s₂ h, f x = fold (fun x x_1 => x * x_1) (1 * 1) (fun x => f x) (disjUnion s₁ s₂ h)

tactic: rfl
state_before: ι : Type ?u.281798
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : CommMonoid β
h : Disjoint s₁ s₂
⊢ ∏ x in disjUnion s₁ s₂ h, f x = fold (fun x x_1 => x * x_1) 1 (fun x => f x) (disjUnion s₁ s₂ h)
Theorem: Set.insert_inter_of_mem
File: Mathlib/Data/Set/Basic.lean

tactic: rw [insert_inter_distrib, insert_eq_of_mem h]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s s₁ s₂ t t₁ t₂ u : Set α
h : a ∈ t
⊢ insert a s ∩ t = insert a (s ∩ t)
Theorem: CategoryTheory.NatIso.cancel_natIso_hom_right_assoc
File: Mathlib/CategoryTheory/NatIso.lean

tactic: simp only [← Category.assoc, cancel_mono, refl]
state_before: C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
E : Type u₃
inst✝ : Category E
F G : C ⥤ D
α : F ≅ G
W X X' : D
Y : C
f : W ⟶ X
g : X ⟶ F.obj Y
f' : W ⟶ X'
g' : X' ⟶ F.obj Y
⊢ f ≫ g ≫ α.hom.app Y = f' ≫ g' ≫ α.hom.app Y ↔ f ≫ g = f' ≫ g'
Theorem: ZMod.int_cast_zmod_cast
File: Mathlib/Data/ZMod/Basic.lean

tactic: cases n
state_before: n : ℕ
R : Type ?u.25159
a : ZMod n
⊢ ↑↑a = a

tactic: simp [ZMod.cast, ZMod]
state_before: case zero
R : Type ?u.25159
a : ZMod Nat.zero
⊢ ↑↑a = a

tactic: dsimp [ZMod.cast, ZMod]
state_before: case succ
R : Type ?u.25159
n✝ : ℕ
a : ZMod (Nat.succ n✝)
⊢ ↑↑a = a

tactic: erw [Int.cast_ofNat, Fin.cast_val_eq_self]
state_before: case succ
R : Type ?u.25159
n✝ : ℕ
a : ZMod (Nat.succ n✝)
⊢ ↑↑(val a) = a
Theorem: tsub_tsub
File: Mathlib/Algebra/Order/Sub/Defs.lean

tactic: apply le_antisymm
state_before: α : Type u_1
β : Type ?u.31044
inst✝³ : PartialOrder α
inst✝² : AddCommSemigroup α
inst✝¹ : Sub α
inst✝ : OrderedSub α
a✝ b✝ c✝ d b a c : α
⊢ b - a - c = b - (a + c)

tactic: rw [tsub_le_iff_left, tsub_le_iff_left, ← add_assoc, ← tsub_le_iff_left]
state_before: case a
α : Type u_1
β : Type ?u.31044
inst✝³ : PartialOrder α
inst✝² : AddCommSemigroup α
inst✝¹ : Sub α
inst✝ : OrderedSub α
a✝ b✝ c✝ d b a c : α
⊢ b - a - c ≤ b - (a + c)

tactic: rw [tsub_le_iff_left, add_assoc, ← tsub_le_iff_left, ← tsub_le_iff_left]
state_before: case a
α : Type u_1
β : Type ?u.31044
inst✝³ : PartialOrder α
inst✝² : AddCommSemigroup α
inst✝¹ : Sub α
inst✝ : OrderedSub α
a✝ b✝ c✝ d b a c : α
⊢ b - (a + c) ≤ b - a - c
Theorem: dist_mul_self_right
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: rw [← dist_one_left, ← dist_mul_right 1 a b, one_mul]
state_before: 𝓕 : Type ?u.55420
𝕜 : Type ?u.55423
α : Type ?u.55426
ι : Type ?u.55429
κ : Type ?u.55432
E : Type u_1
F : Type ?u.55438
G : Type ?u.55441
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a✝ a₁ a₂ b✝ b₁ b₂ : E
r r₁ r₂ : ℝ
a b : E
⊢ dist b (a * b) = ‖a‖
Theorem: Set.image_finset_prod_pi
File: Mathlib/Data/Set/Pointwise/BigOperators.lean

tactic: ext
state_before: ι : Type u_1
α : Type u_2
β : Type ?u.87145
F : Type ?u.87148
inst✝² : CommMonoid α
inst✝¹ : CommMonoid β
inst✝ : MonoidHomClass F α β
l : Finset ι
S : ι → Set α
⊢ (fun f => ∏ i in l, f i) '' pi (↑l) S = ∏ i in l, S i

tactic: simp_rw [mem_finset_prod, mem_image, mem_pi, exists_prop, Finset.mem_coe]
state_before: case h
ι : Type u_1
α : Type u_2
β : Type ?u.87145
F : Type ?u.87148
inst✝² : CommMonoid α
inst✝¹ : CommMonoid β
inst✝ : MonoidHomClass F α β
l : Finset ι
S : ι → Set α
x✝ : α
⊢ x✝ ∈ (fun f => ∏ i in l, f i) '' pi (↑l) S ↔ x✝ ∈ ∏ i in l, S i
Theorem: interior_Icc
File: Mathlib/Topology/Order/Basic.lean

tactic: rw [← Ici_inter_Iic, interior_inter, interior_Ici, interior_Iic, Ioi_inter_Iio]
state_before: α : Type u
β : Type v
γ : Type w
inst✝⁵ : TopologicalSpace α
inst✝⁴ : LinearOrder α
inst✝³ : OrderTopology α
inst✝² : DenselyOrdered α
a✝ b✝ : α
s : Set α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
a b : α
⊢ interior (Icc a b) = Ioo a b
Theorem: PFunctor.M.eq_of_bisim
File: Mathlib/Data/PFunctor/Univariate/M.lean

tactic: inhabit M F
state_before: F : PFunctor
X : Type ?u.71783
f : X → Obj F X
R : M F → M F → Prop
inst✝ : Nonempty (M F)
bisim : IsBisimulation R
⊢ ∀ (s₁ s₂ : M F), R s₁ s₂ → s₁ = s₂

tactic: introv Hr
state_before: F : PFunctor
X : Type ?u.71783
f : X → Obj F X
R : M F → M F → Prop
inst✝ : Nonempty (M F)
bisim : IsBisimulation R
inhabited_h : Inhabited (M F)
⊢ ∀ (s₁ s₂ : M F), R s₁ s₂ → s₁ = s₂

tactic: apply ext
state_before: F : PFunctor
X : Type ?u.71783
f : X → Obj F X
R : M F → M F → Prop
inst✝ : Nonempty (M F)
bisim : IsBisimulation R
inhabited_h : Inhabited (M F)
s₁ s₂ : M F
Hr : R s₁ s₂
⊢ s₁ = s₂

tactic: introv
state_before: case H
F : PFunctor
X : Type ?u.71783
f : X → Obj F X
R : M F → M F → Prop
inst✝ : Nonempty (M F)
bisim : IsBisimulation R
inhabited_h : Inhabited (M F)
s₁ s₂ : M F
Hr : R s₁ s₂
⊢ ∀ (ps : Path F), iselect ps s₁ = iselect ps s₂

tactic: by_cases h : IsPath ps s₁ ∨ IsPath ps s₂
state_before: case H
F : PFunctor
X : Type ?u.71783
f : X → Obj F X
R : M F → M F → Prop
inst✝ : Nonempty (M F)
bisim : IsBisimulation R
inhabited_h : Inhabited (M F)
s₁ s₂ : M F
Hr : R s₁ s₂
ps : Path F
⊢ iselect ps s₁ = iselect ps s₂

tactic: have H := nth_of_bisim R bisim _ _ ps Hr h
state_before: case pos
F : PFunctor
X : Type ?u.71783
f : X → Obj F X
R : M F → M F → Prop
inst✝ : Nonempty (M F)
bisim : IsBisimulation R
inhabited_h : Inhabited (M F)
s₁ s₂ : M F
Hr : R s₁ s₂
ps : Path F
h : IsPath ps s₁ ∨ IsPath ps s₂
⊢ iselect ps s₁ = iselect ps s₂

tactic: exact H.left
state_before: case pos
F : PFunctor
X : Type ?u.71783
f : X → Obj F X
R : M F → M F → Prop
inst✝ : Nonempty (M F)
bisim : IsBisimulation R
inhabited_h : Inhabited (M F)
s₁ s₂ : M F
Hr : R s₁ s₂
ps : Path F
h : IsPath ps s₁ ∨ IsPath ps s₂
H :
  iselect ps s₁ = iselect ps s₂ ∧
    ∃ a f f',
      isubtree ps s₁ = M.mk { fst := a, snd := f } ∧
        isubtree ps s₂ = M.mk { fst := a, snd := f' } ∧ ∀ (i : B F a), R (f i) (f' i)
⊢ iselect ps s₁ = iselect ps s₂

tactic: rw [not_or] at h
state_before: case neg
F : PFunctor
X : Type ?u.71783
f : X → Obj F X
R : M F → M F → Prop
inst✝ : Nonempty (M F)
bisim : IsBisimulation R
inhabited_h : Inhabited (M F)
s₁ s₂ : M F
Hr : R s₁ s₂
ps : Path F
h : ¬(IsPath ps s₁ ∨ IsPath ps s₂)
⊢ iselect ps s₁ = iselect ps s₂

tactic: cases' h with h₀ h₁
state_before: case neg
F : PFunctor
X : Type ?u.71783
f : X → Obj F X
R : M F → M F → Prop
inst✝ : Nonempty (M F)
bisim : IsBisimulation R
inhabited_h : Inhabited (M F)
s₁ s₂ : M F
Hr : R s₁ s₂
ps : Path F
h : ¬IsPath ps s₁ ∧ ¬IsPath ps s₂
⊢ iselect ps s₁ = iselect ps s₂

tactic: simp only [iselect_eq_default, *, not_false_iff]
state_before: case neg.intro
F : PFunctor
X : Type ?u.71783
f : X → Obj F X
R : M F → M F → Prop
inst✝ : Nonempty (M F)
bisim : IsBisimulation R
inhabited_h : Inhabited (M F)
s₁ s₂ : M F
Hr : R s₁ s₂
ps : Path F
h₀ : ¬IsPath ps s₁
h₁ : ¬IsPath ps s₂
⊢ iselect ps s₁ = iselect ps s₂
Theorem: ContinuousOn.angle_sign_comp
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: refine' (ContinuousAt.continuousOn fun θ hθ => _).comp hf (Set.mapsTo_image f s)
state_before: α : Type u_1
inst✝ : TopologicalSpace α
f : α → Angle
s : Set α
hf : ContinuousOn f s
hs : ∀ (z : α), z ∈ s → f z ≠ 0 ∧ f z ≠ ↑π
⊢ ContinuousOn (sign ∘ f) s

tactic: obtain ⟨z, hz, rfl⟩ := hθ
state_before: α : Type u_1
inst✝ : TopologicalSpace α
f : α → Angle
s : Set α
hf : ContinuousOn f s
hs : ∀ (z : α), z ∈ s → f z ≠ 0 ∧ f z ≠ ↑π
θ : Angle
hθ : θ ∈ f '' s
⊢ ContinuousAt sign θ

tactic: exact continuousAt_sign (hs _ hz).1 (hs _ hz).2
state_before: case intro.intro
α : Type u_1
inst✝ : TopologicalSpace α
f : α → Angle
s : Set α
hf : ContinuousOn f s
hs : ∀ (z : α), z ∈ s → f z ≠ 0 ∧ f z ≠ ↑π
z : α
hz : z ∈ s
⊢ ContinuousAt sign (f z)
Theorem: t2Space_iff_nhds
File: Mathlib/Topology/Separation.lean

tactic: simp only [t2Space_iff_disjoint_nhds, Filter.disjoint_iff]
state_before: α : Type u
β : Type v
inst✝ : TopologicalSpace α
⊢ T2Space α ↔ ∀ {x y : α}, x ≠ y → ∃ U, U ∈ 𝓝 x ∧ ∃ V, V ∈ 𝓝 y ∧ Disjoint U V
Theorem: dist_div_eq_dist_mul_right
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: rw [← dist_mul_right _ _ c, div_mul_cancel']
state_before: 𝓕 : Type ?u.60638
𝕜 : Type ?u.60641
α : Type ?u.60644
ι : Type ?u.60647
κ : Type ?u.60650
E : Type u_1
F : Type ?u.60656
G : Type ?u.60659
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a✝ a₁ a₂ b✝ b₁ b₂ : E
r r₁ r₂ : ℝ
a b c : E
⊢ dist a (b / c) = dist (a * c) b
Theorem: closure_thickening
File: Mathlib/Analysis/NormedSpace/Pointwise.lean

tactic: rw [← cthickening_zero, cthickening_thickening le_rfl hδ, zero_add]
state_before: 𝕜 : Type ?u.227614
E : Type u_1
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x y z : E
δ ε : ℝ
hδ : 0 < δ
s : Set E
⊢ closure (thickening δ s) = cthickening δ s
Theorem: MvPolynomial.vars_neg
File: Mathlib/Data/MvPolynomial/CommRing.lean

tactic: simp [vars, degrees_neg]
state_before: R : Type u
S : Type v
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommRing R
p q : MvPolynomial σ R
⊢ vars (-p) = vars p
Theorem: isNoetherianRing_of_surjective
File: Mathlib/RingTheory/Noetherian.lean

tactic: rw [isNoetherianRing_iff, isNoetherian_iff_wellFounded] at H⊢
state_before: R : Type u_1
inst✝¹ : Ring R
S : Type u_2
inst✝ : Ring S
f : R →+* S
hf : Surjective ↑f
H : IsNoetherianRing R
⊢ IsNoetherianRing S

tactic: exact OrderEmbedding.wellFounded (Ideal.orderEmbeddingOfSurjective f hf).dual H
state_before: R : Type u_1
inst✝¹ : Ring R
S : Type u_2
inst✝ : Ring S
f : R →+* S
hf : Surjective ↑f
H : WellFounded fun x x_1 => x > x_1
⊢ WellFounded fun x x_1 => x > x_1
Theorem: isLUB_csSup'
File: Mathlib/Order/ConditionallyCompleteLattice/Basic.lean

tactic: rcases eq_empty_or_nonempty s with (rfl | hne)
state_before: α : Type u_1
β : Type ?u.73093
γ : Type ?u.73096
ι : Sort ?u.73099
inst✝ : ConditionallyCompleteLinearOrderBot α
s : Set α
hs : BddAbove s
⊢ IsLUB s (sSup s)

tactic: simp only [csSup_empty, isLUB_empty]
state_before: case inl
α : Type u_1
β : Type ?u.73093
γ : Type ?u.73096
ι : Sort ?u.73099
inst✝ : ConditionallyCompleteLinearOrderBot α
hs : BddAbove ∅
⊢ IsLUB ∅ (sSup ∅)

tactic: exact isLUB_csSup hne hs
state_before: case inr
α : Type u_1
β : Type ?u.73093
γ : Type ?u.73096
ι : Sort ?u.73099
inst✝ : ConditionallyCompleteLinearOrderBot α
s : Set α
hs : BddAbove s
hne : Set.Nonempty s
⊢ IsLUB s (sSup s)
Theorem: Ordnode.Raised.right
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: rw [node', size, size]
state_before: α : Type u_1
l : Ordnode α
x₁ x₂ : α
r₁ r₂ : Ordnode α
H : Raised (size r₁) (size r₂)
⊢ Raised (size (node' l x₁ r₁)) (size (node' l x₂ r₂))

tactic: generalize size r₂ = m at H ⊢
state_before: α : Type u_1
l : Ordnode α
x₁ x₂ : α
r₁ r₂ : Ordnode α
H : Raised (size r₁) (size r₂)
⊢ Raised (size l + size r₁ + 1) (size l + size r₂ + 1)

tactic: rcases H with (rfl | rfl)
state_before: α : Type u_1
l : Ordnode α
x₁ x₂ : α
r₁ r₂ : Ordnode α
m : ℕ
H : Raised (size r₁) m
⊢ Raised (size l + size r₁ + 1) (size l + m + 1)

tactic: exact Or.inl rfl
state_before: case inl
α : Type u_1
l : Ordnode α
x₁ x₂ : α
r₁ r₂ : Ordnode α
⊢ Raised (size l + size r₁ + 1) (size l + size r₁ + 1)

tactic: exact Or.inr rfl
state_before: case inr
α : Type u_1
l : Ordnode α
x₁ x₂ : α
r₁ r₂ : Ordnode α
⊢ Raised (size l + size r₁ + 1) (size l + (size r₁ + 1) + 1)