1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: IntermediateField.fixingSubgroup.bot
File: Mathlib/FieldTheory/KrullTopology.lean

tactic: ext f
state_before: K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
⊢ ⊥.fixingSubgroup = ⊤
state_after: case h
K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
f : L ≃ₐ[K] L
⊢ f ∈ ⊥.fixingSubgroup ↔ f ∈ ⊤

tactic: refine ⟨fun _ => Subgroup.mem_top _, fun _ => ?_⟩
state_before: case h
K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
f : L ≃ₐ[K] L
⊢ f ∈ ⊥.fixingSubgroup ↔ f ∈ ⊤
state_after: case h
K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
f : L ≃ₐ[K] L
x✝ : f ∈ ⊤
⊢ f ∈ ⊥.fixingSubgroup

tactic: rintro ⟨x, hx : x ∈ (⊥ : IntermediateField K L)⟩
state_before: case h
K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
f : L ≃ₐ[K] L
x✝ : f ∈ ⊤
⊢ f ∈ ⊥.fixingSubgroup
state_after: case h.mk
K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
f : L ≃ₐ[K] L
x✝ : f ∈ ⊤
x : L
hx : x ∈ ⊥
⊢ f • ↑⟨x, hx⟩ = ↑⟨x, hx⟩

tactic: rw [IntermediateField.mem_bot] at hx
state_before: case h.mk
K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
f : L ≃ₐ[K] L
x✝ : f ∈ ⊤
x : L
hx : x ∈ ⊥
⊢ f • ↑⟨x, hx⟩ = ↑⟨x, hx⟩
state_after: case h.mk
K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
f : L ≃ₐ[K] L
x✝ : f ∈ ⊤
x : L
hx✝ : x ∈ ⊥
hx : x ∈ Set.range ⇑(algebraMap K L)
⊢ f • ↑⟨x, hx✝⟩ = ↑⟨x, hx✝⟩

tactic: rcases hx with ⟨y, rfl⟩
state_before: case h.mk
K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
f : L ≃ₐ[K] L
x✝ : f ∈ ⊤
x : L
hx✝ : x ∈ ⊥
hx : x ∈ Set.range ⇑(algebraMap K L)
⊢ f • ↑⟨x, hx✝⟩ = ↑⟨x, hx✝⟩
state_after: case h.mk.intro
K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
f : L ≃ₐ[K] L
x✝ : f ∈ ⊤
y : K
hx : (algebraMap K L) y ∈ ⊥
⊢ f • ↑⟨(algebraMap K L) y, hx⟩ = ↑⟨(algebraMap K L) y, hx⟩

tactic: exact f.commutes y
state_before: case h.mk.intro
K : Type u_1
L : Type u_2
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Algebra K L
f : L ≃ₐ[K] L
x✝ : f ∈ ⊤
y : K
hx : (algebraMap K L) y ∈ ⊥
⊢ f • ↑⟨(algebraMap K L) y, hx⟩ = ↑⟨(algebraMap K L) y, hx⟩
state_after: no goals
Theorem: ByteArray.size_ofFn
File: .lake/packages/batteries/Batteries/Data/ByteArray.lean

tactic: simp [size]
state_before: n : Nat
f : Fin n → UInt8
⊢ (ofFn f).size = n
state_after: no goals
Theorem: Filter.Tendsto.prod_map_prod_atBot
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: rw [← prod_atBot_atBot_eq]
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeInf γ
F : Filter α
G : Filter β
f : α → γ
g : β → γ
hf : Tendsto f F atBot
hg : Tendsto g G atBot
⊢ Tendsto (Prod.map f g) (F ×ˢ G) atBot
state_after: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeInf γ
F : Filter α
G : Filter β
f : α → γ
g : β → γ
hf : Tendsto f F atBot
hg : Tendsto g G atBot
⊢ Tendsto (Prod.map f g) (F ×ˢ G) (atBot ×ˢ atBot)

tactic: exact hf.prod_map hg
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeInf γ
F : Filter α
G : Filter β
f : α → γ
g : β → γ
hf : Tendsto f F atBot
hg : Tendsto g G atBot
⊢ Tendsto (Prod.map f g) (F ×ˢ G) (atBot ×ˢ atBot)
state_after: no goals
Theorem: MeasureTheory.Measure.count_ne_zero
File: Mathlib/MeasureTheory/Measure/Count.lean

tactic: rw [Ne, count_eq_zero_iff]
state_before: α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
s : Set α
inst✝ : MeasurableSingletonClass α
hs' : s.Nonempty
⊢ count s ≠ 0
state_after: α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
s : Set α
inst✝ : MeasurableSingletonClass α
hs' : s.Nonempty
⊢ ¬s = ∅

tactic: exact hs'.ne_empty
state_before: α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
s : Set α
inst✝ : MeasurableSingletonClass α
hs' : s.Nonempty
⊢ ¬s = ∅
state_after: no goals
Theorem: tendsto_one_plus_div_rpow_exp
File: Mathlib/Analysis/SpecialFunctions/Pow/Deriv.lean

tactic: apply ((Real.continuous_exp.tendsto _).comp (tendsto_mul_log_one_plus_div_atTop t)).congr' _
state_before: t : ℝ
⊢ Tendsto (fun x => (1 + t / x) ^ x) atTop (𝓝 (rexp t))
state_after: t : ℝ
⊢ (rexp ∘ fun x => x * log (1 + t / x)) =ᶠ[atTop] fun x => (1 + t / x) ^ x

tactic: have h₁ : (1 : ℝ) / 2 < 1 := by linarith
state_before: t : ℝ
⊢ (rexp ∘ fun x => x * log (1 + t / x)) =ᶠ[atTop] fun x => (1 + t / x) ^ x
state_after: t : ℝ
h₁ : 1 / 2 < 1
⊢ (rexp ∘ fun x => x * log (1 + t / x)) =ᶠ[atTop] fun x => (1 + t / x) ^ x

tactic: have h₂ : Tendsto (fun x : ℝ => 1 + t / x) atTop (𝓝 1) := by
  simpa using (tendsto_inv_atTop_zero.const_mul t).const_add 1
state_before: t : ℝ
h₁ : 1 / 2 < 1
⊢ (rexp ∘ fun x => x * log (1 + t / x)) =ᶠ[atTop] fun x => (1 + t / x) ^ x
state_after: t : ℝ
h₁ : 1 / 2 < 1
h₂ : Tendsto (fun x => 1 + t / x) atTop (𝓝 1)
⊢ (rexp ∘ fun x => x * log (1 + t / x)) =ᶠ[atTop] fun x => (1 + t / x) ^ x

tactic: refine (eventually_ge_of_tendsto_gt h₁ h₂).mono fun x hx => ?_
state_before: t : ℝ
h₁ : 1 / 2 < 1
h₂ : Tendsto (fun x => 1 + t / x) atTop (𝓝 1)
⊢ (rexp ∘ fun x => x * log (1 + t / x)) =ᶠ[atTop] fun x => (1 + t / x) ^ x
state_after: t : ℝ
h₁ : 1 / 2 < 1
h₂ : Tendsto (fun x => 1 + t / x) atTop (𝓝 1)
x : ℝ
hx : 1 / 2 ≤ 1 + t / x
⊢ (rexp ∘ fun x => x * log (1 + t / x)) x = (fun x => (1 + t / x) ^ x) x

tactic: have hx' : 0 < 1 + t / x := by linarith
state_before: t : ℝ
h₁ : 1 / 2 < 1
h₂ : Tendsto (fun x => 1 + t / x) atTop (𝓝 1)
x : ℝ
hx : 1 / 2 ≤ 1 + t / x
⊢ (rexp ∘ fun x => x * log (1 + t / x)) x = (fun x => (1 + t / x) ^ x) x
state_after: t : ℝ
h₁ : 1 / 2 < 1
h₂ : Tendsto (fun x => 1 + t / x) atTop (𝓝 1)
x : ℝ
hx : 1 / 2 ≤ 1 + t / x
hx' : 0 < 1 + t / x
⊢ (rexp ∘ fun x => x * log (1 + t / x)) x = (fun x => (1 + t / x) ^ x) x

tactic: simp [mul_comm x, exp_mul, exp_log hx']
state_before: t : ℝ
h₁ : 1 / 2 < 1
h₂ : Tendsto (fun x => 1 + t / x) atTop (𝓝 1)
x : ℝ
hx : 1 / 2 ≤ 1 + t / x
hx' : 0 < 1 + t / x
⊢ (rexp ∘ fun x => x * log (1 + t / x)) x = (fun x => (1 + t / x) ^ x) x
state_after: no goals

tactic: linarith
state_before: t : ℝ
⊢ 1 / 2 < 1
state_after: no goals

tactic: simpa using (tendsto_inv_atTop_zero.const_mul t).const_add 1
state_before: t : ℝ
h₁ : 1 / 2 < 1
⊢ Tendsto (fun x => 1 + t / x) atTop (𝓝 1)
state_after: no goals

tactic: linarith
state_before: t : ℝ
h₁ : 1 / 2 < 1
h₂ : Tendsto (fun x => 1 + t / x) atTop (𝓝 1)
x : ℝ
hx : 1 / 2 ≤ 1 + t / x
⊢ 0 < 1 + t / x
state_after: no goals
Theorem: ext_nat'
File: Mathlib/Data/Nat/Cast/Basic.lean

tactic: intro n
state_before: α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
F : Type u_5
inst✝³ : AddMonoidWithOne B
inst✝² : FunLike F ℕ A
inst✝¹ : AddMonoid A
inst✝ : AddMonoidHomClass F ℕ A
f g : F
h : f 1 = g 1
⊢ ∀ (x : ℕ), f x = g x
state_after: α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
F : Type u_5
inst✝³ : AddMonoidWithOne B
inst✝² : FunLike F ℕ A
inst✝¹ : AddMonoid A
inst✝ : AddMonoidHomClass F ℕ A
f g : F
h : f 1 = g 1
n : ℕ
⊢ f n = g n

tactic: induction n with
| zero => simp_rw [map_zero f, map_zero g]
| succ n ihn =>
  simp [h, ihn]
state_before: α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
F : Type u_5
inst✝³ : AddMonoidWithOne B
inst✝² : FunLike F ℕ A
inst✝¹ : AddMonoid A
inst✝ : AddMonoidHomClass F ℕ A
f g : F
h : f 1 = g 1
n : ℕ
⊢ f n = g n
state_after: no goals

tactic: simp_rw [map_zero f, map_zero g]
state_before: case zero
α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
F : Type u_5
inst✝³ : AddMonoidWithOne B
inst✝² : FunLike F ℕ A
inst✝¹ : AddMonoid A
inst✝ : AddMonoidHomClass F ℕ A
f g : F
h : f 1 = g 1
⊢ f 0 = g 0
state_after: no goals

tactic: simp [h, ihn]
state_before: case succ
α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
F : Type u_5
inst✝³ : AddMonoidWithOne B
inst✝² : FunLike F ℕ A
inst✝¹ : AddMonoid A
inst✝ : AddMonoidHomClass F ℕ A
f g : F
h : f 1 = g 1
n : ℕ
ihn : f n = g n
⊢ f (n + 1) = g (n + 1)
state_after: no goals
Theorem: wellOrderSucc_le
File: Mathlib/Order/IsWellOrderLimitElement.lean

tactic: dsimp [wellOrderSucc, WellFounded.succ]
state_before: α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : IsWellOrder α fun x x_1 => x < x_1
a b : α
ha : a < b
⊢ wellOrderSucc a ≤ b
state_after: α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : IsWellOrder α fun x x_1 => x < x_1
a b : α
ha : a < b
⊢ (if h : ∃ y, a < y then ⋯.min {y | a < y} h else a) ≤ b

tactic: rw [dif_pos ⟨_, ha⟩]
state_before: α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : IsWellOrder α fun x x_1 => x < x_1
a b : α
ha : a < b
⊢ (if h : ∃ y, a < y then ⋯.min {y | a < y} h else a) ≤ b
state_after: α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : IsWellOrder α fun x x_1 => x < x_1
a b : α
ha : a < b
⊢ ⋯.min {y | a < y} ⋯ ≤ b

tactic: exact WellFounded.min_le _ ha
state_before: α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : IsWellOrder α fun x x_1 => x < x_1
a b : α
ha : a < b
⊢ ⋯.min {y | a < y} ⋯ ≤ b
state_after: no goals
Theorem: List.tendsto_eraseIdx
File: Mathlib/Topology/List.lean

tactic: rw [nhds_nil]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
x✝ : ℕ
⊢ Tendsto (fun x => x.eraseIdx x✝) (𝓝 []) (𝓝 ([].eraseIdx x✝))
state_after: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
x✝ : ℕ
⊢ Tendsto (fun x => x.eraseIdx x✝) (pure []) (𝓝 ([].eraseIdx x✝))

tactic: exact tendsto_pure_nhds _ _
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
x✝ : ℕ
⊢ Tendsto (fun x => x.eraseIdx x✝) (pure []) (𝓝 ([].eraseIdx x✝))
state_after: no goals

tactic: rw [tendsto_cons_iff]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
a : α
l : List α
⊢ Tendsto (fun x => x.eraseIdx 0) (𝓝 (a :: l)) (𝓝 ((a :: l).eraseIdx 0))
state_after: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
a : α
l : List α
⊢ Tendsto (fun p => (p.1 :: p.2).eraseIdx 0) (𝓝 a ×ˢ 𝓝 l) (𝓝 ((a :: l).eraseIdx 0))

tactic: exact tendsto_snd
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
a : α
l : List α
⊢ Tendsto (fun p => (p.1 :: p.2).eraseIdx 0) (𝓝 a ×ˢ 𝓝 l) (𝓝 ((a :: l).eraseIdx 0))
state_after: no goals

tactic: rw [tendsto_cons_iff]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
n : ℕ
a : α
l : List α
⊢ Tendsto (fun x => x.eraseIdx (n + 1)) (𝓝 (a :: l)) (𝓝 ((a :: l).eraseIdx (n + 1)))
state_after: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
n : ℕ
a : α
l : List α
⊢ Tendsto (fun p => (p.1 :: p.2).eraseIdx (n + 1)) (𝓝 a ×ˢ 𝓝 l) (𝓝 ((a :: l).eraseIdx (n + 1)))

tactic: dsimp [eraseIdx]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
n : ℕ
a : α
l : List α
⊢ Tendsto (fun p => (p.1 :: p.2).eraseIdx (n + 1)) (𝓝 a ×ˢ 𝓝 l) (𝓝 ((a :: l).eraseIdx (n + 1)))
state_after: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
n : ℕ
a : α
l : List α
⊢ Tendsto (fun p => p.1 :: p.2.eraseIdx n) (𝓝 a ×ˢ 𝓝 l) (𝓝 (a :: l.eraseIdx n))

tactic: exact tendsto_fst.cons ((@tendsto_eraseIdx n l).comp tendsto_snd)
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
n : ℕ
a : α
l : List α
⊢ Tendsto (fun p => p.1 :: p.2.eraseIdx n) (𝓝 a ×ˢ 𝓝 l) (𝓝 (a :: l.eraseIdx n))
state_after: no goals
Theorem: upperSemicontinuousWithinAt_univ_iff
File: Mathlib/Topology/Semicontinuous.lean

tactic: simp [UpperSemicontinuousWithinAt, UpperSemicontinuousAt, nhdsWithin_univ]
state_before: α : Type u_1
inst✝¹ : TopologicalSpace α
β : Type u_2
inst✝ : Preorder β
f g : α → β
x : α
s t : Set α
y z : β
⊢ UpperSemicontinuousWithinAt f univ x ↔ UpperSemicontinuousAt f x
state_after: no goals
Theorem: MeasureTheory.SimpleFunc.integrable_approxOn_range
File: Mathlib/MeasureTheory/Function/SimpleFuncDenseLp.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
E : Type u_4
F : Type u_5
𝕜 : Type u_6
inst✝⁴ : MeasurableSpace β
inst✝³ : MeasurableSpace E
inst✝² : NormedAddCommGroup E
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
inst✝ : SeparableSpace ↑(Set.range f ∪ {0})
hf : Integrable f μ
n : ℕ
⊢ 0 ∈ Set.range f ∪ {0}
state_after: no goals
Theorem: Metric.tendstoUniformlyOnFilter_iff
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

tactic: refine ⟨fun H ε hε => H _ (dist_mem_uniformity hε), fun H u hu => ?_⟩
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
F : ι → β → α
f : β → α
p : Filter ι
p' : Filter β
⊢ TendstoUniformlyOnFilter F f p p' ↔ ∀ ε > 0, ∀ᶠ (n : ι × β) in p ×ˢ p', dist (f n.2) (F n.1 n.2) < ε
state_after: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
F : ι → β → α
f : β → α
p : Filter ι
p' : Filter β
H : ∀ ε > 0, ∀ᶠ (n : ι × β) in p ×ˢ p', dist (f n.2) (F n.1 n.2) < ε
u : Set (α × α)
hu : u ∈ 𝓤 α
⊢ ∀ᶠ (n : ι × β) in p ×ˢ p', (f n.2, F n.1 n.2) ∈ u

tactic: rcases mem_uniformity_dist.1 hu with ⟨ε, εpos, hε⟩
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
F : ι → β → α
f : β → α
p : Filter ι
p' : Filter β
H : ∀ ε > 0, ∀ᶠ (n : ι × β) in p ×ˢ p', dist (f n.2) (F n.1 n.2) < ε
u : Set (α × α)
hu : u ∈ 𝓤 α
⊢ ∀ᶠ (n : ι × β) in p ×ˢ p', (f n.2, F n.1 n.2) ∈ u
state_after: case intro.intro
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε✝ ε₁ ε₂ : ℝ
s : Set α
F : ι → β → α
f : β → α
p : Filter ι
p' : Filter β
H : ∀ ε > 0, ∀ᶠ (n : ι × β) in p ×ˢ p', dist (f n.2) (F n.1 n.2) < ε
u : Set (α × α)
hu : u ∈ 𝓤 α
ε : ℝ
εpos : ε > 0
hε : ∀ {a b : α}, dist a b < ε → (a, b) ∈ u
⊢ ∀ᶠ (n : ι × β) in p ×ˢ p', (f n.2, F n.1 n.2) ∈ u

tactic: exact (H ε εpos).mono fun n hn => hε hn
state_before: case intro.intro
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε✝ ε₁ ε₂ : ℝ
s : Set α
F : ι → β → α
f : β → α
p : Filter ι
p' : Filter β
H : ∀ ε > 0, ∀ᶠ (n : ι × β) in p ×ˢ p', dist (f n.2) (F n.1 n.2) < ε
u : Set (α × α)
hu : u ∈ 𝓤 α
ε : ℝ
εpos : ε > 0
hε : ∀ {a b : α}, dist a b < ε → (a, b) ∈ u
⊢ ∀ᶠ (n : ι × β) in p ×ˢ p', (f n.2, F n.1 n.2) ∈ u
state_after: no goals
Theorem: SemidirectProduct.range_inl_eq_ker_rightHom
File: Mathlib/GroupTheory/SemidirectProduct.lean

tactic: simp (config := { contextual := true }) [MonoidHom.mem_ker, eq_comm]
state_before: N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
x✝ : N ⋊[φ] G
⊢ x✝ ∈ inl.range → x✝ ∈ rightHom.ker
state_after: no goals

tactic: ext <;> simp_all [MonoidHom.mem_ker]
state_before: N : Type u_1
G : Type u_2
H : Type u_3
inst✝² : Group N
inst✝¹ : Group G
inst✝ : Group H
φ : G →* MulAut N
x : N ⋊[φ] G
hx : x ∈ rightHom.ker
⊢ inl x.left = x
state_after: no goals
Theorem: ZMod.pow_card
File: Mathlib/FieldTheory/Finite/Basic.lean

tactic: have h := FiniteField.pow_card x
state_before: K : Type u_1
R : Type u_2
p : ℕ
inst✝ : Fact (Nat.Prime p)
x : ZMod p
⊢ x ^ p = x
state_after: K : Type u_1
R : Type u_2
p : ℕ
inst✝ : Fact (Nat.Prime p)
x : ZMod p
h : x ^ Fintype.card (ZMod p) = x
⊢ x ^ p = x

tactic: rwa [ZMod.card p] at h
state_before: K : Type u_1
R : Type u_2
p : ℕ
inst✝ : Fact (Nat.Prime p)
x : ZMod p
h : x ^ Fintype.card (ZMod p) = x
⊢ x ^ p = x
state_after: no goals
Theorem: Real.diam_eq
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: rw [Metric.diam, Real.ediam_eq h, ENNReal.toReal_ofReal]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : PseudoEMetricSpace α
s : Set ℝ
h : Bornology.IsBounded s
⊢ Metric.diam s = sSup s - sInf s
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : PseudoEMetricSpace α
s : Set ℝ
h : Bornology.IsBounded s
⊢ 0 ≤ sSup s - sInf s

tactic: exact sub_nonneg.2 (Real.sInf_le_sSup s h.bddBelow h.bddAbove)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : PseudoEMetricSpace α
s : Set ℝ
h : Bornology.IsBounded s
⊢ 0 ≤ sSup s - sInf s
state_after: no goals
Theorem: MvPolynomial.weightedTotalDegree'_zero
File: Mathlib/RingTheory/MvPolynomial/WeightedHomogeneous.lean

tactic: simp only [weightedTotalDegree', support_zero, Finset.sup_empty]
state_before: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
σ : Type u_3
inst✝¹ : AddCommMonoid M
inst✝ : SemilatticeSup M
w : σ → M
⊢ weightedTotalDegree' w 0 = ⊥
state_after: no goals
Theorem: CategoryTheory.ShortComplex.leftHomologyMap_op
File: Mathlib/Algebra/Homology/ShortComplex/RightHomology.lean

tactic: dsimp [rightHomologyOpIso, RightHomologyData.rightHomologyIso, rightHomologyMap,
  leftHomologyMap]
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
inst✝¹ : S₁.HasLeftHomology
inst✝ : S₂.HasLeftHomology
⊢ (leftHomologyMap φ).op = S₂.rightHomologyOpIso.inv ≫ rightHomologyMap (opMap φ) ≫ S₁.rightHomologyOpIso.hom
state_after: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
inst✝¹ : S₁.HasLeftHomology
inst✝ : S₂.HasLeftHomology
⊢ (leftHomologyMap' φ S₁.leftHomologyData S₂.leftHomologyData).op =
    rightHomologyMap' (𝟙 S₂.op) S₂.leftHomologyData.op S₂.op.rightHomologyData ≫
      rightHomologyMap' (opMap φ) S₂.op.rightHomologyData S₁.op.rightHomologyData ≫
        rightHomologyMap' (𝟙 S₁.op) S₁.op.rightHomologyData S₁.leftHomologyData.op

tactic: simp only [← rightHomologyMap'_comp, comp_id, id_comp, leftHomologyMap'_op]
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
inst✝¹ : S₁.HasLeftHomology
inst✝ : S₂.HasLeftHomology
⊢ (leftHomologyMap' φ S₁.leftHomologyData S₂.leftHomologyData).op =
    rightHomologyMap' (𝟙 S₂.op) S₂.leftHomologyData.op S₂.op.rightHomologyData ≫
      rightHomologyMap' (opMap φ) S₂.op.rightHomologyData S₁.op.rightHomologyData ≫
        rightHomologyMap' (𝟙 S₁.op) S₁.op.rightHomologyData S₁.leftHomologyData.op
state_after: no goals
Theorem: AlgebraicGeometry.exists_pow_mul_eq_zero_of_res_basicOpen_eq_zero_of_isAffineOpen
File: Mathlib/AlgebraicGeometry/Morphisms/QuasiCompact.lean

tactic: rw [← map_zero (X.presheaf.map (homOfLE <| X.basicOpen_le f : X.basicOpen f ⟶ U).op)] at H
state_before: X✝ Y : Scheme
f✝ : X✝ ⟶ Y
Z : Scheme
X : Scheme
U : Opens ↑↑X.toPresheafedSpace
hU : IsAffineOpen U
x f : ↑Γ(X, U)
H : (x |_ X.basicOpen f) ⋯ = 0
⊢ ∃ n, f ^ n * x = 0
state_after: X✝ Y : Scheme
f✝ : X✝ ⟶ Y
Z : Scheme
X : Scheme
U : Opens ↑↑X.toPresheafedSpace
hU : IsAffineOpen U
x f : ↑Γ(X, U)
H : (x |_ X.basicOpen f) ⋯ = (X.presheaf.map (homOfLE ⋯).op) 0
⊢ ∃ n, f ^ n * x = 0

tactic: obtain ⟨⟨_, n, rfl⟩, e⟩ := (hU.isLocalization_basicOpen f).exists_of_eq H
state_before: X✝ Y : Scheme
f✝ : X✝ ⟶ Y
Z : Scheme
X : Scheme
U : Opens ↑↑X.toPresheafedSpace
hU : IsAffineOpen U
x f : ↑Γ(X, U)
H : (x |_ X.basicOpen f) ⋯ = (X.presheaf.map (homOfLE ⋯).op) 0
⊢ ∃ n, f ^ n * x = 0
state_after: case intro.mk.intro
X✝ Y : Scheme
f✝ : X✝ ⟶ Y
Z : Scheme
X : Scheme
U : Opens ↑↑X.toPresheafedSpace
hU : IsAffineOpen U
x f : ↑Γ(X, U)
H : (x |_ X.basicOpen f) ⋯ = (X.presheaf.map (homOfLE ⋯).op) 0
n : ℕ
e : ↑⟨(fun x => f ^ x) n, ⋯⟩ * x = ↑⟨(fun x => f ^ x) n, ⋯⟩ * 0
⊢ ∃ n, f ^ n * x = 0

tactic: exact ⟨n, by simpa [mul_comm x] using e⟩
state_before: case intro.mk.intro
X✝ Y : Scheme
f✝ : X✝ ⟶ Y
Z : Scheme
X : Scheme
U : Opens ↑↑X.toPresheafedSpace
hU : IsAffineOpen U
x f : ↑Γ(X, U)
H : (x |_ X.basicOpen f) ⋯ = (X.presheaf.map (homOfLE ⋯).op) 0
n : ℕ
e : ↑⟨(fun x => f ^ x) n, ⋯⟩ * x = ↑⟨(fun x => f ^ x) n, ⋯⟩ * 0
⊢ ∃ n, f ^ n * x = 0
state_after: no goals

tactic: simpa [mul_comm x] using e
state_before: X✝ Y : Scheme
f✝ : X✝ ⟶ Y
Z : Scheme
X : Scheme
U : Opens ↑↑X.toPresheafedSpace
hU : IsAffineOpen U
x f : ↑Γ(X, U)
H : (x |_ X.basicOpen f) ⋯ = (X.presheaf.map (homOfLE ⋯).op) 0
n : ℕ
e : ↑⟨(fun x => f ^ x) n, ⋯⟩ * x = ↑⟨(fun x => f ^ x) n, ⋯⟩ * 0
⊢ f ^ n * x = 0
state_after: no goals
Theorem: Set.toFinset_eq_univ
File: Mathlib/Data/Fintype/Basic.lean

tactic: rw [← coe_inj, coe_toFinset, coe_univ]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s t : Set α
inst✝¹ : Fintype α
inst✝ : Fintype ↑s
⊢ s.toFinset = Finset.univ ↔ s = univ
state_after: no goals
Theorem: isRelPrime_mul_unit_right
File: Mathlib/Algebra/Divisibility/Units.lean

tactic: rw [isRelPrime_mul_unit_right_left hu, isRelPrime_mul_unit_right_right hu]
state_before: α : Type u_1
inst✝ : CommMonoid α
x y z : α
hu : IsUnit x
⊢ IsRelPrime (y * x) (z * x) ↔ IsRelPrime y z
state_after: no goals
Theorem: generateFrom_eq_prod
File: Mathlib/MeasureTheory/Constructions/Prod/Basic.lean

tactic: rw [← hC, ← hD, generateFrom_prod_eq h2C h2D]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁵ : MeasurableSpace α
inst✝⁴ : MeasurableSpace α'
inst✝³ : MeasurableSpace β
inst✝² : MeasurableSpace β'
inst✝¹ : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝ : NormedAddCommGroup E
C : Set (Set α)
D : Set (Set β)
hC : generateFrom C = inst✝⁵
hD : generateFrom D = inst✝³
h2C : IsCountablySpanning C
h2D : IsCountablySpanning D
⊢ generateFrom (image2 (fun x x_1 => x ×ˢ x_1) C D) = Prod.instMeasurableSpace
state_after: no goals
Theorem: Homotopy.dNext_zero_chainComplex
File: Mathlib/Algebra/Homology/Homotopy.lean

tactic: dsimp [dNext]
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
⊢ (dNext 0) f = 0
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
⊢ P.d 0 ((ComplexShape.down ℕ).next 0) ≫ f ((ComplexShape.down ℕ).next 0) 0 = 0

tactic: rw [P.shape, zero_comp]
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
⊢ P.d 0 ((ComplexShape.down ℕ).next 0) ≫ f ((ComplexShape.down ℕ).next 0) 0 = 0
state_after: case a
ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
⊢ ¬(ComplexShape.down ℕ).Rel 0 ((ComplexShape.down ℕ).next 0)

tactic: rw [ChainComplex.next_nat_zero]
state_before: case a
ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
⊢ ¬(ComplexShape.down ℕ).Rel 0 ((ComplexShape.down ℕ).next 0)
state_after: case a
ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
⊢ ¬(ComplexShape.down ℕ).Rel 0 0

tactic: dsimp
state_before: case a
ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
⊢ ¬(ComplexShape.down ℕ).Rel 0 0
state_after: case a
ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
⊢ ¬1 = 0

tactic: decide
state_before: case a
ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
⊢ ¬1 = 0
state_after: no goals