1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: TopologicalSpace.NoetherianSpace.iUnion
File: Mathlib/Topology/NoetherianSpace.lean

tactic: simp_rw [noetherianSpace_set_iff] at hf ⊢
state_before: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
ι : Type u_3
f : ι → Set α
inst✝ : Finite ι
hf : ∀ (i : ι), NoetherianSpace ↑(f i)
⊢ NoetherianSpace ↑(⋃ i, f i)
state_after: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
ι : Type u_3
f : ι → Set α
inst✝ : Finite ι
hf : ∀ (i : ι), ∀ t ⊆ f i, IsCompact t
⊢ ∀ t ⊆ ⋃ i, f i, IsCompact t

tactic: intro t ht
state_before: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
ι : Type u_3
f : ι → Set α
inst✝ : Finite ι
hf : ∀ (i : ι), ∀ t ⊆ f i, IsCompact t
⊢ ∀ t ⊆ ⋃ i, f i, IsCompact t
state_after: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
ι : Type u_3
f : ι → Set α
inst✝ : Finite ι
hf : ∀ (i : ι), ∀ t ⊆ f i, IsCompact t
t : Set α
ht : t ⊆ ⋃ i, f i
⊢ IsCompact t

tactic: rw [← Set.inter_eq_left.mpr ht, Set.inter_iUnion]
state_before: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
ι : Type u_3
f : ι → Set α
inst✝ : Finite ι
hf : ∀ (i : ι), ∀ t ⊆ f i, IsCompact t
t : Set α
ht : t ⊆ ⋃ i, f i
⊢ IsCompact t
state_after: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
ι : Type u_3
f : ι → Set α
inst✝ : Finite ι
hf : ∀ (i : ι), ∀ t ⊆ f i, IsCompact t
t : Set α
ht : t ⊆ ⋃ i, f i
⊢ IsCompact (⋃ i, t ∩ f i)

tactic: exact isCompact_iUnion fun i => hf i _ Set.inter_subset_right
state_before: α : Type u_1
β : Type u_2
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
ι : Type u_3
f : ι → Set α
inst✝ : Finite ι
hf : ∀ (i : ι), ∀ t ⊆ f i, IsCompact t
t : Set α
ht : t ⊆ ⋃ i, f i
⊢ IsCompact (⋃ i, t ∩ f i)
state_after: no goals
Theorem: Filter.frequently_sup
File: Mathlib/Order/Filter/Basic.lean

tactic: simp only [Filter.Frequently, eventually_sup, not_and_or]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
p : α → Prop
f g : Filter α
⊢ (∃ᶠ (x : α) in f ⊔ g, p x) ↔ (∃ᶠ (x : α) in f, p x) ∨ ∃ᶠ (x : α) in g, p x
state_after: no goals
Theorem: Finset.image_id
File: Mathlib/Data/Finset/Image.lean

tactic: simp only [mem_image, exists_prop, id, exists_eq_right]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a : α
b c : β
inst✝ : DecidableEq α
x✝ : α
⊢ x✝ ∈ image id s ↔ x✝ ∈ s
state_after: no goals
Theorem: Set.Finite.eventuallyLE_iInter
File: Mathlib/Order/Filter/Basic.lean

tactic: have := hs.to_subtype
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι✝ : Sort x
l : Filter α
ι : Type u_2
s : Set ι
hs : s.Finite
f g : ι → Set α
hle : ∀ i ∈ s, f i ≤ᶠ[l] g i
⊢ ⋂ i ∈ s, f i ≤ᶠ[l] ⋂ i ∈ s, g i
state_after: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι✝ : Sort x
l : Filter α
ι : Type u_2
s : Set ι
hs : s.Finite
f g : ι → Set α
hle : ∀ i ∈ s, f i ≤ᶠ[l] g i
this : Finite ↑s
⊢ ⋂ i ∈ s, f i ≤ᶠ[l] ⋂ i ∈ s, g i

tactic: rw [biInter_eq_iInter, biInter_eq_iInter]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι✝ : Sort x
l : Filter α
ι : Type u_2
s : Set ι
hs : s.Finite
f g : ι → Set α
hle : ∀ i ∈ s, f i ≤ᶠ[l] g i
this : Finite ↑s
⊢ ⋂ i ∈ s, f i ≤ᶠ[l] ⋂ i ∈ s, g i
state_after: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι✝ : Sort x
l : Filter α
ι : Type u_2
s : Set ι
hs : s.Finite
f g : ι → Set α
hle : ∀ i ∈ s, f i ≤ᶠ[l] g i
this : Finite ↑s
⊢ ⋂ x, f ↑x ≤ᶠ[l] ⋂ x, g ↑x

tactic: exact .iInter fun i ↦ hle i.1 i.2
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι✝ : Sort x
l : Filter α
ι : Type u_2
s : Set ι
hs : s.Finite
f g : ι → Set α
hle : ∀ i ∈ s, f i ≤ᶠ[l] g i
this : Finite ↑s
⊢ ⋂ x, f ↑x ≤ᶠ[l] ⋂ x, g ↑x
state_after: no goals
Theorem: legendreSym.eq_one_of_sq_sub_mul_sq_eq_zero
File: Mathlib/NumberTheory/LegendreSymbol/Basic.lean

tactic: simp only [zero_mul] at hxy
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
a : ℤ
ha : ↑a ≠ 0
x y : ZMod p
hy : y ≠ 0
hxy : (x ^ 2 - ↑a * y ^ 2) * y⁻¹ ^ 2 = 0 * y⁻¹ ^ 2
⊢ legendreSym p a = 1
state_after: p : ℕ
inst✝ : Fact (Nat.Prime p)
a : ℤ
ha : ↑a ≠ 0
x y : ZMod p
hy : y ≠ 0
hxy : (x ^ 2 - ↑a * y ^ 2) * y⁻¹ ^ 2 = 0
⊢ legendreSym p a = 1

tactic: rw [(by ring : (x ^ 2 - ↑a * y ^ 2) * y⁻¹ ^ 2 = (x * y⁻¹) ^ 2 - a * (y * y⁻¹) ^ 2),
  mul_inv_cancel hy, one_pow, mul_one, sub_eq_zero, pow_two] at hxy
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
a : ℤ
ha : ↑a ≠ 0
x y : ZMod p
hy : y ≠ 0
hxy : (x ^ 2 - ↑a * y ^ 2) * y⁻¹ ^ 2 = 0
⊢ legendreSym p a = 1
state_after: p : ℕ
inst✝ : Fact (Nat.Prime p)
a : ℤ
ha : ↑a ≠ 0
x y : ZMod p
hy : y ≠ 0
hxy : x * y⁻¹ * (x * y⁻¹) = ↑a
⊢ legendreSym p a = 1

tactic: exact (eq_one_iff p ha).mpr ⟨x * y⁻¹, hxy.symm⟩
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
a : ℤ
ha : ↑a ≠ 0
x y : ZMod p
hy : y ≠ 0
hxy : x * y⁻¹ * (x * y⁻¹) = ↑a
⊢ legendreSym p a = 1
state_after: no goals

tactic: ring
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
a : ℤ
ha : ↑a ≠ 0
x y : ZMod p
hy : y ≠ 0
hxy : (x ^ 2 - ↑a * y ^ 2) * y⁻¹ ^ 2 = 0
⊢ (x ^ 2 - ↑a * y ^ 2) * y⁻¹ ^ 2 = (x * y⁻¹) ^ 2 - ↑a * (y * y⁻¹) ^ 2
state_after: no goals
Theorem: SimpleGraph.neighborFinset_eq_filter
File: Mathlib/Combinatorics/SimpleGraph/Finite.lean

tactic: ext
state_before: V : Type u_1
G : SimpleGraph V
e : Sym2 V
inst✝¹ : Fintype V
v : V
inst✝ : DecidableRel G.Adj
⊢ G.neighborFinset v = filter (G.Adj v) univ
state_after: case a
V : Type u_1
G : SimpleGraph V
e : Sym2 V
inst✝¹ : Fintype V
v : V
inst✝ : DecidableRel G.Adj
a✝ : V
⊢ a✝ ∈ G.neighborFinset v ↔ a✝ ∈ filter (G.Adj v) univ

tactic: simp
state_before: case a
V : Type u_1
G : SimpleGraph V
e : Sym2 V
inst✝¹ : Fintype V
v : V
inst✝ : DecidableRel G.Adj
a✝ : V
⊢ a✝ ∈ G.neighborFinset v ↔ a✝ ∈ filter (G.Adj v) univ
state_after: no goals
Theorem: TopCat.sigmaIsoSigma_hom_ι
File: Mathlib/Topology/Category/TopCat/Limits/Products.lean

tactic: simp [sigmaIsoSigma]
state_before: J : Type v
inst✝ : SmallCategory J
ι : Type v
α : ι → TopCat
i : ι
⊢ Sigma.ι α i ≫ (sigmaIsoSigma α).hom = sigmaι α i
state_after: no goals
Theorem: WittVector.verschiebung_mul_frobenius
File: Mathlib/RingTheory/WittVector/Identities.lean

tactic: have : IsPoly₂ p fun {R} [Rcr : CommRing R] x y ↦ verschiebung (x * frobenius y) :=
  IsPoly.comp₂ (hg := verschiebung_isPoly)
    (hf := IsPoly₂.comp (hh := mulIsPoly₂) (hf := idIsPolyI' p) (hg := frobenius_isPoly p))
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
x y : 𝕎 R
⊢ verschiebung (x * frobenius y) = verschiebung x * y
state_after: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
x y : 𝕎 R
this : IsPoly₂ p fun {R} [CommRing R] x y => verschiebung (x * frobenius y)
⊢ verschiebung (x * frobenius y) = verschiebung x * y

tactic: have : IsPoly₂ p fun {R} [CommRing R] x y ↦ verschiebung x * y :=
  IsPoly₂.comp (hh := mulIsPoly₂) (hf := verschiebung_isPoly) (hg := idIsPolyI' p)
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
x y : 𝕎 R
this : IsPoly₂ p fun {R} [CommRing R] x y => verschiebung (x * frobenius y)
⊢ verschiebung (x * frobenius y) = verschiebung x * y
state_after: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
x y : 𝕎 R
this✝ : IsPoly₂ p fun {R} [CommRing R] x y => verschiebung (x * frobenius y)
this : IsPoly₂ p fun {R} [CommRing R] x y => verschiebung x * y
⊢ verschiebung (x * frobenius y) = verschiebung x * y

tactic: ghost_calc x y
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
x y : 𝕎 R
this✝ : IsPoly₂ p fun {R} [CommRing R] x y => verschiebung (x * frobenius y)
this : IsPoly₂ p fun {R} [CommRing R] x y => verschiebung x * y
⊢ verschiebung (x * frobenius y) = verschiebung x * y
state_after: case refine_3
p : ℕ
hp : Fact (Nat.Prime p)
this✝ : IsPoly₂ p fun {R} [CommRing R] x y => verschiebung (x * frobenius y)
this : IsPoly₂ p fun {R} [CommRing R] x y => verschiebung x * y
R : Type u_1
R._inst : CommRing R
x y : 𝕎 R
⊢ ∀ (n : ℕ), (ghostComponent n) (verschiebung (x * frobenius y)) = (ghostComponent n) (verschiebung x * y)

tactic: rintro ⟨⟩ <;> ghost_simp [mul_assoc]
state_before: case refine_3
p : ℕ
hp : Fact (Nat.Prime p)
this✝ : IsPoly₂ p fun {R} [CommRing R] x y => verschiebung (x * frobenius y)
this : IsPoly₂ p fun {R} [CommRing R] x y => verschiebung x * y
R : Type u_1
R._inst : CommRing R
x y : 𝕎 R
⊢ ∀ (n : ℕ), (ghostComponent n) (verschiebung (x * frobenius y)) = (ghostComponent n) (verschiebung x * y)
state_after: no goals
Theorem: Int.natAbs_sq
File: Mathlib/Data/Int/Defs.lean

tactic: simp [Int.pow_succ, Int.pow_zero, Int.natAbs_mul_self']
state_before: a b c d m n x : ℤ
⊢ ↑x.natAbs ^ 2 = x ^ 2
state_after: no goals
Theorem: SimplexCategory.eq_id_of_mono
File: Mathlib/AlgebraicTopology/SimplexCategory.lean

tactic: suffices IsIso i by
  apply eq_id_of_isIso
state_before: x : SimplexCategory
i : x ⟶ x
inst✝ : Mono i
⊢ i = 𝟙 x
state_after: x : SimplexCategory
i : x ⟶ x
inst✝ : Mono i
⊢ IsIso i

tactic: apply isIso_of_bijective
state_before: x : SimplexCategory
i : x ⟶ x
inst✝ : Mono i
⊢ IsIso i
state_after: case hf
x : SimplexCategory
i : x ⟶ x
inst✝ : Mono i
⊢ Function.Bijective (Hom.toOrderHom i).toFun

tactic: dsimp
state_before: case hf
x : SimplexCategory
i : x ⟶ x
inst✝ : Mono i
⊢ Function.Bijective (Hom.toOrderHom i).toFun
state_after: case hf
x : SimplexCategory
i : x ⟶ x
inst✝ : Mono i
⊢ Function.Bijective ⇑(Hom.toOrderHom i)

tactic: rw [Fintype.bijective_iff_injective_and_card i.toOrderHom, ← mono_iff_injective,
  eq_self_iff_true, and_true_iff]
state_before: case hf
x : SimplexCategory
i : x ⟶ x
inst✝ : Mono i
⊢ Function.Bijective ⇑(Hom.toOrderHom i)
state_after: case hf
x : SimplexCategory
i : x ⟶ x
inst✝ : Mono i
⊢ Mono i

tactic: infer_instance
state_before: case hf
x : SimplexCategory
i : x ⟶ x
inst✝ : Mono i
⊢ Mono i
state_after: no goals

tactic: apply eq_id_of_isIso
state_before: x : SimplexCategory
i : x ⟶ x
inst✝ : Mono i
this : IsIso i
⊢ i = 𝟙 x
state_after: no goals
Theorem: Ordinal.cof_sup_le_lift
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: rw [← sup_eq_lsub_iff_lt_sup.{u, v}] at H
state_before: α : Type u_1
r : α → α → Prop
ι : Type u
f : ι → Ordinal.{max u v}
H : ∀ (i : ι), f i < sup f
⊢ (sup f).cof ≤ Cardinal.lift.{v, u} #ι
state_after: α : Type u_1
r : α → α → Prop
ι : Type u
f : ι → Ordinal.{max u v}
H : sup f = lsub f
⊢ (sup f).cof ≤ Cardinal.lift.{v, u} #ι

tactic: rw [H]
state_before: α : Type u_1
r : α → α → Prop
ι : Type u
f : ι → Ordinal.{max u v}
H : sup f = lsub f
⊢ (sup f).cof ≤ Cardinal.lift.{v, u} #ι
state_after: α : Type u_1
r : α → α → Prop
ι : Type u
f : ι → Ordinal.{max u v}
H : sup f = lsub f
⊢ (lsub f).cof ≤ Cardinal.lift.{v, u} #ι

tactic: exact cof_lsub_le_lift f
state_before: α : Type u_1
r : α → α → Prop
ι : Type u
f : ι → Ordinal.{max u v}
H : sup f = lsub f
⊢ (lsub f).cof ≤ Cardinal.lift.{v, u} #ι
state_after: no goals
Theorem: Rel.image_inter_dom_eq
File: Mathlib/Data/Rel.lean

tactic: apply Set.eq_of_subset_of_subset
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
⊢ r.image (s ∩ r.dom) = r.image s
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
⊢ r.image (s ∩ r.dom) ⊆ r.image s

case a
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
⊢ r.image s ⊆ r.image (s ∩ r.dom)

tactic: apply r.image_mono (by simp)
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
⊢ r.image (s ∩ r.dom) ⊆ r.image s
state_after: no goals

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
⊢ s ∩ r.dom ≤ s
state_after: no goals

tactic: intro x h
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
⊢ r.image s ⊆ r.image (s ∩ r.dom)
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : β
h : x ∈ r.image s
⊢ x ∈ r.image (s ∩ r.dom)

tactic: rw [mem_image] at *
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : β
h : x ∈ r.image s
⊢ x ∈ r.image (s ∩ r.dom)
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : β
h : ∃ x_1 ∈ s, r x_1 x
⊢ ∃ x_1 ∈ s ∩ r.dom, r x_1 x

tactic: rcases h with ⟨y, hy, ryx⟩
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : β
h : ∃ x_1 ∈ s, r x_1 x
⊢ ∃ x_1 ∈ s ∩ r.dom, r x_1 x
state_after: case a.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : β
y : α
hy : y ∈ s
ryx : r y x
⊢ ∃ x_1 ∈ s ∩ r.dom, r x_1 x

tactic: use y
state_before: case a.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : β
y : α
hy : y ∈ s
ryx : r y x
⊢ ∃ x_1 ∈ s ∩ r.dom, r x_1 x
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : β
y : α
hy : y ∈ s
ryx : r y x
⊢ y ∈ s ∩ r.dom ∧ r y x

tactic: suffices h : y ∈ r.dom by simp_all only [Set.mem_inter_iff, and_self]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : β
y : α
hy : y ∈ s
ryx : r y x
⊢ y ∈ s ∩ r.dom ∧ r y x
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : β
y : α
hy : y ∈ s
ryx : r y x
⊢ y ∈ r.dom

tactic: rw [dom, Set.mem_setOf_eq]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : β
y : α
hy : y ∈ s
ryx : r y x
⊢ y ∈ r.dom
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : β
y : α
hy : y ∈ s
ryx : r y x
⊢ ∃ y_1, r y y_1

tactic: use x
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : β
y : α
hy : y ∈ s
ryx : r y x
⊢ ∃ y_1, r y y_1
state_after: no goals

tactic: simp_all only [Set.mem_inter_iff, and_self]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
x : β
y : α
hy : y ∈ s
ryx : r y x
h : y ∈ r.dom
⊢ y ∈ s ∩ r.dom ∧ r y x
state_after: no goals
Theorem: Ordnode.balance_sz_dual
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: rw [size_dual, size_dual]
state_before: α : Type u_1
l r : Ordnode α
H : (∃ l', Raised l.size l' ∧ BalancedSz l' r.size) ∨ ∃ r', Raised r' r.size ∧ BalancedSz l.size r'
⊢ (∃ l', Raised l' r.dual.size ∧ BalancedSz l' l.dual.size) ∨ ∃ r', Raised l.dual.size r' ∧ BalancedSz r.dual.size r'
state_after: α : Type u_1
l r : Ordnode α
H : (∃ l', Raised l.size l' ∧ BalancedSz l' r.size) ∨ ∃ r', Raised r' r.size ∧ BalancedSz l.size r'
⊢ (∃ l', Raised l' r.size ∧ BalancedSz l' l.size) ∨ ∃ r', Raised l.size r' ∧ BalancedSz r.size r'

tactic: exact
  H.symm.imp (Exists.imp fun _ => And.imp_right BalancedSz.symm)
    (Exists.imp fun _ => And.imp_right BalancedSz.symm)
state_before: α : Type u_1
l r : Ordnode α
H : (∃ l', Raised l.size l' ∧ BalancedSz l' r.size) ∨ ∃ r', Raised r' r.size ∧ BalancedSz l.size r'
⊢ (∃ l', Raised l' r.size ∧ BalancedSz l' l.size) ∨ ∃ r', Raised l.size r' ∧ BalancedSz r.size r'
state_after: no goals
Theorem: ContinuousLinearMap.map_smul₂
File: Mathlib/Analysis/NormedSpace/BoundedLinearMaps.lean

tactic: rw [f.map_smul, smul_apply]
state_before: 𝕜 : Type u_1
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type u_3
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
G : Type u_4
inst✝⁸ : NormedAddCommGroup G
inst✝⁷ : NormedSpace 𝕜 G
R : Type u_5
𝕜₂ : Type u_6
𝕜' : Type u_7
inst✝⁶ : NontriviallyNormedField 𝕜'
inst✝⁵ : NontriviallyNormedField 𝕜₂
M : Type u_8
inst✝⁴ : TopologicalSpace M
σ₁₂ : 𝕜 →+* 𝕜₂
G' : Type u_9
inst✝³ : NormedAddCommGroup G'
inst✝² : NormedSpace 𝕜₂ G'
inst✝¹ : NormedSpace 𝕜' G'
inst✝ : SMulCommClass 𝕜₂ 𝕜' G'
f : E →L[𝕜] F →L[𝕜] G
c : 𝕜
x : E
y : F
⊢ (f (c • x)) y = c • (f x) y
state_after: no goals
Theorem: Polynomial.coeff_expand_mul'
File: Mathlib/Algebra/Polynomial/Expand.lean

tactic: rw [mul_comm, coeff_expand_mul hp]
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p✝ q p : ℕ
hp : 0 < p
f : R[X]
n : ℕ
⊢ ((expand R p) f).coeff (p * n) = f.coeff n
state_after: no goals
Theorem: ENNReal.continuous_rpow_const
File: Mathlib/Analysis/SpecialFunctions/Pow/Continuity.lean

tactic: refine continuous_iff_continuousAt.2 fun x => ?_
state_before: y : ℝ
⊢ Continuous fun a => a ^ y
state_after: y : ℝ
x : ℝ≥0∞
⊢ ContinuousAt (fun a => a ^ y) x

tactic: rcases lt_trichotomy (0 : ℝ) y with (hy | rfl | hy)
state_before: y : ℝ
x : ℝ≥0∞
⊢ ContinuousAt (fun a => a ^ y) x
state_after: case inl
y : ℝ
x : ℝ≥0∞
hy : 0 < y
⊢ ContinuousAt (fun a => a ^ y) x

case inr.inl
x : ℝ≥0∞
⊢ ContinuousAt (fun a => a ^ 0) x

case inr.inr
y : ℝ
x : ℝ≥0∞
hy : y < 0
⊢ ContinuousAt (fun a => a ^ y) x

tactic: exact continuousAt_rpow_const_of_pos hy
state_before: case inl
y : ℝ
x : ℝ≥0∞
hy : 0 < y
⊢ ContinuousAt (fun a => a ^ y) x
state_after: no goals

tactic: simp only [rpow_zero]
state_before: case inr.inl
x : ℝ≥0∞
⊢ ContinuousAt (fun a => a ^ 0) x
state_after: case inr.inl
x : ℝ≥0∞
⊢ ContinuousAt (fun a => 1) x

tactic: exact continuousAt_const
state_before: case inr.inl
x : ℝ≥0∞
⊢ ContinuousAt (fun a => 1) x
state_after: no goals

tactic: obtain ⟨z, hz⟩ : ∃ z, y = -z := ⟨-y, (neg_neg _).symm⟩
state_before: case inr.inr
y : ℝ
x : ℝ≥0∞
hy : y < 0
⊢ ContinuousAt (fun a => a ^ y) x
state_after: case inr.inr.intro
y : ℝ
x : ℝ≥0∞
hy : y < 0
z : ℝ
hz : y = -z
⊢ ContinuousAt (fun a => a ^ y) x

tactic: have z_pos : 0 < z := by simpa [hz] using hy
state_before: case inr.inr.intro
y : ℝ
x : ℝ≥0∞
hy : y < 0
z : ℝ
hz : y = -z
⊢ ContinuousAt (fun a => a ^ y) x
state_after: case inr.inr.intro
y : ℝ
x : ℝ≥0∞
hy : y < 0
z : ℝ
hz : y = -z
z_pos : 0 < z
⊢ ContinuousAt (fun a => a ^ y) x

tactic: simp_rw [hz, rpow_neg]
state_before: case inr.inr.intro
y : ℝ
x : ℝ≥0∞
hy : y < 0
z : ℝ
hz : y = -z
z_pos : 0 < z
⊢ ContinuousAt (fun a => a ^ y) x
state_after: case inr.inr.intro
y : ℝ
x : ℝ≥0∞
hy : y < 0
z : ℝ
hz : y = -z
z_pos : 0 < z
⊢ ContinuousAt (fun a => (a ^ z)⁻¹) x

tactic: exact continuous_inv.continuousAt.comp (continuousAt_rpow_const_of_pos z_pos)
state_before: case inr.inr.intro
y : ℝ
x : ℝ≥0∞
hy : y < 0
z : ℝ
hz : y = -z
z_pos : 0 < z
⊢ ContinuousAt (fun a => (a ^ z)⁻¹) x
state_after: no goals

tactic: simpa [hz] using hy
state_before: y : ℝ
x : ℝ≥0∞
hy : y < 0
z : ℝ
hz : y = -z
⊢ 0 < z
state_after: no goals
Theorem: Set.compl_section_ordSeparatingSet_mem_nhdsWithin_Iic
File: Mathlib/Topology/Order/T5.lean

tactic: have hd' : Disjoint (ofDual ⁻¹' s) (closure <| ofDual ⁻¹' t) := hd
state_before: X : Type u_1
inst✝² : LinearOrder X
inst✝¹ : TopologicalSpace X
inst✝ : OrderTopology X
a b c : X
s t : Set X
hd : Disjoint s (closure t)
ha : a ∈ s
⊢ (s.ordSeparatingSet t).ordConnectedSectionᶜ ∈ 𝓝[≤] a
state_after: X : Type u_1
inst✝² : LinearOrder X
inst✝¹ : TopologicalSpace X
inst✝ : OrderTopology X
a b c : X
s t : Set X
hd : Disjoint s (closure t)
ha : a ∈ s
hd' : Disjoint (⇑ofDual ⁻¹' s) (closure (⇑ofDual ⁻¹' t))
⊢ (s.ordSeparatingSet t).ordConnectedSectionᶜ ∈ 𝓝[≤] a

tactic: have ha' : toDual a ∈ ofDual ⁻¹' s := ha
state_before: X : Type u_1
inst✝² : LinearOrder X
inst✝¹ : TopologicalSpace X
inst✝ : OrderTopology X
a b c : X
s t : Set X
hd : Disjoint s (closure t)
ha : a ∈ s
hd' : Disjoint (⇑ofDual ⁻¹' s) (closure (⇑ofDual ⁻¹' t))
⊢ (s.ordSeparatingSet t).ordConnectedSectionᶜ ∈ 𝓝[≤] a
state_after: X : Type u_1
inst✝² : LinearOrder X
inst✝¹ : TopologicalSpace X
inst✝ : OrderTopology X
a b c : X
s t : Set X
hd : Disjoint s (closure t)
ha : a ∈ s
hd' : Disjoint (⇑ofDual ⁻¹' s) (closure (⇑ofDual ⁻¹' t))
ha' : toDual a ∈ ⇑ofDual ⁻¹' s
⊢ (s.ordSeparatingSet t).ordConnectedSectionᶜ ∈ 𝓝[≤] a

tactic: simpa only [dual_ordSeparatingSet, dual_ordConnectedSection] using
  compl_section_ordSeparatingSet_mem_nhdsWithin_Ici hd' ha'
state_before: X : Type u_1
inst✝² : LinearOrder X
inst✝¹ : TopologicalSpace X
inst✝ : OrderTopology X
a b c : X
s t : Set X
hd : Disjoint s (closure t)
ha : a ∈ s
hd' : Disjoint (⇑ofDual ⁻¹' s) (closure (⇑ofDual ⁻¹' t))
ha' : toDual a ∈ ⇑ofDual ⁻¹' s
⊢ (s.ordSeparatingSet t).ordConnectedSectionᶜ ∈ 𝓝[≤] a
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.unitors_equal
File: Mathlib/CategoryTheory/Monoidal/CoherenceLemmas.lean

tactic: coherence
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : MonoidalCategory C
⊢ (λ_ (𝟙_ C)).hom = (ρ_ (𝟙_ C)).hom
state_after: no goals
Theorem: Orientation.tan_oangle_sub_left_mul_norm_of_oangle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Oriented/RightAngle.lean

tactic: rw [← neg_inj, oangle_rev, ← oangle_neg_orientation_eq_neg, neg_inj] at h ⊢
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
⊢ (o.oangle (x - y) x).tan * ‖x‖ = ‖y‖
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (-o).oangle y x = ↑(π / 2)
⊢ ((-o).oangle x (x - y)).tan * ‖x‖ = ‖y‖

tactic: exact (-o).tan_oangle_sub_right_mul_norm_of_oangle_eq_pi_div_two h
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (-o).oangle y x = ↑(π / 2)
⊢ ((-o).oangle x (x - y)).tan * ‖x‖ = ‖y‖
state_after: no goals
Theorem: ProbabilityTheory.defaultRatCDF_le_one
File: Mathlib/Probability/Kernel/Disintegration/MeasurableStieltjes.lean

tactic: unfold defaultRatCDF
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
q : ℚ
⊢ defaultRatCDF q ≤ 1
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
q : ℚ
⊢ (if q < 0 then 0 else 1) ≤ 1

tactic: split_ifs <;> simp
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
q : ℚ
⊢ (if q < 0 then 0 else 1) ≤ 1
state_after: no goals
Theorem: not_supPrime
File: Mathlib/Order/Irreducible.lean

tactic: rw [SupPrime, not_and_or]
state_before: ι : Type u_1
α : Type u_2
inst✝ : SemilatticeSup α
a b c : α
⊢ ¬SupPrime a ↔ IsMin a ∨ ∃ b c, a ≤ b ⊔ c ∧ ¬a ≤ b ∧ ¬a ≤ c
state_after: ι : Type u_1
α : Type u_2
inst✝ : SemilatticeSup α
a b c : α
⊢ (¬¬IsMin a ∨ ¬∀ ⦃b c : α⦄, a ≤ b ⊔ c → a ≤ b ∨ a ≤ c) ↔ IsMin a ∨ ∃ b c, a ≤ b ⊔ c ∧ ¬a ≤ b ∧ ¬a ≤ c

tactic: push_neg
state_before: ι : Type u_1
α : Type u_2
inst✝ : SemilatticeSup α
a b c : α
⊢ (¬¬IsMin a ∨ ¬∀ ⦃b c : α⦄, a ≤ b ⊔ c → a ≤ b ∨ a ≤ c) ↔ IsMin a ∨ ∃ b c, a ≤ b ⊔ c ∧ ¬a ≤ b ∧ ¬a ≤ c
state_after: ι : Type u_1
α : Type u_2
inst✝ : SemilatticeSup α
a b c : α
⊢ (IsMin a ∨ ∃ b c, a ≤ b ⊔ c ∧ ¬a ≤ b ∧ ¬a ≤ c) ↔ IsMin a ∨ ∃ b c, a ≤ b ⊔ c ∧ ¬a ≤ b ∧ ¬a ≤ c

tactic: rfl
state_before: ι : Type u_1
α : Type u_2
inst✝ : SemilatticeSup α
a b c : α
⊢ (IsMin a ∨ ∃ b c, a ≤ b ⊔ c ∧ ¬a ≤ b ∧ ¬a ≤ c) ↔ IsMin a ∨ ∃ b c, a ≤ b ⊔ c ∧ ¬a ≤ b ∧ ¬a ≤ c
state_after: no goals
Theorem: exists_unique_const
File: Mathlib/Logic/Basic.lean

tactic: simp
state_before: α✝ : Sort u_1
β : Sort u_2
p q : α✝ → Prop
b : Prop
α : Sort u_3
i : Nonempty α
inst✝ : Subsingleton α
⊢ (∃! x, b) ↔ b
state_after: no goals
Theorem: IsCoprime.of_isCoprime_of_dvd_left
File: Mathlib/RingTheory/Coprime/Basic.lean

tactic: obtain ⟨d, rfl⟩ := hdvd
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
h : IsCoprime y z
hdvd : x ∣ y
⊢ IsCoprime x z
state_after: case intro
R : Type u
inst✝ : CommSemiring R
x z d : R
h : IsCoprime (x * d) z
⊢ IsCoprime x z

tactic: exact IsCoprime.of_mul_left_left h
state_before: case intro
R : Type u
inst✝ : CommSemiring R
x z d : R
h : IsCoprime (x * d) z
⊢ IsCoprime x z
state_after: no goals
Theorem: reesAlgebra.monomial_mem
File: Mathlib/RingTheory/ReesAlgebra.lean

tactic: simp (config := { contextual := true }) [mem_reesAlgebra_iff_support, coeff_monomial, ←
  imp_iff_not_or]
state_before: R M : Type u
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I✝ I : Ideal R
i : ℕ
r : R
⊢ (monomial i) r ∈ reesAlgebra I ↔ r ∈ I ^ i
state_after: no goals
Theorem: ENNReal.inv_eq_one
File: Mathlib/Data/ENNReal/Inv.lean

tactic: rw [← inv_inj, inv_inv, inv_one]
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
⊢ a⁻¹ = 1 ↔ a = 1
state_after: no goals
Theorem: Zsqrtd.muld_val
File: Mathlib/NumberTheory/Zsqrtd/Basic.lean

tactic: ext <;> simp
state_before: d x y : ℤ
⊢ sqrtd * { re := x, im := y } = { re := d * y, im := x }
state_after: no goals