1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Module.Finite.of_basis
File: Mathlib/LinearAlgebra/FreeModule/Finite/Basic.lean

tactic: cases nonempty_fintype ι
state_before: R✝ : Type u
M✝ : Type v
N : Type w
inst✝¹⁰ : CommRing R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Free R✝ M✝
inst✝⁶ : AddCommGroup N
inst✝⁵ : Module R✝ N
inst✝⁴ : Free R✝ N
R : Type u_1
M : Type u_2
ι : Type u_3
inst✝³ : Semiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : _root_.Finite ι
b : Basis ι R M
⊢ Finite R M
state_after: case intro
R✝ : Type u
M✝ : Type v
N : Type w
inst✝¹⁰ : CommRing R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Free R✝ M✝
inst✝⁶ : AddCommGroup N
inst✝⁵ : Module R✝ N
inst✝⁴ : Free R✝ N
R : Type u_1
M : Type u_2
ι : Type u_3
inst✝³ : Semiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : _root_.Finite ι
b : Basis ι R M
val✝ : Fintype ι
⊢ Finite R M

tactic: classical
  refine ⟨⟨Finset.univ.image b, ?_⟩⟩
  simp only [Set.image_univ, Finset.coe_univ, Finset.coe_image, Basis.span_eq]
state_before: case intro
R✝ : Type u
M✝ : Type v
N : Type w
inst✝¹⁰ : CommRing R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Free R✝ M✝
inst✝⁶ : AddCommGroup N
inst✝⁵ : Module R✝ N
inst✝⁴ : Free R✝ N
R : Type u_1
M : Type u_2
ι : Type u_3
inst✝³ : Semiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : _root_.Finite ι
b : Basis ι R M
val✝ : Fintype ι
⊢ Finite R M
state_after: no goals

tactic: refine ⟨⟨Finset.univ.image b, ?_⟩⟩
state_before: case intro
R✝ : Type u
M✝ : Type v
N : Type w
inst✝¹⁰ : CommRing R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Free R✝ M✝
inst✝⁶ : AddCommGroup N
inst✝⁵ : Module R✝ N
inst✝⁴ : Free R✝ N
R : Type u_1
M : Type u_2
ι : Type u_3
inst✝³ : Semiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : _root_.Finite ι
b : Basis ι R M
val✝ : Fintype ι
⊢ Finite R M
state_after: case intro
R✝ : Type u
M✝ : Type v
N : Type w
inst✝¹⁰ : CommRing R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Free R✝ M✝
inst✝⁶ : AddCommGroup N
inst✝⁵ : Module R✝ N
inst✝⁴ : Free R✝ N
R : Type u_1
M : Type u_2
ι : Type u_3
inst✝³ : Semiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : _root_.Finite ι
b : Basis ι R M
val✝ : Fintype ι
⊢ Submodule.span R ↑(Finset.image (⇑b) Finset.univ) = ⊤

tactic: simp only [Set.image_univ, Finset.coe_univ, Finset.coe_image, Basis.span_eq]
state_before: case intro
R✝ : Type u
M✝ : Type v
N : Type w
inst✝¹⁰ : CommRing R✝
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : Module R✝ M✝
inst✝⁷ : Free R✝ M✝
inst✝⁶ : AddCommGroup N
inst✝⁵ : Module R✝ N
inst✝⁴ : Free R✝ N
R : Type u_1
M : Type u_2
ι : Type u_3
inst✝³ : Semiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : _root_.Finite ι
b : Basis ι R M
val✝ : Fintype ι
⊢ Submodule.span R ↑(Finset.image (⇑b) Finset.univ) = ⊤
state_after: no goals
Theorem: HurwitzZeta.oddKernel_def'
File: Mathlib/NumberTheory/LSeries/HurwitzZetaOdd.lean

tactic: rw [oddKernel_def, jacobiTheta₂'', ← mul_assoc ↑a I x,
  (by ring : ↑π * I * ↑a ^ 2 * (I * ↑x) = I ^ 2 * ↑π * ↑a ^ 2 * x), I_sq, neg_one_mul]
state_before: a x : ℝ
⊢ ↑(oddKernel (↑a) x) =
    cexp (-↑π * ↑a ^ 2 * ↑x) *
      (jacobiTheta₂' (↑a * I * ↑x) (I * ↑x) / (2 * ↑π * I) + ↑a * jacobiTheta₂ (↑a * I * ↑x) (I * ↑x))
state_after: no goals

tactic: ring
state_before: a x : ℝ
⊢ ↑π * I * ↑a ^ 2 * (I * ↑x) = I ^ 2 * ↑π * ↑a ^ 2 * ↑x
state_after: no goals
Theorem: UV.compression_idem
File: Mathlib/Combinatorics/SetFamily/Compression/UV.lean

tactic: rw [compression, filter_image, h, image_empty, ← h]
state_before: α : Type u_1
inst✝³ : GeneralizedBooleanAlgebra α
inst✝² : DecidableRel Disjoint
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s✝ : Finset α
u✝ v✝ a b : α
inst✝ : DecidableEq α
u v : α
s : Finset α
h : filter (fun x => compress u v x ∉ 𝓒 u v s) (𝓒 u v s) = ∅
⊢ 𝓒 u v (𝓒 u v s) = 𝓒 u v s
state_after: α : Type u_1
inst✝³ : GeneralizedBooleanAlgebra α
inst✝² : DecidableRel Disjoint
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s✝ : Finset α
u✝ v✝ a b : α
inst✝ : DecidableEq α
u v : α
s : Finset α
h : filter (fun x => compress u v x ∉ 𝓒 u v s) (𝓒 u v s) = ∅
⊢ filter (fun x => compress u v x ∈ 𝓒 u v s) (𝓒 u v s) ∪ filter (fun x => compress u v x ∉ 𝓒 u v s) (𝓒 u v s) = 𝓒 u v s

tactic: exact filter_union_filter_neg_eq _ (compression u v s)
state_before: α : Type u_1
inst✝³ : GeneralizedBooleanAlgebra α
inst✝² : DecidableRel Disjoint
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s✝ : Finset α
u✝ v✝ a b : α
inst✝ : DecidableEq α
u v : α
s : Finset α
h : filter (fun x => compress u v x ∉ 𝓒 u v s) (𝓒 u v s) = ∅
⊢ filter (fun x => compress u v x ∈ 𝓒 u v s) (𝓒 u v s) ∪ filter (fun x => compress u v x ∉ 𝓒 u v s) (𝓒 u v s) = 𝓒 u v s
state_after: no goals
Theorem: norm_cexp_neg_mul_sq
File: Mathlib/Analysis/SpecialFunctions/Gaussian/GaussianIntegral.lean

tactic: rw [Complex.norm_eq_abs, Complex.abs_exp, ← ofReal_pow, mul_comm (-b) _, re_ofReal_mul, neg_re,
  mul_comm]
state_before: b : ℂ
x : ℝ
⊢ ‖cexp (-b * ↑x ^ 2)‖ = rexp (-b.re * x ^ 2)
state_after: no goals
Theorem: QuaternionGroup.a_one_pow
File: Mathlib/GroupTheory/SpecificGroups/Quaternion.lean

tactic: induction' k with k IH
state_before: n k : ℕ
⊢ a 1 ^ k = a ↑k
state_after: case zero
n : ℕ
⊢ a 1 ^ 0 = a ↑0

case succ
n k : ℕ
IH : a 1 ^ k = a ↑k
⊢ a 1 ^ (k + 1) = a ↑(k + 1)

tactic: rw [Nat.cast_zero]
state_before: case zero
n : ℕ
⊢ a 1 ^ 0 = a ↑0
state_after: case zero
n : ℕ
⊢ a 1 ^ 0 = a 0

tactic: rfl
state_before: case zero
n : ℕ
⊢ a 1 ^ 0 = a 0
state_after: no goals

tactic: rw [pow_succ, IH, a_mul_a]
state_before: case succ
n k : ℕ
IH : a 1 ^ k = a ↑k
⊢ a 1 ^ (k + 1) = a ↑(k + 1)
state_after: case succ
n k : ℕ
IH : a 1 ^ k = a ↑k
⊢ a (↑k + 1) = a ↑(k + 1)

tactic: congr 1
state_before: case succ
n k : ℕ
IH : a 1 ^ k = a ↑k
⊢ a (↑k + 1) = a ↑(k + 1)
state_after: case succ.e_a
n k : ℕ
IH : a 1 ^ k = a ↑k
⊢ ↑k + 1 = ↑(k + 1)

tactic: norm_cast
state_before: case succ.e_a
n k : ℕ
IH : a 1 ^ k = a ↑k
⊢ ↑k + 1 = ↑(k + 1)
state_after: no goals
Theorem: HahnSeries.mul_assoc'
File: Mathlib/RingTheory/HahnSeries/Multiplication.lean

tactic: ext b
state_before: Γ : Type u_1
Γ' : Type u_2
R : Type u_3
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalSemiring R
x y z : HahnSeries Γ R
⊢ x * y * z = x * (y * z)
state_after: case coeff.h
Γ : Type u_1
Γ' : Type u_2
R : Type u_3
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalSemiring R
x y z : HahnSeries Γ R
b : Γ
⊢ (x * y * z).coeff b = (x * (y * z)).coeff b

tactic: rw [mul_coeff_left' (x.isPWO_support.add y.isPWO_support) support_mul_subset_add_support,
  mul_coeff_right' (y.isPWO_support.add z.isPWO_support) support_mul_subset_add_support]
state_before: case coeff.h
Γ : Type u_1
Γ' : Type u_2
R : Type u_3
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalSemiring R
x y z : HahnSeries Γ R
b : Γ
⊢ (x * y * z).coeff b = (x * (y * z)).coeff b
state_after: case coeff.h
Γ : Type u_1
Γ' : Type u_2
R : Type u_3
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalSemiring R
x y z : HahnSeries Γ R
b : Γ
⊢ ∑ ij ∈ addAntidiagonal ⋯ ⋯ b, (x * y).coeff ij.1 * z.coeff ij.2 =
    ∑ ij ∈ addAntidiagonal ⋯ ⋯ b, x.coeff ij.1 * (y * z).coeff ij.2

tactic: simp only [mul_coeff, add_coeff, sum_mul, mul_sum, sum_sigma']
state_before: case coeff.h
Γ : Type u_1
Γ' : Type u_2
R : Type u_3
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalSemiring R
x y z : HahnSeries Γ R
b : Γ
⊢ ∑ ij ∈ addAntidiagonal ⋯ ⋯ b, (x * y).coeff ij.1 * z.coeff ij.2 =
    ∑ ij ∈ addAntidiagonal ⋯ ⋯ b, x.coeff ij.1 * (y * z).coeff ij.2
state_after: case coeff.h
Γ : Type u_1
Γ' : Type u_2
R : Type u_3
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalSemiring R
x y z : HahnSeries Γ R
b : Γ
⊢ ∑ x_1 ∈ (addAntidiagonal ⋯ ⋯ b).sigma fun a => addAntidiagonal ⋯ ⋯ a.1,
      x.coeff x_1.snd.1 * y.coeff x_1.snd.2 * z.coeff x_1.fst.2 =
    ∑ x_1 ∈ (addAntidiagonal ⋯ ⋯ b).sigma fun a => addAntidiagonal ⋯ ⋯ a.2,
      x.coeff x_1.fst.1 * (y.coeff x_1.snd.1 * z.coeff x_1.snd.2)

tactic: apply Finset.sum_nbij' (fun ⟨⟨_i, j⟩, ⟨k, l⟩⟩ ↦ ⟨(k, l + j), (l, j)⟩)
  (fun ⟨⟨i, _j⟩, ⟨k, l⟩⟩ ↦ ⟨(i + k, l), (i, k)⟩) <;>
  aesop (add safe Set.add_mem_add) (add simp [add_assoc, mul_assoc])
state_before: case coeff.h
Γ : Type u_1
Γ' : Type u_2
R : Type u_3
inst✝¹ : OrderedCancelAddCommMonoid Γ
inst✝ : NonUnitalSemiring R
x y z : HahnSeries Γ R
b : Γ
⊢ ∑ x_1 ∈ (addAntidiagonal ⋯ ⋯ b).sigma fun a => addAntidiagonal ⋯ ⋯ a.1,
      x.coeff x_1.snd.1 * y.coeff x_1.snd.2 * z.coeff x_1.fst.2 =
    ∑ x_1 ∈ (addAntidiagonal ⋯ ⋯ b).sigma fun a => addAntidiagonal ⋯ ⋯ a.2,
      x.coeff x_1.fst.1 * (y.coeff x_1.snd.1 * z.coeff x_1.snd.2)
state_after: no goals
Theorem: Nat.primeFactors_mono
File: Mathlib/Data/Nat/PrimeFin.lean

tactic: simp only [subset_iff, mem_primeFactors, and_imp]
state_before: a b k m n p : ℕ
hmn : m ∣ n
hn : n ≠ 0
⊢ m.primeFactors ⊆ n.primeFactors
state_after: a b k m n p : ℕ
hmn : m ∣ n
hn : n ≠ 0
⊢ ∀ ⦃x : ℕ⦄, Prime x → x ∣ m → m ≠ 0 → Prime x ∧ x ∣ n ∧ n ≠ 0

tactic: exact fun p hp hpm _ ↦ ⟨hp, hpm.trans hmn, hn⟩
state_before: a b k m n p : ℕ
hmn : m ∣ n
hn : n ≠ 0
⊢ ∀ ⦃x : ℕ⦄, Prime x → x ∣ m → m ≠ 0 → Prime x ∧ x ∣ n ∧ n ≠ 0
state_after: no goals
Theorem: isPreconnected_sUnion
File: Mathlib/Topology/Connected/Basic.lean

tactic: apply isPreconnected_of_forall x
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x : α
c : Set (Set α)
H1 : ∀ s ∈ c, x ∈ s
H2 : ∀ s ∈ c, IsPreconnected s
⊢ IsPreconnected (⋃₀ c)
state_after: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x : α
c : Set (Set α)
H1 : ∀ s ∈ c, x ∈ s
H2 : ∀ s ∈ c, IsPreconnected s
⊢ ∀ y ∈ ⋃₀ c, ∃ t ⊆ ⋃₀ c, x ∈ t ∧ y ∈ t ∧ IsPreconnected t

tactic: rintro y ⟨s, sc, ys⟩
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x : α
c : Set (Set α)
H1 : ∀ s ∈ c, x ∈ s
H2 : ∀ s ∈ c, IsPreconnected s
⊢ ∀ y ∈ ⋃₀ c, ∃ t ⊆ ⋃₀ c, x ∈ t ∧ y ∈ t ∧ IsPreconnected t
state_after: case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s✝ t u v : Set α
x : α
c : Set (Set α)
H1 : ∀ s ∈ c, x ∈ s
H2 : ∀ s ∈ c, IsPreconnected s
y : α
s : Set α
sc : s ∈ c
ys : y ∈ s
⊢ ∃ t ⊆ ⋃₀ c, x ∈ t ∧ y ∈ t ∧ IsPreconnected t

tactic: exact ⟨s, subset_sUnion_of_mem sc, H1 s sc, ys, H2 s sc⟩
state_before: case intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s✝ t u v : Set α
x : α
c : Set (Set α)
H1 : ∀ s ∈ c, x ∈ s
H2 : ∀ s ∈ c, IsPreconnected s
y : α
s : Set α
sc : s ∈ c
ys : y ∈ s
⊢ ∃ t ⊆ ⋃₀ c, x ∈ t ∧ y ∈ t ∧ IsPreconnected t
state_after: no goals
Theorem: SimpleGraph.edge_edgeSet_of_ne
File: Mathlib/Combinatorics/SimpleGraph/Operations.lean

tactic: rwa [edge, edgeSet_fromEdgeSet, sdiff_eq_left, Set.disjoint_singleton_left, Set.mem_setOf_eq,
  Sym2.isDiag_iff_proj_eq]
state_before: V : Type u_1
inst✝ : DecidableEq V
G : SimpleGraph V
s t : V
h : s ≠ t
⊢ (edge s t).edgeSet = {s(s, t)}
state_after: no goals
Theorem: Prod.mk_covBy_mk_iff
File: Mathlib/Order/Cover.lean

tactic: refine ⟨fun h => ?_, ?_⟩
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
⊢ (a₁, b₁) ⋖ (a₂, b₂) ↔ a₁ ⋖ a₂ ∧ b₁ = b₂ ∨ b₁ ⋖ b₂ ∧ a₁ = a₂
state_after: case refine_1
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
h : (a₁, b₁) ⋖ (a₂, b₂)
⊢ a₁ ⋖ a₂ ∧ b₁ = b₂ ∨ b₁ ⋖ b₂ ∧ a₁ = a₂

case refine_2
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
⊢ a₁ ⋖ a₂ ∧ b₁ = b₂ ∨ b₁ ⋖ b₂ ∧ a₁ = a₂ → (a₁, b₁) ⋖ (a₂, b₂)

tactic: obtain rfl | rfl : a₁ = a₂ ∨ b₁ = b₂ := fst_eq_or_snd_eq_of_wcovBy h.wcovBy
state_before: case refine_1
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
h : (a₁, b₁) ⋖ (a₂, b₂)
⊢ a₁ ⋖ a₂ ∧ b₁ = b₂ ∨ b₁ ⋖ b₂ ∧ a₁ = a₂
state_after: case refine_1.inl
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ : α
b b₁ b₂ : β
x y : α × β
h : (a₁, b₁) ⋖ (a₁, b₂)
⊢ a₁ ⋖ a₁ ∧ b₁ = b₂ ∨ b₁ ⋖ b₂ ∧ a₁ = a₁

case refine_1.inr
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ : β
x y : α × β
h : (a₁, b₁) ⋖ (a₂, b₁)
⊢ a₁ ⋖ a₂ ∧ b₁ = b₁ ∨ b₁ ⋖ b₁ ∧ a₁ = a₂

tactic: exact Or.inr ⟨mk_covBy_mk_iff_right.1 h, rfl⟩
state_before: case refine_1.inl
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ : α
b b₁ b₂ : β
x y : α × β
h : (a₁, b₁) ⋖ (a₁, b₂)
⊢ a₁ ⋖ a₁ ∧ b₁ = b₂ ∨ b₁ ⋖ b₂ ∧ a₁ = a₁
state_after: no goals

tactic: exact Or.inl ⟨mk_covBy_mk_iff_left.1 h, rfl⟩
state_before: case refine_1.inr
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ : β
x y : α × β
h : (a₁, b₁) ⋖ (a₂, b₁)
⊢ a₁ ⋖ a₂ ∧ b₁ = b₁ ∨ b₁ ⋖ b₁ ∧ a₁ = a₂
state_after: no goals

tactic: rintro (⟨h, rfl⟩ | ⟨h, rfl⟩)
state_before: case refine_2
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
⊢ a₁ ⋖ a₂ ∧ b₁ = b₂ ∨ b₁ ⋖ b₂ ∧ a₁ = a₂ → (a₁, b₁) ⋖ (a₂, b₂)
state_after: case refine_2.inl.intro
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ : β
x y : α × β
h : a₁ ⋖ a₂
⊢ (a₁, b₁) ⋖ (a₂, b₁)

case refine_2.inr.intro
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ : α
b b₁ b₂ : β
x y : α × β
h : b₁ ⋖ b₂
⊢ (a₁, b₁) ⋖ (a₁, b₂)

tactic: exact mk_covBy_mk_iff_left.2 h
state_before: case refine_2.inl.intro
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ : β
x y : α × β
h : a₁ ⋖ a₂
⊢ (a₁, b₁) ⋖ (a₂, b₁)
state_after: no goals

tactic: exact mk_covBy_mk_iff_right.2 h
state_before: case refine_2.inr.intro
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ : α
b b₁ b₂ : β
x y : α × β
h : b₁ ⋖ b₂
⊢ (a₁, b₁) ⋖ (a₁, b₂)
state_after: no goals
Theorem: Nat.two_mul_ne_two_mul_add_one
File: Mathlib/Data/Nat/Defs.lean

tactic: rw [Nat.add_comm, add_mul_mod_self_left, mul_mod_right, mod_eq_of_lt] <;> simp
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ ¬2 * n % 2 = (2 * m + 1) % 2
state_after: no goals
Theorem: Polynomial.natCast_mul_comp
File: Mathlib/Algebra/Polynomial/Eval.lean

tactic: rw [← C_eq_natCast, C_mul_comp]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q r : R[X]
n : ℕ
⊢ (↑n * p).comp r = ↑n * p.comp r
state_after: no goals
Theorem: IsLocalization.coeSubmodule_bot
File: Mathlib/RingTheory/Localization/Submodule.lean

tactic: rw [coeSubmodule, Submodule.map_bot]
state_before: R : Type u_1
inst✝³ : CommRing R
M : Submonoid R
S : Type u_2
inst✝² : CommRing S
inst✝¹ : Algebra R S
P : Type u_3
inst✝ : CommRing P
⊢ coeSubmodule S ⊥ = ⊥
state_after: no goals
Theorem: sameRay_iff_inv_norm_smul_eq_of_ne
File: Mathlib/Analysis/NormedSpace/Ray.lean

tactic: rw [inv_smul_eq_iff₀, smul_comm, eq_comm, inv_smul_eq_iff₀, sameRay_iff_norm_smul_eq] <;>
  rwa [norm_ne_zero_iff]
state_before: E : Type u_1
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
x y : F
hx : x ≠ 0
hy : y ≠ 0
⊢ SameRay ℝ x y ↔ ‖x‖⁻¹ • x = ‖y‖⁻¹ • y
state_after: no goals
Theorem: derivWithin.neg
File: Mathlib/Analysis/Calculus/Deriv/Add.lean

tactic: simp only [derivWithin, fderivWithin_neg hxs, ContinuousLinearMap.neg_apply]
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
hxs : UniqueDiffWithinAt 𝕜 s x
⊢ derivWithin (fun y => -f y) s x = -derivWithin f s x
state_after: no goals
Theorem: Finset.shatters_univ
File: Mathlib/Combinatorics/SetFamily/Shatter.lean

tactic: rw [shatters_iff, powerset_univ]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s t : Finset α
a : α
n : ℕ
inst✝ : Fintype α
⊢ 𝒜.Shatters univ ↔ 𝒜 = univ
state_after: α : Type u_1
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s t : Finset α
a : α
n : ℕ
inst✝ : Fintype α
⊢ image (fun t => univ ∩ t) 𝒜 = univ ↔ 𝒜 = univ

tactic: simp_rw [univ_inter, image_id']
state_before: α : Type u_1
inst✝¹ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s t : Finset α
a : α
n : ℕ
inst✝ : Fintype α
⊢ image (fun t => univ ∩ t) 𝒜 = univ ↔ 𝒜 = univ
state_after: no goals
Theorem: CategoryTheory.MorphismProperty.LeftFraction₂Rel.snd
File: Mathlib/CategoryTheory/Localization/CalculusOfFractions/Fractions.lean

tactic: obtain ⟨Z, t₁, t₂, hst, _, hft', ht⟩ := h
state_before: C : Type u_1
D : Type u_2
inst✝² : Category.{u_3, u_1} C
inst✝¹ : Category.{?u.7901, u_2} D
L : C ⥤ D
W : MorphismProperty C
inst✝ : L.IsLocalization W
X Y : C
z₁ z₂ : W.LeftFraction₂ X Y
h : LeftFraction₂Rel z₁ z₂
⊢ LeftFractionRel z₁.snd z₂.snd
state_after: case intro.intro.intro.intro.intro.intro
C : Type u_1
D : Type u_2
inst✝² : Category.{u_3, u_1} C
inst✝¹ : Category.{?u.7901, u_2} D
L : C ⥤ D
W : MorphismProperty C
inst✝ : L.IsLocalization W
X Y : C
z₁ z₂ : W.LeftFraction₂ X Y
Z : C
t₁ : z₁.Y' ⟶ Z
t₂ : z₂.Y' ⟶ Z
hst : z₁.s ≫ t₁ = z₂.s ≫ t₂
w✝ : z₁.f ≫ t₁ = z₂.f ≫ t₂
hft' : z₁.f' ≫ t₁ = z₂.f' ≫ t₂
ht : W (z₁.s ≫ t₁)
⊢ LeftFractionRel z₁.snd z₂.snd

tactic: exact ⟨Z, t₁, t₂, hst, hft', ht⟩
state_before: case intro.intro.intro.intro.intro.intro
C : Type u_1
D : Type u_2
inst✝² : Category.{u_3, u_1} C
inst✝¹ : Category.{?u.7901, u_2} D
L : C ⥤ D
W : MorphismProperty C
inst✝ : L.IsLocalization W
X Y : C
z₁ z₂ : W.LeftFraction₂ X Y
Z : C
t₁ : z₁.Y' ⟶ Z
t₂ : z₂.Y' ⟶ Z
hst : z₁.s ≫ t₁ = z₂.s ≫ t₂
w✝ : z₁.f ≫ t₁ = z₂.f ≫ t₂
hft' : z₁.f' ≫ t₁ = z₂.f' ≫ t₂
ht : W (z₁.s ≫ t₁)
⊢ LeftFractionRel z₁.snd z₂.snd
state_after: no goals
Theorem: Cardinal.ofENat_toENat_eq_self
File: Mathlib/SetTheory/Cardinal/ENat.lean

tactic: rw [eq_comm, ← enat_gc.exists_eq_l]
state_before: a : Cardinal.{u_1}
⊢ ↑(toENat a) = a ↔ a ≤ ℵ₀
state_after: a : Cardinal.{u_1}
⊢ (∃ a_1, a = ↑a_1) ↔ a ≤ ℵ₀

tactic: simpa only [mem_range, eq_comm] using Set.ext_iff.1 range_ofENat a
state_before: a : Cardinal.{u_1}
⊢ (∃ a_1, a = ↑a_1) ↔ a ≤ ℵ₀
state_after: no goals
Theorem: Nat.succ_iterate
File: Mathlib/Data/Nat/SuccPred.lean

tactic: rw [Function.iterate_succ', add_succ]
state_before: m n✝ a n : ℕ
⊢ succ^[n + 1] a = a + (n + 1)
state_after: m n✝ a n : ℕ
⊢ (succ ∘ succ^[n]) a = (a + n).succ

tactic: exact congr_arg _ (succ_iterate a n)
state_before: m n✝ a n : ℕ
⊢ (succ ∘ succ^[n]) a = (a + n).succ
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.nonsingular_neg_of_Z_ne_zero
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: exact (nonsingular_some ..).mpr <| Affine.nonsingular_neg <| (nonsingular_of_Z_ne_zero hPz).mp hP
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → F
hP : W.Nonsingular P
hPz : P z ≠ 0
⊢ W.Nonsingular ![P x / P z ^ 2, W.toAffine.negY (P x / P z ^ 2) (P y / P z ^ 3), 1]
state_after: no goals
Theorem: Associates.isUnit_iff_eq_bot
File: Mathlib/Algebra/Associated.lean

tactic: rw [Associates.isUnit_iff_eq_one, bot_eq_one]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoid α
a : Associates α
⊢ IsUnit a ↔ a = ⊥
state_after: no goals
Theorem: Finset.iInf_singleton
File: Mathlib/Data/Finset/Lattice.lean

tactic: simp
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : CompleteLattice β
a : α
s : α → β
⊢ ⨅ x ∈ {a}, s x = s a
state_after: no goals
Theorem: CategoryTheory.GrothendieckTopology.CoversTop.sections_ext
File: Mathlib/CategoryTheory/Sites/CoversTop.lean

tactic: ext W
state_before: C : Type u
inst✝¹ : Category.{v, u} C
J : GrothendieckTopology C
A : Type u'
inst✝ : Category.{v', u'} A
I : Type u_1
Y : I → C
hY : J.CoversTop Y
F : Sheaf J (Type u_2)
x y : ↑F.val.sections
h : ∀ (i : I), ↑x { unop := Y i } = ↑y { unop := Y i }
⊢ x = y
state_after: case a.h
C : Type u
inst✝¹ : Category.{v, u} C
J : GrothendieckTopology C
A : Type u'
inst✝ : Category.{v', u'} A
I : Type u_1
Y : I → C
hY : J.CoversTop Y
F : Sheaf J (Type u_2)
x y : ↑F.val.sections
h : ∀ (i : I), ↑x { unop := Y i } = ↑y { unop := Y i }
W : Cᵒᵖ
⊢ ↑x W = ↑y W

tactic: apply (Presieve.isSeparated_of_isSheaf J F.1
  ((isSheaf_iff_isSheaf_of_type _ _).1 F.2) _ (hY W.unop)).ext
state_before: case a.h
C : Type u
inst✝¹ : Category.{v, u} C
J : GrothendieckTopology C
A : Type u'
inst✝ : Category.{v', u'} A
I : Type u_1
Y : I → C
hY : J.CoversTop Y
F : Sheaf J (Type u_2)
x y : ↑F.val.sections
h : ∀ (i : I), ↑x { unop := Y i } = ↑y { unop := Y i }
W : Cᵒᵖ
⊢ ↑x W = ↑y W
state_after: case a.h
C : Type u
inst✝¹ : Category.{v, u} C
J : GrothendieckTopology C
A : Type u'
inst✝ : Category.{v', u'} A
I : Type u_1
Y : I → C
hY : J.CoversTop Y
F : Sheaf J (Type u_2)
x y : ↑F.val.sections
h : ∀ (i : I), ↑x { unop := Y i } = ↑y { unop := Y i }
W : Cᵒᵖ
⊢ ∀ ⦃Y_1 : C⦄ ⦃f : Y_1 ⟶ W.unop⦄, (Sieve.ofObjects Y W.unop).arrows f → F.val.map f.op (↑x W) = F.val.map f.op (↑y W)

tactic: rintro T a ⟨i, ⟨b⟩⟩
state_before: case a.h
C : Type u
inst✝¹ : Category.{v, u} C
J : GrothendieckTopology C
A : Type u'
inst✝ : Category.{v', u'} A
I : Type u_1
Y : I → C
hY : J.CoversTop Y
F : Sheaf J (Type u_2)
x y : ↑F.val.sections
h : ∀ (i : I), ↑x { unop := Y i } = ↑y { unop := Y i }
W : Cᵒᵖ
⊢ ∀ ⦃Y_1 : C⦄ ⦃f : Y_1 ⟶ W.unop⦄, (Sieve.ofObjects Y W.unop).arrows f → F.val.map f.op (↑x W) = F.val.map f.op (↑y W)
state_after: case a.h.intro.intro
C : Type u
inst✝¹ : Category.{v, u} C
J : GrothendieckTopology C
A : Type u'
inst✝ : Category.{v', u'} A
I : Type u_1
Y : I → C
hY : J.CoversTop Y
F : Sheaf J (Type u_2)
x y : ↑F.val.sections
h : ∀ (i : I), ↑x { unop := Y i } = ↑y { unop := Y i }
W : Cᵒᵖ
T : C
a : T ⟶ W.unop
i : I
b : T ⟶ Y i
⊢ F.val.map a.op (↑x W) = F.val.map a.op (↑y W)

tactic: simpa using congr_arg (F.1.map b.op) (h i)
state_before: case a.h.intro.intro
C : Type u
inst✝¹ : Category.{v, u} C
J : GrothendieckTopology C
A : Type u'
inst✝ : Category.{v', u'} A
I : Type u_1
Y : I → C
hY : J.CoversTop Y
F : Sheaf J (Type u_2)
x y : ↑F.val.sections
h : ∀ (i : I), ↑x { unop := Y i } = ↑y { unop := Y i }
W : Cᵒᵖ
T : C
a : T ⟶ W.unop
i : I
b : T ⟶ Y i
⊢ F.val.map a.op (↑x W) = F.val.map a.op (↑y W)
state_after: no goals
Theorem: Complex.ofReal_zsmul
File: Mathlib/Data/Complex/Basic.lean

tactic: simp
state_before: n : ℤ
r : ℝ
⊢ ↑(n • r) = n • ↑r
state_after: no goals
Theorem: Subtype.forall_set_subtype
File: Mathlib/Data/Set/Image.lean

tactic: rw [← forall_subset_range_iff, range_coe]
state_before: α : Type u_1
t : Set α
p : Set α → Prop
⊢ (∀ (s : Set ↑t), p (val '' s)) ↔ ∀ s ⊆ t, p s
state_after: no goals
Theorem: TensorPower.cast_eq_cast
File: Mathlib/LinearAlgebra/TensorPower.lean

tactic: subst h
state_before: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
i j : ℕ
h : i = j
⊢ ⇑(cast R M h) = _root_.cast ⋯
state_after: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
i : ℕ
⊢ ⇑(cast R M ⋯) = _root_.cast ⋯

tactic: rw [cast_refl]
state_before: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
i : ℕ
⊢ ⇑(cast R M ⋯) = _root_.cast ⋯
state_after: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
i : ℕ
⊢ ⇑(LinearEquiv.refl R (⨂[R]^i M)) = _root_.cast ⋯

tactic: rfl
state_before: R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
i : ℕ
⊢ ⇑(LinearEquiv.refl R (⨂[R]^i M)) = _root_.cast ⋯
state_after: no goals
Theorem: mem_leftCoset_leftCoset
File: Mathlib/GroupTheory/Coset.lean

tactic: rw [← SetLike.mem_coe, ← ha]
state_before: α : Type u_1
inst✝ : Monoid α
s : Submonoid α
a : α
ha : a • ↑s = ↑s
⊢ a ∈ s
state_after: α : Type u_1
inst✝ : Monoid α
s : Submonoid α
a : α
ha : a • ↑s = ↑s
⊢ a ∈ a • ↑s

tactic: exact mem_own_leftCoset s a
state_before: α : Type u_1
inst✝ : Monoid α
s : Submonoid α
a : α
ha : a • ↑s = ↑s
⊢ a ∈ a • ↑s
state_after: no goals
Theorem: Set.infinite_of_finite_compl
File: Mathlib/Data/Set/Finite.lean

tactic: simpa using hs.union h
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s✝ t : Set α
inst✝ : Infinite α
s : Set α
hs : sᶜ.Finite
h : s.Finite
⊢ univ.Finite
state_after: no goals