1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.Subobject.le_sInf
File: Mathlib/CategoryTheory/Subobject/Lattice.lean

tactic: fapply le_of_comm
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
inst✝¹ : WellPowered C
inst✝ : HasWidePullbacks C
A : C
s : Set (Subobject A)
f : Subobject A
k : ∀ g ∈ s, f ≤ g
⊢ f ≤ sInf s
state_after: case f
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
inst✝¹ : WellPowered C
inst✝ : HasWidePullbacks C
A : C
s : Set (Subobject A)
f : Subobject A
k : ∀ g ∈ s, f ≤ g
⊢ underlying.obj f ⟶ underlying.obj (sInf s)

case w
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
inst✝¹ : WellPowered C
inst✝ : HasWidePullbacks C
A : C
s : Set (Subobject A)
f : Subobject A
k : ∀ g ∈ s, f ≤ g
⊢ ?f ≫ (sInf s).arrow = f.arrow

tactic: exact Limits.limit.lift _ (leInfCone s f k) ≫ (underlyingIso _).inv
state_before: case f
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
inst✝¹ : WellPowered C
inst✝ : HasWidePullbacks C
A : C
s : Set (Subobject A)
f : Subobject A
k : ∀ g ∈ s, f ≤ g
⊢ underlying.obj f ⟶ underlying.obj (sInf s)
state_after: no goals

tactic: dsimp [sInf]
state_before: case w
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
inst✝¹ : WellPowered C
inst✝ : HasWidePullbacks C
A : C
s : Set (Subobject A)
f : Subobject A
k : ∀ g ∈ s, f ≤ g
⊢ (limit.lift (wideCospan s) (leInfCone s f k) ≫ (underlyingIso (widePullbackι s)).inv) ≫ (sInf s).arrow = f.arrow
state_after: case w
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
inst✝¹ : WellPowered C
inst✝ : HasWidePullbacks C
A : C
s : Set (Subobject A)
f : Subobject A
k : ∀ g ∈ s, f ≤ g
⊢ (limit.lift (wideCospan s) (leInfCone s f k) ≫ (underlyingIso (widePullbackι s)).inv) ≫ (mk (widePullbackι s)).arrow =
    f.arrow

tactic: rw [assoc, underlyingIso_arrow, widePullbackι, limit.lift_π, leInfCone_π_app_none]
state_before: case w
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
inst✝¹ : WellPowered C
inst✝ : HasWidePullbacks C
A : C
s : Set (Subobject A)
f : Subobject A
k : ∀ g ∈ s, f ≤ g
⊢ (limit.lift (wideCospan s) (leInfCone s f k) ≫ (underlyingIso (widePullbackι s)).inv) ≫ (mk (widePullbackι s)).arrow =
    f.arrow
state_after: no goals
Theorem: TopCat.Presheaf.stalkToFiber_surjective
File: Mathlib/Topology/Sheaves/Sheafify.lean

tactic: apply TopCat.stalkToFiber_surjective
state_before: X : TopCat
F : Presheaf (Type v) X
x : ↑X
⊢ Function.Surjective (F.stalkToFiber x)
state_after: case w
X : TopCat
F : Presheaf (Type v) X
x : ↑X
⊢ ∀ (t : F.stalk x), ∃ U f, ∃ (_ : (Sheafify.isLocallyGerm F).pred f), f ⟨x, ⋯⟩ = t

tactic: intro t
state_before: case w
X : TopCat
F : Presheaf (Type v) X
x : ↑X
⊢ ∀ (t : F.stalk x), ∃ U f, ∃ (_ : (Sheafify.isLocallyGerm F).pred f), f ⟨x, ⋯⟩ = t
state_after: case w
X : TopCat
F : Presheaf (Type v) X
x : ↑X
t : F.stalk x
⊢ ∃ U f, ∃ (_ : (Sheafify.isLocallyGerm F).pred f), f ⟨x, ⋯⟩ = t

tactic: obtain ⟨U, m, s, rfl⟩ := F.germ_exist _ t
state_before: case w
X : TopCat
F : Presheaf (Type v) X
x : ↑X
t : F.stalk x
⊢ ∃ U f, ∃ (_ : (Sheafify.isLocallyGerm F).pred f), f ⟨x, ⋯⟩ = t
state_after: case w.intro.intro.intro
X : TopCat
F : Presheaf (Type v) X
x : ↑X
U : Opens ↑X
m : x ∈ U
s : (forget (Type v)).obj (F.obj { unop := U })
⊢ ∃ U_1 f, ∃ (_ : (Sheafify.isLocallyGerm F).pred f), f ⟨x, ⋯⟩ = (F.germ ⟨x, m⟩) s

tactic: use ⟨U, m⟩
state_before: case w.intro.intro.intro
X : TopCat
F : Presheaf (Type v) X
x : ↑X
U : Opens ↑X
m : x ∈ U
s : (forget (Type v)).obj (F.obj { unop := U })
⊢ ∃ U_1 f, ∃ (_ : (Sheafify.isLocallyGerm F).pred f), f ⟨x, ⋯⟩ = (F.germ ⟨x, m⟩) s
state_after: case h
X : TopCat
F : Presheaf (Type v) X
x : ↑X
U : Opens ↑X
m : x ∈ U
s : (forget (Type v)).obj (F.obj { unop := U })
⊢ ∃ f, ∃ (_ : (Sheafify.isLocallyGerm F).pred f), f ⟨x, ⋯⟩ = (F.germ ⟨x, m⟩) s

tactic: fconstructor
state_before: case h
X : TopCat
F : Presheaf (Type v) X
x : ↑X
U : Opens ↑X
m : x ∈ U
s : (forget (Type v)).obj (F.obj { unop := U })
⊢ ∃ f, ∃ (_ : (Sheafify.isLocallyGerm F).pred f), f ⟨x, ⋯⟩ = (F.germ ⟨x, m⟩) s
state_after: case h.w
X : TopCat
F : Presheaf (Type v) X
x : ↑X
U : Opens ↑X
m : x ∈ U
s : (forget (Type v)).obj (F.obj { unop := U })
⊢ (y : ↥{ obj := U, property := m }.obj) → F.stalk ↑y

case h.h
X : TopCat
F : Presheaf (Type v) X
x : ↑X
U : Opens ↑X
m : x ∈ U
s : (forget (Type v)).obj (F.obj { unop := U })
⊢ ∃ (_ : (Sheafify.isLocallyGerm F).pred ?h.w), ?h.w ⟨x, ⋯⟩ = (F.germ ⟨x, m⟩) s

tactic: exact fun y => F.germ y s
state_before: case h.w
X : TopCat
F : Presheaf (Type v) X
x : ↑X
U : Opens ↑X
m : x ∈ U
s : (forget (Type v)).obj (F.obj { unop := U })
⊢ (y : ↥{ obj := U, property := m }.obj) → F.stalk ↑y
state_after: no goals

tactic: exact ⟨PrelocalPredicate.sheafifyOf ⟨s, fun _ => rfl⟩, rfl⟩
state_before: case h.h
X : TopCat
F : Presheaf (Type v) X
x : ↑X
U : Opens ↑X
m : x ∈ U
s : (forget (Type v)).obj (F.obj { unop := U })
⊢ ∃ (_ : (Sheafify.isLocallyGerm F).pred fun y => F.germ y s), F.germ ⟨x, ⋯⟩ s = (F.germ ⟨x, m⟩) s
state_after: no goals
Theorem: MeasureTheory.measure_preimage_mul_right
File: Mathlib/MeasureTheory/Group/Measure.lean

tactic: rw [map_mul_right_eq_self μ g]
state_before: 𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : Group G
inst✝¹ : MeasurableMul G
μ : Measure G
inst✝ : μ.IsMulRightInvariant
g : G
A : Set G
⊢ (Measure.map (fun h => h * g) μ) A = μ A
state_after: no goals
Theorem: AddChar.sum_eq_card_of_eq_one
File: Mathlib/NumberTheory/LegendreSymbol/AddCharacter.lean

tactic: simp [hψ]
state_before: R : Type u_1
inst✝² : AddGroup R
inst✝¹ : Fintype R
R' : Type u_2
inst✝ : CommRing R'
ψ : AddChar R R'
hψ : ψ = 1
⊢ ∑ a : R, ψ a = ↑(Fintype.card R)
state_after: no goals
Theorem: IsIntegral.smul
File: Mathlib/RingTheory/IntegralClosure.lean

tactic: rw [← algebraMap_smul S]
state_before: R✝ : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝¹¹ : CommRing R✝
inst✝¹⁰ : CommRing A
inst✝⁹ : Ring B
inst✝⁸ : CommRing S
inst✝⁷ : Algebra R✝ A
inst✝⁶ : Algebra R✝ B
f✝¹ : R✝ →+* S
f✝ : R✝ →+* B
f : R✝ →+* S
R : Type u_5
inst✝⁵ : CommSemiring R
inst✝⁴ : CommRing S
inst✝³ : Algebra R B
inst✝² : Algebra S B
inst✝¹ : Algebra R S
inst✝ : IsScalarTower R S B
x : B
r : R
hx : IsIntegral S x
⊢ r • x ∈ Algebra.adjoin S {x}
state_after: R✝ : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝¹¹ : CommRing R✝
inst✝¹⁰ : CommRing A
inst✝⁹ : Ring B
inst✝⁸ : CommRing S
inst✝⁷ : Algebra R✝ A
inst✝⁶ : Algebra R✝ B
f✝¹ : R✝ →+* S
f✝ : R✝ →+* B
f : R✝ →+* S
R : Type u_5
inst✝⁵ : CommSemiring R
inst✝⁴ : CommRing S
inst✝³ : Algebra R B
inst✝² : Algebra S B
inst✝¹ : Algebra R S
inst✝ : IsScalarTower R S B
x : B
r : R
hx : IsIntegral S x
⊢ (algebraMap R S) r • x ∈ Algebra.adjoin S {x}

tactic: apply Subalgebra.smul_mem
state_before: R✝ : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝¹¹ : CommRing R✝
inst✝¹⁰ : CommRing A
inst✝⁹ : Ring B
inst✝⁸ : CommRing S
inst✝⁷ : Algebra R✝ A
inst✝⁶ : Algebra R✝ B
f✝¹ : R✝ →+* S
f✝ : R✝ →+* B
f : R✝ →+* S
R : Type u_5
inst✝⁵ : CommSemiring R
inst✝⁴ : CommRing S
inst✝³ : Algebra R B
inst✝² : Algebra S B
inst✝¹ : Algebra R S
inst✝ : IsScalarTower R S B
x : B
r : R
hx : IsIntegral S x
⊢ (algebraMap R S) r • x ∈ Algebra.adjoin S {x}
state_after: case hx
R✝ : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝¹¹ : CommRing R✝
inst✝¹⁰ : CommRing A
inst✝⁹ : Ring B
inst✝⁸ : CommRing S
inst✝⁷ : Algebra R✝ A
inst✝⁶ : Algebra R✝ B
f✝¹ : R✝ →+* S
f✝ : R✝ →+* B
f : R✝ →+* S
R : Type u_5
inst✝⁵ : CommSemiring R
inst✝⁴ : CommRing S
inst✝³ : Algebra R B
inst✝² : Algebra S B
inst✝¹ : Algebra R S
inst✝ : IsScalarTower R S B
x : B
r : R
hx : IsIntegral S x
⊢ x ∈ Algebra.adjoin S {x}

tactic: exact Algebra.subset_adjoin rfl
state_before: case hx
R✝ : Type u_1
A : Type u_2
B : Type u_3
S : Type u_4
inst✝¹¹ : CommRing R✝
inst✝¹⁰ : CommRing A
inst✝⁹ : Ring B
inst✝⁸ : CommRing S
inst✝⁷ : Algebra R✝ A
inst✝⁶ : Algebra R✝ B
f✝¹ : R✝ →+* S
f✝ : R✝ →+* B
f : R✝ →+* S
R : Type u_5
inst✝⁵ : CommSemiring R
inst✝⁴ : CommRing S
inst✝³ : Algebra R B
inst✝² : Algebra S B
inst✝¹ : Algebra R S
inst✝ : IsScalarTower R S B
x : B
r : R
hx : IsIntegral S x
⊢ x ∈ Algebra.adjoin S {x}
state_after: no goals
Theorem: LieAlgebra.Orthogonal.mem_so
File: Mathlib/Algebra/Lie/Classical.lean

tactic: rw [so, mem_skewAdjointMatricesLieSubalgebra, mem_skewAdjointMatricesSubmodule]
state_before: n : Type u_1
p : Type u_2
q : Type u_3
l : Type u_4
R : Type u₂
inst✝⁵ : DecidableEq n
inst✝⁴ : DecidableEq p
inst✝³ : DecidableEq q
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype n
A : Matrix n n R
⊢ A ∈ so n R ↔ Aᵀ = -A
state_after: n : Type u_1
p : Type u_2
q : Type u_3
l : Type u_4
R : Type u₂
inst✝⁵ : DecidableEq n
inst✝⁴ : DecidableEq p
inst✝³ : DecidableEq q
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype n
A : Matrix n n R
⊢ IsSkewAdjoint 1 A ↔ Aᵀ = -A

tactic: simp only [Matrix.IsSkewAdjoint, Matrix.IsAdjointPair, Matrix.mul_one, Matrix.one_mul]
state_before: n : Type u_1
p : Type u_2
q : Type u_3
l : Type u_4
R : Type u₂
inst✝⁵ : DecidableEq n
inst✝⁴ : DecidableEq p
inst✝³ : DecidableEq q
inst✝² : DecidableEq l
inst✝¹ : CommRing R
inst✝ : Fintype n
A : Matrix n n R
⊢ IsSkewAdjoint 1 A ↔ Aᵀ = -A
state_after: no goals
Theorem: Polynomial.derivative_C_mul_X
File: Mathlib/Algebra/Polynomial/Derivative.lean

tactic: simp [C_mul_X_eq_monomial, derivative_monomial, Nat.cast_one, mul_one]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a✝ b : R
n : ℕ
inst✝ : Semiring R
a : R
⊢ derivative (C a * X) = C a
state_after: no goals
Theorem: PartENat.add_lt_add_iff_left
File: Mathlib/Data/Nat/PartENat.lean

tactic: rw [add_comm z, add_comm z, PartENat.add_lt_add_iff_right hz]
state_before: x y z : PartENat
hz : z ≠ ⊤
⊢ z + x < z + y ↔ x < y
state_after: no goals
Theorem: List.length_erase_add_one
File: Mathlib/Data/List/Basic.lean

tactic: rw [erase_eq_eraseP, length_eraseP_add_one h (decide_eq_true rfl)]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : DecidableEq α
a : α
l : List α
h : a ∈ l
⊢ (l.erase a).length + 1 = l.length
state_after: no goals
Theorem: nhdsWithin_Ici_eq''
File: Mathlib/Topology/Order/Basic.lean

tactic: rw [nhdsWithin, nhds_eq_order]
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : Preorder α
inst✝ : OrderTopology α
a : α
⊢ 𝓝[≥] a = (⨅ u, ⨅ (_ : a < u), 𝓟 (Iio u)) ⊓ 𝓟 (Ici a)
state_after: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : Preorder α
inst✝ : OrderTopology α
a : α
⊢ ((⨅ b ∈ Iio a, 𝓟 (Ioi b)) ⊓ ⨅ b ∈ Ioi a, 𝓟 (Iio b)) ⊓ 𝓟 (Ici a) = (⨅ u, ⨅ (_ : a < u), 𝓟 (Iio u)) ⊓ 𝓟 (Ici a)

tactic: refine le_antisymm (inf_le_inf_right _ inf_le_right) (le_inf (le_inf ?_ inf_le_left) inf_le_right)
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : Preorder α
inst✝ : OrderTopology α
a : α
⊢ ((⨅ b ∈ Iio a, 𝓟 (Ioi b)) ⊓ ⨅ b ∈ Ioi a, 𝓟 (Iio b)) ⊓ 𝓟 (Ici a) = (⨅ u, ⨅ (_ : a < u), 𝓟 (Iio u)) ⊓ 𝓟 (Ici a)
state_after: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : Preorder α
inst✝ : OrderTopology α
a : α
⊢ (⨅ u, ⨅ (_ : a < u), 𝓟 (Iio u)) ⊓ 𝓟 (Ici a) ≤ ⨅ b ∈ Iio a, 𝓟 (Ioi b)

tactic: exact inf_le_right.trans (le_iInf₂ fun l hl => principal_mono.2 <| Ici_subset_Ioi.2 hl)
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : Preorder α
inst✝ : OrderTopology α
a : α
⊢ (⨅ u, ⨅ (_ : a < u), 𝓟 (Iio u)) ⊓ 𝓟 (Ici a) ≤ ⨅ b ∈ Iio a, 𝓟 (Ioi b)
state_after: no goals
Theorem: isClosed_range_of_spaced_out
File: Mathlib/Topology/UniformSpace/Separation.lean

tactic: rintro _ ⟨x, rfl⟩ _ ⟨y, rfl⟩ h
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : UniformSpace α
inst✝² : UniformSpace β
inst✝¹ : UniformSpace γ
ι : Type u_1
inst✝ : T0Space α
V₀ : Set (α × α)
V₀_in : V₀ ∈ 𝓤 α
f : ι → α
hf : Pairwise fun x y => (f x, f y) ∉ V₀
⊢ (range f).Pairwise fun x y => (x, y) ∉ V₀
state_after: case intro.intro
α : Type u
β : Type v
γ : Type w
inst✝³ : UniformSpace α
inst✝² : UniformSpace β
inst✝¹ : UniformSpace γ
ι : Type u_1
inst✝ : T0Space α
V₀ : Set (α × α)
V₀_in : V₀ ∈ 𝓤 α
f : ι → α
hf : Pairwise fun x y => (f x, f y) ∉ V₀
x y : ι
h : f x ≠ f y
⊢ (f x, f y) ∉ V₀

tactic: exact hf (ne_of_apply_ne f h)
state_before: case intro.intro
α : Type u
β : Type v
γ : Type w
inst✝³ : UniformSpace α
inst✝² : UniformSpace β
inst✝¹ : UniformSpace γ
ι : Type u_1
inst✝ : T0Space α
V₀ : Set (α × α)
V₀_in : V₀ ∈ 𝓤 α
f : ι → α
hf : Pairwise fun x y => (f x, f y) ∉ V₀
x y : ι
h : f x ≠ f y
⊢ (f x, f y) ∉ V₀
state_after: no goals
Theorem: MulAction.pow_smul_mod_minimalPeriod
File: Mathlib/Dynamics/PeriodicPts.lean

tactic: rw [← period_eq_minimalPeriod, pow_mod_period_smul]
state_before: α : Type v
G : Type u
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u
inst✝¹ : Monoid M
inst✝ : MulAction M α
a : G
b : α
n : ℕ
⊢ a ^ (n % minimalPeriod (fun x => a • x) b) • b = a ^ n • b
state_after: no goals
Theorem: Nat.dist_add_add_right
File: Mathlib/Data/Nat/Dist.lean

tactic: rw [@add_tsub_add_eq_tsub_right]
state_before: n k m : ℕ
⊢ n + k - (m + k) + (m + k - (n + k)) = n - m + (m + k - (n + k))
state_after: no goals

tactic: rw [@add_tsub_add_eq_tsub_right]
state_before: n k m : ℕ
⊢ n - m + (m + k - (n + k)) = n - m + (m - n)
state_after: no goals
Theorem: List.nodupKeys_join
File: Mathlib/Data/List/Sigma.lean

tactic: rw [nodupKeys_iff_pairwise, pairwise_join, pairwise_map]
state_before: α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
L : List (List (Sigma β))
⊢ L.join.NodupKeys ↔ (∀ l ∈ L, l.NodupKeys) ∧ Pairwise Disjoint (map keys L)
state_after: α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
L : List (List (Sigma β))
⊢ (∀ l ∈ L, Pairwise (fun s s' => s.fst ≠ s'.fst) l) ∧ Pairwise (fun l₁ l₂ => ∀ x ∈ l₁, ∀ y ∈ l₂, x.fst ≠ y.fst) L ↔
    (∀ l ∈ L, l.NodupKeys) ∧ Pairwise (fun a b => a.keys.Disjoint b.keys) L

tactic: refine and_congr (forall₂_congr fun l _ => by simp [nodupKeys_iff_pairwise]) ?_
state_before: α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
L : List (List (Sigma β))
⊢ (∀ l ∈ L, Pairwise (fun s s' => s.fst ≠ s'.fst) l) ∧ Pairwise (fun l₁ l₂ => ∀ x ∈ l₁, ∀ y ∈ l₂, x.fst ≠ y.fst) L ↔
    (∀ l ∈ L, l.NodupKeys) ∧ Pairwise (fun a b => a.keys.Disjoint b.keys) L
state_after: α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
L : List (List (Sigma β))
⊢ Pairwise (fun l₁ l₂ => ∀ x ∈ l₁, ∀ y ∈ l₂, x.fst ≠ y.fst) L ↔ Pairwise (fun a b => a.keys.Disjoint b.keys) L

tactic: apply iff_of_eq
state_before: α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
L : List (List (Sigma β))
⊢ Pairwise (fun l₁ l₂ => ∀ x ∈ l₁, ∀ y ∈ l₂, x.fst ≠ y.fst) L ↔ Pairwise (fun a b => a.keys.Disjoint b.keys) L
state_after: case a
α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
L : List (List (Sigma β))
⊢ Pairwise (fun l₁ l₂ => ∀ x ∈ l₁, ∀ y ∈ l₂, x.fst ≠ y.fst) L = Pairwise (fun a b => a.keys.Disjoint b.keys) L

tactic: congr with (l₁ l₂)
state_before: case a
α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
L : List (List (Sigma β))
⊢ Pairwise (fun l₁ l₂ => ∀ x ∈ l₁, ∀ y ∈ l₂, x.fst ≠ y.fst) L = Pairwise (fun a b => a.keys.Disjoint b.keys) L
state_after: case a.e_R.h.h.a
α : Type u
β : α → Type v
l l₁✝ l₂✝ : List (Sigma β)
L : List (List (Sigma β))
l₁ l₂ : List (Sigma β)
⊢ (∀ x ∈ l₁, ∀ y ∈ l₂, x.fst ≠ y.fst) ↔ l₁.keys.Disjoint l₂.keys

tactic: simp [keys, disjoint_iff_ne]
state_before: case a.e_R.h.h.a
α : Type u
β : α → Type v
l l₁✝ l₂✝ : List (Sigma β)
L : List (List (Sigma β))
l₁ l₂ : List (Sigma β)
⊢ (∀ x ∈ l₁, ∀ y ∈ l₂, x.fst ≠ y.fst) ↔ l₁.keys.Disjoint l₂.keys
state_after: no goals

tactic: simp [nodupKeys_iff_pairwise]
state_before: α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
L : List (List (Sigma β))
l : List (Sigma β)
x✝ : l ∈ L
⊢ Pairwise (fun s s' => s.fst ≠ s'.fst) l ↔ l.NodupKeys
state_after: no goals
Theorem: CategoryTheory.ComposableArrows.Precomp.map_zero_succ_succ
File: Mathlib/CategoryTheory/ComposableArrows.lean

tactic: simp
state_before: C : Type u_1
inst✝ : Category.{?u.98876, u_1} C
n m : ℕ
F G : ComposableArrows C n
X : C
f : X ⟶ F.left
j : ℕ
hj : j + 2 < n + 1 + 1
⊢ 0 ≤ ⟨j + 2, hj⟩
state_after: no goals
Theorem: Finset.mem_map_equiv
File: Mathlib/Data/Finset/Image.lean

tactic: rw [mem_map]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f✝ : α ↪ β
s : Finset α
f : α ≃ β
b : β
⊢ b ∈ map f.toEmbedding s ↔ f.symm b ∈ s
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
f✝ : α ↪ β
s : Finset α
f : α ≃ β
b : β
⊢ (∃ a ∈ s, f.toEmbedding a = b) ↔ f.symm b ∈ s

tactic: exact
  ⟨by
    rintro ⟨a, H, rfl⟩
    simpa, fun h => ⟨_, h, by simp⟩⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f✝ : α ↪ β
s : Finset α
f : α ≃ β
b : β
⊢ (∃ a ∈ s, f.toEmbedding a = b) ↔ f.symm b ∈ s
state_after: no goals

tactic: rintro ⟨a, H, rfl⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f✝ : α ↪ β
s : Finset α
f : α ≃ β
b : β
⊢ (∃ a ∈ s, f.toEmbedding a = b) → f.symm b ∈ s
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
f✝ : α ↪ β
s : Finset α
f : α ≃ β
a : α
H : a ∈ s
⊢ f.symm (f.toEmbedding a) ∈ s

tactic: simpa
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
f✝ : α ↪ β
s : Finset α
f : α ≃ β
a : α
H : a ∈ s
⊢ f.symm (f.toEmbedding a) ∈ s
state_after: no goals

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f✝ : α ↪ β
s : Finset α
f : α ≃ β
b : β
h : f.symm b ∈ s
⊢ f.toEmbedding (f.symm b) = b
state_after: no goals
Theorem: Mathlib.Meta.NormNum.jacobiSymNat.odd_even
File: Mathlib/Tactic/NormNum/LegendreSymbol.lean

tactic: have ha' : legendreSym 2 a = 1 := by
  simp only [legendreSym.mod 2 a, Int.ofNat_mod_ofNat, ha]
  decide
state_before: a b c : ℕ
r : ℤ
ha : a % 2 = 1
hb : b % 2 = 0
hc : b / 2 = c
hr : jacobiSymNat a c = r
⊢ jacobiSymNat a b = r
state_after: a b c : ℕ
r : ℤ
ha : a % 2 = 1
hb : b % 2 = 0
hc : b / 2 = c
hr : jacobiSymNat a c = r
ha' : legendreSym 2 ↑a = 1
⊢ jacobiSymNat a b = r

tactic: rcases eq_or_ne c 0 with (rfl | hc')
state_before: a b c : ℕ
r : ℤ
ha : a % 2 = 1
hb : b % 2 = 0
hc : b / 2 = c
hr : jacobiSymNat a c = r
ha' : legendreSym 2 ↑a = 1
⊢ jacobiSymNat a b = r
state_after: case inl
a b : ℕ
r : ℤ
ha : a % 2 = 1
hb : b % 2 = 0
ha' : legendreSym 2 ↑a = 1
hc : b / 2 = 0
hr : jacobiSymNat a 0 = r
⊢ jacobiSymNat a b = r

case inr
a b c : ℕ
r : ℤ
ha : a % 2 = 1
hb : b % 2 = 0
hc : b / 2 = c
hr : jacobiSymNat a c = r
ha' : legendreSym 2 ↑a = 1
hc' : c ≠ 0
⊢ jacobiSymNat a b = r

tactic: simp only [legendreSym.mod 2 a, Int.ofNat_mod_ofNat, ha]
state_before: a b c : ℕ
r : ℤ
ha : a % 2 = 1
hb : b % 2 = 0
hc : b / 2 = c
hr : jacobiSymNat a c = r
⊢ legendreSym 2 ↑a = 1
state_after: a b c : ℕ
r : ℤ
ha : a % 2 = 1
hb : b % 2 = 0
hc : b / 2 = c
hr : jacobiSymNat a c = r
⊢ legendreSym 2 ↑1 = 1

tactic: decide
state_before: a b c : ℕ
r : ℤ
ha : a % 2 = 1
hb : b % 2 = 0
hc : b / 2 = c
hr : jacobiSymNat a c = r
⊢ legendreSym 2 ↑1 = 1
state_after: no goals

tactic: rw [← hr, Nat.eq_zero_of_dvd_of_div_eq_zero (Nat.dvd_of_mod_eq_zero hb) hc]
state_before: case inl
a b : ℕ
r : ℤ
ha : a % 2 = 1
hb : b % 2 = 0
ha' : legendreSym 2 ↑a = 1
hc : b / 2 = 0
hr : jacobiSymNat a 0 = r
⊢ jacobiSymNat a b = r
state_after: no goals

tactic: haveI : NeZero c := ⟨hc'⟩
state_before: case inr
a b c : ℕ
r : ℤ
ha : a % 2 = 1
hb : b % 2 = 0
hc : b / 2 = c
hr : jacobiSymNat a c = r
ha' : legendreSym 2 ↑a = 1
hc' : c ≠ 0
⊢ jacobiSymNat a b = r
state_after: case inr
a b c : ℕ
r : ℤ
ha : a % 2 = 1
hb : b % 2 = 0
hc : b / 2 = c
hr : jacobiSymNat a c = r
ha' : legendreSym 2 ↑a = 1
hc' : c ≠ 0
this : NeZero c
⊢ jacobiSymNat a b = r

tactic: rwa [← Nat.mod_add_div b 2, hb, hc, Nat.zero_add, jacobiSymNat, jacobiSym.mul_right,
  ← jacobiSym.legendreSym.to_jacobiSym, ha', one_mul]
state_before: case inr
a b c : ℕ
r : ℤ
ha : a % 2 = 1
hb : b % 2 = 0
hc : b / 2 = c
hr : jacobiSymNat a c = r
ha' : legendreSym 2 ↑a = 1
hc' : c ≠ 0
this : NeZero c
⊢ jacobiSymNat a b = r
state_after: no goals
Theorem: uniqueMDiffWithinAt_iff
File: Mathlib/Geometry/Manifold/MFDeriv/Basic.lean

tactic: apply uniqueDiffWithinAt_congr
state_before: 𝕜 : Type u_1
inst✝¹⁵ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace 𝕜 E
H : Type u_3
inst✝¹² : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹¹ : TopologicalSpace M
inst✝¹⁰ : ChartedSpace H M
E' : Type u_5
inst✝⁹ : NormedAddCommGroup E'
inst✝⁸ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝⁷ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝⁶ : TopologicalSpace M'
inst✝⁵ : ChartedSpace H' M'
E'' : Type u_8
inst✝⁴ : NormedAddCommGroup E''
inst✝³ : NormedSpace 𝕜 E''
H'' : Type u_9
inst✝² : TopologicalSpace H''
I'' : ModelWithCorners 𝕜 E'' H''
M'' : Type u_10
inst✝¹ : TopologicalSpace M''
inst✝ : ChartedSpace H'' M''
f f₀ f₁ : M → M'
x✝ : M
s✝ t : Set M
g : M' → M''
u : Set M'
s : Set M
x : M
⊢ UniqueMDiffWithinAt I s x ↔
    UniqueDiffWithinAt 𝕜 (↑(extChartAt I x).symm ⁻¹' s ∩ (extChartAt I x).target) (↑(extChartAt I x) x)
state_after: case st
𝕜 : Type u_1
inst✝¹⁵ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace 𝕜 E
H : Type u_3
inst✝¹² : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹¹ : TopologicalSpace M
inst✝¹⁰ : ChartedSpace H M
E' : Type u_5
inst✝⁹ : NormedAddCommGroup E'
inst✝⁸ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝⁷ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝⁶ : TopologicalSpace M'
inst✝⁵ : ChartedSpace H' M'
E'' : Type u_8
inst✝⁴ : NormedAddCommGroup E''
inst✝³ : NormedSpace 𝕜 E''
H'' : Type u_9
inst✝² : TopologicalSpace H''
I'' : ModelWithCorners 𝕜 E'' H''
M'' : Type u_10
inst✝¹ : TopologicalSpace M''
inst✝ : ChartedSpace H'' M''
f f₀ f₁ : M → M'
x✝ : M
s✝ t : Set M
g : M' → M''
u : Set M'
s : Set M
x : M
⊢ 𝓝[↑(extChartAt I x).symm ⁻¹' s ∩ range ↑I] ↑(extChartAt I x) x =
    𝓝[↑(extChartAt I x).symm ⁻¹' s ∩ (extChartAt I x).target] ↑(extChartAt I x) x

tactic: rw [nhdsWithin_inter, nhdsWithin_inter, nhdsWithin_extChartAt_target_eq]
state_before: case st
𝕜 : Type u_1
inst✝¹⁵ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace 𝕜 E
H : Type u_3
inst✝¹² : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹¹ : TopologicalSpace M
inst✝¹⁰ : ChartedSpace H M
E' : Type u_5
inst✝⁹ : NormedAddCommGroup E'
inst✝⁸ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝⁷ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝⁶ : TopologicalSpace M'
inst✝⁵ : ChartedSpace H' M'
E'' : Type u_8
inst✝⁴ : NormedAddCommGroup E''
inst✝³ : NormedSpace 𝕜 E''
H'' : Type u_9
inst✝² : TopologicalSpace H''
I'' : ModelWithCorners 𝕜 E'' H''
M'' : Type u_10
inst✝¹ : TopologicalSpace M''
inst✝ : ChartedSpace H'' M''
f f₀ f₁ : M → M'
x✝ : M
s✝ t : Set M
g : M' → M''
u : Set M'
s : Set M
x : M
⊢ 𝓝[↑(extChartAt I x).symm ⁻¹' s ∩ range ↑I] ↑(extChartAt I x) x =
    𝓝[↑(extChartAt I x).symm ⁻¹' s ∩ (extChartAt I x).target] ↑(extChartAt I x) x
state_after: no goals
Theorem: List.formPerm_cons_concat_apply_last
File: Mathlib/GroupTheory/Perm/List.lean

tactic: induction' xs with z xs IH generalizing x y
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l : List α
x✝ x y : α
xs : List α
⊢ (x :: (xs ++ [y])).formPerm y = x
state_after: case nil
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l : List α
x✝ x y : α
⊢ (x :: ([] ++ [y])).formPerm y = x

case cons
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l : List α
x✝ z : α
xs : List α
IH : ∀ (x y : α), (x :: (xs ++ [y])).formPerm y = x
x y : α
⊢ (x :: (z :: xs ++ [y])).formPerm y = x

tactic: simp
state_before: case nil
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l : List α
x✝ x y : α
⊢ (x :: ([] ++ [y])).formPerm y = x
state_after: no goals

tactic: simp [IH]
state_before: case cons
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l : List α
x✝ z : α
xs : List α
IH : ∀ (x y : α), (x :: (xs ++ [y])).formPerm y = x
x y : α
⊢ (x :: (z :: xs ++ [y])).formPerm y = x
state_after: no goals