1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Submonoid.equivMapOfInjective_coe_mulEquiv
File: Mathlib/Algebra/Group/Submonoid/Operations.lean

tactic: ext
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
e : M ≃* N
⊢ S.equivMapOfInjective ↑e ⋯ = e.submonoidMap S
state_after: case h.a
M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
e : M ≃* N
x✝ : ↥S
⊢ ↑((S.equivMapOfInjective ↑e ⋯) x✝) = ↑((e.submonoidMap S) x✝)

tactic: rfl
state_before: case h.a
M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
e : M ≃* N
x✝ : ↥S
⊢ ↑((S.equivMapOfInjective ↑e ⋯) x✝) = ↑((e.submonoidMap S) x✝)
state_after: no goals
Theorem: Real.pow_rpow_inv_natCast
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: have hn0 : (n : ℝ) ≠ 0 := Nat.cast_ne_zero.2 hn
state_before: x y z : ℝ
n : ℕ
hx : 0 ≤ x
hn : n ≠ 0
⊢ (x ^ n) ^ (↑n)⁻¹ = x
state_after: x y z : ℝ
n : ℕ
hx : 0 ≤ x
hn : n ≠ 0
hn0 : ↑n ≠ 0
⊢ (x ^ n) ^ (↑n)⁻¹ = x

tactic: rw [← rpow_natCast, ← rpow_mul hx, mul_inv_cancel hn0, rpow_one]
state_before: x y z : ℝ
n : ℕ
hx : 0 ≤ x
hn : n ≠ 0
hn0 : ↑n ≠ 0
⊢ (x ^ n) ^ (↑n)⁻¹ = x
state_after: no goals
Theorem: Int.fract_sub_int
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [fract]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a : α
m : ℤ
⊢ fract (a - ↑m) = fract a
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a : α
m : ℤ
⊢ a - ↑m - ↑⌊a - ↑m⌋ = fract a

tactic: simp
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a : α
m : ℤ
⊢ a - ↑m - ↑⌊a - ↑m⌋ = fract a
state_after: no goals
Theorem: EMetric.tendstoLocallyUniformly_iff
File: Mathlib/Topology/EMetricSpace/Basic.lean

tactic: simp only [← tendstoLocallyUniformlyOn_univ, tendstoLocallyUniformlyOn_iff, mem_univ,
  forall_const, exists_prop, nhdsWithin_univ]
state_before: α : Type u
β : Type v
X : Type u_1
inst✝¹ : PseudoEMetricSpace α
ι : Type u_2
inst✝ : TopologicalSpace β
F : ι → β → α
f : β → α
p : Filter ι
⊢ TendstoLocallyUniformly F f p ↔ ∀ ε > 0, ∀ (x : β), ∃ t ∈ 𝓝 x, ∀ᶠ (n : ι) in p, ∀ y ∈ t, edist (f y) (F n y) < ε
state_after: no goals
Theorem: Matrix.vandermonde_mul_vandermonde_transpose
File: Mathlib/LinearAlgebra/Vandermonde.lean

tactic: simp only [vandermonde_apply, Matrix.mul_apply, Matrix.transpose_apply, mul_pow]
state_before: R : Type u_1
inst✝ : CommRing R
n : ℕ
v w : Fin n → R
i j : Fin n
⊢ (vandermonde v * (vandermonde w)ᵀ) i j = ∑ k : Fin n, (v i * w j) ^ ↑k
state_after: no goals
Theorem: Unitization.zero_mem_spectrum_inr
File: Mathlib/Algebra/Algebra/Quasispectrum.lean

tactic: rw [spectrum.zero_mem_iff]
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✝⁹ : CommSemiring R
inst✝⁸ : CommRing S
inst✝⁷ : Nontrivial S
inst✝⁶ : NonUnitalRing A
inst✝⁵ : Algebra R S
inst✝⁴ : Module S A
inst✝³ : IsScalarTower S A A
inst✝² : SMulCommClass S A A
inst✝¹ : Module R A
inst✝ : IsScalarTower R S A
a : A
⊢ 0 ∈ spectrum R ↑a
state_after: 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✝⁹ : CommSemiring R
inst✝⁸ : CommRing S
inst✝⁷ : Nontrivial S
inst✝⁶ : NonUnitalRing A
inst✝⁵ : Algebra R S
inst✝⁴ : Module S A
inst✝³ : IsScalarTower S A A
inst✝² : SMulCommClass S A A
inst✝¹ : Module R A
inst✝ : IsScalarTower R S A
a : A
⊢ ¬IsUnit ↑a

tactic: rintro ⟨u, hu⟩
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✝⁹ : CommSemiring R
inst✝⁸ : CommRing S
inst✝⁷ : Nontrivial S
inst✝⁶ : NonUnitalRing A
inst✝⁵ : Algebra R S
inst✝⁴ : Module S A
inst✝³ : IsScalarTower S A A
inst✝² : SMulCommClass S A A
inst✝¹ : Module R A
inst✝ : IsScalarTower R S A
a : A
⊢ ¬IsUnit ↑a
state_after: case intro
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✝⁹ : CommSemiring R
inst✝⁸ : CommRing S
inst✝⁷ : Nontrivial S
inst✝⁶ : NonUnitalRing A
inst✝⁵ : Algebra R S
inst✝⁴ : Module S A
inst✝³ : IsScalarTower S A A
inst✝² : SMulCommClass S A A
inst✝¹ : Module R A
inst✝ : IsScalarTower R S A
a : A
u : (Unitization S A)ˣ
hu : ↑u = ↑a
⊢ False

tactic: simpa [-Units.mul_inv, hu] using congr($(u.mul_inv).fst)
state_before: case intro
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✝⁹ : CommSemiring R
inst✝⁸ : CommRing S
inst✝⁷ : Nontrivial S
inst✝⁶ : NonUnitalRing A
inst✝⁵ : Algebra R S
inst✝⁴ : Module S A
inst✝³ : IsScalarTower S A A
inst✝² : SMulCommClass S A A
inst✝¹ : Module R A
inst✝ : IsScalarTower R S A
a : A
u : (Unitization S A)ˣ
hu : ↑u = ↑a
⊢ False
state_after: no goals
Theorem: IsMulHom.to_isMonoidHom
File: Mathlib/Deprecated/Group.lean

tactic: rw [← hf.map_mul, one_mul]
state_before: α : Type u
β : Type v
inst✝¹ : MulOneClass α
inst✝ : Group β
f : α → β
hf : IsMulHom f
⊢ ?m.13481 * f 1 = ?m.13481
state_after: no goals
Theorem: WType.cardinal_mk_le_max_aleph0_of_finite
File: Mathlib/Data/W/Cardinal.lean

tactic: rw [lift_id]
state_before: α : Type u
β✝ : α → Type v
β : α → Type u
inst✝ : ∀ (a : α), Finite (β a)
⊢ max (lift.{u, u} #α) ℵ₀ = max #α ℵ₀
state_after: no goals
Theorem: WeierstrassCurve.Affine.CoordinateRing.smul_basis_eq_zero
File: Mathlib/AlgebraicGeometry/EllipticCurve/Group.lean

tactic: have h := Fintype.linearIndependent_iff.mp (CoordinateRing.basis W).linearIndependent ![p, q]
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
p q : R[X]
hpq : p • 1 + q • (mk W) Y = 0
⊢ p = 0 ∧ q = 0
state_after: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
p q : R[X]
hpq : p • 1 + q • (mk W) Y = 0
h : ∑ i : Fin 2, ![p, q] i • (CoordinateRing.basis W) i = 0 → ∀ (i : Fin 2), ![p, q] i = 0
⊢ p = 0 ∧ q = 0

tactic: erw [Fin.sum_univ_succ, basis_zero, Fin.sum_univ_one, basis_one] at h
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
p q : R[X]
hpq : p • 1 + q • (mk W) Y = 0
h : ∑ i : Fin 2, ![p, q] i • (CoordinateRing.basis W) i = 0 → ∀ (i : Fin 2), ![p, q] i = 0
⊢ p = 0 ∧ q = 0
state_after: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
p q : R[X]
hpq : p • 1 + q • (mk W) Y = 0
h : ![p, q] 0 • 1 + ![p, q] (Fin.succ 0) • (mk W) Y = 0 → ∀ (i : Fin 2), ![p, q] i = 0
⊢ p = 0 ∧ q = 0

tactic: exact ⟨h hpq 0, h hpq 1⟩
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
p q : R[X]
hpq : p • 1 + q • (mk W) Y = 0
h : ![p, q] 0 • 1 + ![p, q] (Fin.succ 0) • (mk W) Y = 0 → ∀ (i : Fin 2), ![p, q] i = 0
⊢ p = 0 ∧ q = 0
state_after: no goals
Theorem: CategoryTheory.LocalizerMorphism.essSurj_of_hasLeftResolutions
File: Mathlib/CategoryTheory/Localization/Resolution.lean

tactic: have := Localization.essSurj L₂ W₂
state_before: C₁ : Type u_1
C₂ : Type u_2
D₂ : Type u_3
H : Type u_4
inst✝⁵ : Category.{u_5, u_1} C₁
inst✝⁴ : Category.{u_6, u_2} C₂
inst✝³ : Category.{u_7, u_3} D₂
inst✝² : Category.{?u.54305, u_4} H
W₁ : MorphismProperty C₁
W₂ : MorphismProperty C₂
Φ : LocalizerMorphism W₁ W₂
L₂ : C₂ ⥤ D₂
inst✝¹ : L₂.IsLocalization W₂
inst✝ : Φ.HasLeftResolutions
X₂ : D₂
⊢ X₂ ∈ (Φ.functor ⋙ L₂).essImage
state_after: C₁ : Type u_1
C₂ : Type u_2
D₂ : Type u_3
H : Type u_4
inst✝⁵ : Category.{u_5, u_1} C₁
inst✝⁴ : Category.{u_6, u_2} C₂
inst✝³ : Category.{u_7, u_3} D₂
inst✝² : Category.{?u.54305, u_4} H
W₁ : MorphismProperty C₁
W₂ : MorphismProperty C₂
Φ : LocalizerMorphism W₁ W₂
L₂ : C₂ ⥤ D₂
inst✝¹ : L₂.IsLocalization W₂
inst✝ : Φ.HasLeftResolutions
X₂ : D₂
this : L₂.EssSurj
⊢ X₂ ∈ (Φ.functor ⋙ L₂).essImage

tactic: have L : Φ.LeftResolution (L₂.objPreimage X₂) := Classical.arbitrary _
state_before: C₁ : Type u_1
C₂ : Type u_2
D₂ : Type u_3
H : Type u_4
inst✝⁵ : Category.{u_5, u_1} C₁
inst✝⁴ : Category.{u_6, u_2} C₂
inst✝³ : Category.{u_7, u_3} D₂
inst✝² : Category.{?u.54305, u_4} H
W₁ : MorphismProperty C₁
W₂ : MorphismProperty C₂
Φ : LocalizerMorphism W₁ W₂
L₂ : C₂ ⥤ D₂
inst✝¹ : L₂.IsLocalization W₂
inst✝ : Φ.HasLeftResolutions
X₂ : D₂
this : L₂.EssSurj
⊢ X₂ ∈ (Φ.functor ⋙ L₂).essImage
state_after: C₁ : Type u_1
C₂ : Type u_2
D₂ : Type u_3
H : Type u_4
inst✝⁵ : Category.{u_5, u_1} C₁
inst✝⁴ : Category.{u_6, u_2} C₂
inst✝³ : Category.{u_7, u_3} D₂
inst✝² : Category.{?u.54305, u_4} H
W₁ : MorphismProperty C₁
W₂ : MorphismProperty C₂
Φ : LocalizerMorphism W₁ W₂
L₂ : C₂ ⥤ D₂
inst✝¹ : L₂.IsLocalization W₂
inst✝ : Φ.HasLeftResolutions
X₂ : D₂
this : L₂.EssSurj
L : Φ.LeftResolution (L₂.objPreimage X₂)
⊢ X₂ ∈ (Φ.functor ⋙ L₂).essImage

tactic: exact ⟨L.X₁, ⟨Localization.isoOfHom L₂ W₂ _ L.hw ≪≫ L₂.objObjPreimageIso X₂⟩⟩
state_before: C₁ : Type u_1
C₂ : Type u_2
D₂ : Type u_3
H : Type u_4
inst✝⁵ : Category.{u_5, u_1} C₁
inst✝⁴ : Category.{u_6, u_2} C₂
inst✝³ : Category.{u_7, u_3} D₂
inst✝² : Category.{?u.54305, u_4} H
W₁ : MorphismProperty C₁
W₂ : MorphismProperty C₂
Φ : LocalizerMorphism W₁ W₂
L₂ : C₂ ⥤ D₂
inst✝¹ : L₂.IsLocalization W₂
inst✝ : Φ.HasLeftResolutions
X₂ : D₂
this : L₂.EssSurj
L : Φ.LeftResolution (L₂.objPreimage X₂)
⊢ X₂ ∈ (Φ.functor ⋙ L₂).essImage
state_after: no goals
Theorem: Complex.cos_sq'
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [← sin_sq_add_cos_sq x, add_sub_cancel_left]
state_before: x y : ℂ
⊢ cos x ^ 2 = 1 - sin x ^ 2
state_after: no goals
Theorem: CompleteLattice.independent_def''
File: Mathlib/Order/SupIndep.lean

tactic: rw [independent_def']
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝ : CompleteLattice α
s : Set α
hs : SetIndependent s
t : ι → α
ht : Independent t
⊢ Independent t ↔ ∀ (i : ι), Disjoint (t i) (sSup {a | ∃ j, j ≠ i ∧ t j = a})
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝ : CompleteLattice α
s : Set α
hs : SetIndependent s
t : ι → α
ht : Independent t
⊢ (∀ (i : ι), Disjoint (t i) (sSup (t '' {j | j ≠ i}))) ↔ ∀ (i : ι), Disjoint (t i) (sSup {a | ∃ j, j ≠ i ∧ t j = a})

tactic: aesop
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝ : CompleteLattice α
s : Set α
hs : SetIndependent s
t : ι → α
ht : Independent t
⊢ (∀ (i : ι), Disjoint (t i) (sSup (t '' {j | j ≠ i}))) ↔ ∀ (i : ι), Disjoint (t i) (sSup {a | ∃ j, j ≠ i ∧ t j = a})
state_after: no goals
Theorem: Set.encard_diff_singleton_add_one
File: Mathlib/Data/Set/Card.lean

tactic: rw [← encard_insert_of_not_mem (fun h ↦ h.2 rfl), insert_diff_singleton, insert_eq_of_mem h]
state_before: α : Type u_1
β : Type u_2
s t : Set α
a b : α
h : a ∈ s
⊢ (s \ {a}).encard + 1 = s.encard
state_after: no goals
Theorem: Set.empty_pi
File: Mathlib/Data/Set/Prod.lean

tactic: ext
state_before: ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
s : (i : ι) → Set (α i)
⊢ ∅.pi s = univ
state_after: case h
ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
s : (i : ι) → Set (α i)
x✝ : (i : ι) → α i
⊢ x✝ ∈ ∅.pi s ↔ x✝ ∈ univ

tactic: simp [pi]
state_before: case h
ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
s : (i : ι) → Set (α i)
x✝ : (i : ι) → α i
⊢ x✝ ∈ ∅.pi s ↔ x✝ ∈ univ
state_after: no goals
Theorem: Num.zero_add
File: Mathlib/Data/Num/Lemmas.lean

tactic: cases n <;> rfl
state_before: α : Type u_1
n : Num
⊢ 0 + n = n
state_after: no goals
Theorem: ConjAct.fixedPoints_eq_center
File: Mathlib/GroupTheory/GroupAction/ConjAct.lean

tactic: ext x
state_before: α : Type u_1
M : Type u_2
G : Type u_3
G₀ : Type u_4
R : Type u_5
K : Type u_6
inst✝ : Group G
⊢ fixedPoints (ConjAct G) G = ↑(center G)
state_after: case h
α : Type u_1
M : Type u_2
G : Type u_3
G₀ : Type u_4
R : Type u_5
K : Type u_6
inst✝ : Group G
x : G
⊢ x ∈ fixedPoints (ConjAct G) G ↔ x ∈ ↑(center G)

tactic: simp [mem_center_iff, smul_def, mul_inv_eq_iff_eq_mul]
state_before: case h
α : Type u_1
M : Type u_2
G : Type u_3
G₀ : Type u_4
R : Type u_5
K : Type u_6
inst✝ : Group G
x : G
⊢ x ∈ fixedPoints (ConjAct G) G ↔ x ∈ ↑(center G)
state_after: no goals
Theorem: CategoryTheory.Preadditive.kernelForkOfFork_ofι
File: Mathlib/CategoryTheory/Preadditive/Basic.lean

tactic: simp [w]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Preadditive C
X Y : C
f g : X ⟶ Y
P : C
ι : P ⟶ X
w : ι ≫ f = ι ≫ g
⊢ ι ≫ (f - g) = 0
state_after: no goals
Theorem: Set.toFinset_prod
File: Mathlib/Data/Fintype/Prod.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s✝ t✝ s : Set α
t : Set β
inst✝² : Fintype ↑s
inst✝¹ : Fintype ↑t
inst✝ : Fintype ↑(s ×ˢ t)
⊢ (s ×ˢ t).toFinset = s.toFinset ×ˢ t.toFinset
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ t✝ s : Set α
t : Set β
inst✝² : Fintype ↑s
inst✝¹ : Fintype ↑t
inst✝ : Fintype ↑(s ×ˢ t)
a✝ : α × β
⊢ a✝ ∈ (s ×ˢ t).toFinset ↔ a✝ ∈ s.toFinset ×ˢ t.toFinset

tactic: simp
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ t✝ s : Set α
t : Set β
inst✝² : Fintype ↑s
inst✝¹ : Fintype ↑t
inst✝ : Fintype ↑(s ×ˢ t)
a✝ : α × β
⊢ a✝ ∈ (s ×ˢ t).toFinset ↔ a✝ ∈ s.toFinset ×ˢ t.toFinset
state_after: no goals
Theorem: Submodule.mem_ideal_smul_span_iff_exists_sum'
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: rw [← Submodule.mem_ideal_smul_span_iff_exists_sum, ← Set.image_eq_range]
state_before: R : Type u
M : Type v
M'✝ : Type u_1
F : Type u_2
G : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid M'✝
inst✝² : Module R M'✝
I J : Ideal R
N P : Submodule R M
S : Set R
T : Set M
M' : Type w
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
ι : Type u_4
s : Set ι
f : ι → M
x : M
⊢ x ∈ I • span R (f '' s) ↔ ∃ a, ∃ (_ : ∀ (i : ↑s), a i ∈ I), (a.sum fun i c => c • f ↑i) = x
state_after: no goals
Theorem: DFinsupp.single_le_iff
File: Mathlib/Data/DFinsupp/Order.lean

tactic: classical exact (le_iff' support_single_subset).trans <| by simp
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → CanonicallyOrderedAddCommMonoid (α i)
inst✝ : DecidableEq ι
f : Π₀ (i : ι), α i
i : ι
a : α i
⊢ single i a ≤ f ↔ a ≤ f i
state_after: no goals

tactic: exact (le_iff' support_single_subset).trans <| by simp
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → CanonicallyOrderedAddCommMonoid (α i)
inst✝ : DecidableEq ι
f : Π₀ (i : ι), α i
i : ι
a : α i
⊢ single i a ≤ f ↔ a ≤ f i
state_after: no goals

tactic: simp
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → CanonicallyOrderedAddCommMonoid (α i)
inst✝ : DecidableEq ι
f : Π₀ (i : ι), α i
i : ι
a : α i
⊢ (∀ i_1 ∈ {i}, (single i a) i_1 ≤ f i_1) ↔ a ≤ f i
state_after: no goals
Theorem: LieModule.compLieHom
File: Mathlib/Algebra/Lie/Basic.lean

tactic: simp only [LieRingModule.compLieHom_apply, smul_lie, LieHom.map_smul]
state_before: R : Type u
L₁ : Type v
L₂ : Type w
M : Type w₁
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L₁
inst✝⁶ : LieAlgebra R L₁
inst✝⁵ : LieRing L₂
inst✝⁴ : LieAlgebra R L₂
inst✝³ : AddCommGroup M
inst✝² : LieRingModule L₂ M
f : L₁ →ₗ⁅R⁆ L₂
inst✝¹ : Module R M
inst✝ : LieModule R L₂ M
t : R
x : L₁
m : M
⊢ ⁅t • x, m⁆ = t • ⁅x, m⁆
state_after: no goals

tactic: simp only [LieRingModule.compLieHom_apply, lie_smul]
state_before: R : Type u
L₁ : Type v
L₂ : Type w
M : Type w₁
inst✝⁸ : CommRing R
inst✝⁷ : LieRing L₁
inst✝⁶ : LieAlgebra R L₁
inst✝⁵ : LieRing L₂
inst✝⁴ : LieAlgebra R L₂
inst✝³ : AddCommGroup M
inst✝² : LieRingModule L₂ M
f : L₁ →ₗ⁅R⁆ L₂
inst✝¹ : Module R M
inst✝ : LieModule R L₂ M
t : R
x : L₁
m : M
⊢ ⁅x, t • m⁆ = t • ⁅x, m⁆
state_after: no goals
Theorem: Sum.update_inr_apply_inr
File: Mathlib/Data/Sum/Basic.lean

tactic: rw [← update_inr_comp_inr, Function.comp_apply]
state_before: α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
inst✝¹ : DecidableEq β
inst✝ : DecidableEq (α ⊕ β)
f : α ⊕ β → γ
i j : β
x : γ
⊢ update f (inr i) x (inr j) = update (f ∘ inr) i x j
state_after: no goals
Theorem: AlgebraicGeometry.scheme_restrict_basicOpen_of_localizationPreserves
File: Mathlib/AlgebraicGeometry/Morphisms/RingHomProperties.lean

tactic: specialize H ⟨_, U.2.image_of_isOpenImmersion (X.ofRestrict _)⟩
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
h₁ : RingHom.RespectsIso P
h₂ : RingHom.LocalizationPreserves P
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
H : sourceAffineLocally P f
U : ↑(X ∣_ᵤ f ⁻¹ᵁ Y.basicOpen r).affineOpens
⊢ P (Scheme.Γ.map ((X ∣_ᵤ f ⁻¹ᵁ Y.basicOpen r).ofRestrict ⋯ ≫ f ∣_ Y.basicOpen r).op)
state_after: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
h₁ : RingHom.RespectsIso P
h₂ : RingHom.LocalizationPreserves P
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
U : ↑(X ∣_ᵤ f ⁻¹ᵁ Y.basicOpen r).affineOpens
H : P (Scheme.Γ.map (X.ofRestrict ⋯ ≫ f).op)
⊢ P (Scheme.Γ.map ((X ∣_ᵤ f ⁻¹ᵁ Y.basicOpen r).ofRestrict ⋯ ≫ f ∣_ Y.basicOpen r).op)

tactic: letI i1 : Algebra (Y.presheaf.obj <| Opposite.op ⊤) (Localization.Away r) := Localization.algebra
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
h₁ : RingHom.RespectsIso P
h₂ : RingHom.LocalizationPreserves P
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
U : ↑(X ∣_ᵤ f ⁻¹ᵁ Y.basicOpen r).affineOpens
H : P (Scheme.Γ.map (X.ofRestrict ⋯ ≫ f).op)
⊢ P (Scheme.Γ.map ((X ∣_ᵤ f ⁻¹ᵁ Y.basicOpen r).ofRestrict ⋯ ≫ f ∣_ Y.basicOpen r).op)
state_after: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
h₁ : RingHom.RespectsIso P
h₂ : RingHom.LocalizationPreserves P
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
U : ↑(X ∣_ᵤ f ⁻¹ᵁ Y.basicOpen r).affineOpens
H : P (Scheme.Γ.map (X.ofRestrict ⋯ ≫ f).op)
i1 : Algebra (↑Γ(Y, ⊤)) (Localization.Away r) := Localization.algebra
⊢ P (Scheme.Γ.map ((X ∣_ᵤ f ⁻¹ᵁ Y.basicOpen r).ofRestrict ⋯ ≫ f ∣_ Y.basicOpen r).op)

tactic: exact (h₁.ofRestrict_morphismRestrict_iff f r
  ((Scheme.Hom.opensFunctor
    (X.ofRestrict ((Opens.map f.1.base).obj <| Y.basicOpen r).openEmbedding)).obj U.1)
  (IsAffineOpen.image_of_isOpenImmersion U.2
    (X.ofRestrict ((Opens.map f.1.base).obj <| Y.basicOpen r).openEmbedding))
  (Opens.ext (Set.preimage_image_eq _ Subtype.coe_injective).symm)).mpr (h₂.away r H)
state_before: P : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
h₁ : RingHom.RespectsIso P
h₂ : RingHom.LocalizationPreserves P
X Y : Scheme
inst✝ : IsAffine Y
f : X ⟶ Y
r : ↑Γ(Y, ⊤)
U : ↑(X ∣_ᵤ f ⁻¹ᵁ Y.basicOpen r).affineOpens
H : P (Scheme.Γ.map (X.ofRestrict ⋯ ≫ f).op)
i1 : Algebra (↑Γ(Y, ⊤)) (Localization.Away r) := Localization.algebra
⊢ P (Scheme.Γ.map ((X ∣_ᵤ f ⁻¹ᵁ Y.basicOpen r).ofRestrict ⋯ ≫ f ∣_ Y.basicOpen r).op)
state_after: no goals
Theorem: expChar_one_iff_char_zero
File: Mathlib/Algebra/CharP/ExpChar.lean

tactic: constructor
state_before: R : Type u
inst✝³ : Semiring R
inst✝² : Nontrivial R
p q : ℕ
inst✝¹ : CharP R p
inst✝ : ExpChar R q
⊢ q = 1 ↔ p = 0
state_after: case mp
R : Type u
inst✝³ : Semiring R
inst✝² : Nontrivial R
p q : ℕ
inst✝¹ : CharP R p
inst✝ : ExpChar R q
⊢ q = 1 → p = 0

case mpr
R : Type u
inst✝³ : Semiring R
inst✝² : Nontrivial R
p q : ℕ
inst✝¹ : CharP R p
inst✝ : ExpChar R q
⊢ p = 0 → q = 1

tactic: rintro rfl
state_before: case mp
R : Type u
inst✝³ : Semiring R
inst✝² : Nontrivial R
p q : ℕ
inst✝¹ : CharP R p
inst✝ : ExpChar R q
⊢ q = 1 → p = 0
state_after: case mp
R : Type u
inst✝³ : Semiring R
inst✝² : Nontrivial R
p : ℕ
inst✝¹ : CharP R p
inst✝ : ExpChar R 1
⊢ p = 0

tactic: exact char_zero_of_expChar_one R p
state_before: case mp
R : Type u
inst✝³ : Semiring R
inst✝² : Nontrivial R
p : ℕ
inst✝¹ : CharP R p
inst✝ : ExpChar R 1
⊢ p = 0
state_after: no goals

tactic: rintro rfl
state_before: case mpr
R : Type u
inst✝³ : Semiring R
inst✝² : Nontrivial R
p q : ℕ
inst✝¹ : CharP R p
inst✝ : ExpChar R q
⊢ p = 0 → q = 1
state_after: case mpr
R : Type u
inst✝³ : Semiring R
inst✝² : Nontrivial R
q : ℕ
inst✝¹ : ExpChar R q
inst✝ : CharP R 0
⊢ q = 1

tactic: exact expChar_one_of_char_zero R q
state_before: case mpr
R : Type u
inst✝³ : Semiring R
inst✝² : Nontrivial R
q : ℕ
inst✝¹ : ExpChar R q
inst✝ : CharP R 0
⊢ q = 1
state_after: no goals
Theorem: FiniteDimensional.finrank_le_of_rank_le
File: Mathlib/LinearAlgebra/Dimension/Finrank.lean

tactic: rwa [← Cardinal.toNat_le_iff_le_of_lt_aleph0, toNat_natCast] at h
state_before: R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : Module.rank R M ≤ ↑n
⊢ finrank R M ≤ n
state_after: case hc
R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : Module.rank R M ≤ ↑n
⊢ Module.rank R M < ℵ₀

case hd
R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : Module.rank R M ≤ ↑n
⊢ ↑n < ℵ₀

tactic: exact h.trans_lt (nat_lt_aleph0 n)
state_before: case hc
R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : Module.rank R M ≤ ↑n
⊢ Module.rank R M < ℵ₀
state_after: no goals

tactic: exact nat_lt_aleph0 n
state_before: case hd
R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : Module.rank R M ≤ ↑n
⊢ ↑n < ℵ₀
state_after: no goals
Theorem: Mathlib.Meta.NormNum.IsRat.neg_to_eq
File: Mathlib/Tactic/NormNum/Result.lean

tactic: simp [div_eq_mul_inv]
state_before: α : Type u_1
inst✝ : DivisionRing α
n d : ℕ
inv✝ : Invertible ↑d
⊢ ↑(Int.negOfNat n) * ⅟↑d = -(↑n / ↑d)
state_after: no goals