1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Filter.SupHom.apply_blimsup_le
File: Mathlib/Order/LiminfLimsup.lean

tactic: simp only [blimsup_eq_iInf_biSup, Function.comp]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝¹ : CompleteLattice α
f g✝ : Filter β
p q : β → Prop
u v : β → α
inst✝ : CompleteLattice γ
g : sSupHom α γ
⊢ g (blimsup u f p) ≤ blimsup (⇑g ∘ u) f p
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝¹ : CompleteLattice α
f g✝ : Filter β
p q : β → Prop
u v : β → α
inst✝ : CompleteLattice γ
g : sSupHom α γ
⊢ g (⨅ s ∈ f, ⨆ b, ⨆ (_ : p b ∧ b ∈ s), u b) ≤ ⨅ s ∈ f, ⨆ b, ⨆ (_ : p b ∧ b ∈ s), g (u b)

tactic: refine ((OrderHomClass.mono g).map_iInf₂_le _).trans ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝¹ : CompleteLattice α
f g✝ : Filter β
p q : β → Prop
u v : β → α
inst✝ : CompleteLattice γ
g : sSupHom α γ
⊢ g (⨅ s ∈ f, ⨆ b, ⨆ (_ : p b ∧ b ∈ s), u b) ≤ ⨅ s ∈ f, ⨆ b, ⨆ (_ : p b ∧ b ∈ s), g (u b)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝¹ : CompleteLattice α
f g✝ : Filter β
p q : β → Prop
u v : β → α
inst✝ : CompleteLattice γ
g : sSupHom α γ
⊢ ⨅ i ∈ f, g (⨆ b, ⨆ (_ : p b ∧ b ∈ i), u b) ≤ ⨅ s ∈ f, ⨆ b, ⨆ (_ : p b ∧ b ∈ s), g (u b)

tactic: simp only [_root_.map_iSup, le_refl]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝¹ : CompleteLattice α
f g✝ : Filter β
p q : β → Prop
u v : β → α
inst✝ : CompleteLattice γ
g : sSupHom α γ
⊢ ⨅ i ∈ f, g (⨆ b, ⨆ (_ : p b ∧ b ∈ i), u b) ≤ ⨅ s ∈ f, ⨆ b, ⨆ (_ : p b ∧ b ∈ s), g (u b)
state_after: no goals
Theorem: CategoryTheory.ComposableArrows.mkOfObjOfMapSucc_arrow
File: Mathlib/CategoryTheory/ComposableArrows.lean

tactic: simpa using mkOfObjOfMapSucc_map_succ obj mapSucc i hi
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
n m : ℕ
F G : ComposableArrows C n
obj : Fin (n + 1) → C
mapSucc : (i : Fin n) → obj i.castSucc ⟶ obj i.succ
i : ℕ
hi : autoParam (i < n) _auto✝
⊢ ((mkOfObjOfMapSucc obj mapSucc).arrow i hi).hom = eqToHom ⋯ ≫ (mk₁ (mapSucc ⟨i, hi⟩)).hom ≫ eqToHom ⋯
state_after: no goals
Theorem: LocallyConstant.piecewise'_apply_left
File: Mathlib/Topology/LocallyConstant/Basic.lean

tactic: letI : ∀ j : C₀, Decidable (j ∈ Subtype.val ⁻¹' C₁) := fun j ↦ decidable_of_iff (↑j ∈ C₁) Iff.rfl
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
C₀ C₁ C₂ : Set X
h₀ : C₀ ⊆ C₁ ∪ C₂
h₁ : IsClosed C₁
h₂ : IsClosed C₂
f₁ : LocallyConstant (↑C₁) Z
f₂ : LocallyConstant (↑C₂) Z
inst✝ : DecidablePred fun x => x ∈ C₁
hf : ∀ (x : X) (hx : x ∈ C₁ ∩ C₂), f₁ ⟨x, ⋯⟩ = f₂ ⟨x, ⋯⟩
x : ↑C₀
hx : ↑x ∈ C₁
⊢ (piecewise' h₀ h₁ h₂ f₁ f₂ hf) x = f₁ ⟨↑x, hx⟩
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
C₀ C₁ C₂ : Set X
h₀ : C₀ ⊆ C₁ ∪ C₂
h₁ : IsClosed C₁
h₂ : IsClosed C₂
f₁ : LocallyConstant (↑C₁) Z
f₂ : LocallyConstant (↑C₂) Z
inst✝ : DecidablePred fun x => x ∈ C₁
hf : ∀ (x : X) (hx : x ∈ C₁ ∩ C₂), f₁ ⟨x, ⋯⟩ = f₂ ⟨x, ⋯⟩
x : ↑C₀
hx : ↑x ∈ C₁
this : (j : ↑C₀) → Decidable (j ∈ Subtype.val ⁻¹' C₁) := fun j => decidable_of_iff (↑j ∈ C₁) ⋯
⊢ (piecewise' h₀ h₁ h₂ f₁ f₂ hf) x = f₁ ⟨↑x, hx⟩

tactic: rw [piecewise', piecewise_apply_left (f := (f₁.comap
  ⟨(restrictPreimage C₁ ((↑) : C₀ → X)), continuous_subtype_val.restrictPreimage⟩))
  (hx := hx)]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
C₀ C₁ C₂ : Set X
h₀ : C₀ ⊆ C₁ ∪ C₂
h₁ : IsClosed C₁
h₂ : IsClosed C₂
f₁ : LocallyConstant (↑C₁) Z
f₂ : LocallyConstant (↑C₂) Z
inst✝ : DecidablePred fun x => x ∈ C₁
hf : ∀ (x : X) (hx : x ∈ C₁ ∩ C₂), f₁ ⟨x, ⋯⟩ = f₂ ⟨x, ⋯⟩
x : ↑C₀
hx : ↑x ∈ C₁
this : (j : ↑C₀) → Decidable (j ∈ Subtype.val ⁻¹' C₁) := fun j => decidable_of_iff (↑j ∈ C₁) ⋯
⊢ (piecewise' h₀ h₁ h₂ f₁ f₂ hf) x = f₁ ⟨↑x, hx⟩
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
C₀ C₁ C₂ : Set X
h₀ : C₀ ⊆ C₁ ∪ C₂
h₁ : IsClosed C₁
h₂ : IsClosed C₂
f₁ : LocallyConstant (↑C₁) Z
f₂ : LocallyConstant (↑C₂) Z
inst✝ : DecidablePred fun x => x ∈ C₁
hf : ∀ (x : X) (hx : x ∈ C₁ ∩ C₂), f₁ ⟨x, ⋯⟩ = f₂ ⟨x, ⋯⟩
x : ↑C₀
hx : ↑x ∈ C₁
this : (j : ↑C₀) → Decidable (j ∈ Subtype.val ⁻¹' C₁) := fun j => decidable_of_iff (↑j ∈ C₁) ⋯
⊢ (comap { toFun := C₁.restrictPreimage Subtype.val, continuous_toFun := ⋯ } f₁) ⟨x, hx⟩ = f₁ ⟨↑x, hx⟩

tactic: rfl
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
C₀ C₁ C₂ : Set X
h₀ : C₀ ⊆ C₁ ∪ C₂
h₁ : IsClosed C₁
h₂ : IsClosed C₂
f₁ : LocallyConstant (↑C₁) Z
f₂ : LocallyConstant (↑C₂) Z
inst✝ : DecidablePred fun x => x ∈ C₁
hf : ∀ (x : X) (hx : x ∈ C₁ ∩ C₂), f₁ ⟨x, ⋯⟩ = f₂ ⟨x, ⋯⟩
x : ↑C₀
hx : ↑x ∈ C₁
this : (j : ↑C₀) → Decidable (j ∈ Subtype.val ⁻¹' C₁) := fun j => decidable_of_iff (↑j ∈ C₁) ⋯
⊢ (comap { toFun := C₁.restrictPreimage Subtype.val, continuous_toFun := ⋯ } f₁) ⟨x, hx⟩ = f₁ ⟨↑x, hx⟩
state_after: no goals
Theorem: Int.le_sub_one_iff
File: Mathlib/Data/Int/Defs.lean

tactic: omega
state_before: a b c d m n : ℤ
⊢ m ≤ n - 1 ↔ m < n
state_after: no goals
Theorem: PseudoMetricSpace.replaceUniformity_eq
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

tactic: ext
state_before: α✝ : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α✝
α : Type u_3
U : UniformSpace α
m : PseudoMetricSpace α
H : 𝓤 α = 𝓤 α
⊢ m.replaceUniformity H = m
state_after: case h.dist.h.h
α✝ : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α✝
α : Type u_3
U : UniformSpace α
m : PseudoMetricSpace α
H : 𝓤 α = 𝓤 α
x✝¹ x✝ : α
⊢ dist x✝¹ x✝ = dist x✝¹ x✝

tactic: rfl
state_before: case h.dist.h.h
α✝ : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α✝
α : Type u_3
U : UniformSpace α
m : PseudoMetricSpace α
H : 𝓤 α = 𝓤 α
x✝¹ x✝ : α
⊢ dist x✝¹ x✝ = dist x✝¹ x✝
state_after: no goals
Theorem: WeierstrassCurve.Affine.evalEval_polynomialY
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

tactic: simp only [polynomialY]
state_before: R : Type u
inst✝ : CommRing R
W : Affine R
x y : R
⊢ evalEval x y W.polynomialY = 2 * y + W.a₁ * x + W.a₃
state_after: R : Type u
inst✝ : CommRing R
W : Affine R
x y : R
⊢ evalEval x y (C (C 2) * Y + C (C W.a₁ * X + C W.a₃)) = 2 * y + W.a₁ * x + W.a₃

tactic: eval_simp
state_before: R : Type u
inst✝ : CommRing R
W : Affine R
x y : R
⊢ evalEval x y (C (C 2) * Y + C (C W.a₁ * X + C W.a₃)) = 2 * y + W.a₁ * x + W.a₃
state_after: R : Type u
inst✝ : CommRing R
W : Affine R
x y : R
⊢ 2 * y + (W.a₁ * x + W.a₃) = 2 * y + W.a₁ * x + W.a₃

tactic: rw [← add_assoc]
state_before: R : Type u
inst✝ : CommRing R
W : Affine R
x y : R
⊢ 2 * y + (W.a₁ * x + W.a₃) = 2 * y + W.a₁ * x + W.a₃
state_after: no goals
Theorem: Nat.squarefree_iff_minSqFac
File: Mathlib/Data/Nat/Squarefree.lean

tactic: have := minSqFac_has_prop n
state_before: s : Finset ℕ
m n✝ p n : ℕ
⊢ Squarefree n ↔ n.minSqFac = none
state_after: s : Finset ℕ
m n✝ p n : ℕ
this : n.MinSqFacProp n.minSqFac
⊢ Squarefree n ↔ n.minSqFac = none

tactic: constructor <;> intro H
state_before: s : Finset ℕ
m n✝ p n : ℕ
this : n.MinSqFacProp n.minSqFac
⊢ Squarefree n ↔ n.minSqFac = none
state_after: case mp
s : Finset ℕ
m n✝ p n : ℕ
this : n.MinSqFacProp n.minSqFac
H : Squarefree n
⊢ n.minSqFac = none

case mpr
s : Finset ℕ
m n✝ p n : ℕ
this : n.MinSqFacProp n.minSqFac
H : n.minSqFac = none
⊢ Squarefree n

tactic: cases' e : n.minSqFac with d
state_before: case mp
s : Finset ℕ
m n✝ p n : ℕ
this : n.MinSqFacProp n.minSqFac
H : Squarefree n
⊢ n.minSqFac = none
state_after: case mp.none
s : Finset ℕ
m n✝ p n : ℕ
this : n.MinSqFacProp n.minSqFac
H : Squarefree n
e : n.minSqFac = none
⊢ none = none

case mp.some
s : Finset ℕ
m n✝ p n : ℕ
this : n.MinSqFacProp n.minSqFac
H : Squarefree n
d : ℕ
e : n.minSqFac = some d
⊢ some d = none

tactic: rw [e] at this
state_before: case mp.some
s : Finset ℕ
m n✝ p n : ℕ
this : n.MinSqFacProp n.minSqFac
H : Squarefree n
d : ℕ
e : n.minSqFac = some d
⊢ some d = none
state_after: case mp.some
s : Finset ℕ
m n✝ p n : ℕ
H : Squarefree n
d : ℕ
this : n.MinSqFacProp (some d)
e : n.minSqFac = some d
⊢ some d = none

tactic: cases squarefree_iff_prime_squarefree.1 H _ this.1 this.2.1
state_before: case mp.some
s : Finset ℕ
m n✝ p n : ℕ
H : Squarefree n
d : ℕ
this : n.MinSqFacProp (some d)
e : n.minSqFac = some d
⊢ some d = none
state_after: no goals

tactic: rfl
state_before: case mp.none
s : Finset ℕ
m n✝ p n : ℕ
this : n.MinSqFacProp n.minSqFac
H : Squarefree n
e : n.minSqFac = none
⊢ none = none
state_after: no goals

tactic: rwa [H] at this
state_before: case mpr
s : Finset ℕ
m n✝ p n : ℕ
this : n.MinSqFacProp n.minSqFac
H : n.minSqFac = none
⊢ Squarefree n
state_after: no goals
Theorem: gauge_lt_one_eq_interior
File: Mathlib/Analysis/Convex/Gauge.lean

tactic: refine Subset.antisymm (fun x hx ↦ ?_) (interior_subset_gauge_lt_one s)
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
s t : Set E
x : E
a : ℝ
inst✝² : TopologicalSpace E
inst✝¹ : TopologicalAddGroup E
inst✝ : ContinuousSMul ℝ E
hc : Convex ℝ s
hs₀ : s ∈ 𝓝 0
⊢ {x | gauge s x < 1} = interior s
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
s t : Set E
x✝ : E
a : ℝ
inst✝² : TopologicalSpace E
inst✝¹ : TopologicalAddGroup E
inst✝ : ContinuousSMul ℝ E
hc : Convex ℝ s
hs₀ : s ∈ 𝓝 0
x : E
hx : x ∈ {x | gauge s x < 1}
⊢ x ∈ interior s

tactic: rcases mem_openSegment_of_gauge_lt_one (absorbent_nhds_zero hs₀) hx with ⟨y, hys, hxy⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
s t : Set E
x✝ : E
a : ℝ
inst✝² : TopologicalSpace E
inst✝¹ : TopologicalAddGroup E
inst✝ : ContinuousSMul ℝ E
hc : Convex ℝ s
hs₀ : s ∈ 𝓝 0
x : E
hx : x ∈ {x | gauge s x < 1}
⊢ x ∈ interior s
state_after: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
s t : Set E
x✝ : E
a : ℝ
inst✝² : TopologicalSpace E
inst✝¹ : TopologicalAddGroup E
inst✝ : ContinuousSMul ℝ E
hc : Convex ℝ s
hs₀ : s ∈ 𝓝 0
x : E
hx : x ∈ {x | gauge s x < 1}
y : E
hys : y ∈ s
hxy : x ∈ openSegment ℝ 0 y
⊢ x ∈ interior s

tactic: exact hc.openSegment_interior_self_subset_interior (mem_interior_iff_mem_nhds.2 hs₀) hys hxy
state_before: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
s t : Set E
x✝ : E
a : ℝ
inst✝² : TopologicalSpace E
inst✝¹ : TopologicalAddGroup E
inst✝ : ContinuousSMul ℝ E
hc : Convex ℝ s
hs₀ : s ∈ 𝓝 0
x : E
hx : x ∈ {x | gauge s x < 1}
y : E
hys : y ∈ s
hxy : x ∈ openSegment ℝ 0 y
⊢ x ∈ interior s
state_after: no goals
Theorem: PFun.fix_stop
File: Mathlib/Data/PFun.lean

tactic: rw [PFun.mem_fix_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f : α →. β ⊕ α
b : β
a : α
hb : Sum.inl b ∈ f a
⊢ b ∈ f.fix a
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f : α →. β ⊕ α
b : β
a : α
hb : Sum.inl b ∈ f a
⊢ Sum.inl b ∈ f a ∨ ∃ a', Sum.inr a' ∈ f a ∧ b ∈ f.fix a'

tactic: exact Or.inl hb
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f : α →. β ⊕ α
b : β
a : α
hb : Sum.inl b ∈ f a
⊢ Sum.inl b ∈ f a ∨ ∃ a', Sum.inr a' ∈ f a ∧ b ∈ f.fix a'
state_after: no goals
Theorem: IsPrimitiveRoot.subOneIntegralPowerBasis'_gen_prime
File: Mathlib/NumberTheory/Cyclotomic/Rat.lean

tactic: simpa only [subOneIntegralPowerBasis'_gen] using hζ.zeta_sub_one_prime'
state_before: p : ℕ+
k : ℕ
K : Type u
inst✝² : Field K
inst✝¹ : CharZero K
ζ : K
hp : Fact (Nat.Prime ↑p)
inst✝ : IsCyclotomicExtension {p} ℚ K
hζ : IsPrimitiveRoot ζ ↑p
⊢ Prime hζ.subOneIntegralPowerBasis'.gen
state_after: no goals
Theorem: Filter.HasBasis.nhds_of_one
File: Mathlib/Topology/Algebra/Group/Basic.lean

tactic: rw [← nhds_translation_mul_inv]
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : TopologicalSpace α
f : α → G
s✝ : Set α
x✝ : α
ι : Sort u_1
p : ι → Prop
s : ι → Set G
hb : (𝓝 1).HasBasis p s
x : G
⊢ (𝓝 x).HasBasis p fun i => {y | y / x ∈ s i}
state_after: G : Type w
H : Type x
α : Type u
β : Type v
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : TopologicalSpace α
f : α → G
s✝ : Set α
x✝ : α
ι : Sort u_1
p : ι → Prop
s : ι → Set G
hb : (𝓝 1).HasBasis p s
x : G
⊢ (Filter.comap (fun x_1 => x_1 * x⁻¹) (𝓝 1)).HasBasis p fun i => {y | y / x ∈ s i}

tactic: simp_rw [div_eq_mul_inv]
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : TopologicalSpace α
f : α → G
s✝ : Set α
x✝ : α
ι : Sort u_1
p : ι → Prop
s : ι → Set G
hb : (𝓝 1).HasBasis p s
x : G
⊢ (Filter.comap (fun x_1 => x_1 * x⁻¹) (𝓝 1)).HasBasis p fun i => {y | y / x ∈ s i}
state_after: G : Type w
H : Type x
α : Type u
β : Type v
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : TopologicalSpace α
f : α → G
s✝ : Set α
x✝ : α
ι : Sort u_1
p : ι → Prop
s : ι → Set G
hb : (𝓝 1).HasBasis p s
x : G
⊢ (Filter.comap (fun x_1 => x_1 * x⁻¹) (𝓝 1)).HasBasis p fun i => {y | y * x⁻¹ ∈ s i}

tactic: exact hb.comap _
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝³ : TopologicalSpace G
inst✝² : Group G
inst✝¹ : TopologicalGroup G
inst✝ : TopologicalSpace α
f : α → G
s✝ : Set α
x✝ : α
ι : Sort u_1
p : ι → Prop
s : ι → Set G
hb : (𝓝 1).HasBasis p s
x : G
⊢ (Filter.comap (fun x_1 => x_1 * x⁻¹) (𝓝 1)).HasBasis p fun i => {y | y * x⁻¹ ∈ s i}
state_after: no goals
Theorem: Nat.sInf_mem
File: Mathlib/Data/Nat/Lattice.lean

tactic: rw [Nat.sInf_def h]
state_before: s : Set ℕ
h : s.Nonempty
⊢ sInf s ∈ s
state_after: s : Set ℕ
h : s.Nonempty
⊢ Nat.find h ∈ s

tactic: exact Nat.find_spec h
state_before: s : Set ℕ
h : s.Nonempty
⊢ Nat.find h ∈ s
state_after: no goals
Theorem: SimpleGraph.Subgraph.degree_eq_one_iff_unique_adj
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: rw [← finset_card_neighborSet_eq_degree, Finset.card_eq_one, Finset.singleton_iff_unique_mem]
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
G' : G.Subgraph
v : V
inst✝ : Fintype ↑(G'.neighborSet v)
⊢ G'.degree v = 1 ↔ ∃! w, G'.Adj v w
state_after: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
G' : G.Subgraph
v : V
inst✝ : Fintype ↑(G'.neighborSet v)
⊢ (∃! a, a ∈ (G'.neighborSet v).toFinset) ↔ ∃! w, G'.Adj v w

tactic: simp only [Set.mem_toFinset, mem_neighborSet]
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
G' : G.Subgraph
v : V
inst✝ : Fintype ↑(G'.neighborSet v)
⊢ (∃! a, a ∈ (G'.neighborSet v).toFinset) ↔ ∃! w, G'.Adj v w
state_after: no goals
Theorem: PowerSeries.trunc_trunc_mul
File: Mathlib/RingTheory/PowerSeries/Trunc.lean

tactic: ext m
state_before: R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n : ℕ
f g : R⟦X⟧
⊢ trunc n (↑(trunc n f) * g) = trunc n (f * g)
state_after: case a
R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n : ℕ
f g : R⟦X⟧
m : ℕ
⊢ (trunc n (↑(trunc n f) * g)).coeff m = (trunc n (f * g)).coeff m

tactic: rw [coeff_trunc, coeff_trunc]
state_before: case a
R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n : ℕ
f g : R⟦X⟧
m : ℕ
⊢ (trunc n (↑(trunc n f) * g)).coeff m = (trunc n (f * g)).coeff m
state_after: case a
R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n : ℕ
f g : R⟦X⟧
m : ℕ
⊢ (if m < n then (coeff R m) (↑(trunc n f) * g) else 0) = if m < n then (coeff R m) (f * g) else 0

tactic: split_ifs with h
state_before: case a
R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n : ℕ
f g : R⟦X⟧
m : ℕ
⊢ (if m < n then (coeff R m) (↑(trunc n f) * g) else 0) = if m < n then (coeff R m) (f * g) else 0
state_after: case pos
R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n : ℕ
f g : R⟦X⟧
m : ℕ
h : m < n
⊢ (coeff R m) (↑(trunc n f) * g) = (coeff R m) (f * g)

case neg
R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n : ℕ
f g : R⟦X⟧
m : ℕ
h : ¬m < n
⊢ 0 = 0

tactic: rw [coeff_mul, coeff_mul, sum_congr rfl]
state_before: case pos
R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n : ℕ
f g : R⟦X⟧
m : ℕ
h : m < n
⊢ (coeff R m) (↑(trunc n f) * g) = (coeff R m) (f * g)
state_after: case pos
R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n : ℕ
f g : R⟦X⟧
m : ℕ
h : m < n
⊢ ∀ x ∈ antidiagonal m, (coeff R x.1) ↑(trunc n f) * (coeff R x.2) g = (coeff R x.1) f * (coeff R x.2) g

tactic: intro _ hab
state_before: case pos
R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n : ℕ
f g : R⟦X⟧
m : ℕ
h : m < n
⊢ ∀ x ∈ antidiagonal m, (coeff R x.1) ↑(trunc n f) * (coeff R x.2) g = (coeff R x.1) f * (coeff R x.2) g
state_after: case pos
R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n : ℕ
f g : R⟦X⟧
m : ℕ
h : m < n
x✝ : ℕ × ℕ
hab : x✝ ∈ antidiagonal m
⊢ (coeff R x✝.1) ↑(trunc n f) * (coeff R x✝.2) g = (coeff R x✝.1) f * (coeff R x✝.2) g

tactic: have ha := lt_of_le_of_lt (antidiagonal.fst_le hab) h
state_before: case pos
R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n : ℕ
f g : R⟦X⟧
m : ℕ
h : m < n
x✝ : ℕ × ℕ
hab : x✝ ∈ antidiagonal m
⊢ (coeff R x✝.1) ↑(trunc n f) * (coeff R x✝.2) g = (coeff R x✝.1) f * (coeff R x✝.2) g
state_after: case pos
R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n : ℕ
f g : R⟦X⟧
m : ℕ
h : m < n
x✝ : ℕ × ℕ
hab : x✝ ∈ antidiagonal m
ha : x✝.1 < n
⊢ (coeff R x✝.1) ↑(trunc n f) * (coeff R x✝.2) g = (coeff R x✝.1) f * (coeff R x✝.2) g

tactic: rw [coeff_coe, coeff_trunc, if_pos ha]
state_before: case pos
R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n : ℕ
f g : R⟦X⟧
m : ℕ
h : m < n
x✝ : ℕ × ℕ
hab : x✝ ∈ antidiagonal m
ha : x✝.1 < n
⊢ (coeff R x✝.1) ↑(trunc n f) * (coeff R x✝.2) g = (coeff R x✝.1) f * (coeff R x✝.2) g
state_after: no goals

tactic: rfl
state_before: case neg
R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n : ℕ
f g : R⟦X⟧
m : ℕ
h : ¬m < n
⊢ 0 = 0
state_after: no goals
Theorem: ComplexShape.ε₁_ε₂
File: Mathlib/Algebra/Homology/ComplexShapeSigns.lean

tactic: rw [← Int.units_mul_self (ComplexShape.ε₁ c₁ c₂ c₁₂ (i₁, i₂')), mul_assoc]
state_before: I₁ : Type u_1
I₂ : Type u_2
I₁₂ : Type u_3
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
c₁₂ : ComplexShape I₁₂
inst✝ : TotalComplexShape c₁ c₂ c₁₂
i₁ i₁' : I₁
i₂ i₂' : I₂
h₁ : c₁.Rel i₁ i₁'
h₂ : c₂.Rel i₂ i₂'
⊢ c₁.ε₁ c₂ c₁₂ (i₁, i₂) * c₁.ε₂ c₂ c₁₂ (i₁, i₂) * 1 = -c₁.ε₂ c₂ c₁₂ (i₁', i₂) * c₁.ε₁ c₂ c₁₂ (i₁, i₂')
state_after: I₁ : Type u_1
I₂ : Type u_2
I₁₂ : Type u_3
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
c₁₂ : ComplexShape I₁₂
inst✝ : TotalComplexShape c₁ c₂ c₁₂
i₁ i₁' : I₁
i₂ i₂' : I₂
h₁ : c₁.Rel i₁ i₁'
h₂ : c₂.Rel i₂ i₂'
⊢ c₁.ε₁ c₂ c₁₂ (i₁, i₂) * (c₁.ε₂ c₂ c₁₂ (i₁, i₂) * (c₁.ε₁ c₂ c₁₂ (i₁, i₂') * c₁.ε₁ c₂ c₁₂ (i₁, i₂'))) =
    -c₁.ε₂ c₂ c₁₂ (i₁', i₂) * c₁.ε₁ c₂ c₁₂ (i₁, i₂')

tactic: conv_lhs =>
  arg 2
  rw [← mul_assoc, ε₂_ε₁ c₁₂ h₁ h₂]
state_before: I₁ : Type u_1
I₂ : Type u_2
I₁₂ : Type u_3
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
c₁₂ : ComplexShape I₁₂
inst✝ : TotalComplexShape c₁ c₂ c₁₂
i₁ i₁' : I₁
i₂ i₂' : I₂
h₁ : c₁.Rel i₁ i₁'
h₂ : c₂.Rel i₂ i₂'
⊢ c₁.ε₁ c₂ c₁₂ (i₁, i₂) * (c₁.ε₂ c₂ c₁₂ (i₁, i₂) * (c₁.ε₁ c₂ c₁₂ (i₁, i₂') * c₁.ε₁ c₂ c₁₂ (i₁, i₂'))) =
    -c₁.ε₂ c₂ c₁₂ (i₁', i₂) * c₁.ε₁ c₂ c₁₂ (i₁, i₂')
state_after: I₁ : Type u_1
I₂ : Type u_2
I₁₂ : Type u_3
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
c₁₂ : ComplexShape I₁₂
inst✝ : TotalComplexShape c₁ c₂ c₁₂
i₁ i₁' : I₁
i₂ i₂' : I₂
h₁ : c₁.Rel i₁ i₁'
h₂ : c₂.Rel i₂ i₂'
⊢ c₁.ε₁ c₂ c₁₂ (i₁, i₂) * (-c₁.ε₁ c₂ c₁₂ (i₁, i₂) * c₁.ε₂ c₂ c₁₂ (i₁', i₂) * c₁.ε₁ c₂ c₁₂ (i₁, i₂')) =
    -c₁.ε₂ c₂ c₁₂ (i₁', i₂) * c₁.ε₁ c₂ c₁₂ (i₁, i₂')

tactic: rw [neg_mul, neg_mul, neg_mul, mul_neg, neg_inj, ← mul_assoc, ← mul_assoc,
  Int.units_mul_self, one_mul]
state_before: I₁ : Type u_1
I₂ : Type u_2
I₁₂ : Type u_3
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
c₁₂ : ComplexShape I₁₂
inst✝ : TotalComplexShape c₁ c₂ c₁₂
i₁ i₁' : I₁
i₂ i₂' : I₂
h₁ : c₁.Rel i₁ i₁'
h₂ : c₂.Rel i₂ i₂'
⊢ c₁.ε₁ c₂ c₁₂ (i₁, i₂) * (-c₁.ε₁ c₂ c₁₂ (i₁, i₂) * c₁.ε₂ c₂ c₁₂ (i₁', i₂) * c₁.ε₁ c₂ c₁₂ (i₁, i₂')) =
    -c₁.ε₂ c₂ c₁₂ (i₁', i₂) * c₁.ε₁ c₂ c₁₂ (i₁, i₂')
state_after: no goals
Theorem: Finset.covBy_cons
File: Mathlib/Data/Finset/Grade.lean

tactic: simp [← val_covBy_val]
state_before: α : Type u_1
s t : Finset α
a : α
ha : a ∉ s
⊢ s ⋖ cons a s ha
state_after: no goals
Theorem: Finset.insert_sdiff_of_not_mem
File: Mathlib/Data/Finset/Basic.lean

tactic: rw [← coe_inj, coe_insert, coe_sdiff, coe_sdiff, coe_insert]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t✝ u v : Finset α
a b : α
s t : Finset α
x : α
h : x ∉ t
⊢ insert x s \ t = insert x (s \ t)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t✝ u v : Finset α
a b : α
s t : Finset α
x : α
h : x ∉ t
⊢ insert x ↑s \ ↑t = insert x (↑s \ ↑t)

tactic: exact Set.insert_diff_of_not_mem _ h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t✝ u v : Finset α
a b : α
s t : Finset α
x : α
h : x ∉ t
⊢ insert x ↑s \ ↑t = insert x (↑s \ ↑t)
state_after: no goals
Theorem: MulAction.period_bounded_of_exponent_pos
File: Mathlib/GroupTheory/GroupAction/Period.lean

tactic: use Monoid.exponent M
state_before: α : Type v
G : Type u
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u
inst✝¹ : Monoid M
inst✝ : MulAction M α
exp_pos : 0 < Monoid.exponent M
m : M
⊢ BddAbove (Set.range fun a => period m a)
state_after: case h
α : Type v
G : Type u
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u
inst✝¹ : Monoid M
inst✝ : MulAction M α
exp_pos : 0 < Monoid.exponent M
m : M
⊢ Monoid.exponent M ∈ upperBounds (Set.range fun a => period m a)

tactic: simpa [upperBounds] using period_le_exponent exp_pos _
state_before: case h
α : Type v
G : Type u
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u
inst✝¹ : Monoid M
inst✝ : MulAction M α
exp_pos : 0 < Monoid.exponent M
m : M
⊢ Monoid.exponent M ∈ upperBounds (Set.range fun a => period m a)
state_after: no goals
Theorem: div_inv_eq_mul
File: Mathlib/Algebra/Group/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : DivisionMonoid α
a b c d : α
⊢ a / b⁻¹ = a * b
state_after: no goals
Theorem: SimpleGraph.Walk.map_isCycle_iff_of_injective
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: rw [isCycle_def, isCycle_def, map_isTrail_iff_of_injective hinj, Ne, map_eq_nil_iff,
  support_map, ← List.map_tail, List.nodup_map_iff hinj]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
f : G →g G'
f' : G' →g G''
u v u' v' : V
p✝ : G.Walk u v
p : G.Walk u u
hinj : Injective ⇑f
⊢ (Walk.map f p).IsCycle ↔ p.IsCycle
state_after: no goals
Theorem: isMulFreimanIso_empty
File: Mathlib/Combinatorics/Additive/FreimanHom.lean

tactic: simp [eq_zero_of_forall_not_mem hs, eq_zero_of_forall_not_mem ht]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : CommMonoid α
inst✝¹ : CommMonoid β
inst✝ : CommMonoid γ
A A₁ A₂ : Set α
B B₁ B₂ : Set β
C : Set γ
f f₁ f₂ : α → β
g : β → γ
m n : ℕ
s t : Multiset α
hs : ∀ ⦃x : α⦄, x ∈ s → x ∈ ∅
ht : ∀ ⦃x : α⦄, x ∈ t → x ∈ ∅
⊢ card s = n → card t = n → ((map f s).prod = (map f t).prod ↔ s.prod = t.prod)
state_after: no goals
Theorem: ContractingWith.dist_fixedPoint_fixedPoint_of_dist_le'
File: Mathlib/Topology/MetricSpace/Contracting.lean

tactic: rw [hy.eq, dist_comm]
state_before: α : Type u_1
inst✝ : MetricSpace α
K : ℝ≥0
f : α → α
hf : ContractingWith K f
g : α → α
x y : α
hx : IsFixedPt f x
hy : IsFixedPt g y
C : ℝ
hfg : ∀ (z : α), dist (f z) (g z) ≤ C
⊢ dist y (f y) / (1 - ↑K) = dist (f y) (g y) / (1 - ↑K)
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.leftUnitor_whiskerRight
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: rw [← whiskerLeft_iff, whiskerLeft_comp, ← cancel_epi (α_ _ _ _).hom, ←
    cancel_epi ((α_ _ _ _).hom ▷ _), pentagon_assoc, triangle, ← associator_naturality_middle, ←
    comp_whiskerRight_assoc, triangle, associator_naturality_left]
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
U V W X✝ Y✝ Z X Y : C
⊢ (λ_ X).hom ▷ Y = (α_ (𝟙_ C) X Y).hom ≫ (λ_ (X ⊗ Y)).hom
state_after: no goals