1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Set.image_sub_const_Ico
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [sub_eq_neg_add]
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
⊢ (fun x => x - a) '' Ico b c = Ico (b - a) (c - a)
state_after: no goals
Theorem: CategoryTheory.ShortComplex.Exact.unop
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

tactic: obtain ⟨h, z⟩ := h
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.19954, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S✝ S₁ S₂ : ShortComplex C
S : ShortComplex Cᵒᵖ
h : S.Exact
⊢ S.unop.Exact
state_after: case mk.intro
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.19954, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S✝ S₁ S₂ : ShortComplex C
S : ShortComplex Cᵒᵖ
h : S.HomologyData
z : IsZero h.left.H
⊢ S.unop.Exact

tactic: exact ⟨⟨h.unop, (IsZero.of_iso z h.iso.symm).unop⟩⟩
state_before: case mk.intro
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.19954, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S✝ S₁ S₂ : ShortComplex C
S : ShortComplex Cᵒᵖ
h : S.HomologyData
z : IsZero h.left.H
⊢ S.unop.Exact
state_after: no goals
Theorem: CategoryTheory.MorphismProperty.LeftFraction.map_eq_of_map_eq
File: Mathlib/CategoryTheory/Localization/CalculusOfFractions.lean

tactic: apply (Localization.uniq L₂ L₁ W).functor.map_injective
state_before: C : Type u_1
D : Type u_2
inst✝⁵ : Category.{u_4, u_1} C
inst✝⁴ : Category.{u_6, u_2} D
W : MorphismProperty C
inst✝³ : W.HasLeftCalculusOfFractions
X Y : C
φ₁ φ₂ : W.LeftFraction X Y
E : Type u_3
inst✝² : Category.{u_5, u_3} E
L₁ : C ⥤ D
L₂ : C ⥤ E
inst✝¹ : L₁.IsLocalization W
inst✝ : L₂.IsLocalization W
h : φ₁.map L₁ ⋯ = φ₂.map L₁ ⋯
⊢ φ₁.map L₂ ⋯ = φ₂.map L₂ ⋯
state_after: case a
C : Type u_1
D : Type u_2
inst✝⁵ : Category.{u_4, u_1} C
inst✝⁴ : Category.{u_6, u_2} D
W : MorphismProperty C
inst✝³ : W.HasLeftCalculusOfFractions
X Y : C
φ₁ φ₂ : W.LeftFraction X Y
E : Type u_3
inst✝² : Category.{u_5, u_3} E
L₁ : C ⥤ D
L₂ : C ⥤ E
inst✝¹ : L₁.IsLocalization W
inst✝ : L₂.IsLocalization W
h : φ₁.map L₁ ⋯ = φ₂.map L₁ ⋯
⊢ (Localization.uniq L₂ L₁ W).functor.map (φ₁.map L₂ ⋯) = (Localization.uniq L₂ L₁ W).functor.map (φ₂.map L₂ ⋯)

tactic: rw [map_compatibility φ₁ L₂ L₁, map_compatibility φ₂ L₂ L₁, h]
state_before: case a
C : Type u_1
D : Type u_2
inst✝⁵ : Category.{u_4, u_1} C
inst✝⁴ : Category.{u_6, u_2} D
W : MorphismProperty C
inst✝³ : W.HasLeftCalculusOfFractions
X Y : C
φ₁ φ₂ : W.LeftFraction X Y
E : Type u_3
inst✝² : Category.{u_5, u_3} E
L₁ : C ⥤ D
L₂ : C ⥤ E
inst✝¹ : L₁.IsLocalization W
inst✝ : L₂.IsLocalization W
h : φ₁.map L₁ ⋯ = φ₂.map L₁ ⋯
⊢ (Localization.uniq L₂ L₁ W).functor.map (φ₁.map L₂ ⋯) = (Localization.uniq L₂ L₁ W).functor.map (φ₂.map L₂ ⋯)
state_after: no goals
Theorem: Filter.mem_prod_top
File: Mathlib/Order/Filter/Prod.lean

tactic: rw [← principal_univ, mem_prod_principal]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s✝ : Set α
t : Set β
f : Filter α
g : Filter β
s : Set (α × β)
⊢ s ∈ f ×ˢ ⊤ ↔ {a | ∀ (b : β), (a, b) ∈ s} ∈ f
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s✝ : Set α
t : Set β
f : Filter α
g : Filter β
s : Set (α × β)
⊢ {a | ∀ b ∈ univ, (a, b) ∈ s} ∈ f ↔ {a | ∀ (b : β), (a, b) ∈ s} ∈ f

tactic: simp only [mem_univ, forall_true_left]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s✝ : Set α
t : Set β
f : Filter α
g : Filter β
s : Set (α × β)
⊢ {a | ∀ b ∈ univ, (a, b) ∈ s} ∈ f ↔ {a | ∀ (b : β), (a, b) ∈ s} ∈ f
state_after: no goals
Theorem: Measurable.mul_iff_right
File: Mathlib/MeasureTheory/Group/Arithmetic.lean

tactic: simp only [mul_inv_cancel_comm]
state_before: α : Type u_1
G : Type u_2
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace α
inst✝² : CommGroup G
inst✝¹ : MeasurableMul₂ G
inst✝ : MeasurableInv G
f g : α → G
hf : Measurable f
h : Measurable (f * g)
⊢ g = f * g * f⁻¹
state_after: no goals
Theorem: Traversable.traverse_comp
File: Mathlib/Control/Traversable/Lemmas.lean

tactic: ext
state_before: t : Type u → Type u
inst✝⁵ : Traversable t
inst✝⁴ : LawfulTraversable t
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : LawfulApplicative F
inst✝¹ : Applicative G
inst✝ : LawfulApplicative G
α β γ : Type u
g✝ : α → F β
h✝ : β → G γ
f : β → γ
x : t β
g : α → F β
h : β → G γ
⊢ traverse (Comp.mk ∘ map h ∘ g) = Comp.mk ∘ map (traverse h) ∘ traverse g
state_after: case h
t : Type u → Type u
inst✝⁵ : Traversable t
inst✝⁴ : LawfulTraversable t
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : LawfulApplicative F
inst✝¹ : Applicative G
inst✝ : LawfulApplicative G
α β γ : Type u
g✝ : α → F β
h✝ : β → G γ
f : β → γ
x : t β
g : α → F β
h : β → G γ
x✝ : t α
⊢ traverse (Comp.mk ∘ map h ∘ g) x✝ = (Comp.mk ∘ map (traverse h) ∘ traverse g) x✝

tactic: exact comp_traverse _ _ _
state_before: case h
t : Type u → Type u
inst✝⁵ : Traversable t
inst✝⁴ : LawfulTraversable t
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : LawfulApplicative F
inst✝¹ : Applicative G
inst✝ : LawfulApplicative G
α β γ : Type u
g✝ : α → F β
h✝ : β → G γ
f : β → γ
x : t β
g : α → F β
h : β → G γ
x✝ : t α
⊢ traverse (Comp.mk ∘ map h ∘ g) x✝ = (Comp.mk ∘ map (traverse h) ∘ traverse g) x✝
state_after: no goals
Theorem: Grp.SurjectiveOfEpiAuxs.τ_symm_apply_fromCoset
File: Mathlib/Algebra/Category/Grp/EpiMono.lean

tactic: rw [tau, Equiv.symm_swap, Equiv.swap_apply_left]
state_before: A B : Grp
f : A ⟶ B
⊢ (Equiv.symm τ) (fromCoset ⟨↑(MonoidHom.range f), ⋯⟩) = ∞
state_after: no goals
Theorem: LinearMap.toMatrixAlgEquiv_mul
File: Mathlib/LinearAlgebra/Matrix/ToLin.lean

tactic: rw [LinearMap.mul_eq_comp, LinearMap.toMatrixAlgEquiv_comp v₁ f g]
state_before: R : Type u_1
inst✝⁹ : CommSemiring R
l : Type u_2
m : Type u_3
n : Type u_4
inst✝⁸ : Fintype n
inst✝⁷ : Fintype m
inst✝⁶ : DecidableEq n
M₁ : Type u_5
M₂ : Type u_6
inst✝⁵ : AddCommMonoid M₁
inst✝⁴ : AddCommMonoid M₂
inst✝³ : Module R M₁
inst✝² : Module R M₂
v₁ : Basis n R M₁
v₂ : Basis m R M₂
M₃ : Type u_7
inst✝¹ : AddCommMonoid M₃
inst✝ : Module R M₃
v₃ : Basis l R M₃
f g : M₁ →ₗ[R] M₁
⊢ (toMatrixAlgEquiv v₁) (f * g) = (toMatrixAlgEquiv v₁) f * (toMatrixAlgEquiv v₁) g
state_after: no goals
Theorem: ZMod.nonsquare_iff_jacobiSym_eq_neg_one
File: Mathlib/NumberTheory/LegendreSymbol/JacobiSymbol.lean

tactic: rw [← legendreSym.to_jacobiSym]
state_before: a : ℤ
p : ℕ
inst✝ : Fact (Nat.Prime p)
⊢ J(a | p) = -1 ↔ ¬IsSquare ↑a
state_after: a : ℤ
p : ℕ
inst✝ : Fact (Nat.Prime p)
⊢ legendreSym p a = -1 ↔ ¬IsSquare ↑a

tactic: exact legendreSym.eq_neg_one_iff p
state_before: a : ℤ
p : ℕ
inst✝ : Fact (Nat.Prime p)
⊢ legendreSym p a = -1 ↔ ¬IsSquare ↑a
state_after: no goals
Theorem: PadicInt.cast_toZModPow
File: Mathlib/NumberTheory/Padics/RingHoms.lean

tactic: rw [← zmod_cast_comp_toZModPow _ _ h]
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ : ℤ_[p]
m n : ℕ
h : m ≤ n
x : ℤ_[p]
⊢ ((toZModPow n) x).cast = (toZModPow m) x
state_after: p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ : ℤ_[p]
m n : ℕ
h : m ≤ n
x : ℤ_[p]
⊢ ((toZModPow n) x).cast = ((ZMod.castHom ⋯ (ZMod (p ^ m))).comp (toZModPow n)) x

tactic: rfl
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ : ℤ_[p]
m n : ℕ
h : m ≤ n
x : ℤ_[p]
⊢ ((toZModPow n) x).cast = ((ZMod.castHom ⋯ (ZMod (p ^ m))).comp (toZModPow n)) x
state_after: no goals
Theorem: Grp.surjective_of_epi
File: Mathlib/Algebra/Category/Grp/EpiMono.lean

tactic: by_contra r
state_before: A B : Grp
f : A ⟶ B
inst✝ : Epi f
⊢ Function.Surjective ⇑f
state_after: A B : Grp
f : A ⟶ B
inst✝ : Epi f
r : ¬Function.Surjective ⇑f
⊢ False

tactic: dsimp [Function.Surjective] at r
state_before: A B : Grp
f : A ⟶ B
inst✝ : Epi f
r : ¬Function.Surjective ⇑f
⊢ False
state_after: A B : Grp
f : A ⟶ B
inst✝ : Epi f
r : ¬∀ (b : ↑B), ∃ a, f a = b
⊢ False

tactic: push_neg at r
state_before: A B : Grp
f : A ⟶ B
inst✝ : Epi f
r : ¬∀ (b : ↑B), ∃ a, f a = b
⊢ False
state_after: A B : Grp
f : A ⟶ B
inst✝ : Epi f
r : ∃ b, ∀ (a : ↑A), f a ≠ b
⊢ False

tactic: rcases r with ⟨b, hb⟩
state_before: A B : Grp
f : A ⟶ B
inst✝ : Epi f
r : ∃ b, ∀ (a : ↑A), f a ≠ b
⊢ False
state_after: case intro
A B : Grp
f : A ⟶ B
inst✝ : Epi f
b : ↑B
hb : ∀ (a : ↑A), f a ≠ b
⊢ False

tactic: exact
  SurjectiveOfEpiAuxs.g_ne_h f b (fun ⟨c, hc⟩ => hb _ hc)
    ((cancel_epi f).1 (SurjectiveOfEpiAuxs.comp_eq f))
state_before: case intro
A B : Grp
f : A ⟶ B
inst✝ : Epi f
b : ↑B
hb : ∀ (a : ↑A), f a ≠ b
⊢ False
state_after: no goals
Theorem: IsCyclic.exponent_eq_card
File: Mathlib/GroupTheory/SpecificGroups/Cyclic.lean

tactic: obtain ⟨g, hg⟩ := IsCyclic.exists_generator (α := α)
state_before: α : Type u
a : α
inst✝² : Group α
inst✝¹ : IsCyclic α
inst✝ : Fintype α
⊢ exponent α = Fintype.card α
state_after: case intro
α : Type u
a : α
inst✝² : Group α
inst✝¹ : IsCyclic α
inst✝ : Fintype α
g : α
hg : ∀ (x : α), x ∈ Subgroup.zpowers g
⊢ exponent α = Fintype.card α

tactic: apply Nat.dvd_antisymm
state_before: case intro
α : Type u
a : α
inst✝² : Group α
inst✝¹ : IsCyclic α
inst✝ : Fintype α
g : α
hg : ∀ (x : α), x ∈ Subgroup.zpowers g
⊢ exponent α = Fintype.card α
state_after: case intro.a
α : Type u
a : α
inst✝² : Group α
inst✝¹ : IsCyclic α
inst✝ : Fintype α
g : α
hg : ∀ (x : α), x ∈ Subgroup.zpowers g
⊢ exponent α ∣ Fintype.card α

case intro.a
α : Type u
a : α
inst✝² : Group α
inst✝¹ : IsCyclic α
inst✝ : Fintype α
g : α
hg : ∀ (x : α), x ∈ Subgroup.zpowers g
⊢ Fintype.card α ∣ exponent α

tactic: rw [← orderOf_eq_card_of_forall_mem_zpowers hg]
state_before: case intro.a
α : Type u
a : α
inst✝² : Group α
inst✝¹ : IsCyclic α
inst✝ : Fintype α
g : α
hg : ∀ (x : α), x ∈ Subgroup.zpowers g
⊢ Fintype.card α ∣ exponent α
state_after: case intro.a
α : Type u
a : α
inst✝² : Group α
inst✝¹ : IsCyclic α
inst✝ : Fintype α
g : α
hg : ∀ (x : α), x ∈ Subgroup.zpowers g
⊢ orderOf g ∣ exponent α

tactic: exact order_dvd_exponent _
state_before: case intro.a
α : Type u
a : α
inst✝² : Group α
inst✝¹ : IsCyclic α
inst✝ : Fintype α
g : α
hg : ∀ (x : α), x ∈ Subgroup.zpowers g
⊢ orderOf g ∣ exponent α
state_after: no goals

tactic: rw [← lcm_orderOf_eq_exponent, Finset.lcm_dvd_iff]
state_before: case intro.a
α : Type u
a : α
inst✝² : Group α
inst✝¹ : IsCyclic α
inst✝ : Fintype α
g : α
hg : ∀ (x : α), x ∈ Subgroup.zpowers g
⊢ exponent α ∣ Fintype.card α
state_after: case intro.a
α : Type u
a : α
inst✝² : Group α
inst✝¹ : IsCyclic α
inst✝ : Fintype α
g : α
hg : ∀ (x : α), x ∈ Subgroup.zpowers g
⊢ ∀ b ∈ Finset.univ, orderOf b ∣ Fintype.card α

tactic: exact fun b _ => orderOf_dvd_card
state_before: case intro.a
α : Type u
a : α
inst✝² : Group α
inst✝¹ : IsCyclic α
inst✝ : Fintype α
g : α
hg : ∀ (x : α), x ∈ Subgroup.zpowers g
⊢ ∀ b ∈ Finset.univ, orderOf b ∣ Fintype.card α
state_after: no goals
Theorem: Multiset.cons_union_distrib
File: Mathlib/Data/Multiset/Basic.lean

tactic: simpa using add_union_distrib (a ::ₘ 0) s t
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ t✝ u : Multiset α
a✝ b a : α
s t : Multiset α
⊢ a ::ₘ (s ∪ t) = a ::ₘ s ∪ a ::ₘ t
state_after: no goals
Theorem: Nat.nonempty_primeFactors
File: Mathlib/Data/Nat/PrimeFin.lean

tactic: rw [← not_iff_not, Finset.not_nonempty_iff_eq_empty, primeFactors_eq_empty, not_lt,
  Nat.le_one_iff_eq_zero_or_eq_one]
state_before: a b k m n✝ p n : ℕ
⊢ n.primeFactors.Nonempty ↔ 1 < n
state_after: no goals
Theorem: NonemptyInterval.toProd_injective
File: Mathlib/Order/Interval/Basic.lean

tactic: cases s
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
κ : ι → Sort u_6
inst✝ : LE α
s✝ t✝ s t : NonemptyInterval α
h : s.toProd = t.toProd
⊢ s = t
state_after: case mk
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
κ : ι → Sort u_6
inst✝ : LE α
s t✝ t : NonemptyInterval α
toProd✝ : α × α
fst_le_snd✝ : toProd✝.1 ≤ toProd✝.2
h : { toProd := toProd✝, fst_le_snd := fst_le_snd✝ }.toProd = t.toProd
⊢ { toProd := toProd✝, fst_le_snd := fst_le_snd✝ } = t

tactic: cases t
state_before: case mk
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
κ : ι → Sort u_6
inst✝ : LE α
s t✝ t : NonemptyInterval α
toProd✝ : α × α
fst_le_snd✝ : toProd✝.1 ≤ toProd✝.2
h : { toProd := toProd✝, fst_le_snd := fst_le_snd✝ }.toProd = t.toProd
⊢ { toProd := toProd✝, fst_le_snd := fst_le_snd✝ } = t
state_after: case mk.mk
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
κ : ι → Sort u_6
inst✝ : LE α
s t : NonemptyInterval α
toProd✝¹ : α × α
fst_le_snd✝¹ : toProd✝¹.1 ≤ toProd✝¹.2
toProd✝ : α × α
fst_le_snd✝ : toProd✝.1 ≤ toProd✝.2
h : { toProd := toProd✝¹, fst_le_snd := fst_le_snd✝¹ }.toProd = { toProd := toProd✝, fst_le_snd := fst_le_snd✝ }.toProd
⊢ { toProd := toProd✝¹, fst_le_snd := fst_le_snd✝¹ } = { toProd := toProd✝, fst_le_snd := fst_le_snd✝ }

tactic: congr
state_before: case mk.mk
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
κ : ι → Sort u_6
inst✝ : LE α
s t : NonemptyInterval α
toProd✝¹ : α × α
fst_le_snd✝¹ : toProd✝¹.1 ≤ toProd✝¹.2
toProd✝ : α × α
fst_le_snd✝ : toProd✝.1 ≤ toProd✝.2
h : { toProd := toProd✝¹, fst_le_snd := fst_le_snd✝¹ }.toProd = { toProd := toProd✝, fst_le_snd := fst_le_snd✝ }.toProd
⊢ { toProd := toProd✝¹, fst_le_snd := fst_le_snd✝¹ } = { toProd := toProd✝, fst_le_snd := fst_le_snd✝ }
state_after: no goals
Theorem: CategoryTheory.Limits.Types.Quot.desc_colimitCocone
File: Mathlib/CategoryTheory/Limits/Types.lean

tactic: ext ⟨j, x⟩
state_before: J : Type v
inst✝¹ : Category.{w, v} J
F : J ⥤ Type u
inst✝ : Small.{u, max u v} (Quot F)
⊢ desc (colimitCocone F) = ⇑(equivShrink (Quot F))
state_after: case h.mk.mk
J : Type v
inst✝¹ : Category.{w, v} J
F : J ⥤ Type u
inst✝ : Small.{u, max u v} (Quot F)
x✝ : Quot F
j : J
x : F.obj j
⊢ desc (colimitCocone F) (Quot.mk (Rel F) ⟨j, x⟩) = (equivShrink (Quot F)) (Quot.mk (Rel F) ⟨j, x⟩)

tactic: rfl
state_before: case h.mk.mk
J : Type v
inst✝¹ : Category.{w, v} J
F : J ⥤ Type u
inst✝ : Small.{u, max u v} (Quot F)
x✝ : Quot F
j : J
x : F.obj j
⊢ desc (colimitCocone F) (Quot.mk (Rel F) ⟨j, x⟩) = (equivShrink (Quot F)) (Quot.mk (Rel F) ⟨j, x⟩)
state_after: no goals
Theorem: Matrix.nonsing_inv_cancel_or_zero
File: Mathlib/LinearAlgebra/Matrix/NonsingularInverse.lean

tactic: by_cases h : 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⁻¹ * A = 1 ∧ A * A⁻¹ = 1 ∨ A⁻¹ = 0
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 : IsUnit A.det
⊢ A⁻¹ * A = 1 ∧ A * A⁻¹ = 1 ∨ A⁻¹ = 0

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 : ¬IsUnit A.det
⊢ A⁻¹ * A = 1 ∧ A * A⁻¹ = 1 ∨ A⁻¹ = 0

tactic: exact Or.inl ⟨nonsing_inv_mul _ h, mul_nonsing_inv _ h⟩
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 : IsUnit A.det
⊢ A⁻¹ * A = 1 ∧ A * A⁻¹ = 1 ∨ A⁻¹ = 0
state_after: no goals

tactic: exact Or.inr (nonsing_inv_apply_not_isUnit _ h)
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 : ¬IsUnit A.det
⊢ A⁻¹ * A = 1 ∧ A * A⁻¹ = 1 ∨ A⁻¹ = 0
state_after: no goals
Theorem: LinearMap.toSpanSingleton_homothety
File: Mathlib/Analysis/NormedSpace/Span.lean

tactic: rw [mul_comm]
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedDivisionRing 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : Module 𝕜 E
inst✝ : BoundedSMul 𝕜 E
x : E
c : 𝕜
⊢ ‖(toSpanSingleton 𝕜 E x) c‖ = ‖x‖ * ‖c‖
state_after: 𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedDivisionRing 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : Module 𝕜 E
inst✝ : BoundedSMul 𝕜 E
x : E
c : 𝕜
⊢ ‖(toSpanSingleton 𝕜 E x) c‖ = ‖c‖ * ‖x‖

tactic: exact norm_smul _ _
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedDivisionRing 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : Module 𝕜 E
inst✝ : BoundedSMul 𝕜 E
x : E
c : 𝕜
⊢ ‖(toSpanSingleton 𝕜 E x) c‖ = ‖c‖ * ‖x‖
state_after: no goals
Theorem: Monoid.exponent_dvd_of_monoidHom
File: Mathlib/GroupTheory/Exponent.lean

tactic: rw [map_pow, pow_exponent_eq_one, map_one]
state_before: G : Type u
inst✝¹ : Monoid G
H : Type u_1
inst✝ : Monoid H
e : G →* H
e_inj : Function.Injective ⇑e
g : G
⊢ e (g ^ exponent H) = e 1
state_after: no goals
Theorem: Multipliable.trans_div
File: Mathlib/Topology/Algebra/InfiniteSum/Group.lean

tactic: simpa only [div_mul_cancel] using hfg.mul hg
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : CommGroup α
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalGroup α
f g : β → α
a a₁ a₂ : α
hg : Multipliable g
hfg : Multipliable fun b => f b / g b
⊢ Multipliable f
state_after: no goals
Theorem: EMetric.diam_pair
File: Mathlib/Topology/EMetricSpace/Basic.lean

tactic: simp only [iSup_singleton, diam_insert, diam_singleton, ENNReal.max_zero_right]
state_before: α : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α
x y z : α
ε ε₁ ε₂ : ℝ≥0∞
s t : Set α
⊢ diam {x, y} = edist x y
state_after: no goals
Theorem: Polynomial.roots_expand_pow_map_iterateFrobenius
File: Mathlib/FieldTheory/Perfect.lean

tactic: simp_rw [← coe_iterateFrobeniusEquiv, roots_expand_pow, Multiset.map_nsmul,
  Multiset.map_map, comp_apply, RingEquiv.apply_symm_apply, map_id']
state_before: R : Type u_1
inst✝³ : CommRing R
inst✝² : IsDomain R
p n : ℕ
inst✝¹ : ExpChar R p
f : R[X]
inst✝ : PerfectRing R p
⊢ Multiset.map (⇑(iterateFrobenius R p n)) ((expand R (p ^ n)) f).roots = p ^ n • f.roots
state_after: no goals
Theorem: Filter.exists_lt_of_tendsto_atTop
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: cases' exists_gt b with b' hb'
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝² : SemilatticeSup α
inst✝¹ : Preorder β
inst✝ : NoMaxOrder β
u : α → β
h : Tendsto u atTop atTop
a : α
b : β
⊢ ∃ a' ≥ a, b < u a'
state_after: case intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝² : SemilatticeSup α
inst✝¹ : Preorder β
inst✝ : NoMaxOrder β
u : α → β
h : Tendsto u atTop atTop
a : α
b b' : β
hb' : b < b'
⊢ ∃ a' ≥ a, b < u a'

tactic: rcases exists_le_of_tendsto_atTop h a b' with ⟨a', ha', ha''⟩
state_before: case intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝² : SemilatticeSup α
inst✝¹ : Preorder β
inst✝ : NoMaxOrder β
u : α → β
h : Tendsto u atTop atTop
a : α
b b' : β
hb' : b < b'
⊢ ∃ a' ≥ a, b < u a'
state_after: case intro.intro.intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝² : SemilatticeSup α
inst✝¹ : Preorder β
inst✝ : NoMaxOrder β
u : α → β
h : Tendsto u atTop atTop
a : α
b b' : β
hb' : b < b'
a' : α
ha' : a' ≥ a
ha'' : b' ≤ u a'
⊢ ∃ a' ≥ a, b < u a'

tactic: exact ⟨a', ha', lt_of_lt_of_le hb' ha''⟩
state_before: case intro.intro.intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝² : SemilatticeSup α
inst✝¹ : Preorder β
inst✝ : NoMaxOrder β
u : α → β
h : Tendsto u atTop atTop
a : α
b b' : β
hb' : b < b'
a' : α
ha' : a' ≥ a
ha'' : b' ≤ u a'
⊢ ∃ a' ≥ a, b < u a'
state_after: no goals
Theorem: ComplexShape.quotient_isLocalization
File: Mathlib/Algebra/Homology/Localization.lean

tactic: apply Functor.IsLocalization.mk'
state_before: ι : Type u_1
c : ComplexShape ι
hc : ∀ (j : ι), ∃ i, c.Rel i j
C : Type u_2
inst✝² : Category.{u_3, u_2} C
inst✝¹ : Preadditive C
inst✝ : HasBinaryBiproducts C
⊢ (HomotopyCategory.quotient C c).IsLocalization (HomologicalComplex.homotopyEquivalences C c)
state_after: case h₁
ι : Type u_1
c : ComplexShape ι
hc : ∀ (j : ι), ∃ i, c.Rel i j
C : Type u_2
inst✝² : Category.{u_3, u_2} C
inst✝¹ : Preadditive C
inst✝ : HasBinaryBiproducts C
⊢ Localization.StrictUniversalPropertyFixedTarget (HomotopyCategory.quotient C c)
    (HomologicalComplex.homotopyEquivalences C c) (HomotopyCategory C c)

case h₂
ι : Type u_1
c : ComplexShape ι
hc : ∀ (j : ι), ∃ i, c.Rel i j
C : Type u_2
inst✝² : Category.{u_3, u_2} C
inst✝¹ : Preadditive C
inst✝ : HasBinaryBiproducts C
⊢ Localization.StrictUniversalPropertyFixedTarget (HomotopyCategory.quotient C c)
    (HomologicalComplex.homotopyEquivalences C c) (HomologicalComplex.homotopyEquivalences C c).Localization

tactic: all_goals apply c.strictUniversalPropertyFixedTargetQuotient hc
state_before: case h₁
ι : Type u_1
c : ComplexShape ι
hc : ∀ (j : ι), ∃ i, c.Rel i j
C : Type u_2
inst✝² : Category.{u_3, u_2} C
inst✝¹ : Preadditive C
inst✝ : HasBinaryBiproducts C
⊢ Localization.StrictUniversalPropertyFixedTarget (HomotopyCategory.quotient C c)
    (HomologicalComplex.homotopyEquivalences C c) (HomotopyCategory C c)

case h₂
ι : Type u_1
c : ComplexShape ι
hc : ∀ (j : ι), ∃ i, c.Rel i j
C : Type u_2
inst✝² : Category.{u_3, u_2} C
inst✝¹ : Preadditive C
inst✝ : HasBinaryBiproducts C
⊢ Localization.StrictUniversalPropertyFixedTarget (HomotopyCategory.quotient C c)
    (HomologicalComplex.homotopyEquivalences C c) (HomologicalComplex.homotopyEquivalences C c).Localization
state_after: no goals

tactic: apply c.strictUniversalPropertyFixedTargetQuotient hc
state_before: case h₂
ι : Type u_1
c : ComplexShape ι
hc : ∀ (j : ι), ∃ i, c.Rel i j
C : Type u_2
inst✝² : Category.{u_3, u_2} C
inst✝¹ : Preadditive C
inst✝ : HasBinaryBiproducts C
⊢ Localization.StrictUniversalPropertyFixedTarget (HomotopyCategory.quotient C c)
    (HomologicalComplex.homotopyEquivalences C c) (HomologicalComplex.homotopyEquivalences C c).Localization
state_after: no goals
Theorem: Trivialization.apply_symm_apply_eq_coordChangeL
File: Mathlib/Topology/VectorBundle/Basic.lean

tactic: rw [e.mk_coordChangeL e' hb, e.mk_symm hb.1]
state_before: R : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
inst✝⁹ : Semiring R
inst✝⁸ : TopologicalSpace F
inst✝⁷ : TopologicalSpace B
inst✝⁶ : TopologicalSpace (TotalSpace F E)
e✝ : Trivialization F TotalSpace.proj
x : TotalSpace F E
b✝ : B
y : E b✝
inst✝⁵ : AddCommMonoid F
inst✝⁴ : Module R F
inst✝³ : (x : B) → AddCommMonoid (E x)
inst✝² : (x : B) → Module R (E x)
e e' : Trivialization F TotalSpace.proj
inst✝¹ : Trivialization.IsLinear R e
inst✝ : Trivialization.IsLinear R e'
b : B
hb : b ∈ e.baseSet ∩ e'.baseSet
v : F
⊢ ↑e' (↑e.symm (b, v)) = (b, (coordChangeL R e e' b) v)
state_after: no goals
Theorem: Decidable.exists_ne
File: Mathlib/Logic/Nontrivial/Defs.lean

tactic: rcases exists_pair_ne α with ⟨y, y', h⟩
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Nontrivial α
inst✝ : DecidableEq α
x : α
⊢ ∃ y, y ≠ x
state_after: case intro.intro
α : Type u_1
β : Type u_2
inst✝¹ : Nontrivial α
inst✝ : DecidableEq α
x y y' : α
h : y ≠ y'
⊢ ∃ y, y ≠ x

tactic: by_cases hx:x = y
state_before: case intro.intro
α : Type u_1
β : Type u_2
inst✝¹ : Nontrivial α
inst✝ : DecidableEq α
x y y' : α
h : y ≠ y'
⊢ ∃ y, y ≠ x
state_after: case pos
α : Type u_1
β : Type u_2
inst✝¹ : Nontrivial α
inst✝ : DecidableEq α
x y y' : α
h : y ≠ y'
hx : x = y
⊢ ∃ y, y ≠ x

case neg
α : Type u_1
β : Type u_2
inst✝¹ : Nontrivial α
inst✝ : DecidableEq α
x y y' : α
h : y ≠ y'
hx : ¬x = y
⊢ ∃ y, y ≠ x

tactic: rw [← hx] at h
state_before: case pos
α : Type u_1
β : Type u_2
inst✝¹ : Nontrivial α
inst✝ : DecidableEq α
x y y' : α
h : y ≠ y'
hx : x = y
⊢ ∃ y, y ≠ x
state_after: case pos
α : Type u_1
β : Type u_2
inst✝¹ : Nontrivial α
inst✝ : DecidableEq α
x y y' : α
h : x ≠ y'
hx : x = y
⊢ ∃ y, y ≠ x

tactic: exact ⟨y', h.symm⟩
state_before: case pos
α : Type u_1
β : Type u_2
inst✝¹ : Nontrivial α
inst✝ : DecidableEq α
x y y' : α
h : x ≠ y'
hx : x = y
⊢ ∃ y, y ≠ x
state_after: no goals

tactic: exact ⟨y, Ne.symm hx⟩
state_before: case neg
α : Type u_1
β : Type u_2
inst✝¹ : Nontrivial α
inst✝ : DecidableEq α
x y y' : α
h : y ≠ y'
hx : ¬x = y
⊢ ∃ y, y ≠ x
state_after: no goals