1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: QuotientGroup.eq_iff_div_mem
File: Mathlib/GroupTheory/QuotientGroup.lean

tactic: refine eq_comm.trans (QuotientGroup.eq.trans ?_)
state_before: G : Type u
inst✝² : Group G
N✝ : Subgroup G
nN✝ : N✝.Normal
H : Type v
inst✝¹ : Group H
M : Type x
inst✝ : Monoid M
N : Subgroup G
nN : N.Normal
x y : G
⊢ ↑x = ↑y ↔ x / y ∈ N
state_after: G : Type u
inst✝² : Group G
N✝ : Subgroup G
nN✝ : N✝.Normal
H : Type v
inst✝¹ : Group H
M : Type x
inst✝ : Monoid M
N : Subgroup G
nN : N.Normal
x y : G
⊢ y⁻¹ * x ∈ N ↔ x / y ∈ N

tactic: rw [nN.mem_comm_iff, div_eq_mul_inv]
state_before: G : Type u
inst✝² : Group G
N✝ : Subgroup G
nN✝ : N✝.Normal
H : Type v
inst✝¹ : Group H
M : Type x
inst✝ : Monoid M
N : Subgroup G
nN : N.Normal
x y : G
⊢ y⁻¹ * x ∈ N ↔ x / y ∈ N
state_after: no goals
Theorem: Filter.HasBasis.eventually_iff
File: Mathlib/Order/Filter/Bases.lean

tactic: simpa using hl.mem_iff
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
hl : l.HasBasis p s
q : α → Prop
⊢ (∀ᶠ (x : α) in l, q x) ↔ ∃ i, p i ∧ ∀ ⦃x : α⦄, x ∈ s i → q x
state_after: no goals
Theorem: CategoryTheory.transferNatTransSelf_symm_of_iso
File: Mathlib/CategoryTheory/Adjunction/Mates.lean

tactic: suffices IsIso ((transferNatTransSelf adj₁ adj₂) ((transferNatTransSelf adj₁ adj₂).symm f))
  by simpa using this
state_before: C : Type u₁
D : Type u₂
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
f : R₁ ⟶ R₂
inst✝ : IsIso ((transferNatTransSelf adj₁ adj₂).symm f)
⊢ IsIso f
state_after: C : Type u₁
D : Type u₂
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
f : R₁ ⟶ R₂
inst✝ : IsIso ((transferNatTransSelf adj₁ adj₂).symm f)
⊢ IsIso ((transferNatTransSelf adj₁ adj₂) ((transferNatTransSelf adj₁ adj₂).symm f))

tactic: infer_instance
state_before: C : Type u₁
D : Type u₂
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
f : R₁ ⟶ R₂
inst✝ : IsIso ((transferNatTransSelf adj₁ adj₂).symm f)
⊢ IsIso ((transferNatTransSelf adj₁ adj₂) ((transferNatTransSelf adj₁ adj₂).symm f))
state_after: no goals

tactic: simpa using this
state_before: C : Type u₁
D : Type u₂
inst✝² : Category.{v₁, u₁} C
inst✝¹ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
f : R₁ ⟶ R₂
inst✝ : IsIso ((transferNatTransSelf adj₁ adj₂).symm f)
this : IsIso ((transferNatTransSelf adj₁ adj₂) ((transferNatTransSelf adj₁ adj₂).symm f))
⊢ IsIso f
state_after: no goals
Theorem: HomologicalComplex.singleMapHomologicalComplex_hom_app_self
File: Mathlib/Algebra/Homology/Additive.lean

tactic: simp [singleMapHomologicalComplex, singleObjXSelf, singleObjXIsoOfEq, eqToHom_map]
state_before: ι : Type u_1
V : Type u
inst✝¹¹ : Category.{v, u} V
inst✝¹⁰ : Preadditive V
W : Type u_2
inst✝⁹ : Category.{?u.150464, u_2} W
inst✝⁸ : Preadditive W
W₁ : Type u_3
W₂ : Type u_4
inst✝⁷ : Category.{u_6, u_3} W₁
inst✝⁶ : Category.{u_5, u_4} W₂
inst✝⁵ : HasZeroMorphisms W₁
inst✝⁴ : HasZeroMorphisms W₂
c✝ : ComplexShape ι
C D E : HomologicalComplex V c✝
f g : C ⟶ D
h k : D ⟶ E
i : ι
inst✝³ : HasZeroObject W₁
inst✝² : HasZeroObject W₂
F : W₁ ⥤ W₂
inst✝¹ : F.PreservesZeroMorphisms
c : ComplexShape ι
inst✝ : DecidableEq ι
j : ι
X : W₁
⊢ ((singleMapHomologicalComplex F c j).hom.app X).f j =
    F.map (singleObjXSelf c j X).hom ≫ (singleObjXSelf c j (F.obj X)).inv
state_after: no goals
Theorem: tendsto_nhds_true
File: Mathlib/Topology/Order.lean

tactic: simp
state_before: α : Type u_1
inst✝ : TopologicalSpace α
l : Filter α
p : α → Prop
⊢ Tendsto p l (𝓝 True) ↔ ∀ᶠ (x : α) in l, p x
state_after: no goals
Theorem: PartialHomeomorph.extend_symm_continuousWithinAt_comp_right_iff
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: rw [← I.symm_continuousWithinAt_comp_right_iff]
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁹ : NontriviallyNormedField 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : TopologicalSpace H
inst✝⁵ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : NormedSpace 𝕜 E'
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s✝ t : Set M
X : Type u_8
inst✝ : TopologicalSpace X
g : M → X
s : Set M
x : M
⊢ ContinuousWithinAt (g ∘ ↑(f.extend I).symm) (↑(f.extend I).symm ⁻¹' s ∩ range ↑I) (↑(f.extend I) x) ↔
    ContinuousWithinAt (g ∘ ↑f.symm) (↑f.symm ⁻¹' s) (↑f x)
state_after: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁹ : NontriviallyNormedField 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : TopologicalSpace H
inst✝⁵ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : NormedSpace 𝕜 E'
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s✝ t : Set M
X : Type u_8
inst✝ : TopologicalSpace X
g : M → X
s : Set M
x : M
⊢ ContinuousWithinAt (g ∘ ↑(f.extend I).symm) (↑(f.extend I).symm ⁻¹' s ∩ range ↑I) (↑(f.extend I) x) ↔
    ContinuousWithinAt ((g ∘ ↑f.symm) ∘ ↑I.symm) (↑I.symm ⁻¹' (↑f.symm ⁻¹' s) ∩ range ↑I) (↑I (↑f x))

tactic: rfl
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁹ : NontriviallyNormedField 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
inst✝⁶ : TopologicalSpace H
inst✝⁵ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : NormedSpace 𝕜 E'
inst✝² : TopologicalSpace H'
inst✝¹ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s✝ t : Set M
X : Type u_8
inst✝ : TopologicalSpace X
g : M → X
s : Set M
x : M
⊢ ContinuousWithinAt (g ∘ ↑(f.extend I).symm) (↑(f.extend I).symm ⁻¹' s ∩ range ↑I) (↑(f.extend I) x) ↔
    ContinuousWithinAt ((g ∘ ↑f.symm) ∘ ↑I.symm) (↑I.symm ⁻¹' (↑f.symm ⁻¹' s) ∩ range ↑I) (↑I (↑f x))
state_after: no goals
Theorem: Nat.nth_eq_sInf
File: Mathlib/Data/Nat/Nth.lean

tactic: by_cases hn : ∀ hf : (setOf p).Finite, n < hf.toFinset.card
state_before: p✝ p : ℕ → Prop
n : ℕ
⊢ nth p n = sInf {x | p x ∧ ∀ k < n, nth p k < x}
state_after: case pos
p✝ p : ℕ → Prop
n : ℕ
hn : ∀ (hf : (setOf p).Finite), n < hf.toFinset.card
⊢ nth p n = sInf {x | p x ∧ ∀ k < n, nth p k < x}

case neg
p✝ p : ℕ → Prop
n : ℕ
hn : ¬∀ (hf : (setOf p).Finite), n < hf.toFinset.card
⊢ nth p n = sInf {x | p x ∧ ∀ k < n, nth p k < x}

tactic: exact (isLeast_nth hn).csInf_eq.symm
state_before: case pos
p✝ p : ℕ → Prop
n : ℕ
hn : ∀ (hf : (setOf p).Finite), n < hf.toFinset.card
⊢ nth p n = sInf {x | p x ∧ ∀ k < n, nth p k < x}
state_after: no goals

tactic: push_neg at hn
state_before: case neg
p✝ p : ℕ → Prop
n : ℕ
hn : ¬∀ (hf : (setOf p).Finite), n < hf.toFinset.card
⊢ nth p n = sInf {x | p x ∧ ∀ k < n, nth p k < x}
state_after: case neg
p✝ p : ℕ → Prop
n : ℕ
hn : ∃ (h : (setOf p).Finite), ⋯.toFinset.card ≤ n
⊢ nth p n = sInf {x | p x ∧ ∀ k < n, nth p k < x}

tactic: rcases hn with ⟨hf, hn⟩
state_before: case neg
p✝ p : ℕ → Prop
n : ℕ
hn : ∃ (h : (setOf p).Finite), ⋯.toFinset.card ≤ n
⊢ nth p n = sInf {x | p x ∧ ∀ k < n, nth p k < x}
state_after: case neg.intro
p✝ p : ℕ → Prop
n : ℕ
hf : (setOf p).Finite
hn : ⋯.toFinset.card ≤ n
⊢ nth p n = sInf {x | p x ∧ ∀ k < n, nth p k < x}

tactic: rw [nth_of_card_le _ hn]
state_before: case neg.intro
p✝ p : ℕ → Prop
n : ℕ
hf : (setOf p).Finite
hn : ⋯.toFinset.card ≤ n
⊢ nth p n = sInf {x | p x ∧ ∀ k < n, nth p k < x}
state_after: case neg.intro
p✝ p : ℕ → Prop
n : ℕ
hf : (setOf p).Finite
hn : ⋯.toFinset.card ≤ n
⊢ 0 = sInf {x | p x ∧ ∀ k < n, nth p k < x}

tactic: refine ((congr_arg sInf <| Set.eq_empty_of_forall_not_mem fun k hk => ?_).trans sInf_empty).symm
state_before: case neg.intro
p✝ p : ℕ → Prop
n : ℕ
hf : (setOf p).Finite
hn : ⋯.toFinset.card ≤ n
⊢ 0 = sInf {x | p x ∧ ∀ k < n, nth p k < x}
state_after: case neg.intro
p✝ p : ℕ → Prop
n : ℕ
hf : (setOf p).Finite
hn : ⋯.toFinset.card ≤ n
k : ℕ
hk : k ∈ {x | p x ∧ ∀ k < n, nth p k < x}
⊢ False

tactic: rcases exists_lt_card_nth_eq hk.1 with ⟨k, hlt, rfl⟩
state_before: case neg.intro
p✝ p : ℕ → Prop
n : ℕ
hf : (setOf p).Finite
hn : ⋯.toFinset.card ≤ n
k : ℕ
hk : k ∈ {x | p x ∧ ∀ k < n, nth p k < x}
⊢ False
state_after: case neg.intro.intro.intro
p✝ p : ℕ → Prop
n : ℕ
hf : (setOf p).Finite
hn : ⋯.toFinset.card ≤ n
k : ℕ
hlt : ∀ (hf : (setOf p).Finite), k < hf.toFinset.card
hk : nth p k ∈ {x | p x ∧ ∀ k < n, nth p k < x}
⊢ False

tactic: exact (hk.2 _ ((hlt hf).trans_le hn)).false
state_before: case neg.intro.intro.intro
p✝ p : ℕ → Prop
n : ℕ
hf : (setOf p).Finite
hn : ⋯.toFinset.card ≤ n
k : ℕ
hlt : ∀ (hf : (setOf p).Finite), k < hf.toFinset.card
hk : nth p k ∈ {x | p x ∧ ∀ k < n, nth p k < x}
⊢ False
state_after: no goals
Theorem: Finset.aemeasurable_prod
File: Mathlib/MeasureTheory/Group/Arithmetic.lean

tactic: simpa only [← Finset.prod_apply] using s.aemeasurable_prod' hf
state_before: α✝ : Type u_1
M : Type u_2
ι : Type u_3
α : Type u_4
inst✝² : CommMonoid M
inst✝¹ : MeasurableSpace M
inst✝ : MeasurableMul₂ M
m : MeasurableSpace α
μ : Measure α
f : ι → α → M
s : Finset ι
hf : ∀ i ∈ s, AEMeasurable (f i) μ
⊢ AEMeasurable (fun a => ∏ i ∈ s, f i a) μ
state_after: no goals
Theorem: NNReal.nndist_zero_eq_val
File: Mathlib/Topology/MetricSpace/Pseudo/Constructions.lean

tactic: simp only [NNReal.nndist_eq, max_eq_right, tsub_zero, zero_tsub, zero_le']
state_before: α : Type u_1
β : Type u_2
inst✝ : PseudoMetricSpace α
z : ℝ≥0
⊢ nndist 0 z = z
state_after: no goals
Theorem: FormalMultilinearSeries.leftInv_eq_rightInv_aux
File: Mathlib/Analysis/Analytic/Inverse.lean

tactic: simp
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
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
h : p 1 = (continuousMultilinearCurryFin1 𝕜 E F).symm ↑i
h0 : p 0 = 0
⊢ p.leftInv i = (p.leftInv i).comp (id 𝕜 F)
state_after: no goals

tactic: rw [comp_rightInv p i h h0]
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
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
h : p 1 = (continuousMultilinearCurryFin1 𝕜 E F).symm ↑i
h0 : p 0 = 0
⊢ (p.leftInv i).comp (id 𝕜 F) = (p.leftInv i).comp (p.comp (p.rightInv i))
state_after: no goals

tactic: rw [comp_assoc]
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
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
h : p 1 = (continuousMultilinearCurryFin1 𝕜 E F).symm ↑i
h0 : p 0 = 0
⊢ (p.leftInv i).comp (p.comp (p.rightInv i)) = ((p.leftInv i).comp p).comp (p.rightInv i)
state_after: no goals

tactic: rw [leftInv_comp p i h]
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
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
h : p 1 = (continuousMultilinearCurryFin1 𝕜 E F).symm ↑i
h0 : p 0 = 0
⊢ ((p.leftInv i).comp p).comp (p.rightInv i) = (id 𝕜 E).comp (p.rightInv i)
state_after: no goals

tactic: simp
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
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
h : p 1 = (continuousMultilinearCurryFin1 𝕜 E F).symm ↑i
h0 : p 0 = 0
⊢ (id 𝕜 E).comp (p.rightInv i) = p.rightInv i
state_after: no goals
Theorem: CategoryTheory.isDetector_op_iff
File: Mathlib/CategoryTheory/Generator.lean

tactic: rw [IsDetector, IsCodetector, ← isDetecting_op_iff, Set.singleton_op]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
G : C
⊢ IsDetector { unop := G } ↔ IsCodetector G
state_after: no goals
Theorem: CategoryTheory.Limits.inl_inr_pushoutAssoc_inv
File: Mathlib/CategoryTheory/Limits/Shapes/Pullbacks.lean

tactic: rw [← Category.assoc, Iso.comp_inv_eq, Category.assoc, inr_inl_pushoutAssoc_hom]
state_before: C : Type u
inst✝⁵ : Category.{v, u} C
D : Type u₂
inst✝⁴ : Category.{v₂, u₂} D
W X Y Z X₁ X₂ X₃ Z₁ Z₂ : C
g₁ : Z₁ ⟶ X₁
g₂ : Z₁ ⟶ X₂
g₃ : Z₂ ⟶ X₂
g₄ : Z₂ ⟶ X₃
inst✝³ : HasPushout g₁ g₂
inst✝² : HasPushout g₃ g₄
inst✝¹ : HasPushout (g₃ ≫ pushout.inr) g₄
inst✝ : HasPushout g₁ (g₂ ≫ pushout.inl)
⊢ pushout.inl ≫ pushout.inr ≫ (pushoutAssoc g₁ g₂ g₃ g₄).inv = pushout.inr ≫ pushout.inl
state_after: no goals
Theorem: Int.closedEmbedding_coe_rat
File: Mathlib/Topology/Instances/Rat.lean

tactic: simpa using Int.pairwise_one_le_dist
state_before: ⊢ Pairwise fun x y => 1 ≤ dist ↑x ↑y
state_after: no goals
Theorem: LocallyConstant.comap_injective
File: Mathlib/Topology/LocallyConstant/Basic.lean

tactic: intro a b h
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : C(X, Y)
hfs : Function.Surjective f.toFun
⊢ Function.Injective (comap f)
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : C(X, Y)
hfs : Function.Surjective f.toFun
a b : LocallyConstant Y Z
h : comap f a = comap f b
⊢ a = b

tactic: ext y
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : C(X, Y)
hfs : Function.Surjective f.toFun
a b : LocallyConstant Y Z
h : comap f a = comap f b
⊢ a = b
state_after: case h
X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : C(X, Y)
hfs : Function.Surjective f.toFun
a b : LocallyConstant Y Z
h : comap f a = comap f b
y : Y
⊢ a y = b y

tactic: obtain ⟨x, hx⟩ := hfs y
state_before: case h
X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : C(X, Y)
hfs : Function.Surjective f.toFun
a b : LocallyConstant Y Z
h : comap f a = comap f b
y : Y
⊢ a y = b y
state_after: case h.intro
X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : C(X, Y)
hfs : Function.Surjective f.toFun
a b : LocallyConstant Y Z
h : comap f a = comap f b
y : Y
x : X
hx : f.toFun x = y
⊢ a y = b y

tactic: simpa [← hx] using LocallyConstant.congr_fun h x
state_before: case h.intro
X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : C(X, Y)
hfs : Function.Surjective f.toFun
a b : LocallyConstant Y Z
h : comap f a = comap f b
y : Y
x : X
hx : f.toFun x = y
⊢ a y = b y
state_after: no goals
Theorem: bddAbove_closure
File: Mathlib/Topology/Order/OrderClosed.lean

tactic: simp_rw [BddAbove, upperBounds_closure]
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : Preorder α
inst✝ : ClosedIicTopology α
f : β → α
a b : α
s : Set α
⊢ BddAbove (closure s) ↔ BddAbove s
state_after: no goals
Theorem: MeasureTheory.upcrossingsBefore_bot
File: Mathlib/Probability/Martingale/Upcrossing.lean

tactic: simp [upcrossingsBefore]
state_before: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
a✝ b✝ : ℝ
f✝ : ℕ → Ω → ℝ
N n m : ℕ
ω✝ : Ω
ℱ : Filtration ℕ m0
inst✝² : Preorder ι
inst✝¹ : OrderBot ι
inst✝ : InfSet ι
a b : ℝ
f : ι → Ω → ℝ
ω : Ω
⊢ upcrossingsBefore a b f ⊥ ω = ⊥
state_after: no goals
Theorem: Finset.attach_map_val
File: Mathlib/Data/Finset/Image.lean

tactic: rw [map_val, attach_val]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α ↪ β
s✝ s : Finset α
⊢ (map (Embedding.subtype fun x => x ∈ s) s.attach).val = s.val
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
f : α ↪ β
s✝ s : Finset α
⊢ Multiset.map (⇑(Embedding.subtype fun x => x ∈ s)) s.val.attach = s.val

tactic: exact Multiset.attach_map_val _
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α ↪ β
s✝ s : Finset α
⊢ Multiset.map (⇑(Embedding.subtype fun x => x ∈ s)) s.val.attach = s.val
state_after: no goals
Theorem: IsUnit.div_mul_left
File: Mathlib/Algebra/Group/Units.lean

tactic: rw [h.div_mul_cancel_right, one_div]
state_before: α : Type u
M : Type u_1
N : Type u_2
inst✝ : DivisionMonoid α
a b c : α
h : IsUnit b
⊢ b / (a * b) = 1 / a
state_after: no goals
Theorem: LowerSet.prod_le_prod_iff
File: Mathlib/Order/UpperLower/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s s₁ s₂ : LowerSet α
t t₁ t₂ : LowerSet β
x : α × β
⊢ ↑s₁ ⊆ ↑s₂ ∧ ↑t₁ ⊆ ↑t₂ ∨ ↑s₁ = ∅ ∨ ↑t₁ = ∅ ↔ s₁ ≤ s₂ ∧ t₁ ≤ t₂ ∨ s₁ = ⊥ ∨ t₁ = ⊥
state_after: no goals
Theorem: List.Perm.inter_left
File: .lake/packages/batteries/Batteries/Data/List/Perm.lean

tactic: simpa using p.mem_iff (a := a)
state_before: α : Type u_1
inst✝ : DecidableEq α
l t₁ t₂ : List α
p : t₁ ~ t₂
a : α
x✝ : a ∈ l
⊢ elem a t₁ = elem a t₂
state_after: no goals
Theorem: ComplexShape.next_eq'
File: Mathlib/Algebra/Homology/ComplexShape.lean

tactic: apply c.next_eq _ h
state_before: ι : Type u_1
c : ComplexShape ι
i j : ι
h : c.Rel i j
⊢ c.next i = j
state_after: ι : Type u_1
c : ComplexShape ι
i j : ι
h : c.Rel i j
⊢ c.Rel i (c.next i)

tactic: rw [next]
state_before: ι : Type u_1
c : ComplexShape ι
i j : ι
h : c.Rel i j
⊢ c.Rel i (c.next i)
state_after: ι : Type u_1
c : ComplexShape ι
i j : ι
h : c.Rel i j
⊢ c.Rel i (if h : ∃ j, c.Rel i j then h.choose else i)

tactic: rw [dif_pos]
state_before: ι : Type u_1
c : ComplexShape ι
i j : ι
h : c.Rel i j
⊢ c.Rel i (if h : ∃ j, c.Rel i j then h.choose else i)
state_after: ι : Type u_1
c : ComplexShape ι
i j : ι
h : c.Rel i j
⊢ c.Rel i ?hc.choose

case hc
ι : Type u_1
c : ComplexShape ι
i j : ι
h : c.Rel i j
⊢ ∃ j, c.Rel i j

tactic: exact Exists.choose_spec ⟨j, h⟩
state_before: ι : Type u_1
c : ComplexShape ι
i j : ι
h : c.Rel i j
⊢ c.Rel i ?hc.choose

case hc
ι : Type u_1
c : ComplexShape ι
i j : ι
h : c.Rel i j
⊢ ∃ j, c.Rel i j
state_after: no goals
Theorem: Inducing.prod_map
File: Mathlib/Topology/Constructions.lean

tactic: simp_rw [Prod.map_def, nhds_prod_eq, hf.nhds_eq_comap,
hg.nhds_eq_comap, prod_comap_comap_eq]
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Z
inst✝² : TopologicalSpace W
inst✝¹ : TopologicalSpace ε
inst✝ : TopologicalSpace ζ
f : X → Y
g : Z → W
hf : Inducing f
hg : Inducing g
x✝ : X × Z
x : X
z : Z
⊢ 𝓝 (x, z) = comap (Prod.map f g) (𝓝 (Prod.map f g (x, z)))
state_after: no goals
Theorem: CoxeterSystem.relations_liftable
File: Mathlib/GroupTheory/Coxeter/Basic.lean

tactic: rcases hr with ⟨⟨i, i'⟩, rfl⟩
state_before: B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝² : Group W
inst✝¹ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
G : Type u_5
inst✝ : Group G
f : B → G
hf : M.IsLiftable f
r : FreeGroup B
hr : r ∈ M.relationsSet
⊢ (FreeGroup.lift f) r = 1
state_after: case intro.mk
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝² : Group W
inst✝¹ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
G : Type u_5
inst✝ : Group G
f : B → G
hf : M.IsLiftable f
i i' : B
⊢ (FreeGroup.lift f) (uncurry M.relation (i, i')) = 1

tactic: rw [uncurry, relation, map_pow, _root_.map_mul, FreeGroup.lift.of, FreeGroup.lift.of]
state_before: case intro.mk
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝² : Group W
inst✝¹ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
G : Type u_5
inst✝ : Group G
f : B → G
hf : M.IsLiftable f
i i' : B
⊢ (FreeGroup.lift f) (uncurry M.relation (i, i')) = 1
state_after: case intro.mk
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝² : Group W
inst✝¹ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
G : Type u_5
inst✝ : Group G
f : B → G
hf : M.IsLiftable f
i i' : B
⊢ (f (i, i').1 * f (i, i').2) ^ M.M (i, i').1 (i, i').2 = 1

tactic: exact hf i i'
state_before: case intro.mk
B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝² : Group W
inst✝¹ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
G : Type u_5
inst✝ : Group G
f : B → G
hf : M.IsLiftable f
i i' : B
⊢ (f (i, i').1 * f (i, i').2) ^ M.M (i, i').1 (i, i').2 = 1
state_after: no goals
Theorem: Submodule.one_eq_span
File: Mathlib/Algebra/Algebra/Operations.lean

tactic: apply Submodule.ext
state_before: ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
⊢ 1 = span R {1}
state_after: case h
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
⊢ ∀ (x : A), x ∈ 1 ↔ x ∈ span R {1}

tactic: intro a
state_before: case h
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
⊢ ∀ (x : A), x ∈ 1 ↔ x ∈ span R {1}
state_after: case h
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n a : A
⊢ a ∈ 1 ↔ a ∈ span R {1}

tactic: simp only [mem_one, mem_span_singleton, Algebra.smul_def, mul_one]
state_before: case h
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n a : A
⊢ a ∈ 1 ↔ a ∈ span R {1}
state_after: no goals
Theorem: YoungDiagram.get_rowLens
File: Mathlib/Combinatorics/Young/YoungDiagram.lean

tactic: simp only [rowLens, List.getElem_range, List.getElem_map]
state_before: μ : YoungDiagram
i : ℕ
h : i < μ.rowLens.length
⊢ μ.rowLens[i] = μ.rowLen i
state_after: no goals
Theorem: QuadraticForm.associated_toQuadraticForm
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: simp only [associated_apply, toQuadraticForm_apply, map_add, add_apply, ← polar_toQuadraticForm,
  polar.eq_1]
state_before: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : CommSemiring S
inst✝¹ : Algebra S R
inst✝ : Invertible 2
B₁ : BilinForm R M
Q : QuadraticForm R M
B : BilinForm R M
x y : M
⊢ (((associatedHom S) B.toQuadraticForm) x) y = ⅟2 * ((B x) y + (B y) x)
state_after: no goals
Theorem: strictConvexOn_of_deriv2_pos
File: Mathlib/Analysis/Convex/Deriv.lean

tactic: rwa [interior_interior]
state_before: D : Set ℝ
hD : Convex ℝ D
f : ℝ → ℝ
hf : ContinuousOn f D
hf'' : ∀ x ∈ interior D, 0 < deriv^[2] f x
⊢ ∀ x ∈ interior (interior D), 0 < deriv (deriv f) x
state_after: no goals
Theorem: PMF.mem_support_pure_iff
File: Mathlib/Probability/ProbabilityMassFunction/Monad.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a a' : α
⊢ a' ∈ (pure a).support ↔ a' = a
state_after: no goals
Theorem: AffineBasis.coord_apply_eq
File: Mathlib/LinearAlgebra/AffineSpace/Basis.lean

tactic: simp only [coord, Basis.coe_sumCoords, LinearEquiv.map_zero, LinearEquiv.coe_coe, sub_zero,
  AffineMap.coe_mk, Finsupp.sum_zero_index, vsub_self]
state_before: ι : Type u_1
ι' : Type u_2
k : Type u_3
V : Type u_4
P : Type u_5
inst✝³ : AddCommGroup V
inst✝² : AffineSpace V P
inst✝¹ : Ring k
inst✝ : Module k V
b : AffineBasis ι k P
s : Finset ι
i✝ j : ι
e : ι ≃ ι'
i : ι
⊢ (b.coord i) (b i) = 1
state_after: no goals
Theorem: antivary_inv_left
File: Mathlib/Algebra/Order/Monovary.lean

tactic: simp [Monovary, Antivary]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : OrderedCommGroup α
inst✝ : OrderedCommGroup β
s : Set ι
f f₁ f₂ : ι → α
g g₁ g₂ : ι → β
⊢ Antivary f⁻¹ g ↔ Monovary f g
state_after: no goals