tasksource/leandojo huggingface dataset:
Theorem: Multiset.prod_toList
File: Mathlib/Algebra/BigOperators/Multiset/Basic.lean

tactic: conv_rhs => rw [← coe_toList s]
state_before: ι : Type ?u.6108
α : Type u_1
β : Type ?u.6114
γ : Type ?u.6117
inst✝ : CommMonoid α
s✝ t : Multiset α
a : α
m : Multiset ι
f g : ι → α
s : Multiset α
⊢ List.prod (toList s) = prod s

tactic: rw [coe_prod]
state_before: ι : Type ?u.6108
α : Type u_1
β : Type ?u.6114
γ : Type ?u.6117
inst✝ : CommMonoid α
s✝ t : Multiset α
a : α
m : Multiset ι
f g : ι → α
s : Multiset α
⊢ List.prod (toList s) = prod ↑(toList s)
Theorem: cmpLE_swap
File: Mathlib/Order/Compare.lean

tactic: by_cases xy:x ≤ y <;> by_cases yx:y ≤ x <;> simp [cmpLE, *, Ordering.swap]
state_before: α✝ : Type ?u.181
β : Type ?u.184
α : Type u_1
inst✝² : LE α
inst✝¹ : IsTotal α fun x x_1 => x ≤ x_1
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
x y : α
⊢ Ordering.swap (cmpLE x y) = cmpLE y x

tactic: cases not_or_of_not xy yx (total_of _ _ _)
state_before: case neg
α✝ : Type ?u.181
β : Type ?u.184
α : Type u_1
inst✝² : LE α
inst✝¹ : IsTotal α fun x x_1 => x ≤ x_1
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
x y : α
xy : ¬x ≤ y
yx : ¬y ≤ x
⊢ False
Theorem: le_nhds_of_cauchy_adhp
File: Mathlib/Topology/UniformSpace/Cauchy.lean

tactic: obtain ⟨t, t_mem, ht⟩ : ∃ t ∈ f, t ×ˢ t ⊆ s := (cauchy_iff.1 hf).2 s hs
state_before: α : Type u
β : Type v
inst✝ : UniformSpace α
f : Filter α
x : α
hf : Cauchy f
adhs : ClusterPt x f
s : Set (α × α)
hs : s ∈ 𝓤 α
⊢ ∃ t, t ∈ f ∧ t ×ˢ t ⊆ s ∧ ∃ y, (x, y) ∈ s ∧ y ∈ t

tactic: use t, t_mem, ht
state_before: case intro.intro
α : Type u
β : Type v
inst✝ : UniformSpace α
f : Filter α
x : α
hf : Cauchy f
adhs : ClusterPt x f
s : Set (α × α)
hs : s ∈ 𝓤 α
t : Set α
t_mem : t ∈ f
ht : t ×ˢ t ⊆ s
⊢ ∃ t, t ∈ f ∧ t ×ˢ t ⊆ s ∧ ∃ y, (x, y) ∈ s ∧ y ∈ t

tactic: exact forall_mem_nonempty_iff_neBot.2 adhs _ (inter_mem_inf (mem_nhds_left x hs) t_mem)
state_before: case intro.intro
α : Type u
β : Type v
inst✝ : UniformSpace α
f : Filter α
x : α
hf : Cauchy f
adhs : ClusterPt x f
s : Set (α × α)
hs : s ∈ 𝓤 α
t : Set α
t_mem : t ∈ f
ht : t ×ˢ t ⊆ s
⊢ ∃ y, (x, y) ∈ s ∧ y ∈ t
Theorem: Bool.or_left_comm
File: Mathlib/Data/Bool/Basic.lean

tactic: decide
state_before: ⊢ ∀ (a b c : Bool), (a || (b || c)) = (b || (a || c))
Theorem: mul_le_iff_le_one_left
File: Mathlib/Algebra/Order/Ring/Lemmas.lean

tactic: rw [one_mul]
state_before: α : Type u_1
a b c d : α
inst✝⁴ : MulOneClass α
inst✝³ : Zero α
inst✝² : Preorder α
inst✝¹ : MulPosMono α
inst✝ : MulPosMonoRev α
b0 : 0 < b
⊢ a * b ≤ b ↔ a * b ≤ 1 * b
Theorem: MeasureTheory.integrable_add_of_disjoint
File: Mathlib/MeasureTheory/Integral/IntegrableOn.lean

tactic: refine' ⟨fun hfg => ⟨_, _⟩, fun h => h.1.add h.2⟩
state_before: α : Type u_1
β : Type ?u.1665526
E : Type u_2
F : Type ?u.1665532
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f✝ g✝ : α → E
s t : Set α
μ ν : Measure α
l l' : Filter α
f g : α → E
h : Disjoint (support f) (support g)
hf : StronglyMeasurable f
hg : StronglyMeasurable g
⊢ Integrable (f + g) ↔ Integrable f ∧ Integrable g

tactic: rw [← indicator_add_eq_left h]
state_before: case refine'_1
α : Type u_1
β : Type ?u.1665526
E : Type u_2
F : Type ?u.1665532
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f✝ g✝ : α → E
s t : Set α
μ ν : Measure α
l l' : Filter α
f g : α → E
h : Disjoint (support f) (support g)
hf : StronglyMeasurable f
hg : StronglyMeasurable g
hfg : Integrable (f + g)
⊢ Integrable f

tactic: exact hfg.indicator hf.measurableSet_support
state_before: case refine'_1
α : Type u_1
β : Type ?u.1665526
E : Type u_2
F : Type ?u.1665532
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f✝ g✝ : α → E
s t : Set α
μ ν : Measure α
l l' : Filter α
f g : α → E
h : Disjoint (support f) (support g)
hf : StronglyMeasurable f
hg : StronglyMeasurable g
hfg : Integrable (f + g)
⊢ Integrable (indicator (support f) (f + g))

tactic: rw [← indicator_add_eq_right h]
state_before: case refine'_2
α : Type u_1
β : Type ?u.1665526
E : Type u_2
F : Type ?u.1665532
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f✝ g✝ : α → E
s t : Set α
μ ν : Measure α
l l' : Filter α
f g : α → E
h : Disjoint (support f) (support g)
hf : StronglyMeasurable f
hg : StronglyMeasurable g
hfg : Integrable (f + g)
⊢ Integrable g

tactic: exact hfg.indicator hg.measurableSet_support
state_before: case refine'_2
α : Type u_1
β : Type ?u.1665526
E : Type u_2
F : Type ?u.1665532
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f✝ g✝ : α → E
s t : Set α
μ ν : Measure α
l l' : Filter α
f g : α → E
h : Disjoint (support f) (support g)
hf : StronglyMeasurable f
hg : StronglyMeasurable g
hfg : Integrable (f + g)
⊢ Integrable (indicator (support g) (f + g))
Theorem: Algebra.coe_iInf
File: Mathlib/Algebra/Algebra/Subalgebra/Basic.lean

tactic: simp [iInf]
state_before: R : Type u
A : Type v
B : Type w
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : Semiring B
inst✝ : Algebra R B
ι : Sort u_1
S : ι → Subalgebra R A
⊢ ↑(⨅ (i : ι), S i) = ⋂ (i : ι), ↑(S i)
Theorem: Nat.mul_left_comm
File: src/lean/Init/Data/Nat/Basic.lean

tactic: rw [← Nat.mul_assoc, Nat.mul_comm n m, Nat.mul_assoc]
state_before: n m k : Nat
⊢ n * (m * k) = m * (n * k)
Theorem: Order.IsSuccLimit.succ_ne
File: Mathlib/Order/SuccPred/Limit.lean

tactic: rintro rfl
state_before: α : Type u_1
inst✝² : Preorder α
a : α
inst✝¹ : SuccOrder α
inst✝ : NoMaxOrder α
h : IsSuccLimit a
b : α
⊢ succ b ≠ a

tactic: exact not_isMax _ h.isMax
state_before: α : Type u_1
inst✝² : Preorder α
inst✝¹ : SuccOrder α
inst✝ : NoMaxOrder α
b : α
h : IsSuccLimit (succ b)
⊢ False
Theorem: CategoryTheory.IsPushout.inl_isoPushout_inv
File: Mathlib/CategoryTheory/Limits/Shapes/CommSq.lean

tactic: dsimp [isoPushout, cocone, CommSq.cocone]
state_before: C : Type u₁
inst✝¹ : Category C
Z X Y P : C
f : Z ⟶ X
g : Z ⟶ Y
inl : X ⟶ P
inr : Y ⟶ P
h : IsPushout f g inl inr
inst✝ : HasPushout f g
⊢ pushout.inl ≫ (isoPushout h).inv = inl

tactic: simp
state_before: C : Type u₁
inst✝¹ : Category C
Z X Y P : C
f : Z ⟶ X
g : Z ⟶ Y
inl : X ⟶ P
inr : Y ⟶ P
h : IsPushout f g inl inr
inst✝ : HasPushout f g
⊢ pushout.inl ≫
      (colimit.isoColimitCocone
          { cocone := PushoutCocone.mk inl inr (_ : f ≫ inl = g ≫ inr), isColimit := isColimit h }).hom =
    inl
Theorem: Nat.ModEq.add_right_cancel
File: Mathlib/Data/Nat/ModEq.lean

tactic: rw [add_comm a, add_comm b] at h₂
state_before: m n a b c d : ℕ
h₁ : c ≡ d [MOD n]
h₂ : a + c ≡ b + d [MOD n]
⊢ a ≡ b [MOD n]

tactic: exact h₁.add_left_cancel h₂
state_before: m n a b c d : ℕ
h₁ : c ≡ d [MOD n]
h₂ : c + a ≡ d + b [MOD n]
⊢ a ≡ b [MOD n]
Theorem: EuclideanGeometry.angle_eq_zero_of_angle_eq_pi_right
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Affine.lean

tactic: rw [angle_comm] at h
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : ∠ p1 p2 p3 = π
⊢ ∠ p2 p3 p1 = 0

tactic: exact angle_eq_zero_of_angle_eq_pi_left h
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : ∠ p3 p2 p1 = π
⊢ ∠ p2 p3 p1 = 0
Theorem: ball_pi
File: Mathlib/Topology/MetricSpace/Basic.lean

tactic: ext p
state_before: α : Type u
β : Type v
X : Type ?u.398898
ι : Type ?u.398901
inst✝² : PseudoMetricSpace α
π : β → Type u_1
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoMetricSpace (π b)
x : (b : β) → π b
r : ℝ
hr : 0 < r
⊢ ball x r = Set.pi Set.univ fun b => ball (x b) r

tactic: simp [dist_pi_lt_iff hr]
state_before: case h
α : Type u
β : Type v
X : Type ?u.398898
ι : Type ?u.398901
inst✝² : PseudoMetricSpace α
π : β → Type u_1
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoMetricSpace (π b)
x : (b : β) → π b
r : ℝ
hr : 0 < r
p : (b : β) → π b
⊢ p ∈ ball x r ↔ p ∈ Set.pi Set.univ fun b => ball (x b) r
Theorem: Set.right_mem_Ioo
File: Mathlib/Data/Set/Intervals/Basic.lean

tactic: simp [lt_irrefl]
state_before: α : Type u_1
β : Type ?u.4756
inst✝ : Preorder α
a a₁ a₂ b b₁ b₂ c x : α
⊢ b ∈ Ioo a b ↔ False
Theorem: List.dlookup_eq_none
File: Mathlib/Data/List/Sigma.lean

tactic: simp [← dlookup_isSome, Option.isNone_iff_eq_none]
state_before: α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
l : List (Sigma β)
⊢ dlookup a l = none ↔ ¬a ∈ keys l
Theorem: Submodule.span_zero_singleton
File: Mathlib/LinearAlgebra/Span.lean

tactic: ext
state_before: R : Type u_2
R₂ : Type ?u.126518
K : Type ?u.126521
M : Type u_1
M₂ : Type ?u.126527
V : Type ?u.126530
S : Type ?u.126533
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t : Set M
⊢ span R {0} = ⊥

tactic: simp [mem_span_singleton, eq_comm]
state_before: case h
R : Type u_2
R₂ : Type ?u.126518
K : Type ?u.126521
M : Type u_1
M₂ : Type ?u.126527
V : Type ?u.126530
S : Type ?u.126533
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t : Set M
x✝ : M
⊢ x✝ ∈ span R {0} ↔ x✝ ∈ ⊥
Theorem: MeasureTheory.Measure.haar.index_defined
File: Mathlib/MeasureTheory/Measure/Haar/Basic.lean

tactic: rcases compact_covered_by_mul_left_translates hK hV with ⟨t, ht⟩
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K V : Set G
hK : IsCompact K
hV : Set.Nonempty (interior V)
⊢ ∃ n, n ∈ Finset.card '' {t | K ⊆ ⋃ (g : G) (_ : g ∈ t), (fun h => g * h) ⁻¹' V}

tactic: exact ⟨t.card, t, ht, rfl⟩
state_before: case intro
G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K V : Set G
hK : IsCompact K
hV : Set.Nonempty (interior V)
t : Finset G
ht : K ⊆ ⋃ (g : G) (_ : g ∈ t), (fun h => g * h) ⁻¹' V
⊢ ∃ n, n ∈ Finset.card '' {t | K ⊆ ⋃ (g : G) (_ : g ∈ t), (fun h => g * h) ⁻¹' V}
Theorem: lipschitzWith_one_norm'
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: simpa only [dist_one_left] using LipschitzWith.dist_right (1 : E)
state_before: 𝓕 : Type ?u.461895
𝕜 : Type ?u.461898
α : Type ?u.461901
ι : Type ?u.461904
κ : Type ?u.461907
E : Type u_1
F : Type ?u.461913
G : Type ?u.461916
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
⊢ LipschitzWith 1 norm
Theorem: Int.emod_add_cancel_right
File: Std/Data/Int/DivMod.lean

tactic: have := add_emod_eq_add_emod_right (-i) H
state_before: m n k i : Int
H : (m + i) % n = (k + i) % n
⊢ m % n = k % n

tactic: rwa [Int.add_neg_cancel_right, Int.add_neg_cancel_right] at this
state_before: m n k i : Int
H : (m + i) % n = (k + i) % n
this : (m + i + -i) % n = (k + i + -i) % n
⊢ m % n = k % n
Theorem: List.all_eq_true
File: Std/Data/List/Lemmas.lean

tactic: induction l <;> simp [*]
state_before: α : Type u_1
p : α → Bool
l : List α
⊢ all l p = true ↔ ∀ (x : α), x ∈ l → p x = true
Theorem: MeasureTheory.VectorMeasure.restrict_eq_self
File: Mathlib/MeasureTheory/Measure/VectorMeasure.lean

tactic: rw [restrict_apply v hi hj, Set.inter_eq_left_iff_subset.2 hij]
state_before: α : Type u_1
β : Type ?u.473341
m inst✝³ : MeasurableSpace α
inst✝² : MeasurableSpace β
M : Type u_2
inst✝¹ : AddCommMonoid M
inst✝ : TopologicalSpace M
v : VectorMeasure α M
i : Set α
hi : MeasurableSet i
j : Set α
hj : MeasurableSet j
hij : j ⊆ i
⊢ ↑(restrict v i) j = ↑v j
Theorem: IsPreconnected.subset_of_closure_inter_subset
File: Mathlib/Topology/Connected.lean

tactic: apply hs.subset_left_of_subset_union hu isClosed_closure.isOpen_compl _ A h'u
state_before: α : Type u
β : Type v
ι : Type ?u.31786
π : ι → Type ?u.31791
inst✝ : TopologicalSpace α
s t u v : Set α
hs : IsPreconnected s
hu : IsOpen u
h'u : Set.Nonempty (s ∩ u)
h : closure u ∩ s ⊆ u
A : s ⊆ u ∪ closure uᶜ
⊢ s ⊆ u

tactic: exact disjoint_compl_right.mono_right (compl_subset_compl.2 subset_closure)
state_before: α : Type u
β : Type v
ι : Type ?u.31786
π : ι → Type ?u.31791
inst✝ : TopologicalSpace α
s t u v : Set α
hs : IsPreconnected s
hu : IsOpen u
h'u : Set.Nonempty (s ∩ u)
h : closure u ∩ s ⊆ u
A : s ⊆ u ∪ closure uᶜ
⊢ Disjoint u (closure uᶜ)

tactic: intro x hx
state_before: α : Type u
β : Type v
ι : Type ?u.31786
π : ι → Type ?u.31791
inst✝ : TopologicalSpace α
s t u v : Set α
hs : IsPreconnected s
hu : IsOpen u
h'u : Set.Nonempty (s ∩ u)
h : closure u ∩ s ⊆ u
⊢ s ⊆ u ∪ closure uᶜ

tactic: by_cases xu : x ∈ u
state_before: α : Type u
β : Type v
ι : Type ?u.31786
π : ι → Type ?u.31791
inst✝ : TopologicalSpace α
s t u v : Set α
hs : IsPreconnected s
hu : IsOpen u
h'u : Set.Nonempty (s ∩ u)
h : closure u ∩ s ⊆ u
x : α
hx : x ∈ s
⊢ x ∈ u ∪ closure uᶜ

tactic: exact Or.inl xu
state_before: case pos
α : Type u
β : Type v
ι : Type ?u.31786
π : ι → Type ?u.31791
inst✝ : TopologicalSpace α
s t u v : Set α
hs : IsPreconnected s
hu : IsOpen u
h'u : Set.Nonempty (s ∩ u)
h : closure u ∩ s ⊆ u
x : α
hx : x ∈ s
xu : x ∈ u
⊢ x ∈ u ∪ closure uᶜ

tactic: right
state_before: case neg
α : Type u
β : Type v
ι : Type ?u.31786
π : ι → Type ?u.31791
inst✝ : TopologicalSpace α
s t u v : Set α
hs : IsPreconnected s
hu : IsOpen u
h'u : Set.Nonempty (s ∩ u)
h : closure u ∩ s ⊆ u
x : α
hx : x ∈ s
xu : ¬x ∈ u
⊢ x ∈ u ∪ closure uᶜ

tactic: intro h'x
state_before: case neg.h
α : Type u
β : Type v
ι : Type ?u.31786
π : ι → Type ?u.31791
inst✝ : TopologicalSpace α
s t u v : Set α
hs : IsPreconnected s
hu : IsOpen u
h'u : Set.Nonempty (s ∩ u)
h : closure u ∩ s ⊆ u
x : α
hx : x ∈ s
xu : ¬x ∈ u
⊢ x ∈ closure uᶜ

tactic: exact xu (h (mem_inter h'x hx))
state_before: case neg.h
α : Type u
β : Type v
ι : Type ?u.31786
π : ι → Type ?u.31791
inst✝ : TopologicalSpace α
s t u v : Set α
hs : IsPreconnected s
hu : IsOpen u
h'u : Set.Nonempty (s ∩ u)
h : closure u ∩ s ⊆ u
x : α
hx : x ∈ s
xu : ¬x ∈ u
h'x : x ∈ closure u
⊢ False
Theorem: div_nonpos_of_nonneg_of_nonpos
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [div_eq_mul_inv]
state_before: ι : Type ?u.11809
α : Type u_1
β : Type ?u.11815
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 0 ≤ a
hb : b ≤ 0
⊢ a / b ≤ 0

tactic: exact mul_nonpos_of_nonneg_of_nonpos ha (inv_nonpos.2 hb)
state_before: ι : Type ?u.11809
α : Type u_1
β : Type ?u.11815
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 0 ≤ a
hb : b ≤ 0
⊢ a * b⁻¹ ≤ 0
Theorem: Matrix.transpose_one
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext i j
state_before: l : Type ?u.924222
m : Type ?u.924225
n : Type u_1
o : Type ?u.924231
m' : o → Type ?u.924236
n' : o → Type ?u.924241
R : Type ?u.924244
S : Type ?u.924247
α : Type v
β : Type w
γ : Type ?u.924254
inst✝² : DecidableEq n
inst✝¹ : Zero α
inst✝ : One α
⊢ 1ᵀ = 1

tactic: rw [transpose_apply, ← diagonal_one]
state_before: case a.h
l : Type ?u.924222
m : Type ?u.924225
n : Type u_1
o : Type ?u.924231
m' : o → Type ?u.924236
n' : o → Type ?u.924241
R : Type ?u.924244
S : Type ?u.924247
α : Type v
β : Type w
γ : Type ?u.924254
inst✝² : DecidableEq n
inst✝¹ : Zero α
inst✝ : One α
i j : n
⊢ 1ᵀ i j = OfNat.ofNat 1 i j

tactic: by_cases i = j
state_before: case a.h
l : Type ?u.924222
m : Type ?u.924225
n : Type u_1
o : Type ?u.924231
m' : o → Type ?u.924236
n' : o → Type ?u.924241
R : Type ?u.924244
S : Type ?u.924247
α : Type v
β : Type w
γ : Type ?u.924254
inst✝² : DecidableEq n
inst✝¹ : Zero α
inst✝ : One α
i j : n
⊢ diagonal (fun x => 1) j i = diagonal (fun x => 1) i j

tactic: simp only [h, diagonal_apply_eq]
state_before: case pos
l : Type ?u.924222
m : Type ?u.924225
n : Type u_1
o : Type ?u.924231
m' : o → Type ?u.924236
n' : o → Type ?u.924241
R : Type ?u.924244
S : Type ?u.924247
α : Type v
β : Type w
γ : Type ?u.924254
inst✝² : DecidableEq n
inst✝¹ : Zero α
inst✝ : One α
i j : n
h : i = j
⊢ diagonal (fun x => 1) j i = diagonal (fun x => 1) i j

tactic: simp only [diagonal_apply_ne _ h, diagonal_apply_ne' _ h]
state_before: case neg
l : Type ?u.924222
m : Type ?u.924225
n : Type u_1
o : Type ?u.924231
m' : o → Type ?u.924236
n' : o → Type ?u.924241
R : Type ?u.924244
S : Type ?u.924247
α : Type v
β : Type w
γ : Type ?u.924254
inst✝² : DecidableEq n
inst✝¹ : Zero α
inst✝ : One α
i j : n
h : ¬i = j
⊢ diagonal (fun x => 1) j i = diagonal (fun x => 1) i j
Theorem: Real.totallyBounded_ball
File: Mathlib/Topology/Instances/Real.lean

tactic: rw [Real.ball_eq_Ioo]
state_before: α : Type u
β : Type v
γ : Type w
x ε : ℝ
⊢ TotallyBounded (ball x ε)

tactic: apply totallyBounded_Ioo
state_before: α : Type u
β : Type v
γ : Type w
x ε : ℝ
⊢ TotallyBounded (Ioo (x - ε) (x + ε))
Theorem: Std.RBNode.balance1_All
File: Std/Data/RBMap/WF.lean

tactic: unfold balance1
state_before: α : Type u_1
p : α → Prop
l : RBNode α
v : α
r : RBNode α
⊢ All p (balance1 l v r) ↔ p v ∧ All p l ∧ All p r

tactic: split <;> simp [and_assoc, and_left_comm]
state_before: α : Type u_1
p : α → Prop
l : RBNode α
v : α
r : RBNode α
⊢ All p
      (match l, v, r with
      | node red (node red a x b) y c, z, d => node red (node black a x b) y (node black c z d)
      | node red a x (node red b y c), z, d => node red (node black a x b) y (node black c z d)
      | a, x, b => node black a x b) ↔
    p v ∧ All p l ∧ All p r
Theorem: εNFA.stepSet_empty
File: Mathlib/Computability/EpsilonNFA.lean

tactic: simp_rw [stepSet, mem_empty_iff_false, iUnion_false, iUnion_empty]
state_before: α : Type u
σ σ' : Type v
M : εNFA α σ
S : Set σ
x : List α
s : σ
a✝ a : α
⊢ stepSet M ∅ a = ∅
Theorem: Bool.xor_false
File: Mathlib/Init/Data/Bool/Lemmas.lean

tactic: cases b <;> simp
state_before: b : Bool
⊢ xor b false = b
Theorem: Subtype.coe_eq_bot_iff
File: Mathlib/Order/BoundedOrder.lean

tactic: rw [← coe_bot hbot, ext_iff]
state_before: α : Type u
β : Type v
γ : Type ?u.39229
δ : Type ?u.39232
p : α → Prop
inst✝² : PartialOrder α
inst✝¹ : OrderBot α
inst✝ : OrderBot (Subtype p)
hbot : p ⊥
x : { x // p x }
⊢ ↑x = ⊥ ↔ x = ⊥
Theorem: Subgroup.coe_eq_univ
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: rfl
state_before: G : Type u_1
G' : Type ?u.169171
inst✝² : Group G
inst✝¹ : Group G'
A : Type ?u.169180
inst✝ : AddGroup A
H✝ K H : Subgroup G
⊢ ↑H = ↑⊤ ↔ ↑H = Set.univ
Theorem: IsGroupHom.one_ker_inv
File: Mathlib/Deprecated/Subgroup.lean

tactic: rw [hf.map_mul, hf.map_inv] at h
state_before: G : Type u_1
H : Type u_2
A : Type ?u.69287
a✝ a₁ a₂ b✝ c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
a b : G
h : f (a * b⁻¹) = 1
⊢ f a = f b

tactic: rw [← inv_inv (f b), eq_inv_of_mul_eq_one_left h]
state_before: G : Type u_1
H : Type u_2
A : Type ?u.69287
a✝ a₁ a₂ b✝ c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
a b : G
h : f a * (f b)⁻¹ = 1
⊢ f a = f b
Theorem: List.nodup_join
File: Mathlib/Data/List/Nodup.lean

tactic: simp only [Nodup, pairwise_join, disjoint_left.symm, forall_mem_ne]
state_before: α : Type u
β : Type v
l l₁ l₂ : List α
r : α → α → Prop
a b : α
L : List (List α)
⊢ Nodup (join L) ↔ (∀ (l : List α), l ∈ L → Nodup l) ∧ Pairwise Disjoint L
Theorem: Asymptotics.IsBigO.hasFDerivAt
File: Mathlib/Analysis/Calculus/FDeriv/Basic.lean

tactic: rw [← nhdsWithin_univ] at h
state_before: 𝕜 : Type u_3
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type ?u.375403
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.375498
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
x₀ : E
n : ℕ
h : f =O[𝓝 x₀] fun x => ‖x - x₀‖ ^ n
hn : 1 < n
⊢ HasFDerivAt f 0 x₀

tactic: exact (h.hasFDerivWithinAt (mem_univ _) hn).hasFDerivAt_of_univ
state_before: 𝕜 : Type u_3
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type ?u.375403
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.375498
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
x₀ : E
n : ℕ
h : f =O[𝓝[univ] x₀] fun x => ‖x - x₀‖ ^ n
hn : 1 < n
⊢ HasFDerivAt f 0 x₀
Theorem: HahnSeries.isPwo_iUnion_support_powers
File: Mathlib/RingTheory/HahnSeries.lean

tactic: apply (x.isWf_support.isPwo.addSubmonoid_closure _).mono _
state_before: Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : Ring R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < ↑(addVal Γ R) x
⊢ Set.IsPwo (⋃ (n : ℕ), support (x ^ n))

tactic: refine' Set.iUnion_subset fun n => _
state_before: Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : Ring R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < ↑(addVal Γ R) x
⊢ (⋃ (n : ℕ), support (x ^ n)) ⊆ ↑(AddSubmonoid.closure (support x))

tactic: induction' n with n ih <;> intro g hn
state_before: Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : Ring R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < ↑(addVal Γ R) x
n : ℕ
⊢ support (x ^ n) ⊆ ↑(AddSubmonoid.closure (support x))

tactic: exact fun g hg => WithTop.coe_le_coe.1 (le_trans (le_of_lt hx) (addVal_le_of_coeff_ne_zero hg))
state_before: Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : Ring R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < ↑(addVal Γ R) x
⊢ ∀ (x_1 : Γ), x_1 ∈ support x → 0 ≤ x_1

tactic: simp only [Nat.zero_eq, pow_zero, support_one, Set.mem_singleton_iff] at hn
state_before: case zero
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : Ring R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < ↑(addVal Γ R) x
g : Γ
hn : g ∈ support (x ^ Nat.zero)
⊢ g ∈ ↑(AddSubmonoid.closure (support x))

tactic: rw [hn, SetLike.mem_coe]
state_before: case zero
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : Ring R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < ↑(addVal Γ R) x
g : Γ
hn : g = 0
⊢ g ∈ ↑(AddSubmonoid.closure (support x))

tactic: exact AddSubmonoid.zero_mem _
state_before: case zero
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : Ring R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < ↑(addVal Γ R) x
g : Γ
hn : g = 0
⊢ 0 ∈ AddSubmonoid.closure (support x)

tactic: obtain ⟨i, j, hi, hj, rfl⟩ := support_mul_subset_add_support hn
state_before: case succ
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : Ring R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < ↑(addVal Γ R) x
n : ℕ
ih : support (x ^ n) ⊆ ↑(AddSubmonoid.closure (support x))
g : Γ
hn : g ∈ support (x ^ Nat.succ n)
⊢ g ∈ ↑(AddSubmonoid.closure (support x))

tactic: exact SetLike.mem_coe.2 (AddSubmonoid.add_mem _ (AddSubmonoid.subset_closure hi) (ih hj))
state_before: case succ.intro.intro.intro.intro
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : Ring R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < ↑(addVal Γ R) x
n : ℕ
ih : support (x ^ n) ⊆ ↑(AddSubmonoid.closure (support x))
i j : Γ
hi : i ∈ support x
hj : j ∈ support (npowRec n x)
hn : (fun x x_1 => x + x_1) i j ∈ support (x ^ Nat.succ n)
⊢ (fun x x_1 => x + x_1) i j ∈ ↑(AddSubmonoid.closure (support x))
Theorem: Absorbs.sub
File: Mathlib/Analysis/LocallyConvex/Basic.lean

tactic: simp_rw [sub_eq_add_neg]
state_before: 𝕜 : Type u_1
𝕝 : Type ?u.39565
E : Type u_2
ι : Sort ?u.39571
κ : ι → Sort ?u.39576
inst✝² : SeminormedRing 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s s₁ s₂ t t₁ t₂ : Set E
h₁ : Absorbs 𝕜 s₁ t₁
h₂ : Absorbs 𝕜 s₂ t₂
⊢ Absorbs 𝕜 (s₁ - s₂) (t₁ - t₂)

tactic: exact h₁.add h₂.neg
state_before: 𝕜 : Type u_1
𝕝 : Type ?u.39565
E : Type u_2
ι : Sort ?u.39571
κ : ι → Sort ?u.39576
inst✝² : SeminormedRing 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s s₁ s₂ t t₁ t₂ : Set E
h₁ : Absorbs 𝕜 s₁ t₁
h₂ : Absorbs 𝕜 s₂ t₂
⊢ Absorbs 𝕜 (s₁ + -s₂) (t₁ + -t₂)
Theorem: Set.nontrivial_of_einfsep_lt_top
File: Mathlib/Topology/MetricSpace/Infsep.lean

tactic: rcases einfsep_lt_top.1 hs with ⟨_, hx, _, hy, hxy, _⟩
state_before: α : Type u_1
β : Type ?u.14614
inst✝ : EDist α
x y : α
s t : Set α
hs : einfsep s < ⊤
⊢ Set.Nontrivial s

tactic: exact ⟨_, hx, _, hy, hxy⟩
state_before: case intro.intro.intro.intro.intro
α : Type u_1
β : Type ?u.14614
inst✝ : EDist α
x y : α
s t : Set α
hs : einfsep s < ⊤
w✝¹ : α
hx : w✝¹ ∈ s
w✝ : α
hy : w✝ ∈ s
hxy : w✝¹ ≠ w✝
h✝ : edist w✝¹ w✝ < ⊤
⊢ Set.Nontrivial s