1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Set.sInter_prod_sInter
File: Mathlib/Data/Set/Lattice.lean

tactic: obtain ⟨s₁, h₁⟩ := hS
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
S : Set (Set α)
T : Set (Set β)
hS : S.Nonempty
hT : T.Nonempty
⊢ ⋂₀ S ×ˢ ⋂₀ T = ⋂ r ∈ S ×ˢ T, r.1 ×ˢ r.2
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
S : Set (Set α)
T : Set (Set β)
hT : T.Nonempty
s₁ : Set α
h₁ : s₁ ∈ S
⊢ ⋂₀ S ×ˢ ⋂₀ T = ⋂ r ∈ S ×ˢ T, r.1 ×ˢ r.2

tactic: obtain ⟨s₂, h₂⟩ := hT
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
S : Set (Set α)
T : Set (Set β)
hT : T.Nonempty
s₁ : Set α
h₁ : s₁ ∈ S
⊢ ⋂₀ S ×ˢ ⋂₀ T = ⋂ r ∈ S ×ˢ T, r.1 ×ˢ r.2
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
S : Set (Set α)
T : Set (Set β)
s₁ : Set α
h₁ : s₁ ∈ S
s₂ : Set β
h₂ : s₂ ∈ T
⊢ ⋂₀ S ×ˢ ⋂₀ T = ⋂ r ∈ S ×ˢ T, r.1 ×ˢ r.2

tactic: refine Set.Subset.antisymm (sInter_prod_sInter_subset S T) fun x hx => ?_
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
S : Set (Set α)
T : Set (Set β)
s₁ : Set α
h₁ : s₁ ∈ S
s₂ : Set β
h₂ : s₂ ∈ T
⊢ ⋂₀ S ×ˢ ⋂₀ T = ⋂ r ∈ S ×ˢ T, r.1 ×ˢ r.2
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
S : Set (Set α)
T : Set (Set β)
s₁ : Set α
h₁ : s₁ ∈ S
s₂ : Set β
h₂ : s₂ ∈ T
x : α × β
hx : x ∈ ⋂ r ∈ S ×ˢ T, r.1 ×ˢ r.2
⊢ x ∈ ⋂₀ S ×ˢ ⋂₀ T

tactic: rw [mem_iInter₂] at hx
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
S : Set (Set α)
T : Set (Set β)
s₁ : Set α
h₁ : s₁ ∈ S
s₂ : Set β
h₂ : s₂ ∈ T
x : α × β
hx : x ∈ ⋂ r ∈ S ×ˢ T, r.1 ×ˢ r.2
⊢ x ∈ ⋂₀ S ×ˢ ⋂₀ T
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
S : Set (Set α)
T : Set (Set β)
s₁ : Set α
h₁ : s₁ ∈ S
s₂ : Set β
h₂ : s₂ ∈ T
x : α × β
hx : ∀ i ∈ S ×ˢ T, x ∈ i.1 ×ˢ i.2
⊢ x ∈ ⋂₀ S ×ˢ ⋂₀ T

tactic: exact ⟨fun s₀ h₀ => (hx (s₀, s₂) ⟨h₀, h₂⟩).1, fun s₀ h₀ => (hx (s₁, s₀) ⟨h₁, h₀⟩).2⟩
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
S : Set (Set α)
T : Set (Set β)
s₁ : Set α
h₁ : s₁ ∈ S
s₂ : Set β
h₂ : s₂ ∈ T
x : α × β
hx : ∀ i ∈ S ×ˢ T, x ∈ i.1 ×ˢ i.2
⊢ x ∈ ⋂₀ S ×ˢ ⋂₀ T
state_after: no goals
Theorem: EuclideanGeometry.dist_center_eq_dist_center_of_mem_sphere'
File: Mathlib/Geometry/Euclidean/Sphere/Basic.lean

tactic: rw [mem_sphere'.1 hp₁, mem_sphere'.1 hp₂]
state_before: V : Type u_1
P : Type u_2
inst✝ : MetricSpace P
p₁ p₂ : P
s : Sphere P
hp₁ : p₁ ∈ s
hp₂ : p₂ ∈ s
⊢ dist s.center p₁ = dist s.center p₂
state_after: no goals
Theorem: Int.addLeft_one_isCycle
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: simp
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
n : ℤ
x✝ : (Equiv.addLeft 1) n ≠ n
⊢ (Equiv.addLeft 1 ^ n) 0 = n
state_after: no goals
Theorem: QuadraticForm.Ring.polarBilin_pi
File: Mathlib/LinearAlgebra/QuadraticForm/Prod.lean

tactic: simp
state_before: ι : Type u_1
R : Type u_2
M₁ : Type u_3
M₂ : Type u_4
N₁ : Type u_5
N₂ : Type u_6
Mᵢ : ι → Type u_7
Nᵢ : ι → Type u_8
inst✝⁵ : CommRing R
inst✝⁴ : (i : ι) → AddCommGroup (Mᵢ i)
inst✝³ : (i : ι) → AddCommGroup (Nᵢ i)
inst✝² : (i : ι) → Module R (Mᵢ i)
inst✝¹ : (i : ι) → Module R (Nᵢ i)
inst✝ : Fintype ι
Q : (i : ι) → QuadraticForm R (Mᵢ i)
x y : (i : ι) → Mᵢ i
⊢ ∑ i : ι, polar (⇑(Q i)) (x i) (y i) =
    ((∑ i : ι, LinearMap.compl₁₂ (Q i).polarBilin (LinearMap.proj i) (LinearMap.proj i)) x) y
state_after: no goals
Theorem: Filter.cardinalInterFilter_aleph0
File: Mathlib/Order/Filter/CardinalInter.lean

tactic: simp_all only [aleph_zero, lt_aleph0_iff_subtype_finite, setOf_mem_eq, sInter_mem,
  implies_true, forall_const]
state_before: ι α β : Type u
c : Cardinal.{u}
l✝ l : Filter α
⊢ ∀ (S : Set (Set α)), #↑S < ℵ₀ → (∀ s ∈ S, s ∈ l) → ⋂₀ S ∈ l
state_after: no goals
Theorem: Equiv.extendSubtype_apply_of_mem
File: Mathlib/Logic/Equiv/Fintype.lean

tactic: dsimp only [extendSubtype]
state_before: α : Type u_1
β : Type u_2
inst✝² : Finite α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
e : { x // p x } ≃ { x // q x }
x : α
hx : p x
⊢ e.extendSubtype x = ↑(e ⟨x, hx⟩)
state_after: α : Type u_1
β : Type u_2
inst✝² : Finite α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
e : { x // p x } ≃ { x // q x }
x : α
hx : p x
⊢ (e.subtypeCongr e.toCompl) x = ↑(e ⟨x, hx⟩)

tactic: simp only [subtypeCongr, Equiv.trans_apply, Equiv.sumCongr_apply]
state_before: α : Type u_1
β : Type u_2
inst✝² : Finite α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
e : { x // p x } ≃ { x // q x }
x : α
hx : p x
⊢ (e.subtypeCongr e.toCompl) x = ↑(e ⟨x, hx⟩)
state_after: α : Type u_1
β : Type u_2
inst✝² : Finite α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
e : { x // p x } ≃ { x // q x }
x : α
hx : p x
⊢ (sumCompl q) (Sum.map (⇑e) (⇑e.toCompl) ((sumCompl p).symm x)) = ↑(e ⟨x, hx⟩)

tactic: rw [sumCompl_apply_symm_of_pos _ _ hx, Sum.map_inl, sumCompl_apply_inl]
state_before: α : Type u_1
β : Type u_2
inst✝² : Finite α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
e : { x // p x } ≃ { x // q x }
x : α
hx : p x
⊢ (sumCompl q) (Sum.map (⇑e) (⇑e.toCompl) ((sumCompl p).symm x)) = ↑(e ⟨x, hx⟩)
state_after: no goals
Theorem: Ideal.iInf_span_singleton_natCast
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: rw [iInf_span_singleton, Nat.cast_prod]
state_before: R✝ : Type u
ι✝ : Type u_1
inst✝² : CommSemiring R✝
I✝ J K L : Ideal R✝
R : Type u_2
inst✝¹ : CommRing R
ι : Type u_3
inst✝ : Fintype ι
I : ι → ℕ
hI : Pairwise fun i j => (I i).Coprime (I j)
⊢ ⨅ i, span {↑(I i)} = span {↑(∏ i : ι, I i)}
state_after: R✝ : Type u
ι✝ : Type u_1
inst✝² : CommSemiring R✝
I✝ J K L : Ideal R✝
R : Type u_2
inst✝¹ : CommRing R
ι : Type u_3
inst✝ : Fintype ι
I : ι → ℕ
hI : Pairwise fun i j => (I i).Coprime (I j)
⊢ ∀ (i j : ι), i ≠ j → IsCoprime ↑(I i) ↑(I j)

tactic: exact fun i j h ↦ (hI h).cast
state_before: R✝ : Type u
ι✝ : Type u_1
inst✝² : CommSemiring R✝
I✝ J K L : Ideal R✝
R : Type u_2
inst✝¹ : CommRing R
ι : Type u_3
inst✝ : Fintype ι
I : ι → ℕ
hI : Pairwise fun i j => (I i).Coprime (I j)
⊢ ∀ (i j : ι), i ≠ j → IsCoprime ↑(I i) ↑(I j)
state_after: no goals
Theorem: Finset.zero_div_subset
File: Mathlib/Data/Finset/Pointwise.lean

tactic: simp [subset_iff, mem_div]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : GroupWithZero α
s✝ t s : Finset α
⊢ 0 / s ⊆ 0
state_after: no goals
Theorem: NNReal.rpow_one_div_eq_iff
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: rw [← rpow_eq_rpow_iff hz, rpow_self_rpow_inv hz]
state_before: w x✝ y✝ z✝ : ℝ
x y : ℝ≥0
z : ℝ
hz : z ≠ 0
⊢ x ^ (1 / z) = y ↔ x = y ^ z
state_after: no goals
Theorem: Equiv.coe_subtypeEquivCodomain_symm
File: Mathlib/Logic/Equiv/Basic.lean

tactic: funext x'
state_before: X : Sort ?u.71991
inst✝ : DecidableEq X
x : X
Y : Sort ?u.72027
f : { x' // x' ≠ x } → Y
y : Y
⊢ (fun x' => if h : x' ≠ x then f ⟨x', h⟩ else y) ∘ Subtype.val = f
state_after: case h
X : Sort ?u.71991
inst✝ : DecidableEq X
x : X
Y : Sort ?u.72027
f : { x' // x' ≠ x } → Y
y : Y
x' : { x' // x' ≠ x }
⊢ ((fun x' => if h : x' ≠ x then f ⟨x', h⟩ else y) ∘ Subtype.val) x' = f x'

tactic: simp only [ne_eq, dite_not, comp_apply, Subtype.coe_eta, dite_eq_ite, ite_eq_right_iff]
state_before: case h
X : Sort ?u.71991
inst✝ : DecidableEq X
x : X
Y : Sort ?u.72027
f : { x' // x' ≠ x } → Y
y : Y
x' : { x' // x' ≠ x }
⊢ ((fun x' => if h : x' ≠ x then f ⟨x', h⟩ else y) ∘ Subtype.val) x' = f x'
state_after: case h
X : Sort ?u.71991
inst✝ : DecidableEq X
x : X
Y : Sort ?u.72027
f : { x' // x' ≠ x } → Y
y : Y
x' : { x' // x' ≠ x }
⊢ ↑x' = x → y = f x'

tactic: intro w
state_before: case h
X : Sort ?u.71991
inst✝ : DecidableEq X
x : X
Y : Sort ?u.72027
f : { x' // x' ≠ x } → Y
y : Y
x' : { x' // x' ≠ x }
⊢ ↑x' = x → y = f x'
state_after: case h
X : Sort ?u.71991
inst✝ : DecidableEq X
x : X
Y : Sort ?u.72027
f : { x' // x' ≠ x } → Y
y : Y
x' : { x' // x' ≠ x }
w : ↑x' = x
⊢ y = f x'

tactic: exfalso
state_before: case h
X : Sort ?u.71991
inst✝ : DecidableEq X
x : X
Y : Sort ?u.72027
f : { x' // x' ≠ x } → Y
y : Y
x' : { x' // x' ≠ x }
w : ↑x' = x
⊢ y = f x'
state_after: case h
X : Sort ?u.71991
inst✝ : DecidableEq X
x : X
Y : Sort ?u.72027
f : { x' // x' ≠ x } → Y
y : Y
x' : { x' // x' ≠ x }
w : ↑x' = x
⊢ False

tactic: exact x'.property w
state_before: case h
X : Sort ?u.71991
inst✝ : DecidableEq X
x : X
Y : Sort ?u.72027
f : { x' // x' ≠ x } → Y
y : Y
x' : { x' // x' ≠ x }
w : ↑x' = x
⊢ False
state_after: no goals
Theorem: WithTop.preimage_coe_Icc
File: Mathlib/Order/Interval/Set/WithBotTop.lean

tactic: simp [← Ici_inter_Iic]
state_before: α : Type u_1
inst✝ : Preorder α
a b : α
⊢ some ⁻¹' Icc ↑a ↑b = Icc a b
state_after: no goals
Theorem: Set.Ioo_union_both
File: Mathlib/Order/Interval/Set/Basic.lean

tactic: have : (Icc a b \ {a, b}) ∪ {a, b} = Icc a b := diff_union_of_subset fun
  | x, .inl rfl => left_mem_Icc.mpr h
  | x, .inr rfl => right_mem_Icc.mpr h
state_before: α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
h : a ≤ b
⊢ Ioo a b ∪ {a, b} = Icc a b
state_after: α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
h : a ≤ b
this : Icc a b \ {a, b} ∪ {a, b} = Icc a b
⊢ Ioo a b ∪ {a, b} = Icc a b

tactic: rw [← this, Icc_diff_both]
state_before: α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
h : a ≤ b
this : Icc a b \ {a, b} ∪ {a, b} = Icc a b
⊢ Ioo a b ∪ {a, b} = Icc a b
state_after: no goals
Theorem: CategoryTheory.shift_shiftFunctorCompIsoId_add_neg_self_hom_app
File: Mathlib/CategoryTheory/Shift/Basic.lean

tactic: apply shift_shiftFunctorCompIsoId_hom_app
state_before: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddGroup A
inst✝ : HasShift C A
X✝ Y : C
f : X✝ ⟶ Y
n : A
X : C
⊢ (shiftFunctor C n).map ((shiftFunctorCompIsoId C n (-n) ⋯).hom.app X) =
    (shiftFunctorCompIsoId C (-n) n ⋯).hom.app ((shiftFunctor C n).obj X)
state_after: no goals
Theorem: MeasureTheory.Integrable.fourier_inversion_inv
File: Mathlib/Analysis/Fourier/Inversion.lean

tactic: rw [fourierIntegralInv_comm]
state_before: V : Type u_1
E : Type u_2
inst✝⁷ : NormedAddCommGroup V
inst✝⁶ : InnerProductSpace ℝ V
inst✝⁵ : MeasurableSpace V
inst✝⁴ : BorelSpace V
inst✝³ : FiniteDimensional ℝ V
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
f : V → E
inst✝ : CompleteSpace E
hf : Integrable f volume
h'f : Integrable (𝓕 f) volume
v : V
hv : ContinuousAt f v
⊢ 𝓕 (𝓕⁻ f) v = f v
state_after: V : Type u_1
E : Type u_2
inst✝⁷ : NormedAddCommGroup V
inst✝⁶ : InnerProductSpace ℝ V
inst✝⁵ : MeasurableSpace V
inst✝⁴ : BorelSpace V
inst✝³ : FiniteDimensional ℝ V
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
f : V → E
inst✝ : CompleteSpace E
hf : Integrable f volume
h'f : Integrable (𝓕 f) volume
v : V
hv : ContinuousAt f v
⊢ 𝓕⁻ (𝓕 f) v = f v

tactic: exact fourier_inversion hf h'f hv
state_before: V : Type u_1
E : Type u_2
inst✝⁷ : NormedAddCommGroup V
inst✝⁶ : InnerProductSpace ℝ V
inst✝⁵ : MeasurableSpace V
inst✝⁴ : BorelSpace V
inst✝³ : FiniteDimensional ℝ V
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
f : V → E
inst✝ : CompleteSpace E
hf : Integrable f volume
h'f : Integrable (𝓕 f) volume
v : V
hv : ContinuousAt f v
⊢ 𝓕⁻ (𝓕 f) v = f v
state_after: no goals
Theorem: MeasureTheory.extend_eq_top
File: Mathlib/MeasureTheory/OuterMeasure/Induced.lean

tactic: simp [extend, h]
state_before: α : Type u_1
P : α → Prop
m : (s : α) → P s → ℝ≥0∞
s : α
h : ¬P s
⊢ extend m s = ⊤
state_after: no goals
Theorem: CategoryTheory.ShortComplex.Exact.map_of_preservesRightHomologyOf
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

tactic: have : S.HasHomology := h.hasHomology
state_before: C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{u_4, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
h : S.Exact
F : C ⥤ D
inst✝² : F.PreservesZeroMorphisms
inst✝¹ : F.PreservesRightHomologyOf S
inst✝ : (S.map F).HasHomology
⊢ (S.map F).Exact
state_after: C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{u_4, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
h : S.Exact
F : C ⥤ D
inst✝² : F.PreservesZeroMorphisms
inst✝¹ : F.PreservesRightHomologyOf S
inst✝ : (S.map F).HasHomology
this : S.HasHomology
⊢ (S.map F).Exact

tactic: rw [S.rightHomologyData.exact_iff, IsZero.iff_id_eq_zero] at h
state_before: C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{u_4, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
h : S.Exact
F : C ⥤ D
inst✝² : F.PreservesZeroMorphisms
inst✝¹ : F.PreservesRightHomologyOf S
inst✝ : (S.map F).HasHomology
this : S.HasHomology
⊢ (S.map F).Exact
state_after: C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{u_4, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
F : C ⥤ D
inst✝² : F.PreservesZeroMorphisms
inst✝¹ : F.PreservesRightHomologyOf S
inst✝ : (S.map F).HasHomology
this : S.HasHomology
h : 𝟙 S.rightHomologyData.H = 0
⊢ (S.map F).Exact

tactic: rw [S.rightHomologyData.exact_map_iff F, IsZero.iff_id_eq_zero,
  ← F.map_id, h, F.map_zero]
state_before: C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{u_4, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
F : C ⥤ D
inst✝² : F.PreservesZeroMorphisms
inst✝¹ : F.PreservesRightHomologyOf S
inst✝ : (S.map F).HasHomology
this : S.HasHomology
h : 𝟙 S.rightHomologyData.H = 0
⊢ (S.map F).Exact
state_after: no goals
Theorem: List.keys_kerase
File: Mathlib/Data/List/Sigma.lean

tactic: rw [keys, kerase, erase_eq_eraseP, eraseP_map, Function.comp]
state_before: α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
l : List (Sigma β)
⊢ (kerase a l).keys = l.keys.erase a
state_after: α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
l : List (Sigma β)
⊢ map Sigma.fst (eraseP (fun s => decide (a = s.fst)) l) = map Sigma.fst (eraseP (fun x => a == x.fst) l)

tactic: simp only [beq_eq_decide]
state_before: α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
l : List (Sigma β)
⊢ map Sigma.fst (eraseP (fun s => decide (a = s.fst)) l) = map Sigma.fst (eraseP (fun x => a == x.fst) l)
state_after: α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
l : List (Sigma β)
⊢ map Sigma.fst (eraseP (fun s => decide (a = s.fst)) l) = map Sigma.fst (eraseP (fun x => decide (a = x.fst)) l)

tactic: congr
state_before: α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
l : List (Sigma β)
⊢ map Sigma.fst (eraseP (fun s => decide (a = s.fst)) l) = map Sigma.fst (eraseP (fun x => decide (a = x.fst)) l)
state_after: case e_a.e_p
α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
l : List (Sigma β)
⊢ (fun s => decide (a = s.fst)) = fun x => decide (a = x.fst)

tactic: funext
state_before: case e_a.e_p
α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
l : List (Sigma β)
⊢ (fun s => decide (a = s.fst)) = fun x => decide (a = x.fst)
state_after: case e_a.e_p.h
α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
l : List (Sigma β)
x✝ : Sigma β
⊢ decide (a = x✝.fst) = decide (a = x✝.fst)

tactic: simp
state_before: case e_a.e_p.h
α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
l : List (Sigma β)
x✝ : Sigma β
⊢ decide (a = x✝.fst) = decide (a = x✝.fst)
state_after: no goals
Theorem: Real.exp_log_eq_abs
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: rw [log_of_ne_zero hx, ← coe_expOrderIso_apply, OrderIso.apply_symm_apply, Subtype.coe_mk]
state_before: x y : ℝ
hx : x ≠ 0
⊢ rexp (log x) = |x|
state_after: no goals
Theorem: rootsOfUnity.integer_power_of_ringEquiv'
File: Mathlib/NumberTheory/Cyclotomic/CyclotomicCharacter.lean

tactic: simpa using rootsOfUnity.integer_power_of_ringEquiv n g
state_before: L : Type u
inst✝¹ : CommRing L
inst✝ : IsDomain L
n : ℕ+
g : L ≃+* L
⊢ ∃ m, ∀ t ∈ rootsOfUnity n L, g ↑t = ↑(t ^ m)
state_after: no goals
Theorem: Real.rpow_le_rpow_left_iff_of_base_lt_one
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rw [← log_le_log_iff (rpow_pos_of_pos hx0 y) (rpow_pos_of_pos hx0 z), log_rpow hx0, log_rpow hx0,
  mul_le_mul_right_of_neg (log_neg hx0 hx1)]
state_before: x y z : ℝ
n : ℕ
hx0 : 0 < x
hx1 : x < 1
⊢ x ^ y ≤ x ^ z ↔ z ≤ y
state_after: no goals
Theorem: Finpartition.existsUnique_mem
File: Mathlib/Order/Partition/Finpartition.lean

tactic: obtain ⟨t, ht, ht'⟩ := P.exists_mem ha
state_before: α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
ha : a ∈ s
⊢ ∃! t, t ∈ P.parts ∧ a ∈ t
state_after: case intro.intro
α : Type u_1
inst✝ : DecidableEq α
s t✝ u : Finset α
P : Finpartition s
a : α
ha : a ∈ s
t : Finset α
ht : t ∈ P.parts
ht' : a ∈ t
⊢ ∃! t, t ∈ P.parts ∧ a ∈ t

tactic: refine ⟨t, ⟨ht, ht'⟩, ?_⟩
state_before: case intro.intro
α : Type u_1
inst✝ : DecidableEq α
s t✝ u : Finset α
P : Finpartition s
a : α
ha : a ∈ s
t : Finset α
ht : t ∈ P.parts
ht' : a ∈ t
⊢ ∃! t, t ∈ P.parts ∧ a ∈ t
state_after: case intro.intro
α : Type u_1
inst✝ : DecidableEq α
s t✝ u : Finset α
P : Finpartition s
a : α
ha : a ∈ s
t : Finset α
ht : t ∈ P.parts
ht' : a ∈ t
⊢ ∀ (y : Finset α), (fun t => t ∈ P.parts ∧ a ∈ t) y → y = t

tactic: rintro u ⟨hu, hu'⟩
state_before: case intro.intro
α : Type u_1
inst✝ : DecidableEq α
s t✝ u : Finset α
P : Finpartition s
a : α
ha : a ∈ s
t : Finset α
ht : t ∈ P.parts
ht' : a ∈ t
⊢ ∀ (y : Finset α), (fun t => t ∈ P.parts ∧ a ∈ t) y → y = t
state_after: case intro.intro.intro
α : Type u_1
inst✝ : DecidableEq α
s t✝ u✝ : Finset α
P : Finpartition s
a : α
ha : a ∈ s
t : Finset α
ht : t ∈ P.parts
ht' : a ∈ t
u : Finset α
hu : u ∈ P.parts
hu' : a ∈ u
⊢ u = t

tactic: exact P.eq_of_mem_parts hu ht hu' ht'
state_before: case intro.intro.intro
α : Type u_1
inst✝ : DecidableEq α
s t✝ u✝ : Finset α
P : Finpartition s
a : α
ha : a ∈ s
t : Finset α
ht : t ∈ P.parts
ht' : a ∈ t
u : Finset α
hu : u ∈ P.parts
hu' : a ∈ u
⊢ u = t
state_after: no goals
Theorem: MeasureTheory.absolutelyContinuous_inv
File: Mathlib/MeasureTheory/Group/Prod.lean

tactic: refine AbsolutelyContinuous.mk fun s _ => ?_
state_before: G : Type u_1
inst✝⁶ : MeasurableSpace G
inst✝⁵ : Group G
inst✝⁴ : MeasurableMul₂ G
μ ν : Measure G
inst✝³ : SigmaFinite ν
inst✝² : SigmaFinite μ
s : Set G
inst✝¹ : MeasurableInv G
inst✝ : μ.IsMulLeftInvariant
⊢ μ ≪ μ.inv
state_after: G : Type u_1
inst✝⁶ : MeasurableSpace G
inst✝⁵ : Group G
inst✝⁴ : MeasurableMul₂ G
μ ν : Measure G
inst✝³ : SigmaFinite ν
inst✝² : SigmaFinite μ
s✝ : Set G
inst✝¹ : MeasurableInv G
inst✝ : μ.IsMulLeftInvariant
s : Set G
x✝ : MeasurableSet s
⊢ μ.inv s = 0 → μ s = 0

tactic: simp_rw [inv_apply μ s, measure_inv_null, imp_self]
state_before: G : Type u_1
inst✝⁶ : MeasurableSpace G
inst✝⁵ : Group G
inst✝⁴ : MeasurableMul₂ G
μ ν : Measure G
inst✝³ : SigmaFinite ν
inst✝² : SigmaFinite μ
s✝ : Set G
inst✝¹ : MeasurableInv G
inst✝ : μ.IsMulLeftInvariant
s : Set G
x✝ : MeasurableSet s
⊢ μ.inv s = 0 → μ s = 0
state_after: no goals
Theorem: Finset.filter_subset_univ
File: Mathlib/Data/Fintype/Powerset.lean

tactic: ext
state_before: α : Type u_1
inst✝¹ : Fintype α
s✝ : Finset α
k : ℕ
inst✝ : DecidableEq α
s : Finset α
⊢ filter (fun t => t ⊆ s) univ = s.powerset
state_after: case a
α : Type u_1
inst✝¹ : Fintype α
s✝ : Finset α
k : ℕ
inst✝ : DecidableEq α
s a✝ : Finset α
⊢ a✝ ∈ filter (fun t => t ⊆ s) univ ↔ a✝ ∈ s.powerset

tactic: simp
state_before: case a
α : Type u_1
inst✝¹ : Fintype α
s✝ : Finset α
k : ℕ
inst✝ : DecidableEq α
s a✝ : Finset α
⊢ a✝ ∈ filter (fun t => t ⊆ s) univ ↔ a✝ ∈ s.powerset
state_after: no goals
Theorem: MvPolynomial.weightedTotalDegree'_eq_bot_iff
File: Mathlib/RingTheory/MvPolynomial/WeightedHomogeneous.lean

tactic: simp only [weightedTotalDegree', Finset.sup_eq_bot_iff, mem_support_iff, WithBot.coe_ne_bot,
  MvPolynomial.eq_zero_iff]
state_before: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
σ : Type u_3
inst✝¹ : AddCommMonoid M
inst✝ : SemilatticeSup M
w : σ → M
p : MvPolynomial σ R
⊢ weightedTotalDegree' w p = ⊥ ↔ p = 0
state_after: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
σ : Type u_3
inst✝¹ : AddCommMonoid M
inst✝ : SemilatticeSup M
w : σ → M
p : MvPolynomial σ R
⊢ (∀ (s : σ →₀ ℕ), coeff s p ≠ 0 → False) ↔ ∀ (d : σ →₀ ℕ), coeff d p = 0

tactic: exact forall_congr' fun _ => Classical.not_not
state_before: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
σ : Type u_3
inst✝¹ : AddCommMonoid M
inst✝ : SemilatticeSup M
w : σ → M
p : MvPolynomial σ R
⊢ (∀ (s : σ →₀ ℕ), coeff s p ≠ 0 → False) ↔ ∀ (d : σ →₀ ℕ), coeff d p = 0
state_after: no goals
Theorem: Matrix.IsAdjMatrix.adjMatrix_toGraph_eq
File: Mathlib/Combinatorics/SimpleGraph/AdjMatrix.lean

tactic: ext i j
state_before: V : Type u_1
α : Type u_2
β : Type u_3
inst✝² : MulZeroOneClass α
inst✝¹ : Nontrivial α
A : Matrix V V α
h : A.IsAdjMatrix
inst✝ : DecidableEq α
⊢ adjMatrix α h.toGraph = A
state_after: case a
V : Type u_1
α : Type u_2
β : Type u_3
inst✝² : MulZeroOneClass α
inst✝¹ : Nontrivial α
A : Matrix V V α
h : A.IsAdjMatrix
inst✝ : DecidableEq α
i j : V
⊢ adjMatrix α h.toGraph i j = A i j

tactic: obtain h' | h' := h.zero_or_one i j <;> simp [h']
state_before: case a
V : Type u_1
α : Type u_2
β : Type u_3
inst✝² : MulZeroOneClass α
inst✝¹ : Nontrivial α
A : Matrix V V α
h : A.IsAdjMatrix
inst✝ : DecidableEq α
i j : V
⊢ adjMatrix α h.toGraph i j = A i j
state_after: no goals
Theorem: Subgroup.equivMapOfInjective_coe_mulEquiv
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: ext
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
N : Type u_5
inst✝ : Group N
H : Subgroup G
e : G ≃* G'
⊢ H.equivMapOfInjective ↑e ⋯ = e.subgroupMap H
state_after: case h.a
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
N : Type u_5
inst✝ : Group N
H : Subgroup G
e : G ≃* G'
x✝ : ↥H
⊢ ↑((H.equivMapOfInjective ↑e ⋯) x✝) = ↑((e.subgroupMap H) x✝)

tactic: rfl
state_before: case h.a
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
N : Type u_5
inst✝ : Group N
H : Subgroup G
e : G ≃* G'
x✝ : ↥H
⊢ ↑((H.equivMapOfInjective ↑e ⋯) x✝) = ↑((e.subgroupMap H) x✝)
state_after: no goals
Theorem: Matrix.transvection_zero
File: Mathlib/LinearAlgebra/Matrix/Transvection.lean

tactic: simp [transvection]
state_before: n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝³ : Field 𝕜
inst✝² : DecidableEq n
inst✝¹ : DecidableEq p
inst✝ : CommRing R
i j : n
⊢ transvection i j 0 = 1
state_after: no goals
Theorem: IntermediateField.normal_iff_forall_map_le
File: Mathlib/FieldTheory/NormalClosure.lean

tactic: rw [normal_iff_normalClosure_le, normalClosure_def', iSup_le_iff]
state_before: F : Type u_1
K✝¹ : Type u_2
L : Type u_3
inst✝⁵ : Field F
inst✝⁴ : Field K✝¹
inst✝³ : Field L
inst✝² : Algebra F K✝¹
inst✝¹ : Algebra F L
K✝ K' : IntermediateField F L
inst✝ : Normal F L
K : IntermediateField F L
⊢ Normal F ↥K ↔ ∀ (σ : L →ₐ[F] L), map σ K ≤ K
state_after: no goals