tasksource/leandojo huggingface dataset:
Theorem: Trivialization.continuous_coordChange
File: Mathlib/Topology/FiberBundle/Trivialization.lean

tactic: refine' continuous_snd.comp (e₂.toLocalHomeomorph.continuousOn.comp_continuous
  (e₁.toLocalHomeomorph.continuousOn_symm.comp_continuous _ _) _)
state_before: ι : Type ?u.56874
B : Type u_1
F : Type u_2
E : B → Type ?u.56885
Z : Type u_3
inst✝³ : TopologicalSpace B
inst✝² : TopologicalSpace F
proj : Z → B
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace (TotalSpace E)
e : Trivialization F proj
x : Z
e' : Trivialization F TotalSpace.proj
x' : TotalSpace E
b✝ : B
y : E b✝
e₁ e₂ : Trivialization F proj
b : B
h₁ : b ∈ e₁.baseSet
h₂ : b ∈ e₂.baseSet
⊢ Continuous (coordChange e₁ e₂ b)

tactic: exact continuous_const.prod_mk continuous_id
state_before: case refine'_1
ι : Type ?u.56874
B : Type u_1
F : Type u_2
E : B → Type ?u.56885
Z : Type u_3
inst✝³ : TopologicalSpace B
inst✝² : TopologicalSpace F
proj : Z → B
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace (TotalSpace E)
e : Trivialization F proj
x : Z
e' : Trivialization F TotalSpace.proj
x' : TotalSpace E
b✝ : B
y : E b✝
e₁ e₂ : Trivialization F proj
b : B
h₁ : b ∈ e₁.baseSet
h₂ : b ∈ e₂.baseSet
⊢ Continuous fun x => (b, x)

tactic: exact fun x => e₁.mem_target.2 h₁
state_before: case refine'_2
ι : Type ?u.56874
B : Type u_1
F : Type u_2
E : B → Type ?u.56885
Z : Type u_3
inst✝³ : TopologicalSpace B
inst✝² : TopologicalSpace F
proj : Z → B
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace (TotalSpace E)
e : Trivialization F proj
x : Z
e' : Trivialization F TotalSpace.proj
x' : TotalSpace E
b✝ : B
y : E b✝
e₁ e₂ : Trivialization F proj
b : B
h₁ : b ∈ e₁.baseSet
h₂ : b ∈ e₂.baseSet
⊢ ∀ (x : F), (b, x) ∈ e₁.target

tactic: intro x
state_before: case refine'_3
ι : Type ?u.56874
B : Type u_1
F : Type u_2
E : B → Type ?u.56885
Z : Type u_3
inst✝³ : TopologicalSpace B
inst✝² : TopologicalSpace F
proj : Z → B
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace (TotalSpace E)
e : Trivialization F proj
x : Z
e' : Trivialization F TotalSpace.proj
x' : TotalSpace E
b✝ : B
y : E b✝
e₁ e₂ : Trivialization F proj
b : B
h₁ : b ∈ e₁.baseSet
h₂ : b ∈ e₂.baseSet
⊢ ∀ (x : F), ↑(LocalHomeomorph.symm e₁.toLocalHomeomorph) (b, x) ∈ e₂.source

tactic: rwa [e₂.mem_source, e₁.proj_symm_apply' h₁]
state_before: case refine'_3
ι : Type ?u.56874
B : Type u_1
F : Type u_2
E : B → Type ?u.56885
Z : Type u_3
inst✝³ : TopologicalSpace B
inst✝² : TopologicalSpace F
proj : Z → B
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace (TotalSpace E)
e : Trivialization F proj
x✝ : Z
e' : Trivialization F TotalSpace.proj
x' : TotalSpace E
b✝ : B
y : E b✝
e₁ e₂ : Trivialization F proj
b : B
h₁ : b ∈ e₁.baseSet
h₂ : b ∈ e₂.baseSet
x : F
⊢ ↑(LocalHomeomorph.symm e₁.toLocalHomeomorph) (b, x) ∈ e₂.source
Theorem: Representation.asAlgebraHom_of
File: Mathlib/RepresentationTheory/Basic.lean

tactic: simp only [MonoidAlgebra.of_apply, asAlgebraHom_single, one_smul]
state_before: k : Type u_2
G : Type u_3
V : Type u_1
inst✝³ : CommSemiring k
inst✝² : Monoid G
inst✝¹ : AddCommMonoid V
inst✝ : Module k V
ρ : Representation k G V
g : G
⊢ ↑(asAlgebraHom ρ) (↑(of k G) g) = ↑ρ g
Theorem: Rat.nonneg_antisymm
File: Mathlib/Data/Rat/Order.lean

tactic: have d0 : 0 < (d : ℤ) := Int.coe_nat_pos.2 (Nat.pos_of_ne_zero h)
state_before: a✝ b c a : ℚ
n : ℤ
d : ℕ
h : d ≠ 0
⊢ Rat.Nonneg (n /. ↑d) → Rat.Nonneg (-(n /. ↑d)) → n /. ↑d = 0

tactic: rw [divInt_nonneg _ d0, neg_def, divInt_nonneg _ d0, Right.nonneg_neg_iff,
  divInt_eq_zero d0.ne.symm]
state_before: a✝ b c a : ℚ
n : ℤ
d : ℕ
h : d ≠ 0
d0 : 0 < ↑d
⊢ Rat.Nonneg (n /. ↑d) → Rat.Nonneg (-(n /. ↑d)) → n /. ↑d = 0

tactic: exact fun h₁ h₂ => le_antisymm h₂ h₁
state_before: a✝ b c a : ℚ
n : ℤ
d : ℕ
h : d ≠ 0
d0 : 0 < ↑d
⊢ 0 ≤ n → n ≤ 0 → n = 0
Theorem: eventuallyEq_prod
File: Mathlib/Topology/Algebra/Monoid.lean

tactic: replace hs : ∀ᶠ x in l, ∀ i ∈ s, f i x = g i x
state_before: ι : Type u_3
α : Type ?u.447147
X✝ : Type ?u.447150
M✝ : Type ?u.447153
N : Type ?u.447156
inst✝⁴ : TopologicalSpace X✝
inst✝³ : TopologicalSpace M✝
inst✝² : CommMonoid M✝
inst✝¹ : ContinuousMul M✝
X : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s : Finset ι
l : Filter X
f g : ι → X → M
hs : ∀ (i : ι), i ∈ s → f i =ᶠ[l] g i
⊢ ∏ i in s, f i =ᶠ[l] ∏ i in s, g i

tactic: filter_upwards [hs]with x hx
state_before: ι : Type u_3
α : Type ?u.447147
X✝ : Type ?u.447150
M✝ : Type ?u.447153
N : Type ?u.447156
inst✝⁴ : TopologicalSpace X✝
inst✝³ : TopologicalSpace M✝
inst✝² : CommMonoid M✝
inst✝¹ : ContinuousMul M✝
X : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s : Finset ι
l : Filter X
f g : ι → X → M
hs : ∀ᶠ (x : X) in l, ∀ (i : ι), i ∈ s → f i x = g i x
⊢ ∏ i in s, f i =ᶠ[l] ∏ i in s, g i

tactic: simp only [Finset.prod_apply, Finset.prod_congr rfl hx]
state_before: case h
ι : Type u_3
α : Type ?u.447147
X✝ : Type ?u.447150
M✝ : Type ?u.447153
N : Type ?u.447156
inst✝⁴ : TopologicalSpace X✝
inst✝³ : TopologicalSpace M✝
inst✝² : CommMonoid M✝
inst✝¹ : ContinuousMul M✝
X : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s : Finset ι
l : Filter X
f g : ι → X → M
hs : ∀ᶠ (x : X) in l, ∀ (i : ι), i ∈ s → f i x = g i x
x : X
hx : ∀ (i : ι), i ∈ s → f i x = g i x
⊢ Finset.prod s (fun i => f i) x = Finset.prod s (fun i => g i) x

tactic: rwa [eventually_all_finset]
state_before: case hs
ι : Type u_3
α : Type ?u.447147
X✝ : Type ?u.447150
M✝ : Type ?u.447153
N : Type ?u.447156
inst✝⁴ : TopologicalSpace X✝
inst✝³ : TopologicalSpace M✝
inst✝² : CommMonoid M✝
inst✝¹ : ContinuousMul M✝
X : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s : Finset ι
l : Filter X
f g : ι → X → M
hs : ∀ (i : ι), i ∈ s → f i =ᶠ[l] g i
⊢ ∀ᶠ (x : X) in l, ∀ (i : ι), i ∈ s → f i x = g i x
Theorem: Nat.count_mono_left
File: Mathlib/Data/Nat/Count.lean

tactic: simp only [count_eq_card_filter_range]
state_before: p : ℕ → Prop
inst✝¹ : DecidablePred p
q : ℕ → Prop
inst✝ : DecidablePred q
n : ℕ
hpq : ∀ (k : ℕ), p k → q k
⊢ count p n ≤ count q n

tactic: exact card_le_of_subset ((range n).monotone_filter_right hpq)
state_before: p : ℕ → Prop
inst✝¹ : DecidablePred p
q : ℕ → Prop
inst✝ : DecidablePred q
n : ℕ
hpq : ∀ (k : ℕ), p k → q k
⊢ card (filter p (range n)) ≤ card (filter q (range n))
Theorem: IsPreconnected.sUnion_directed
File: Mathlib/Topology/Connected.lean

tactic: rintro u v hu hv Huv ⟨a, ⟨s, hsS, has⟩, hau⟩ ⟨b, ⟨t, htS, hbt⟩, hbv⟩
state_before: α : Type u
β : Type v
ι : Type ?u.4785
π : ι → Type ?u.4790
inst✝ : TopologicalSpace α
s t u v : Set α
S : Set (Set α)
K : DirectedOn (fun x x_1 => x ⊆ x_1) S
H : ∀ (s : Set α), s ∈ S → IsPreconnected s
⊢ IsPreconnected (⋃₀ S)

tactic: obtain ⟨r, hrS, hsr, htr⟩ : ∃ r ∈ S, s ⊆ r ∧ t ⊆ r := K s hsS t htS
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type ?u.4785
π : ι → Type ?u.4790
inst✝ : TopologicalSpace α
s✝ t✝ u✝ v✝ : Set α
S : Set (Set α)
K : DirectedOn (fun x x_1 => x ⊆ x_1) S
H : ∀ (s : Set α), s ∈ S → IsPreconnected s
u v : Set α
hu : IsOpen u
hv : IsOpen v
Huv : ⋃₀ S ⊆ u ∪ v
a : α
hau : a ∈ u
s : Set α
hsS : s ∈ S
has : a ∈ s
b : α
hbv : b ∈ v
t : Set α
htS : t ∈ S
hbt : b ∈ t
⊢ Set.Nonempty (⋃₀ S ∩ (u ∩ v))

tactic: have Hnuv : (r ∩ (u ∩ v)).Nonempty :=
  H _ hrS u v hu hv ((subset_sUnion_of_mem hrS).trans Huv) ⟨a, hsr has, hau⟩ ⟨b, htr hbt, hbv⟩
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type ?u.4785
π : ι → Type ?u.4790
inst✝ : TopologicalSpace α
s✝ t✝ u✝ v✝ : Set α
S : Set (Set α)
K : DirectedOn (fun x x_1 => x ⊆ x_1) S
H : ∀ (s : Set α), s ∈ S → IsPreconnected s
u v : Set α
hu : IsOpen u
hv : IsOpen v
Huv : ⋃₀ S ⊆ u ∪ v
a : α
hau : a ∈ u
s : Set α
hsS : s ∈ S
has : a ∈ s
b : α
hbv : b ∈ v
t : Set α
htS : t ∈ S
hbt : b ∈ t
r : Set α
hrS : r ∈ S
hsr : s ⊆ r
htr : t ⊆ r
⊢ Set.Nonempty (⋃₀ S ∩ (u ∩ v))

tactic: have Kruv : r ∩ (u ∩ v) ⊆ ⋃₀ S ∩ (u ∩ v) := inter_subset_inter_left _ (subset_sUnion_of_mem hrS)
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type ?u.4785
π : ι → Type ?u.4790
inst✝ : TopologicalSpace α
s✝ t✝ u✝ v✝ : Set α
S : Set (Set α)
K : DirectedOn (fun x x_1 => x ⊆ x_1) S
H : ∀ (s : Set α), s ∈ S → IsPreconnected s
u v : Set α
hu : IsOpen u
hv : IsOpen v
Huv : ⋃₀ S ⊆ u ∪ v
a : α
hau : a ∈ u
s : Set α
hsS : s ∈ S
has : a ∈ s
b : α
hbv : b ∈ v
t : Set α
htS : t ∈ S
hbt : b ∈ t
r : Set α
hrS : r ∈ S
hsr : s ⊆ r
htr : t ⊆ r
Hnuv : Set.Nonempty (r ∩ (u ∩ v))
⊢ Set.Nonempty (⋃₀ S ∩ (u ∩ v))

tactic: exact Hnuv.mono Kruv
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u
β : Type v
ι : Type ?u.4785
π : ι → Type ?u.4790
inst✝ : TopologicalSpace α
s✝ t✝ u✝ v✝ : Set α
S : Set (Set α)
K : DirectedOn (fun x x_1 => x ⊆ x_1) S
H : ∀ (s : Set α), s ∈ S → IsPreconnected s
u v : Set α
hu : IsOpen u
hv : IsOpen v
Huv : ⋃₀ S ⊆ u ∪ v
a : α
hau : a ∈ u
s : Set α
hsS : s ∈ S
has : a ∈ s
b : α
hbv : b ∈ v
t : Set α
htS : t ∈ S
hbt : b ∈ t
r : Set α
hrS : r ∈ S
hsr : s ⊆ r
htr : t ⊆ r
Hnuv : Set.Nonempty (r ∩ (u ∩ v))
Kruv : r ∩ (u ∩ v) ⊆ ⋃₀ S ∩ (u ∩ v)
⊢ Set.Nonempty (⋃₀ S ∩ (u ∩ v))
Theorem: Int.neg_le_neg
File: Std/Data/Int/Lemmas.lean

tactic: have : 0 ≤ -a + b := Int.add_left_neg a ▸ Int.add_le_add_left h (-a)
state_before: a b : Int
h : a ≤ b
⊢ -b ≤ -a

tactic: have : 0 + -b ≤ -a + b + -b := Int.add_le_add_right this (-b)
state_before: a b : Int
h : a ≤ b
this : 0 ≤ -a + b
⊢ -b ≤ -a

tactic: rwa [Int.add_neg_cancel_right, Int.zero_add] at this
state_before: a b : Int
h : a ≤ b
this✝ : 0 ≤ -a + b
this : 0 + -b ≤ -a + b + -b
⊢ -b ≤ -a
Theorem: dist_dist_dist_le_right
File: Mathlib/Topology/MetricSpace/Basic.lean

tactic: simpa only [dist_comm x] using dist_dist_dist_le_left y z x
state_before: α : Type u
β : Type v
X : Type ?u.277189
ι : Type ?u.277192
inst✝ : PseudoMetricSpace α
x y z : α
⊢ dist (dist x y) (dist x z) ≤ dist y z
Theorem: AddCircle.continuousAt_equivIoc
File: Mathlib/Topology/Instances/AddCircle.lean

tactic: induction x using QuotientAddGroup.induction_on'
state_before: 𝕜 : Type u_1
B : Type ?u.101096
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p : 𝕜
hp : Fact (0 < p)
a : 𝕜
inst✝ : Archimedean 𝕜
x : AddCircle p
hx : x ≠ ↑a
⊢ ContinuousAt (↑(equivIoc p a)) x

tactic: rw [ContinuousAt, Filter.Tendsto, QuotientAddGroup.nhds_eq, Filter.map_map]
state_before: case H
𝕜 : Type u_1
B : Type ?u.101096
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p : 𝕜
hp : Fact (0 < p)
a : 𝕜
inst✝ : Archimedean 𝕜
x : AddCircle p
z✝ : 𝕜
hx : ↑z✝ ≠ ↑a
⊢ ContinuousAt ↑(equivIoc p a) ↑z✝

tactic: exact (continuousAt_toIocMod hp.out a hx).codRestrict _
state_before: case H
𝕜 : Type u_1
B : Type ?u.101096
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p : 𝕜
hp : Fact (0 < p)
a : 𝕜
inst✝ : Archimedean 𝕜
x : AddCircle p
z✝ : 𝕜
hx : ↑z✝ ≠ ↑a
⊢ Filter.map (↑(equivIoc p a) ∘ QuotientAddGroup.mk) (𝓝 z✝) ≤ 𝓝 (↑(equivIoc p a) ↑z✝)
Theorem: Finset.fold_union_empty_singleton
File: Mathlib/Data/Finset/Fold.lean

tactic: induction' s using Finset.induction_on with a s has ih
state_before: α : Type u_1
β : Type ?u.62282
γ : Type ?u.62285
op : β → β → β
hc : IsCommutative β op
ha : IsAssociative β op
f : α → β
b : β
s✝ : Finset α
a : α
inst✝ : DecidableEq α
s : Finset α
⊢ fold (fun x x_1 => x ∪ x_1) ∅ singleton s = s

tactic: simp only [fold_empty]
state_before: case empty
α : Type u_1
β : Type ?u.62282
γ : Type ?u.62285
op : β → β → β
hc : IsCommutative β op
ha : IsAssociative β op
f : α → β
b : β
s : Finset α
a : α
inst✝ : DecidableEq α
⊢ fold (fun x x_1 => x ∪ x_1) ∅ singleton ∅ = ∅

tactic: rw [fold_insert has, ih, insert_eq]
state_before: case insert
α : Type u_1
β : Type ?u.62282
γ : Type ?u.62285
op : β → β → β
hc : IsCommutative β op
ha : IsAssociative β op
f : α → β
b : β
s✝ : Finset α
a✝ : α
inst✝ : DecidableEq α
a : α
s : Finset α
has : ¬a ∈ s
ih : fold (fun x x_1 => x ∪ x_1) ∅ singleton s = s
⊢ fold (fun x x_1 => x ∪ x_1) ∅ singleton (insert a s) = insert a s
Theorem: List.mem_inits
File: Mathlib/Data/List/Infix.lean

tactic: simpa only [inits, mem_singleton]
state_before: α : Type u_1
β : Type ?u.29777
l l₁ l₂ l₃ : List α
a b : α
m n : ℕ
s : List α
this : s = [] ↔ s <+: []
⊢ s ∈ inits [] ↔ s <+: []

tactic: simpa
state_before: α : Type u_1
β : Type ?u.29777
l l₁ l₂ l₃ : List α
a✝ b : α
m n : ℕ
s : List α
a : α
t : List α
this : (s = [] ∨ ∃ l, l ∈ inits t ∧ a :: l = s) ↔ s <+: a :: t
⊢ s ∈ inits (a :: t) ↔ s <+: a :: t

tactic: let ⟨s, ht⟩ := (mem_inits _ _).1 hr
state_before: α : Type u_1
β : Type ?u.29777
l l₁ l₂ l₃ : List α
a✝ b : α
m n : ℕ
s✝ : List α
a : α
t : List α
o : s✝ = [] ∨ ∃ l, l ∈ inits t ∧ a :: l = s✝
s r : List α
hr : r ∈ inits t
hs : a :: r = s
⊢ s <+: a :: t

tactic: rw [← hs, ← ht]
state_before: α : Type u_1
β : Type ?u.29777
l l₁ l₂ l₃ : List α
a✝ b : α
m n : ℕ
s✝¹ : List α
a : α
t : List α
o : s✝¹ = [] ∨ ∃ l, l ∈ inits t ∧ a :: l = s✝¹
s✝ r : List α
hr : r ∈ inits t
hs : a :: r = s✝
s : List α
ht : r ++ s = t
⊢ s✝ <+: a :: t

tactic: exact ⟨s, rfl⟩
state_before: α : Type u_1
β : Type ?u.29777
l l₁ l₂ l₃ : List α
a✝ b : α
m n : ℕ
s✝¹ : List α
a : α
t : List α
o : s✝¹ = [] ∨ ∃ l, l ∈ inits t ∧ a :: l = s✝¹
s✝ r : List α
hr : r ∈ inits t
hs : a :: r = s✝
s : List α
ht : r ++ s = t
⊢ a :: r <+: a :: (r ++ s)

tactic: rw [ba]
state_before: α : Type u_1
β : Type ?u.29777
l l₁ l₂ l₃ : List α
a✝ b✝ : α
m n : ℕ
s✝ : List α
a : α
t : List α
mi : s✝ <+: a :: t
b : α
s r : List α
hr : b :: s ++ r = a :: t
ba : b = a
st : s ++ r = t
⊢ ∃ l, l ∈ inits t ∧ a :: l = b :: s

tactic: exact ⟨_, (mem_inits _ _).2 ⟨_, st⟩, rfl⟩
state_before: α : Type u_1
β : Type ?u.29777
l l₁ l₂ l₃ : List α
a✝ b✝ : α
m n : ℕ
s✝ : List α
a : α
t : List α
mi : s✝ <+: a :: t
b : α
s r : List α
hr : b :: s ++ r = a :: t
ba : b = a
st : s ++ r = t
⊢ ∃ l, l ∈ inits t ∧ a :: l = a :: s
Theorem: FiniteDimensional.right
File: Mathlib/FieldTheory/Tower.lean

tactic: rw [Submodule.restrictScalars_top, eq_top_iff, ← hb, Submodule.span_le]
state_before: F : Type u
K : Type v
A : Type w
inst✝⁶ : Field F
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup A
inst✝³ : Algebra F K
inst✝² : Module K A
inst✝¹ : Module F A
inst✝ : IsScalarTower F K A
hf : FiniteDimensional F A
b : Finset A
hb : Submodule.span F ↑b = ⊤
⊢ Submodule.restrictScalars F (Submodule.span K ↑b) = Submodule.restrictScalars F ⊤

tactic: exact Submodule.subset_span
state_before: F : Type u
K : Type v
A : Type w
inst✝⁶ : Field F
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup A
inst✝³ : Algebra F K
inst✝² : Module K A
inst✝¹ : Module F A
inst✝ : IsScalarTower F K A
hf : FiniteDimensional F A
b : Finset A
hb : Submodule.span F ↑b = ⊤
⊢ ↑b ⊆ ↑(Submodule.restrictScalars F (Submodule.span K ↑b))
Theorem: Cardinal.mk_multiset_of_infinite
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: simp
state_before: α : Type u
inst✝ : Infinite α
⊢ (#Multiset α) = (#α)
Theorem: Subgroup.MemLeftTransversals.inv_mul_toFun_mem
File: Mathlib/GroupTheory/Complement.lean

tactic: rw [mul_inv_rev, inv_inv]
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
hS : S ∈ leftTransversals ↑H
g : G
⊢ ((↑(toFun hS g))⁻¹ * g)⁻¹ = g⁻¹ * ↑(toFun hS g)
Theorem: MeasureTheory.average_congr
File: Mathlib/MeasureTheory/Integral/Average.lean

tactic: simp only [average_eq, integral_congr_ae h]
state_before: α : Type u_1
E : Type u_2
F : Type ?u.200542
m0 : MeasurableSpace α
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : CompleteSpace E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
μ : Measure α
s : Set E
f g : α → E
h : f =ᶠ[ae μ] g
⊢ (⨍ (x : α), f x ∂μ) = ⨍ (x : α), g x ∂μ
Theorem: Int.subNatNat_add_negSucc
File: Std/Data/Int/Lemmas.lean

tactic: have h := Nat.lt_or_ge m n
state_before: m n k : Nat
⊢ subNatNat m n + -[k+1] = subNatNat m (n + succ k)

tactic: cases h with
| inr h' =>
  rw [subNatNat_of_le h']
  simp
  rw [subNatNat_sub h', Nat.add_comm]
| inl h' =>
  have h₂ : m < n + succ k := Nat.lt_of_lt_of_le h' (le_add_right _ _)
  have h₃ : m ≤ n + k := le_of_succ_le_succ h₂
  rw [subNatNat_of_lt h', subNatNat_of_lt h₂]
  simp [Nat.add_comm]
  rw [← add_succ, succ_pred_eq_of_pos (Nat.sub_pos_of_lt h'), add_succ, succ_sub h₃, Nat.pred_succ]
  rw [Nat.add_comm n, Nat.add_sub_assoc (Nat.le_of_lt h')]
state_before: m n k : Nat
h : m < n ∨ m ≥ n
⊢ subNatNat m n + -[k+1] = subNatNat m (n + succ k)

tactic: rw [subNatNat_of_le h']
state_before: case inr
m n k : Nat
h' : m ≥ n
⊢ subNatNat m n + -[k+1] = subNatNat m (n + succ k)

tactic: simp
state_before: case inr
m n k : Nat
h' : m ≥ n
⊢ ↑(m - n) + -[k+1] = subNatNat m (n + succ k)

tactic: rw [subNatNat_sub h', Nat.add_comm]
state_before: case inr
m n k : Nat
h' : m ≥ n
⊢ subNatNat (m - n) (succ k) = subNatNat m (n + succ k)

tactic: have h₂ : m < n + succ k := Nat.lt_of_lt_of_le h' (le_add_right _ _)
state_before: case inl
m n k : Nat
h' : m < n
⊢ subNatNat m n + -[k+1] = subNatNat m (n + succ k)

tactic: have h₃ : m ≤ n + k := le_of_succ_le_succ h₂
state_before: case inl
m n k : Nat
h' : m < n
h₂ : m < n + succ k
⊢ subNatNat m n + -[k+1] = subNatNat m (n + succ k)

tactic: rw [subNatNat_of_lt h', subNatNat_of_lt h₂]
state_before: case inl
m n k : Nat
h' : m < n
h₂ : m < n + succ k
h₃ : m ≤ n + k
⊢ subNatNat m n + -[k+1] = subNatNat m (n + succ k)

tactic: simp [Nat.add_comm]
state_before: case inl
m n k : Nat
h' : m < n
h₂ : m < n + succ k
h₃ : m ≤ n + k
⊢ -[pred (n - m)+1] + -[k+1] = -[pred (n + succ k - m)+1]

tactic: rw [← add_succ, succ_pred_eq_of_pos (Nat.sub_pos_of_lt h'), add_succ, succ_sub h₃, Nat.pred_succ]
state_before: case inl
m n k : Nat
h' : m < n
h₂ : m < n + succ k
h₃ : m ≤ n + k
⊢ succ (k + pred (n - m)) = pred (n + succ k - m)

tactic: rw [Nat.add_comm n, Nat.add_sub_assoc (Nat.le_of_lt h')]
state_before: case inl
m n k : Nat
h' : m < n
h₂ : m < n + succ k
h₃ : m ≤ n + k
⊢ k + (n - m) = n + k - m
Theorem: Rat.divInt_nonneg
File: Mathlib/Data/Rat/Order.lean

tactic: generalize ha : a /. b = x
state_before: a✝ b✝ c : ℚ
a b : ℤ
h : 0 < b
⊢ Rat.Nonneg (a /. b) ↔ 0 ≤ a

tactic: cases' x with n₁ d₁ h₁ c₁
state_before: a✝ b✝ c : ℚ
a b : ℤ
h : 0 < b
x : ℚ
ha : a /. b = x
⊢ Rat.Nonneg x ↔ 0 ≤ a

tactic: rw [num_den'] at ha
state_before: case mk'
a✝ b✝ c : ℚ
a b : ℤ
h : 0 < b
n₁ : ℤ
d₁ : ℕ
h₁ : d₁ ≠ 0
c₁ : Nat.coprime (Int.natAbs n₁) d₁
ha : a /. b = mk' n₁ d₁
⊢ Rat.Nonneg (mk' n₁ d₁) ↔ 0 ≤ a

tactic: simp [Rat.Nonneg]
state_before: case mk'
a✝ b✝ c : ℚ
a b : ℤ
h : 0 < b
n₁ : ℤ
d₁ : ℕ
h₁ : d₁ ≠ 0
c₁ : Nat.coprime (Int.natAbs n₁) d₁
ha : a /. b = n₁ /. ↑d₁
⊢ Rat.Nonneg (mk' n₁ d₁) ↔ 0 ≤ a

tactic: have d0 := Int.ofNat_lt.2 (Nat.pos_of_ne_zero h₁)
state_before: case mk'
a✝ b✝ c : ℚ
a b : ℤ
h : 0 < b
n₁ : ℤ
d₁ : ℕ
h₁ : d₁ ≠ 0
c₁ : Nat.coprime (Int.natAbs n₁) d₁
ha : a /. b = n₁ /. ↑d₁
⊢ 0 ≤ n₁ ↔ 0 ≤ a

tactic: have := (divInt_eq_iff (ne_of_gt h) (ne_of_gt d0)).1 ha
state_before: case mk'
a✝ b✝ c : ℚ
a b : ℤ
h : 0 < b
n₁ : ℤ
d₁ : ℕ
h₁ : d₁ ≠ 0
c₁ : Nat.coprime (Int.natAbs n₁) d₁
ha : a /. b = n₁ /. ↑d₁
d0 : ↑0 < ↑d₁
⊢ 0 ≤ n₁ ↔ 0 ≤ a

tactic: constructor <;> intro h₂
state_before: case mk'
a✝ b✝ c : ℚ
a b : ℤ
h : 0 < b
n₁ : ℤ
d₁ : ℕ
h₁ : d₁ ≠ 0
c₁ : Nat.coprime (Int.natAbs n₁) d₁
ha : a /. b = n₁ /. ↑d₁
d0 : ↑0 < ↑d₁
this : a * ↑d₁ = n₁ * b
⊢ 0 ≤ n₁ ↔ 0 ≤ a

tactic: apply nonneg_of_mul_nonneg_left _ d0
state_before: case mk'.mp
a✝ b✝ c : ℚ
a b : ℤ
h : 0 < b
n₁ : ℤ
d₁ : ℕ
h₁ : d₁ ≠ 0
c₁ : Nat.coprime (Int.natAbs n₁) d₁
ha : a /. b = n₁ /. ↑d₁
d0 : ↑0 < ↑d₁
this : a * ↑d₁ = n₁ * b
h₂ : 0 ≤ n₁
⊢ 0 ≤ a

tactic: rw [this]
state_before: a✝ b✝ c : ℚ
a b : ℤ
h : 0 < b
n₁ : ℤ
d₁ : ℕ
h₁ : d₁ ≠ 0
c₁ : Nat.coprime (Int.natAbs n₁) d₁
ha : a /. b = n₁ /. ↑d₁
d0 : ↑0 < ↑d₁
this : a * ↑d₁ = n₁ * b
h₂ : 0 ≤ n₁
⊢ 0 ≤ a * ↑d₁

tactic: exact mul_nonneg h₂ (le_of_lt h)
state_before: a✝ b✝ c : ℚ
a b : ℤ
h : 0 < b
n₁ : ℤ
d₁ : ℕ
h₁ : d₁ ≠ 0
c₁ : Nat.coprime (Int.natAbs n₁) d₁
ha : a /. b = n₁ /. ↑d₁
d0 : ↑0 < ↑d₁
this : a * ↑d₁ = n₁ * b
h₂ : 0 ≤ n₁
⊢ 0 ≤ n₁ * b

tactic: apply nonneg_of_mul_nonneg_left _ h
state_before: case mk'.mpr
a✝ b✝ c : ℚ
a b : ℤ
h : 0 < b
n₁ : ℤ
d₁ : ℕ
h₁ : d₁ ≠ 0
c₁ : Nat.coprime (Int.natAbs n₁) d₁
ha : a /. b = n₁ /. ↑d₁
d0 : ↑0 < ↑d₁
this : a * ↑d₁ = n₁ * b
h₂ : 0 ≤ a
⊢ 0 ≤ n₁

tactic: rw [← this]
state_before: a✝ b✝ c : ℚ
a b : ℤ
h : 0 < b
n₁ : ℤ
d₁ : ℕ
h₁ : d₁ ≠ 0
c₁ : Nat.coprime (Int.natAbs n₁) d₁
ha : a /. b = n₁ /. ↑d₁
d0 : ↑0 < ↑d₁
this : a * ↑d₁ = n₁ * b
h₂ : 0 ≤ a
⊢ 0 ≤ n₁ * b

tactic: exact mul_nonneg h₂ (Int.ofNat_zero_le _)
state_before: a✝ b✝ c : ℚ
a b : ℤ
h : 0 < b
n₁ : ℤ
d₁ : ℕ
h₁ : d₁ ≠ 0
c₁ : Nat.coprime (Int.natAbs n₁) d₁
ha : a /. b = n₁ /. ↑d₁
d0 : ↑0 < ↑d₁
this : a * ↑d₁ = n₁ * b
h₂ : 0 ≤ a
⊢ 0 ≤ a * ↑d₁
Theorem: Multiset.map_univ_coe
File: Mathlib/Data/Multiset/Fintype.lean

tactic: have := m.map_toEnumFinset_fst
state_before: α : Type u_1
inst✝ : DecidableEq α
m✝ m : Multiset α
⊢ map (fun x => x.fst) Finset.univ.val = m

tactic: rw [← m.map_univ_coeEmbedding] at this
state_before: α : Type u_1
inst✝ : DecidableEq α
m✝ m : Multiset α
this : map Prod.fst (toEnumFinset m).val = m
⊢ map (fun x => x.fst) Finset.univ.val = m

tactic: simpa only [Finset.map_val, Multiset.coeEmbedding_apply, Multiset.map_map,
  Function.comp_apply] using this
state_before: α : Type u_1
inst✝ : DecidableEq α
m✝ m : Multiset α
this : map Prod.fst (Finset.map (coeEmbedding m) Finset.univ).val = m
⊢ map (fun x => x.fst) Finset.univ.val = m
Theorem: NormedAddCommGroup.tendsto_atTop
File: Mathlib/Analysis/Normed/Field/Basic.lean

tactic: simp [dist_eq_norm]
state_before: α : Type u_1
β✝ : Type ?u.383130
γ : Type ?u.383133
ι : Type ?u.383136
inst✝² : Nonempty α
inst✝¹ : SemilatticeSup α
β : Type u_2
inst✝ : SeminormedAddCommGroup β
f : α → β
b : β
⊢ (∀ (ib : ℝ), 0 < ib → ∃ ia, True ∧ ∀ (x : α), x ∈ Set.Ici ia → f x ∈ ball b ib) ↔
    ∀ (ε : ℝ), 0 < ε → ∃ N, ∀ (n : α), N ≤ n → ‖f n - b‖ < ε
Theorem: Nat.ArithmeticFunction.zeta_mul_pow_eq_sigma
File: Mathlib/NumberTheory/ArithmeticFunction.lean

tactic: ext
state_before: R : Type ?u.525734
k : ℕ
⊢ ζ * pow k = σ k

tactic: rw [sigma, zeta_mul_apply]
state_before: case h
R : Type ?u.525734
k x✝ : ℕ
⊢ ↑(ζ * pow k) x✝ = ↑(σ k) x✝

tactic: apply sum_congr rfl
state_before: case h
R : Type ?u.525734
k x✝ : ℕ
⊢ ∑ i in divisors x✝, ↑(pow k) i =
    ↑{ toFun := fun n => ∑ d in divisors n, d ^ k, map_zero' := (_ : ∑ d in divisors 0, d ^ k = 0) } x✝

tactic: intro x hx
state_before: case h
R : Type ?u.525734
k x✝ : ℕ
⊢ ∀ (x : ℕ), x ∈ divisors x✝ → ↑(pow k) x = x ^ k

tactic: rw [pow_apply, if_neg (not_and_of_not_right _ _)]
state_before: case h
R : Type ?u.525734
k x✝ x : ℕ
hx : x ∈ divisors x✝
⊢ ↑(pow k) x = x ^ k

tactic: contrapose! hx
state_before: R : Type ?u.525734
k x✝ x : ℕ
hx : x ∈ divisors x✝
⊢ ¬x = 0

tactic: simp [hx]
state_before: R : Type ?u.525734
k x✝ x : ℕ
hx : x = 0
⊢ ¬x ∈ divisors x✝
Theorem: padicValInt.zero
File: Mathlib/NumberTheory/Padics/PadicVal.lean

tactic: simp [padicValInt]
state_before: p : ℕ
⊢ padicValInt p 0 = 0
Theorem: MvPolynomial.join₂_map
File: Mathlib/Data/MvPolynomial/Monad.lean

tactic: simp only [join₂, bind₂, eval₂Hom_map_hom, RingHom.id_comp]
state_before: σ : Type u_3
τ : Type ?u.203301
R : Type u_1
S : Type u_2
T : Type ?u.203310
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
inst✝ : CommSemiring T
f✝ : σ → MvPolynomial τ R
f : R →+* MvPolynomial σ S
φ : MvPolynomial σ R
⊢ ↑join₂ (↑(map f) φ) = ↑(bind₂ f) φ
Theorem: Filter.cofinite_eq_bot_iff
File: Mathlib/Order/Filter/Cofinite.lean

tactic: simp [← empty_mem_iff_bot, finite_univ_iff]
state_before: ι : Type ?u.1147
α : Type u_1
β : Type ?u.1153
l : Filter α
⊢ cofinite = ⊥ ↔ Finite α
Theorem: Filter.HasBasis.uniformEmbedding_iff
File: Mathlib/Topology/UniformSpace/UniformEmbedding.lean

tactic: simp only [h.uniformEmbedding_iff' h', h.uniformContinuous_iff h']
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
ι : Sort u_1
ι' : Sort u_2
p : ι → Prop
p' : ι' → Prop
s : ι → Set (α × α)
s' : ι' → Set (β × β)
h : HasBasis (𝓤 α) p s
h' : HasBasis (𝓤 β) p' s'
f : α → β
⊢ UniformEmbedding f ↔
    Injective f ∧ UniformContinuous f ∧ ∀ (j : ι), p j → ∃ i, p' i ∧ ∀ (x y : α), (f x, f y) ∈ s' i → (x, y) ∈ s j