1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Fintype.card_congr
File: Mathlib/Data/Fintype/Card.lean

tactic: rw [← ofEquiv_card f]
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Fintype α
inst✝ : Fintype β
f : α ≃ β
⊢ card α = card β
state_after: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Fintype α
inst✝ : Fintype β
f : α ≃ β
⊢ card β = card β

tactic: congr
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Fintype α
inst✝ : Fintype β
f : α ≃ β
⊢ card β = card β
state_after: case h.e_2.h
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Fintype α
inst✝ : Fintype β
f : α ≃ β
⊢ ofEquiv α f = inst✝

tactic: apply Subsingleton.elim
state_before: case h.e_2.h
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Fintype α
inst✝ : Fintype β
f : α ≃ β
⊢ ofEquiv α f = inst✝
state_after: no goals
Theorem: Filter.HasBasis.vitaliFamily
File: Mathlib/MeasureTheory/Covering/VitaliFamily.lean

tactic: simpa only [← Set.setOf_inter_eq_sep] using h.smallSets.inf_principal _
state_before: α : Type u_1
inst✝ : MetricSpace α
m0 : MeasurableSpace α
μ : Measure α
v : VitaliFamily μ
ι : Sort u_2
p : ι → Prop
s : ι → Set α
x : α
h : (𝓝 x).HasBasis p s
⊢ (v.filterAt x).HasBasis p fun i => {t | t ∈ v.setsAt x ∧ t ⊆ s i}
state_after: no goals
Theorem: continuousAt_of_tendsto_nhds
File: Mathlib/Topology/Separation.lean

tactic: rwa [ContinuousAt, eq_of_tendsto_nhds h]
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : T1Space Y
f : X → Y
x : X
y : Y
h : Tendsto f (𝓝 x) (𝓝 y)
⊢ ContinuousAt f x
state_after: no goals
Theorem: AlgebraicGeometry.Scheme.Pullback.cocycle_snd_fst_fst
File: Mathlib/AlgebraicGeometry/Pullbacks.lean

tactic: rw [← cancel_mono (𝒰.map i)]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
i j k : 𝒰.J
⊢ t' 𝒰 f g i j k ≫ t' 𝒰 f g j k i ≫ t' 𝒰 f g k i j ≫ pullback.snd ≫ pullback.fst ≫ pullback.fst =
    pullback.snd ≫ pullback.fst ≫ pullback.fst
state_after: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
i j k : 𝒰.J
⊢ (t' 𝒰 f g i j k ≫ t' 𝒰 f g j k i ≫ t' 𝒰 f g k i j ≫ pullback.snd ≫ pullback.fst ≫ pullback.fst) ≫ 𝒰.map i =
    (pullback.snd ≫ pullback.fst ≫ pullback.fst) ≫ 𝒰.map i

tactic: simp only [pullback.condition_assoc, t'_snd_fst_fst, t'_fst_snd, t'_snd_snd]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
i j k : 𝒰.J
⊢ (t' 𝒰 f g i j k ≫ t' 𝒰 f g j k i ≫ t' 𝒰 f g k i j ≫ pullback.snd ≫ pullback.fst ≫ pullback.fst) ≫ 𝒰.map i =
    (pullback.snd ≫ pullback.fst ≫ pullback.fst) ≫ 𝒰.map i
state_after: no goals
Theorem: lt_mul_inv_iff_mul_lt
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [inv_mul_cancel_right]
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LT α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c : α
⊢ c * b < a * b⁻¹ * b ↔ c * b < a
state_after: no goals
Theorem: List.any_iff_exists
File: Mathlib/Data/Bool/AllAny.lean

tactic: induction' l with a l ih
state_before: α : Type u_1
p✝ : α → Prop
inst✝ : DecidablePred p✝
l : List α
a : α
p : α → Bool
⊢ l.any p = true ↔ ∃ a, a ∈ l ∧ p a = true
state_after: case nil
α : Type u_1
p✝ : α → Prop
inst✝ : DecidablePred p✝
l : List α
a : α
p : α → Bool
⊢ [].any p = true ↔ ∃ a, a ∈ [] ∧ p a = true

case cons
α : Type u_1
p✝ : α → Prop
inst✝ : DecidablePred p✝
l✝ : List α
a✝ : α
p : α → Bool
a : α
l : List α
ih : l.any p = true ↔ ∃ a, a ∈ l ∧ p a = true
⊢ (a :: l).any p = true ↔ ∃ a_1, a_1 ∈ a :: l ∧ p a_1 = true

tactic: simp only [any_cons, Bool.or_eq_true_iff, ih, exists_mem_cons_iff]
state_before: case cons
α : Type u_1
p✝ : α → Prop
inst✝ : DecidablePred p✝
l✝ : List α
a✝ : α
p : α → Bool
a : α
l : List α
ih : l.any p = true ↔ ∃ a, a ∈ l ∧ p a = true
⊢ (a :: l).any p = true ↔ ∃ a_1, a_1 ∈ a :: l ∧ p a_1 = true
state_after: no goals

tactic: exact iff_of_false Bool.false_ne_true (not_exists_mem_nil _)
state_before: case nil
α : Type u_1
p✝ : α → Prop
inst✝ : DecidablePred p✝
l : List α
a : α
p : α → Bool
⊢ [].any p = true ↔ ∃ a, a ∈ [] ∧ p a = true
state_after: no goals
Theorem: CategoryTheory.Subgroupoid.mul_mem_cancel_left
File: Mathlib/CategoryTheory/Groupoid/Subgroupoid.lean

tactic: constructor
state_before: C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c d e : C
f : c ⟶ d
g : d ⟶ e
hf : f ∈ S.arrows c d
⊢ f ≫ g ∈ S.arrows c e ↔ g ∈ S.arrows d e
state_after: case mp
C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c d e : C
f : c ⟶ d
g : d ⟶ e
hf : f ∈ S.arrows c d
⊢ f ≫ g ∈ S.arrows c e → g ∈ S.arrows d e

case mpr
C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c d e : C
f : c ⟶ d
g : d ⟶ e
hf : f ∈ S.arrows c d
⊢ g ∈ S.arrows d e → f ≫ g ∈ S.arrows c e

tactic: rintro h
state_before: case mp
C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c d e : C
f : c ⟶ d
g : d ⟶ e
hf : f ∈ S.arrows c d
⊢ f ≫ g ∈ S.arrows c e → g ∈ S.arrows d e
state_after: case mp
C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c d e : C
f : c ⟶ d
g : d ⟶ e
hf : f ∈ S.arrows c d
h : f ≫ g ∈ S.arrows c e
⊢ g ∈ S.arrows d e

tactic: suffices Groupoid.inv f ≫ f ≫ g ∈ S.arrows d e by
  simpa only [inv_eq_inv, IsIso.inv_hom_id_assoc] using this
state_before: case mp
C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c d e : C
f : c ⟶ d
g : d ⟶ e
hf : f ∈ S.arrows c d
h : f ≫ g ∈ S.arrows c e
⊢ g ∈ S.arrows d e
state_after: case mp
C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c d e : C
f : c ⟶ d
g : d ⟶ e
hf : f ∈ S.arrows c d
h : f ≫ g ∈ S.arrows c e
⊢ Groupoid.inv f ≫ f ≫ g ∈ S.arrows d e

tactic: apply S.mul (S.inv hf) h
state_before: case mp
C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c d e : C
f : c ⟶ d
g : d ⟶ e
hf : f ∈ S.arrows c d
h : f ≫ g ∈ S.arrows c e
⊢ Groupoid.inv f ≫ f ≫ g ∈ S.arrows d e
state_after: no goals

tactic: simpa only [inv_eq_inv, IsIso.inv_hom_id_assoc] using this
state_before: C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c d e : C
f : c ⟶ d
g : d ⟶ e
hf : f ∈ S.arrows c d
h : f ≫ g ∈ S.arrows c e
this : Groupoid.inv f ≫ f ≫ g ∈ S.arrows d e
⊢ g ∈ S.arrows d e
state_after: no goals

tactic: apply S.mul hf
state_before: case mpr
C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
c d e : C
f : c ⟶ d
g : d ⟶ e
hf : f ∈ S.arrows c d
⊢ g ∈ S.arrows d e → f ≫ g ∈ S.arrows c e
state_after: no goals
Theorem: MulAction.mem_stabilizer_set'
File: Mathlib/Algebra/Pointwise/Stabilizer.lean

tactic: lift s to Finset α using hs
state_before: G : Type u_1
H : Type u_2
α : Type u_3
inst✝² : Group G
inst✝¹ : Group H
inst✝ : MulAction G α
a : G
s : Set α
hs : s.Finite
⊢ a ∈ stabilizer G s ↔ ∀ ⦃b : α⦄, b ∈ s → a • b ∈ s
state_after: case intro
G : Type u_1
H : Type u_2
α : Type u_3
inst✝² : Group G
inst✝¹ : Group H
inst✝ : MulAction G α
a : G
s : Finset α
⊢ a ∈ stabilizer G ↑s ↔ ∀ ⦃b : α⦄, b ∈ ↑s → a • b ∈ ↑s

tactic: classical simp [-mem_stabilizer_iff, mem_stabilizer_finset']
state_before: case intro
G : Type u_1
H : Type u_2
α : Type u_3
inst✝² : Group G
inst✝¹ : Group H
inst✝ : MulAction G α
a : G
s : Finset α
⊢ a ∈ stabilizer G ↑s ↔ ∀ ⦃b : α⦄, b ∈ ↑s → a • b ∈ ↑s
state_after: no goals

tactic: simp [-mem_stabilizer_iff, mem_stabilizer_finset']
state_before: case intro
G : Type u_1
H : Type u_2
α : Type u_3
inst✝² : Group G
inst✝¹ : Group H
inst✝ : MulAction G α
a : G
s : Finset α
⊢ a ∈ stabilizer G ↑s ↔ ∀ ⦃b : α⦄, b ∈ ↑s → a • b ∈ ↑s
state_after: no goals
Theorem: Ordinal.le_of_dvd
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: subst e
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a x✝ : Ordinal.{u_4}
b0 : x✝ ≠ 0
b : Ordinal.{u_4}
e : x✝ = a * b
⊢ a ≤ x✝
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
b0 : a * b ≠ 0
⊢ a ≤ a * b

tactic: simpa only [mul_one] using
  mul_le_mul_left'
    (one_le_iff_ne_zero.2 fun h : b = 0 => by
      simp only [h, mul_zero, Ne, not_true_eq_false] at b0) a
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
b0 : a * b ≠ 0
⊢ a ≤ a * b
state_after: no goals

tactic: simp only [h, mul_zero, Ne, not_true_eq_false] at b0
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
b0 : a * b ≠ 0
h : b = 0
⊢ False
state_after: no goals
Theorem: CategoryTheory.leftDistributor_hom
File: Mathlib/CategoryTheory/Monoidal/Preadditive.lean

tactic: ext
state_before: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : Preadditive C
inst✝³ : MonoidalCategory C
inst✝² : MonoidalPreadditive C
inst✝¹ : HasFiniteBiproducts C
J : Type
inst✝ : Fintype J
X : C
f : J → C
⊢ (leftDistributor X f).hom = ∑ j : J, X ◁ biproduct.π f j ≫ biproduct.ι (fun j => X ⊗ f j) j
state_after: case w
C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : Preadditive C
inst✝³ : MonoidalCategory C
inst✝² : MonoidalPreadditive C
inst✝¹ : HasFiniteBiproducts C
J : Type
inst✝ : Fintype J
X : C
f : J → C
j✝ : J
⊢ (leftDistributor X f).hom ≫ biproduct.π (fun j => X ⊗ f j) j✝ =
    (∑ j : J, X ◁ biproduct.π f j ≫ biproduct.ι (fun j => X ⊗ f j) j) ≫ biproduct.π (fun j => X ⊗ f j) j✝

tactic: dsimp [leftDistributor, Functor.mapBiproduct, Functor.mapBicone]
state_before: case w
C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : Preadditive C
inst✝³ : MonoidalCategory C
inst✝² : MonoidalPreadditive C
inst✝¹ : HasFiniteBiproducts C
J : Type
inst✝ : Fintype J
X : C
f : J → C
j✝ : J
⊢ (leftDistributor X f).hom ≫ biproduct.π (fun j => X ⊗ f j) j✝ =
    (∑ j : J, X ◁ biproduct.π f j ≫ biproduct.ι (fun j => X ⊗ f j) j) ≫ biproduct.π (fun j => X ⊗ f j) j✝
state_after: case w
C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : Preadditive C
inst✝³ : MonoidalCategory C
inst✝² : MonoidalPreadditive C
inst✝¹ : HasFiniteBiproducts C
J : Type
inst✝ : Fintype J
X : C
f : J → C
j✝ : J
⊢ (biproduct.lift fun j => X ◁ biproduct.π f j) ≫ biproduct.π (fun j => X ⊗ f j) j✝ =
    (∑ j : J, X ◁ biproduct.π f j ≫ biproduct.ι (fun j => X ⊗ f j) j) ≫ biproduct.π (fun j => X ⊗ f j) j✝

tactic: erw [biproduct.lift_π]
state_before: case w
C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : Preadditive C
inst✝³ : MonoidalCategory C
inst✝² : MonoidalPreadditive C
inst✝¹ : HasFiniteBiproducts C
J : Type
inst✝ : Fintype J
X : C
f : J → C
j✝ : J
⊢ (biproduct.lift fun j => X ◁ biproduct.π f j) ≫ biproduct.π (fun j => X ⊗ f j) j✝ =
    (∑ j : J, X ◁ biproduct.π f j ≫ biproduct.ι (fun j => X ⊗ f j) j) ≫ biproduct.π (fun j => X ⊗ f j) j✝
state_after: case w
C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : Preadditive C
inst✝³ : MonoidalCategory C
inst✝² : MonoidalPreadditive C
inst✝¹ : HasFiniteBiproducts C
J : Type
inst✝ : Fintype J
X : C
f : J → C
j✝ : J
⊢ X ◁ biproduct.π f j✝ =
    (∑ j : J, X ◁ biproduct.π f j ≫ biproduct.ι (fun j => X ⊗ f j) j) ≫ biproduct.π (fun j => X ⊗ f j) j✝

tactic: simp only [Preadditive.sum_comp, Category.assoc, biproduct.ι_π, comp_dite, comp_zero,
  Finset.sum_dite_eq', Finset.mem_univ, ite_true, eqToHom_refl, Category.comp_id]
state_before: case w
C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : Preadditive C
inst✝³ : MonoidalCategory C
inst✝² : MonoidalPreadditive C
inst✝¹ : HasFiniteBiproducts C
J : Type
inst✝ : Fintype J
X : C
f : J → C
j✝ : J
⊢ X ◁ biproduct.π f j✝ =
    (∑ j : J, X ◁ biproduct.π f j ≫ biproduct.ι (fun j => X ⊗ f j) j) ≫ biproduct.π (fun j => X ⊗ f j) j✝
state_after: no goals
Theorem: zpow_mod_card
File: Mathlib/GroupTheory/OrderOfElement.lean

tactic: rw [eq_comm, ← zpow_mod_orderOf, ← Int.emod_emod_of_dvd n
  (Int.natCast_dvd_natCast.2 orderOf_dvd_card), zpow_mod_orderOf]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Group G
inst✝ : Fintype G
x : G
n✝ : ℕ
a : G
n : ℤ
⊢ a ^ (n % ↑(card G)) = a ^ n
state_after: no goals
Theorem: CliffordAlgebra.commute_map_mul_map_of_isOrtho_of_mem_evenOdd_zero_left
File: Mathlib/LinearAlgebra/CliffordAlgebra/Prod.lean

tactic: simp
state_before: R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup N
inst✝² : Module R M₁
inst✝¹ : Module R M₂
inst✝ : Module R N
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
Qₙ : QuadraticForm R N
f₁ : Q₁ →qᵢ Qₙ
f₂ : Q₂ →qᵢ Qₙ
hf : ∀ (x : M₁) (y : M₂), Qₙ.IsOrtho (f₁ x) (f₂ y)
m₁ : CliffordAlgebra Q₁
m₂ : CliffordAlgebra Q₂
i₂ : ZMod 2
hm₁ : m₁ ∈ evenOdd Q₁ 0
hm₂ : m₂ ∈ evenOdd Q₂ i₂
⊢ (-1) ^ (i₂ * 0) • ((map f₂) m₂ * (map f₁) m₁) = (map f₂) m₂ * (map f₁) m₁
state_after: no goals
Theorem: Polynomial.coe_mul
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: simp only [coeff_coe, PowerSeries.coeff_mul, coeff_mul]
state_before: σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
φ ψ : R[X]
n : ℕ
⊢ (PowerSeries.coeff R n) ↑(φ * ψ) = (PowerSeries.coeff R n) (↑φ * ↑ψ)
state_after: no goals
Theorem: IsPrimitiveRoot.card_nthRootsFinset
File: Mathlib/RingTheory/RootsOfUnity/Basic.lean

tactic: rw [nthRootsFinset, ← Multiset.toFinset_eq (nthRoots_one_nodup h), card_mk, h.card_nthRoots_one]
state_before: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
inst✝¹ : CommRing R
ζ✝ : Rˣ
h✝ : IsPrimitiveRoot ζ✝ k
inst✝ : IsDomain R
ζ : R
n : ℕ
h : IsPrimitiveRoot ζ n
⊢ (nthRootsFinset n R).card = n
state_after: no goals
Theorem: mul_star_self_pos
File: Mathlib/Algebra/Star/Order.lean

tactic: simpa using star_mul_self_pos hx.star
state_before: R : Type u
inst✝⁴ : NonUnitalSemiring R
inst✝³ : PartialOrder R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : Nontrivial R
x : R
hx : IsRegular x
⊢ 0 < x * star x
state_after: no goals
Theorem: SpectrumRestricts.algebraMap_image
File: Mathlib/Algebra/Algebra/Quasispectrum.lean

tactic: refine Set.eq_of_subset_of_subset ?_ fun s hs => ⟨f s, ?_⟩
state_before: R✝ : Type u_1
A✝ : Type u_2
inst✝¹¹ : CommSemiring R✝
inst✝¹⁰ : NonUnitalRing A✝
inst✝⁹ : Module R✝ A✝
inst✝⁸ : IsScalarTower R✝ A✝ A✝
inst✝⁷ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁶ : Semifield R
inst✝⁵ : Semifield S
inst✝⁴ : Ring A
inst✝³ : Algebra R S
inst✝² : Algebra R A
inst✝¹ : Algebra S A
a : A
f : S → R
inst✝ : IsScalarTower R S A
h : SpectrumRestricts a f
⊢ ⇑(algebraMap R S) '' spectrum R a = spectrum S a
state_after: case refine_1
R✝ : Type u_1
A✝ : Type u_2
inst✝¹¹ : CommSemiring R✝
inst✝¹⁰ : NonUnitalRing A✝
inst✝⁹ : Module R✝ A✝
inst✝⁸ : IsScalarTower R✝ A✝ A✝
inst✝⁷ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁶ : Semifield R
inst✝⁵ : Semifield S
inst✝⁴ : Ring A
inst✝³ : Algebra R S
inst✝² : Algebra R A
inst✝¹ : Algebra S A
a : A
f : S → R
inst✝ : IsScalarTower R S A
h : SpectrumRestricts a f
⊢ ⇑(algebraMap R S) '' spectrum R a ⊆ spectrum S a

case refine_2
R✝ : Type u_1
A✝ : Type u_2
inst✝¹¹ : CommSemiring R✝
inst✝¹⁰ : NonUnitalRing A✝
inst✝⁹ : Module R✝ A✝
inst✝⁸ : IsScalarTower R✝ A✝ A✝
inst✝⁷ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁶ : Semifield R
inst✝⁵ : Semifield S
inst✝⁴ : Ring A
inst✝³ : Algebra R S
inst✝² : Algebra R A
inst✝¹ : Algebra S A
a : A
f : S → R
inst✝ : IsScalarTower R S A
h : SpectrumRestricts a f
s : S
hs : s ∈ spectrum S a
⊢ f s ∈ spectrum R a ∧ (algebraMap R S) (f s) = s

tactic: exact ⟨spectrum.of_algebraMap_mem S ((h.rightInvOn hs).symm ▸ hs), h.rightInvOn hs⟩
state_before: case refine_2
R✝ : Type u_1
A✝ : Type u_2
inst✝¹¹ : CommSemiring R✝
inst✝¹⁰ : NonUnitalRing A✝
inst✝⁹ : Module R✝ A✝
inst✝⁸ : IsScalarTower R✝ A✝ A✝
inst✝⁷ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁶ : Semifield R
inst✝⁵ : Semifield S
inst✝⁴ : Ring A
inst✝³ : Algebra R S
inst✝² : Algebra R A
inst✝¹ : Algebra S A
a : A
f : S → R
inst✝ : IsScalarTower R S A
h : SpectrumRestricts a f
s : S
hs : s ∈ spectrum S a
⊢ f s ∈ spectrum R a ∧ (algebraMap R S) (f s) = s
state_after: no goals

tactic: simpa only [spectrum.preimage_algebraMap] using
  (spectrum S a).image_preimage_subset (algebraMap R S)
state_before: case refine_1
R✝ : Type u_1
A✝ : Type u_2
inst✝¹¹ : CommSemiring R✝
inst✝¹⁰ : NonUnitalRing A✝
inst✝⁹ : Module R✝ A✝
inst✝⁸ : IsScalarTower R✝ A✝ A✝
inst✝⁷ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁶ : Semifield R
inst✝⁵ : Semifield S
inst✝⁴ : Ring A
inst✝³ : Algebra R S
inst✝² : Algebra R A
inst✝¹ : Algebra S A
a : A
f : S → R
inst✝ : IsScalarTower R S A
h : SpectrumRestricts a f
⊢ ⇑(algebraMap R S) '' spectrum R a ⊆ spectrum S a
state_after: no goals
Theorem: Nat.binaryRec_zero
File: Mathlib/Data/Nat/Bits.lean

tactic: rw [binaryRec]
state_before: m n : ℕ
C : ℕ → Sort u
z : C 0
f : (b : Bool) → (n : ℕ) → C n → C (bit b n)
⊢ binaryRec z f 0 = z
state_after: m n : ℕ
C : ℕ → Sort u
z : C 0
f : (b : Bool) → (n : ℕ) → C n → C (bit b n)
⊢ (if n0 : 0 = 0 then ⋯.mpr z
    else
      let n' := div2 0;
      let_fun _x := ⋯;
      ⋯.mpr (f (bodd 0) n' (binaryRec z f n'))) =
    z

tactic: rfl
state_before: m n : ℕ
C : ℕ → Sort u
z : C 0
f : (b : Bool) → (n : ℕ) → C n → C (bit b n)
⊢ (if n0 : 0 = 0 then ⋯.mpr z
    else
      let n' := div2 0;
      let_fun _x := ⋯;
      ⋯.mpr (f (bodd 0) n' (binaryRec z f n'))) =
    z
state_after: no goals
Theorem: Nat.odd_mod_four_iff
File: Mathlib/Data/Nat/ModEq.lean

tactic: decide
state_before: m n✝ a b c d n : ℕ
⊢ ∀ m < 4, m % 2 = 1 → m = 1 ∨ m = 3
state_after: no goals

tactic: norm_num
state_before: m n✝ a b c d n : ℕ
help : ∀ m < 4, m % 2 = 1 → m = 1 ∨ m = 3
hn : n % 2 = 1
⊢ 4 > 0
state_after: no goals

tactic: decide
state_before: m n✝ a b c d n : ℕ
help : ∀ m < 4, m % 2 = 1 → m = 1 ∨ m = 3
hn : n % 2 = 1
⊢ 2 ∣ 4
state_after: no goals
Theorem: PowerSeries.coeff_X
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: rw [X_eq, coeff_monomial]
state_before: R : Type u_1
inst✝ : Semiring R
n : ℕ
⊢ (coeff R n) X = if n = 1 then 1 else 0
state_after: no goals
Theorem: Int.neg_clog_inv_eq_log
File: Mathlib/Data/Int/Log.lean

tactic: rw [clog_inv, neg_neg]
state_before: R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
r : R
⊢ -clog b r⁻¹ = log b r
state_after: no goals
Theorem: Matrix.det_mul_row
File: Mathlib/LinearAlgebra/Matrix/Determinant/Basic.lean

tactic: ext
state_before: m : Type u_1
n : Type u_2
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
R : Type v
inst✝ : CommRing R
v : n → R
A : Matrix n n R
⊢ (of fun i j => v j * A i j) = A * diagonal v
state_after: case a
m : Type u_1
n : Type u_2
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
R : Type v
inst✝ : CommRing R
v : n → R
A : Matrix n n R
i✝ j✝ : n
⊢ of (fun i j => v j * A i j) i✝ j✝ = (A * diagonal v) i✝ j✝

tactic: simp [mul_comm]
state_before: case a
m : Type u_1
n : Type u_2
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
R : Type v
inst✝ : CommRing R
v : n → R
A : Matrix n n R
i✝ j✝ : n
⊢ of (fun i j => v j * A i j) i✝ j✝ = (A * diagonal v) i✝ j✝
state_after: no goals

tactic: rw [det_mul, det_diagonal, mul_comm]
state_before: m : Type u_1
n : Type u_2
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
R : Type v
inst✝ : CommRing R
v : n → R
A : Matrix n n R
⊢ (A * diagonal v).det = (∏ i : n, v i) * A.det
state_after: no goals
Theorem: isLittleO_rpow_exp_atTop
File: Mathlib/Analysis/SpecialFunctions/Pow/Asymptotics.lean

tactic: simpa only [one_mul] using isLittleO_rpow_exp_pos_mul_atTop s one_pos
state_before: s : ℝ
⊢ (fun x => x ^ s) =o[atTop] rexp
state_after: no goals
Theorem: Multiset.lcm_ndunion
File: Mathlib/Algebra/GCDMonoid/Multiset.lean

tactic: rw [← lcm_dedup, dedup_ext.2, lcm_dedup, lcm_add]
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizedGCDMonoid α
inst✝ : DecidableEq α
s₁ s₂ : Multiset α
⊢ (s₁.ndunion s₂).lcm = GCDMonoid.lcm s₁.lcm s₂.lcm
state_after: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizedGCDMonoid α
inst✝ : DecidableEq α
s₁ s₂ : Multiset α
⊢ ∀ (a : α), a ∈ s₁.ndunion s₂ ↔ a ∈ s₁ + s₂

tactic: simp
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizedGCDMonoid α
inst✝ : DecidableEq α
s₁ s₂ : Multiset α
⊢ ∀ (a : α), a ∈ s₁.ndunion s₂ ↔ a ∈ s₁ + s₂
state_after: no goals
Theorem: WeierstrassCurve.Affine.Point.add_of_Y_eq
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

tactic: simp_rw [← add_def, add]
state_before: R : Type u
inst✝¹ : CommRing R
W✝ : Affine R
F : Type u
inst✝ : Field F
W : Affine F
x₁ x₂ y₁ y₂ : F
h₁ : W.Nonsingular x₁ y₁
h₂ : W.Nonsingular x₂ y₂
hx : x₁ = x₂
hy : y₁ = W.negY x₂ y₂
⊢ some h₁ + some h₂ = 0
state_after: R : Type u
inst✝¹ : CommRing R
W✝ : Affine R
F : Type u
inst✝ : Field F
W : Affine F
x₁ x₂ y₁ y₂ : F
h₁ : W.Nonsingular x₁ y₁
h₂ : W.Nonsingular x₂ y₂
hx : x₁ = x₂
hy : y₁ = W.negY x₂ y₂
⊢ (if h : x₁ = x₂ ∧ y₁ = W.negY x₂ y₂ then 0 else some ⋯) = 0

tactic: exact dif_pos ⟨hx, hy⟩
state_before: R : Type u
inst✝¹ : CommRing R
W✝ : Affine R
F : Type u
inst✝ : Field F
W : Affine F
x₁ x₂ y₁ y₂ : F
h₁ : W.Nonsingular x₁ y₁
h₂ : W.Nonsingular x₂ y₂
hx : x₁ = x₂
hy : y₁ = W.negY x₂ y₂
⊢ (if h : x₁ = x₂ ∧ y₁ = W.negY x₂ y₂ then 0 else some ⋯) = 0
state_after: no goals
Theorem: TrivSqZeroExt.inr_mul_inl
File: Mathlib/Algebra/TrivSqZeroExt.lean

tactic: rw [smul_zero, zero_add]
state_before: R : Type u
M : Type v
inst✝³ : Semiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : Module Rᵐᵒᵖ M
r : R
m : M
⊢ 0 •> 0 + m <• r = m <• r
state_after: no goals
Theorem: NonUnitalRingHom.range_eq_map
File: Mathlib/RingTheory/NonUnitalSubring/Basic.lean

tactic: ext
state_before: R : Type u
S : Type v
T : Type u_1
inst✝² : NonUnitalNonAssocRing R
inst✝¹ : NonUnitalNonAssocRing S
inst✝ : NonUnitalNonAssocRing T
g : S →ₙ+* T
f✝ f : R →ₙ+* S
⊢ f.range = NonUnitalSubring.map f ⊤
state_after: case h
R : Type u
S : Type v
T : Type u_1
inst✝² : NonUnitalNonAssocRing R
inst✝¹ : NonUnitalNonAssocRing S
inst✝ : NonUnitalNonAssocRing T
g : S →ₙ+* T
f✝ f : R →ₙ+* S
x✝ : S
⊢ x✝ ∈ f.range ↔ x✝ ∈ NonUnitalSubring.map f ⊤

tactic: simp
state_before: case h
R : Type u
S : Type v
T : Type u_1
inst✝² : NonUnitalNonAssocRing R
inst✝¹ : NonUnitalNonAssocRing S
inst✝ : NonUnitalNonAssocRing T
g : S →ₙ+* T
f✝ f : R →ₙ+* S
x✝ : S
⊢ x✝ ∈ f.range ↔ x✝ ∈ NonUnitalSubring.map f ⊤
state_after: no goals
Theorem: Multiset.eq_of_mem_map_const
File: Mathlib/Data/Multiset/Basic.lean

tactic: rwa [map_const] at h
state_before: α : Type u_1
β : Type v
γ : Type u_2
b₁ b₂ : β
l : List α
h : b₁ ∈ map (const α b₂) ↑l
⊢ b₁ ∈ replicate ?m.73856 b₂
state_after: no goals
Theorem: contDiffWithinAt_insert_self
File: Mathlib/Analysis/Calculus/ContDiff/Defs.lean

tactic: simp_rw [ContDiffWithinAt, insert_idem]
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
⊢ ContDiffWithinAt 𝕜 n f (insert x s) x ↔ ContDiffWithinAt 𝕜 n f s x
state_after: no goals
Theorem: Set.forall_mem_range
File: Mathlib/Data/Set/Image.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : ι → α
s t : Set α
p : α → Prop
⊢ (∀ a ∈ range f, p a) ↔ ∀ (i : ι), p (f i)
state_after: no goals