1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: disjoint_compl_compl_left_iff
File: Mathlib/Order/Heyting/Basic.lean

tactic: simp_rw [← le_compl_iff_disjoint_left, compl_compl_compl]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : HeytingAlgebra α
a b c : α
⊢ Disjoint aᶜᶜ b ↔ Disjoint a b
state_after: no goals
Theorem: Filter.exists_mem_singleton_mem_of_mem_of_nonempty_of_forall_separating
File: Mathlib/Order/Filter/CountableSeparatingOn.lean

tactic: rcases exists_subset_subsingleton_mem_of_forall_separating p hs hl with ⟨t, hts, ht, htl⟩
state_before: α : Type u_1
β : Type u_2
l : Filter α
inst✝¹ : CountableInterFilter l
f g : α → β
p : Set α → Prop
s : Set α
inst✝ : HasCountableSeparatingOn α p s
hs : s ∈ l
hne : s.Nonempty
hl : ∀ (U : Set α), p U → U ∈ l ∨ Uᶜ ∈ l
⊢ ∃ a ∈ s, {a} ∈ l
state_after: case intro.intro.intro
α : Type u_1
β : Type u_2
l : Filter α
inst✝¹ : CountableInterFilter l
f g : α → β
p : Set α → Prop
s : Set α
inst✝ : HasCountableSeparatingOn α p s
hs : s ∈ l
hne : s.Nonempty
hl : ∀ (U : Set α), p U → U ∈ l ∨ Uᶜ ∈ l
t : Set α
hts : t ⊆ s
ht : t.Subsingleton
htl : t ∈ l
⊢ ∃ a ∈ s, {a} ∈ l

tactic: rcases ht.eq_empty_or_singleton with rfl | ⟨x, rfl⟩
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
l : Filter α
inst✝¹ : CountableInterFilter l
f g : α → β
p : Set α → Prop
s : Set α
inst✝ : HasCountableSeparatingOn α p s
hs : s ∈ l
hne : s.Nonempty
hl : ∀ (U : Set α), p U → U ∈ l ∨ Uᶜ ∈ l
t : Set α
hts : t ⊆ s
ht : t.Subsingleton
htl : t ∈ l
⊢ ∃ a ∈ s, {a} ∈ l
state_after: case intro.intro.intro.inl
α : Type u_1
β : Type u_2
l : Filter α
inst✝¹ : CountableInterFilter l
f g : α → β
p : Set α → Prop
s : Set α
inst✝ : HasCountableSeparatingOn α p s
hs : s ∈ l
hne : s.Nonempty
hl : ∀ (U : Set α), p U → U ∈ l ∨ Uᶜ ∈ l
hts : ∅ ⊆ s
ht : ∅.Subsingleton
htl : ∅ ∈ l
⊢ ∃ a ∈ s, {a} ∈ l

case intro.intro.intro.inr.intro
α : Type u_1
β : Type u_2
l : Filter α
inst✝¹ : CountableInterFilter l
f g : α → β
p : Set α → Prop
s : Set α
inst✝ : HasCountableSeparatingOn α p s
hs : s ∈ l
hne : s.Nonempty
hl : ∀ (U : Set α), p U → U ∈ l ∨ Uᶜ ∈ l
x : α
hts : {x} ⊆ s
ht : {x}.Subsingleton
htl : {x} ∈ l
⊢ ∃ a ∈ s, {a} ∈ l

tactic: exact hne.imp fun a ha ↦ ⟨ha, mem_of_superset htl (empty_subset _)⟩
state_before: case intro.intro.intro.inl
α : Type u_1
β : Type u_2
l : Filter α
inst✝¹ : CountableInterFilter l
f g : α → β
p : Set α → Prop
s : Set α
inst✝ : HasCountableSeparatingOn α p s
hs : s ∈ l
hne : s.Nonempty
hl : ∀ (U : Set α), p U → U ∈ l ∨ Uᶜ ∈ l
hts : ∅ ⊆ s
ht : ∅.Subsingleton
htl : ∅ ∈ l
⊢ ∃ a ∈ s, {a} ∈ l
state_after: no goals

tactic: exact ⟨x, hts rfl, htl⟩
state_before: case intro.intro.intro.inr.intro
α : Type u_1
β : Type u_2
l : Filter α
inst✝¹ : CountableInterFilter l
f g : α → β
p : Set α → Prop
s : Set α
inst✝ : HasCountableSeparatingOn α p s
hs : s ∈ l
hne : s.Nonempty
hl : ∀ (U : Set α), p U → U ∈ l ∨ Uᶜ ∈ l
x : α
hts : {x} ⊆ s
ht : {x}.Subsingleton
htl : {x} ∈ l
⊢ ∃ a ∈ s, {a} ∈ l
state_after: no goals
Theorem: Matrix.nonsing_inv_eq_ring_inverse
File: Mathlib/LinearAlgebra/Matrix/NonsingularInverse.lean

tactic: by_cases h_det : IsUnit A.det
state_before: l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B : Matrix n n α
⊢ A⁻¹ = Ring.inverse A
state_after: case pos
l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B : Matrix n n α
h_det : IsUnit A.det
⊢ A⁻¹ = Ring.inverse A

case neg
l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B : Matrix n n α
h_det : ¬IsUnit A.det
⊢ A⁻¹ = Ring.inverse A

tactic: cases (A.isUnit_iff_isUnit_det.mpr h_det).nonempty_invertible
state_before: case pos
l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B : Matrix n n α
h_det : IsUnit A.det
⊢ A⁻¹ = Ring.inverse A
state_after: case pos.intro
l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B : Matrix n n α
h_det : IsUnit A.det
val✝ : Invertible A
⊢ A⁻¹ = Ring.inverse A

tactic: rw [← invOf_eq_nonsing_inv, Ring.inverse_invertible]
state_before: case pos.intro
l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B : Matrix n n α
h_det : IsUnit A.det
val✝ : Invertible A
⊢ A⁻¹ = Ring.inverse A
state_after: no goals

tactic: have h := mt A.isUnit_iff_isUnit_det.mp h_det
state_before: case neg
l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B : Matrix n n α
h_det : ¬IsUnit A.det
⊢ A⁻¹ = Ring.inverse A
state_after: case neg
l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B : Matrix n n α
h_det : ¬IsUnit A.det
h : ¬IsUnit A
⊢ A⁻¹ = Ring.inverse A

tactic: rw [Ring.inverse_non_unit _ h, nonsing_inv_apply_not_isUnit A h_det]
state_before: case neg
l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B : Matrix n n α
h_det : ¬IsUnit A.det
h : ¬IsUnit A
⊢ A⁻¹ = Ring.inverse A
state_after: no goals
Theorem: IntermediateField.isAlgebraic_adjoin
File: Mathlib/FieldTheory/Adjoin.lean

tactic: rw [← biSup_adjoin_simple, ← iSup_subtype'']
state_before: F : Type u_1
inst✝⁶ : Field F
E : Type u_2
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
α : E
K : Type u
inst✝³ : Field K
inst✝² : Algebra F K
L : Type u_3
inst✝¹ : Field L
inst✝ : Algebra K L
S : Set L
hS : ∀ x ∈ S, IsIntegral K x
⊢ Algebra.IsAlgebraic K ↥(adjoin K S)
state_after: F : Type u_1
inst✝⁶ : Field F
E : Type u_2
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
α : E
K : Type u
inst✝³ : Field K
inst✝² : Algebra F K
L : Type u_3
inst✝¹ : Field L
inst✝ : Algebra K L
S : Set L
hS : ∀ x ∈ S, IsIntegral K x
⊢ Algebra.IsAlgebraic K ↥(⨆ i, K⟮↑i⟯)

tactic: exact isAlgebraic_iSup fun x ↦ isAlgebraic_adjoin_simple (hS x x.2)
state_before: F : Type u_1
inst✝⁶ : Field F
E : Type u_2
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
α : E
K : Type u
inst✝³ : Field K
inst✝² : Algebra F K
L : Type u_3
inst✝¹ : Field L
inst✝ : Algebra K L
S : Set L
hS : ∀ x ∈ S, IsIntegral K x
⊢ Algebra.IsAlgebraic K ↥(⨆ i, K⟮↑i⟯)
state_after: no goals
Theorem: connectedComponentIn_eq
File: Mathlib/Topology/Connected/Basic.lean

tactic: have hx : x ∈ F := connectedComponentIn_nonempty_iff.mp ⟨y, h⟩
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x y : α
F : Set α
h : y ∈ connectedComponentIn F x
⊢ connectedComponentIn F x = connectedComponentIn F y
state_after: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x y : α
F : Set α
h : y ∈ connectedComponentIn F x
hx : x ∈ F
⊢ connectedComponentIn F x = connectedComponentIn F y

tactic: simp_rw [connectedComponentIn_eq_image hx] at h ⊢
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x y : α
F : Set α
h : y ∈ connectedComponentIn F x
hx : x ∈ F
⊢ connectedComponentIn F x = connectedComponentIn F y
state_after: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x y : α
F : Set α
hx : x ∈ F
h : y ∈ Subtype.val '' connectedComponent ⟨x, hx⟩
⊢ Subtype.val '' connectedComponent ⟨x, hx⟩ = connectedComponentIn F y

tactic: obtain ⟨⟨y, hy⟩, h2y, rfl⟩ := h
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x y : α
F : Set α
hx : x ∈ F
h : y ∈ Subtype.val '' connectedComponent ⟨x, hx⟩
⊢ Subtype.val '' connectedComponent ⟨x, hx⟩ = connectedComponentIn F y
state_after: case intro.mk.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x : α
F : Set α
hx : x ∈ F
y : α
hy : y ∈ F
h2y : ⟨y, hy⟩ ∈ connectedComponent ⟨x, hx⟩
⊢ Subtype.val '' connectedComponent ⟨x, hx⟩ = connectedComponentIn F ↑⟨y, hy⟩

tactic: simp_rw [connectedComponentIn_eq_image hy, connectedComponent_eq h2y]
state_before: case intro.mk.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x : α
F : Set α
hx : x ∈ F
y : α
hy : y ∈ F
h2y : ⟨y, hy⟩ ∈ connectedComponent ⟨x, hx⟩
⊢ Subtype.val '' connectedComponent ⟨x, hx⟩ = connectedComponentIn F ↑⟨y, hy⟩
state_after: no goals
Theorem: ChainComplex.isoHomologyι₀_inv_naturality
File: Mathlib/Algebra/Homology/ShortComplex/HomologicalComplex.lean

tactic: simp only [assoc, ← cancel_mono (L.homologyι 0),
  HomologicalComplex.homologyι_naturality, HomologicalComplex.isoHomologyι_inv_hom_id_assoc,
  HomologicalComplex.isoHomologyι_inv_hom_id, comp_id]
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroMorphisms C
K L : ChainComplex C ℕ
φ : K ⟶ L
inst✝¹ : HomologicalComplex.HasHomology K 0
inst✝ : HomologicalComplex.HasHomology L 0
⊢ K.isoHomologyι₀.inv ≫ HomologicalComplex.homologyMap φ 0 = HomologicalComplex.opcyclesMap φ 0 ≫ L.isoHomologyι₀.inv
state_after: no goals
Theorem: Set.image_preimage_eq_inter_range
File: Mathlib/Data/Set/Image.lean

tactic: rw [image_preimage_eq_range_inter, inter_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : ι → α
s t✝ : Set α
f : α → β
t : Set β
⊢ f '' (f ⁻¹' t) = t ∩ range f
state_after: no goals
Theorem: List.Chain'.two_mul_count_bool_le_length_add_one
File: Mathlib/Data/Bool/Count.lean

tactic: rw [hl.two_mul_count_bool_eq_ite]
state_before: l : List Bool
hl : Chain' (fun x x_1 => x ≠ x_1) l
b : Bool
⊢ 2 * count b l ≤ l.length + 1
state_after: l : List Bool
hl : Chain' (fun x x_1 => x ≠ x_1) l
b : Bool
⊢ (if Even l.length then l.length else if (some b == l.head?) = true then l.length + 1 else l.length - 1) ≤ l.length + 1

tactic: split_ifs <;> simp [Nat.le_succ_of_le]
state_before: l : List Bool
hl : Chain' (fun x x_1 => x ≠ x_1) l
b : Bool
⊢ (if Even l.length then l.length else if (some b == l.head?) = true then l.length + 1 else l.length - 1) ≤ l.length + 1
state_after: no goals
Theorem: UpperSet.Ici_iSup₂
File: Mathlib/Order/UpperLower/Basic.lean

tactic: simp_rw [Ici_iSup]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝ : CompleteLattice α
f : (i : ι) → κ i → α
⊢ Ici (⨆ i, ⨆ j, f i j) = ⨆ i, ⨆ j, Ici (f i j)
state_after: no goals
Theorem: Set.Sized.compls
File: Mathlib/Data/Finset/Sups.lean

tactic: rw [Finset.card_compl, h𝒜 hs]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : DecidableEq α
inst✝² : DecidableEq β
inst✝¹ : BooleanAlgebra α
s✝ s₁ s₂ t t₁ t₂ u v : Finset α
a b c : α
inst✝ : Fintype α
𝒜 : Finset (Finset α)
n : ℕ
h𝒜 : Set.Sized n ↑𝒜
s : Finset α
hs : s ∈ 𝒜
⊢ sᶜ.card = Fintype.card α - n
state_after: no goals
Theorem: Ring.toNonAssocRing_injective
File: Mathlib/Algebra/Ring/Ext.lean

tactic: intro _ _ _
state_before: R : Type u
⊢ Function.Injective (@toNonAssocRing R)
state_after: R : Type u
a₁✝ a₂✝ : Ring R
a✝ : toNonAssocRing = toNonAssocRing
⊢ a₁✝ = a₂✝

tactic: ext <;> congr
state_before: R : Type u
a₁✝ a₂✝ : Ring R
a✝ : toNonAssocRing = toNonAssocRing
⊢ a₁✝ = a₂✝
state_after: no goals
Theorem: zero_eq_mul
File: Mathlib/Algebra/GroupWithZero/Defs.lean

tactic: rw [eq_comm, mul_eq_zero]
state_before: G₀ : Type u
M₀ : Type u_1
M₀' : Type u_2
G₀' : Type u_3
inst✝¹ : MulZeroClass M₀
inst✝ : NoZeroDivisors M₀
a b : M₀
⊢ 0 = a * b ↔ a = 0 ∨ b = 0
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.prodMonoidal_leftUnitor_hom_snd
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: cases X
state_before: C : Type u
𝒞 : Category.{v, u} C
inst✝⁴ : MonoidalCategory C
C₁ : Type u₁
inst✝³ : Category.{v₁, u₁} C₁
inst✝² : MonoidalCategory C₁
C₂ : Type u₂
inst✝¹ : Category.{v₂, u₂} C₂
inst✝ : MonoidalCategory C₂
X : C₁ × C₂
⊢ (λ_ X).hom.2 = (λ_ X.2).hom
state_after: case mk
C : Type u
𝒞 : Category.{v, u} C
inst✝⁴ : MonoidalCategory C
C₁ : Type u₁
inst✝³ : Category.{v₁, u₁} C₁
inst✝² : MonoidalCategory C₁
C₂ : Type u₂
inst✝¹ : Category.{v₂, u₂} C₂
inst✝ : MonoidalCategory C₂
fst✝ : C₁
snd✝ : C₂
⊢ (λ_ (fst✝, snd✝)).hom.2 = (λ_ (fst✝, snd✝).2).hom

tactic: rfl
state_before: case mk
C : Type u
𝒞 : Category.{v, u} C
inst✝⁴ : MonoidalCategory C
C₁ : Type u₁
inst✝³ : Category.{v₁, u₁} C₁
inst✝² : MonoidalCategory C₁
C₂ : Type u₂
inst✝¹ : Category.{v₂, u₂} C₂
inst✝ : MonoidalCategory C₂
fst✝ : C₁
snd✝ : C₂
⊢ (λ_ (fst✝, snd✝)).hom.2 = (λ_ (fst✝, snd✝).2).hom
state_after: no goals
Theorem: Set.op_mem_op
File: Mathlib/Data/Set/Opposite.lean

tactic: rfl
state_before: α : Type u_1
s : Set α
a : α
⊢ { unop := a } ∈ s.op ↔ a ∈ s
state_after: no goals
Theorem: Nat.coprime_self
File: .lake/packages/batteries/Batteries/Data/Nat/Gcd.lean

tactic: simp [Coprime]
state_before: n : Nat
⊢ n.Coprime n ↔ n = 1
state_after: no goals
Theorem: Matrix.dotProduct_assoc
File: Mathlib/Data/Matrix/Basic.lean

tactic: simpa [dotProduct, Finset.mul_sum, Finset.sum_mul, mul_assoc] using Finset.sum_comm
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : Fintype m
inst✝¹ : Fintype n
inst✝ : NonUnitalSemiring α
u : m → α
w : n → α
v : Matrix m n α
⊢ (fun j => u ⬝ᵥ fun i => v i j) ⬝ᵥ w = u ⬝ᵥ fun i => v i ⬝ᵥ w
state_after: no goals
Theorem: Matroid.restrictSubtype_dual
File: Mathlib/Data/Matroid/Map.lean

tactic: rw [restrictSubtype, ← comapOn_preimage_eq, comapOn_dual_eq_of_bijOn, restrict_ground_eq_self,
  ← dual_ground, comapOn_preimage_eq, restrictSubtype, restrict_ground_eq_self]
state_before: α : Type u_1
β : Type u_2
f : α → β
E✝ I✝ s : Set α
M✝ : Matroid α
N : Matroid β
E X I : Set α
M : Matroid α
⊢ (M.restrictSubtype M.E)✶ = M✶.restrictSubtype M.E
state_after: α : Type u_1
β : Type u_2
f : α → β
E✝ I✝ s : Set α
M✝ : Matroid α
N : Matroid β
E X I : Set α
M : Matroid α
⊢ BijOn Subtype.val (M.E ↓∩ (M ↾ M.E).E) (M ↾ M.E).E

tactic: exact ⟨by simp [MapsTo], Subtype.val_injective.injOn, by simp [SurjOn, Subset.rfl]⟩
state_before: α : Type u_1
β : Type u_2
f : α → β
E✝ I✝ s : Set α
M✝ : Matroid α
N : Matroid β
E X I : Set α
M : Matroid α
⊢ BijOn Subtype.val (M.E ↓∩ (M ↾ M.E).E) (M ↾ M.E).E
state_after: no goals

tactic: simp [MapsTo]
state_before: α : Type u_1
β : Type u_2
f : α → β
E✝ I✝ s : Set α
M✝ : Matroid α
N : Matroid β
E X I : Set α
M : Matroid α
⊢ MapsTo Subtype.val (M.E ↓∩ (M ↾ M.E).E) (M ↾ M.E).E
state_after: no goals

tactic: simp [SurjOn, Subset.rfl]
state_before: α : Type u_1
β : Type u_2
f : α → β
E✝ I✝ s : Set α
M✝ : Matroid α
N : Matroid β
E X I : Set α
M : Matroid α
⊢ SurjOn Subtype.val (M.E ↓∩ (M ↾ M.E).E) (M ↾ M.E).E
state_after: no goals
Theorem: countable_setOf_covBy_left
File: Mathlib/Topology/Order/Basic.lean

tactic: convert countable_setOf_covBy_right (α := αᵒᵈ) using 5
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : SecondCountableTopology α
⊢ {x | ∃ y, y ⋖ x}.Countable
state_after: case h.e'_2.h.h.e'_2.h.h.h.e'_2.h.h.a
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : SecondCountableTopology α
e_1✝ : α = αᵒᵈ
x✝¹ x✝ : α
⊢ x✝ ⋖ x✝¹ ↔ x✝¹ ⋖ x✝

tactic: exact toDual_covBy_toDual_iff.symm
state_before: case h.e'_2.h.h.e'_2.h.h.h.e'_2.h.h.a
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : SecondCountableTopology α
e_1✝ : α = αᵒᵈ
x✝¹ x✝ : α
⊢ x✝ ⋖ x✝¹ ↔ x✝¹ ⋖ x✝
state_after: no goals
Theorem: List.getElem?_modifyNth_ne
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp only [getElem?_modifyNth, if_neg h, id_map']
state_before: α : Type u_1
f : α → α
m n : Nat
l : List α
h : m ≠ n
⊢ (modifyNth f m l)[n]? = l[n]?
state_after: no goals
Theorem: Complex.inv_zero
File: Mathlib/Data/Complex/Basic.lean

tactic: rw [← ofReal_zero, ← ofReal_inv, inv_zero]
state_before: ⊢ 0⁻¹ = 0
state_after: no goals
Theorem: toIocMod_eq_self
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: rw [toIocMod_eq_iff, and_iff_left]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a b c : α
n : ℤ
⊢ toIocMod hp a b = b ↔ b ∈ Set.Ioc a (a + p)
state_after: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a b c : α
n : ℤ
⊢ ∃ z, b = b + z • p

tactic: exact ⟨0, by simp⟩
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a b c : α
n : ℤ
⊢ ∃ z, b = b + z • p
state_after: no goals

tactic: simp
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a b c : α
n : ℤ
⊢ b = b + 0 • p
state_after: no goals
Theorem: AlgebraicGeometry.StructureSheaf.toStalk_comp_stalkToFiberRingHom
File: Mathlib/AlgebraicGeometry/StructureSheaf.lean

tactic: erw [toStalk, Category.assoc, germ_comp_stalkToFiberRingHom]
state_before: R : Type u
inst✝ : CommRing R
x : ↑(PrimeSpectrum.Top R)
⊢ toStalk R x ≫ stalkToFiberRingHom R x = algebraMap R (Localization.AtPrime x.asIdeal)
state_after: R : Type u
inst✝ : CommRing R
x : ↑(PrimeSpectrum.Top R)
⊢ toOpen R ⊤ ≫ openToLocalization R ⊤ ↑⟨x, True.intro⟩ ⋯ = algebraMap R (Localization.AtPrime x.asIdeal)

tactic: rfl
state_before: R : Type u
inst✝ : CommRing R
x : ↑(PrimeSpectrum.Top R)
⊢ toOpen R ⊤ ≫ openToLocalization R ⊤ ↑⟨x, True.intro⟩ ⋯ = algebraMap R (Localization.AtPrime x.asIdeal)
state_after: no goals
Theorem: star_mul_le_algebraMap_norm_sq
File: Mathlib/Analysis/NormedSpace/Star/ContinuousFunctionalCalculus/Order.lean

tactic: have : star a * a ≤ algebraMap ℝ A ‖star a * a‖ := IsSelfAdjoint.le_algebraMap_norm_self
state_before: A : Type u_1
inst✝⁷ : NormedRing A
inst✝⁶ : StarRing A
inst✝⁵ : CstarRing A
inst✝⁴ : CompleteSpace A
inst✝³ : NormedAlgebra ℂ A
inst✝² : StarModule ℂ A
inst✝¹ : PartialOrder A
inst✝ : StarOrderedRing A
a : A
⊢ star a * a ≤ (algebraMap ℝ A) (‖a‖ ^ 2)
state_after: A : Type u_1
inst✝⁷ : NormedRing A
inst✝⁶ : StarRing A
inst✝⁵ : CstarRing A
inst✝⁴ : CompleteSpace A
inst✝³ : NormedAlgebra ℂ A
inst✝² : StarModule ℂ A
inst✝¹ : PartialOrder A
inst✝ : StarOrderedRing A
a : A
this : star a * a ≤ (algebraMap ℝ A) ‖star a * a‖
⊢ star a * a ≤ (algebraMap ℝ A) (‖a‖ ^ 2)

tactic: rwa [CstarRing.norm_star_mul_self, ← pow_two] at this
state_before: A : Type u_1
inst✝⁷ : NormedRing A
inst✝⁶ : StarRing A
inst✝⁵ : CstarRing A
inst✝⁴ : CompleteSpace A
inst✝³ : NormedAlgebra ℂ A
inst✝² : StarModule ℂ A
inst✝¹ : PartialOrder A
inst✝ : StarOrderedRing A
a : A
this : star a * a ≤ (algebraMap ℝ A) ‖star a * a‖
⊢ star a * a ≤ (algebraMap ℝ A) (‖a‖ ^ 2)
state_after: no goals
Theorem: SeparationQuotient.map_unique
File: Mathlib/Topology/UniformSpace/Separation.lean

tactic: ext ⟨a⟩
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
hf : UniformContinuous f
g : SeparationQuotient α → SeparationQuotient β
comm : mk ∘ f = g ∘ mk
⊢ map f = g
state_after: case h.mk
α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
hf : UniformContinuous f
g : SeparationQuotient α → SeparationQuotient β
comm : mk ∘ f = g ∘ mk
x✝ : SeparationQuotient α
a : α
⊢ map f (Quot.mk Setoid.r a) = g (Quot.mk Setoid.r a)

tactic: calc
  map f ⟦a⟧ = ⟦f a⟧ := map_mk hf a
  _ = g ⟦a⟧ := congr_fun comm a
state_before: case h.mk
α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
f : α → β
hf : UniformContinuous f
g : SeparationQuotient α → SeparationQuotient β
comm : mk ∘ f = g ∘ mk
x✝ : SeparationQuotient α
a : α
⊢ map f (Quot.mk Setoid.r a) = g (Quot.mk Setoid.r a)
state_after: no goals
Theorem: Cardinal.mul_le_max_of_aleph0_le_right
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: simpa only [mul_comm b, max_comm b] using mul_le_max_of_aleph0_le_left h
state_before: a b : Cardinal.{u_1}
h : ℵ₀ ≤ b
⊢ a * b ≤ max a b
state_after: no goals
Theorem: Function.Periodic.sub_nat_mul_eq
File: Mathlib/Algebra/Periodic.lean

tactic: simpa only [nsmul_eq_mul] using h.sub_nsmul_eq n
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝ : Ring α
h : Periodic f c
n : ℕ
⊢ f (x - ↑n * c) = f x
state_after: no goals
Theorem: Mathlib.Tactic.Abel.zero_smul
File: Mathlib/Tactic/Abel.lean

tactic: simp [smul, nsmul_zero]
state_before: α : Type u_1
inst✝ : AddCommMonoid α
c : ℕ
⊢ smul c 0 = 0
state_after: no goals
Theorem: Fin.prod_univ_five
File: Mathlib/Algebra/BigOperators/Fin.lean

tactic: rw [prod_univ_castSucc, prod_univ_four]
state_before: α : Type u_1
β : Type u_2
inst✝ : CommMonoid β
f : Fin 5 → β
⊢ ∏ i : Fin 5, f i = f 0 * f 1 * f 2 * f 3 * f 4
state_after: α : Type u_1
β : Type u_2
inst✝ : CommMonoid β
f : Fin 5 → β
⊢ f (castSucc 0) * f (castSucc 1) * f (castSucc 2) * f (castSucc 3) * f (last 4) = f 0 * f 1 * f 2 * f 3 * f 4

tactic: rfl
state_before: α : Type u_1
β : Type u_2
inst✝ : CommMonoid β
f : Fin 5 → β
⊢ f (castSucc 0) * f (castSucc 1) * f (castSucc 2) * f (castSucc 3) * f (last 4) = f 0 * f 1 * f 2 * f 3 * f 4
state_after: no goals
Theorem: Polynomial.modByMonic_eq_mod
File: Mathlib/Algebra/Polynomial/FieldDivision.lean

tactic: simp only [Monic.def.1 hq, inv_one, mul_one, C_1]
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p✝ q p : R[X]
hq : q.Monic
⊢ p %ₘ q = p %ₘ (q * C q.leadingCoeff⁻¹)
state_after: no goals
Theorem: Equiv.Perm.not_solvable
File: Mathlib/GroupTheory/Solvable.lean

tactic: intro h
state_before: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
f : G →* G'
X : Type u_3
hX : 5 ≤ Cardinal.mk X
⊢ ¬IsSolvable (Perm X)
state_after: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
f : G →* G'
X : Type u_3
hX : 5 ≤ Cardinal.mk X
h : IsSolvable (Perm X)
⊢ False

tactic: have key : Nonempty (Fin 5 ↪ X) := by
  rwa [← Cardinal.lift_mk_le, Cardinal.mk_fin, Cardinal.lift_natCast, Cardinal.lift_id]
state_before: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
f : G →* G'
X : Type u_3
hX : 5 ≤ Cardinal.mk X
h : IsSolvable (Perm X)
⊢ False
state_after: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
f : G →* G'
X : Type u_3
hX : 5 ≤ Cardinal.mk X
h : IsSolvable (Perm X)
key : Nonempty (Fin 5 ↪ X)
⊢ False

tactic: exact
  Equiv.Perm.fin_5_not_solvable
    (solvable_of_solvable_injective (Equiv.Perm.viaEmbeddingHom_injective (Nonempty.some key)))
state_before: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
f : G →* G'
X : Type u_3
hX : 5 ≤ Cardinal.mk X
h : IsSolvable (Perm X)
key : Nonempty (Fin 5 ↪ X)
⊢ False
state_after: no goals

tactic: rwa [← Cardinal.lift_mk_le, Cardinal.mk_fin, Cardinal.lift_natCast, Cardinal.lift_id]
state_before: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
f : G →* G'
X : Type u_3
hX : 5 ≤ Cardinal.mk X
h : IsSolvable (Perm X)
⊢ Nonempty (Fin 5 ↪ X)
state_after: no goals
Theorem: UniformGroup.uniformity_countably_generated
File: Mathlib/Topology/Algebra/UniformGroup.lean

tactic: rw [uniformity_eq_comap_nhds_one]
state_before: α : Type u_1
β : Type u_2
inst✝³ : UniformSpace α
inst✝² : Group α
inst✝¹ : UniformGroup α
inst✝ : (𝓝 1).IsCountablyGenerated
⊢ (𝓤 α).IsCountablyGenerated
state_after: α : Type u_1
β : Type u_2
inst✝³ : UniformSpace α
inst✝² : Group α
inst✝¹ : UniformGroup α
inst✝ : (𝓝 1).IsCountablyGenerated
⊢ (comap (fun x => x.2 / x.1) (𝓝 1)).IsCountablyGenerated

tactic: exact Filter.comap.isCountablyGenerated _ _
state_before: α : Type u_1
β : Type u_2
inst✝³ : UniformSpace α
inst✝² : Group α
inst✝¹ : UniformGroup α
inst✝ : (𝓝 1).IsCountablyGenerated
⊢ (comap (fun x => x.2 / x.1) (𝓝 1)).IsCountablyGenerated
state_after: no goals