1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Real.iInf_mul_of_nonneg
File: Mathlib/Data/Real/Pointwise.lean

tactic: simp only [Real.mul_iInf_of_nonneg ha, mul_comm]
state_before: ι : Sort u_1
α : Type u_2
inst✝ : LinearOrderedField α
r : ℝ
ha : 0 ≤ r
f : ι → ℝ
⊢ (⨅ i, f i) * r = ⨅ i, f i * r
state_after: no goals
Theorem: SimpleGraph.neighborSet_compl
File: Mathlib/Combinatorics/SimpleGraph/Basic.lean

tactic: ext w
state_before: ι : Sort u_1
V : Type u
G✝ : SimpleGraph V
a b c u v✝ w : V
e : Sym2 V
G : SimpleGraph V
v : V
⊢ Gᶜ.neighborSet v = (G.neighborSet v)ᶜ \ {v}
state_after: case h
ι : Sort u_1
V : Type u
G✝ : SimpleGraph V
a b c u v✝ w✝ : V
e : Sym2 V
G : SimpleGraph V
v w : V
⊢ w ∈ Gᶜ.neighborSet v ↔ w ∈ (G.neighborSet v)ᶜ \ {v}

tactic: simp [and_comm, eq_comm]
state_before: case h
ι : Sort u_1
V : Type u
G✝ : SimpleGraph V
a b c u v✝ w✝ : V
e : Sym2 V
G : SimpleGraph V
v w : V
⊢ w ∈ Gᶜ.neighborSet v ↔ w ∈ (G.neighborSet v)ᶜ \ {v}
state_after: no goals
Theorem: finrank_span_singleton
File: Mathlib/LinearAlgebra/FiniteDimensional.lean

tactic: apply le_antisymm
state_before: K : Type u
V : Type v
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
v : V
hv : v ≠ 0
⊢ finrank K ↥(span K {v}) = 1
state_after: case a
K : Type u
V : Type v
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
v : V
hv : v ≠ 0
⊢ finrank K ↥(span K {v}) ≤ 1

case a
K : Type u
V : Type v
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
v : V
hv : v ≠ 0
⊢ 1 ≤ finrank K ↥(span K {v})

tactic: exact finrank_span_le_card ({v} : Set V)
state_before: case a
K : Type u
V : Type v
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
v : V
hv : v ≠ 0
⊢ finrank K ↥(span K {v}) ≤ 1
state_after: no goals

tactic: rw [Nat.succ_le_iff, finrank_pos_iff]
state_before: case a
K : Type u
V : Type v
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
v : V
hv : v ≠ 0
⊢ 1 ≤ finrank K ↥(span K {v})
state_after: case a
K : Type u
V : Type v
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
v : V
hv : v ≠ 0
⊢ Nontrivial ↥(span K {v})

tactic: use ⟨v, mem_span_singleton_self v⟩, 0
state_before: case a
K : Type u
V : Type v
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
v : V
hv : v ≠ 0
⊢ Nontrivial ↥(span K {v})
state_after: case h
K : Type u
V : Type v
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
v : V
hv : v ≠ 0
⊢ ⟨v, ⋯⟩ ≠ 0

tactic: simp [hv]
state_before: case h
K : Type u
V : Type v
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
v : V
hv : v ≠ 0
⊢ ⟨v, ⋯⟩ ≠ 0
state_after: no goals
Theorem: Matroid.Basis.basis_union
File: Mathlib/Data/Matroid/Basic.lean

tactic: convert hIX.union_basis_union hIY _ <;> rw [union_self]
state_before: α : Type u_1
M : Matroid α
I X Y : Set α
hIX : M.Basis I X
hIY : M.Basis I Y
⊢ M.Basis I (X ∪ Y)
state_after: α : Type u_1
M : Matroid α
I X Y : Set α
hIX : M.Basis I X
hIY : M.Basis I Y
⊢ M.Indep I

tactic: exact hIX.indep
state_before: α : Type u_1
M : Matroid α
I X Y : Set α
hIX : M.Basis I X
hIY : M.Basis I Y
⊢ M.Indep I
state_after: no goals
Theorem: SimpleGraph.comap_monotone
File: Mathlib/Combinatorics/SimpleGraph/Maps.lean

tactic: intro G G' h _ _ ha
state_before: V : Type u_1
W : Type u_2
X : Type u_3
G : SimpleGraph V
G' : SimpleGraph W
u v : V
f : V ↪ W
⊢ Monotone (SimpleGraph.comap ⇑f)
state_after: V : Type u_1
W : Type u_2
X : Type u_3
G✝ : SimpleGraph V
G'✝ : SimpleGraph W
u v : V
f : V ↪ W
G G' : SimpleGraph W
h : G ≤ G'
v✝ w✝ : V
ha : (SimpleGraph.comap (⇑f) G).Adj v✝ w✝
⊢ (SimpleGraph.comap (⇑f) G').Adj v✝ w✝

tactic: exact h ha
state_before: V : Type u_1
W : Type u_2
X : Type u_3
G✝ : SimpleGraph V
G'✝ : SimpleGraph W
u v : V
f : V ↪ W
G G' : SimpleGraph W
h : G ≤ G'
v✝ w✝ : V
ha : (SimpleGraph.comap (⇑f) G).Adj v✝ w✝
⊢ (SimpleGraph.comap (⇑f) G').Adj v✝ w✝
state_after: no goals
Theorem: Ideal.mem_jacobson_iff
File: Mathlib/RingTheory/JacobsonIdeal.lean

tactic: rw [mul_assoc, ← mul_add_one r (y * x), hr, ← hpq, ← neg_sub, add_sub_cancel_right]
state_before: R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
x : R
hx : x ∈ I.jacobson
y : R
hxy : I ⊔ span {y * x + 1} = ⊤
p : R
hpi : p ∈ I
q : R
hq : q ∈ span {y * x + 1}
hpq : p + q = 1
r : R
hr : r * (y * x + 1) = q
⊢ r * y * x + r - 1 ∈ I
state_after: R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
x : R
hx : x ∈ I.jacobson
y : R
hxy : I ⊔ span {y * x + 1} = ⊤
p : R
hpi : p ∈ I
q : R
hq : q ∈ span {y * x + 1}
hpq : p + q = 1
r : R
hr : r * (y * x + 1) = q
⊢ -p ∈ I

tactic: exact I.neg_mem hpi
state_before: R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
x : R
hx : x ∈ I.jacobson
y : R
hxy : I ⊔ span {y * x + 1} = ⊤
p : R
hpi : p ∈ I
q : R
hq : q ∈ span {y * x + 1}
hpq : p + q = 1
r : R
hr : r * (y * x + 1) = q
⊢ -p ∈ I
state_after: no goals

tactic: rw [mul_assoc, ← mul_add_one z, neg_mul, ← sub_eq_iff_eq_add.mpr df.symm, neg_sub,
  sub_add_cancel]
state_before: R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
x : R
hx : ∀ (y : R), ∃ z, z * y * x + z - 1 ∈ I
M : Ideal R
x✝ : M ∈ {J | I ≤ J ∧ J.IsMaximal}
him : I ≤ M
hm : M.IsMaximal
hxm : x ∉ M
y i : R
hi : i ∈ M
df : y * x + i = 1
z : R
hz : z * -y * x + z - 1 ∈ I
⊢ z * -y * x + z ∈ M
state_after: R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
x : R
hx : ∀ (y : R), ∃ z, z * y * x + z - 1 ∈ I
M : Ideal R
x✝ : M ∈ {J | I ≤ J ∧ J.IsMaximal}
him : I ≤ M
hm : M.IsMaximal
hxm : x ∉ M
y i : R
hi : i ∈ M
df : y * x + i = 1
z : R
hz : z * -y * x + z - 1 ∈ I
⊢ z * i ∈ M

tactic: exact M.mul_mem_left _ hi
state_before: R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
x : R
hx : ∀ (y : R), ∃ z, z * y * x + z - 1 ∈ I
M : Ideal R
x✝ : M ∈ {J | I ≤ J ∧ J.IsMaximal}
him : I ≤ M
hm : M.IsMaximal
hxm : x ∉ M
y i : R
hi : i ∈ M
df : y * x + i = 1
z : R
hz : z * -y * x + z - 1 ∈ I
⊢ z * i ∈ M
state_after: no goals
Theorem: ConjAct.orbit_eq_carrier_conjClasses
File: Mathlib/GroupTheory/GroupAction/ConjAct.lean

tactic: ext h
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
g : G
⊢ orbit (ConjAct G) g = (ConjClasses.mk g).carrier
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
g h : G
⊢ h ∈ orbit (ConjAct G) g ↔ h ∈ (ConjClasses.mk g).carrier

tactic: rw [ConjClasses.mem_carrier_iff_mk_eq, ConjClasses.mk_eq_mk_iff_isConj, mem_orbit_conjAct]
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
g h : G
⊢ h ∈ orbit (ConjAct G) g ↔ h ∈ (ConjClasses.mk g).carrier
state_after: no goals
Theorem: map_mem_minimals
File: Mathlib/Order/Minimal.lean

tactic: rintro _ ⟨a', h', rfl⟩
state_before: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a✝ b : α
inst✝ : PartialOrder α
f : α → β
r : α → α → Prop
s : β → β → Prop
x : Set α
hf : ∀ ⦃a a' : α⦄, a ∈ x → a' ∈ x → (r a a' ↔ s (f a) (f a'))
a : α
ha : a ∈ minimals r x
⊢ ∀ ⦃b : β⦄, b ∈ f '' x → s b (f a) → s (f a) b
state_after: case intro.intro
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a✝ b : α
inst✝ : PartialOrder α
f : α → β
r : α → α → Prop
s : β → β → Prop
x : Set α
hf : ∀ ⦃a a' : α⦄, a ∈ x → a' ∈ x → (r a a' ↔ s (f a) (f a'))
a : α
ha : a ∈ minimals r x
a' : α
h' : a' ∈ x
⊢ s (f a') (f a) → s (f a) (f a')

tactic: rw [← hf ha.1 h', ← hf h' ha.1]
state_before: case intro.intro
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a✝ b : α
inst✝ : PartialOrder α
f : α → β
r : α → α → Prop
s : β → β → Prop
x : Set α
hf : ∀ ⦃a a' : α⦄, a ∈ x → a' ∈ x → (r a a' ↔ s (f a) (f a'))
a : α
ha : a ∈ minimals r x
a' : α
h' : a' ∈ x
⊢ s (f a') (f a) → s (f a) (f a')
state_after: case intro.intro
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a✝ b : α
inst✝ : PartialOrder α
f : α → β
r : α → α → Prop
s : β → β → Prop
x : Set α
hf : ∀ ⦃a a' : α⦄, a ∈ x → a' ∈ x → (r a a' ↔ s (f a) (f a'))
a : α
ha : a ∈ minimals r x
a' : α
h' : a' ∈ x
⊢ r a' a → r a a'

tactic: exact ha.2 h'
state_before: case intro.intro
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a✝ b : α
inst✝ : PartialOrder α
f : α → β
r : α → α → Prop
s : β → β → Prop
x : Set α
hf : ∀ ⦃a a' : α⦄, a ∈ x → a' ∈ x → (r a a' ↔ s (f a) (f a'))
a : α
ha : a ∈ minimals r x
a' : α
h' : a' ∈ x
⊢ r a' a → r a a'
state_after: no goals
Theorem: Nat.prime_of_mem_factors
File: Mathlib/Data/Nat/Factors.lean

tactic: match n with
| 0 => simp
| 1 => simp
| k + 2 =>
    intro p h
    let m := minFac (k + 2)
    have : (k + 2) / m < (k + 2) := factors_lemma
    have h₁ : p = m ∨ p ∈ factors ((k + 2) / m) :=
      List.mem_cons.1 (by rwa [factors] at h)
    exact Or.casesOn h₁ (fun h₂ => h₂.symm ▸ minFac_prime (by simp)) prime_of_mem_factors
state_before: n : ℕ
⊢ ∀ {p : ℕ}, p ∈ n.factors → Prime p
state_after: no goals

tactic: simp
state_before: n : ℕ
⊢ ∀ {p : ℕ}, p ∈ factors 0 → Prime p
state_after: no goals

tactic: simp
state_before: n : ℕ
⊢ ∀ {p : ℕ}, p ∈ factors 1 → Prime p
state_after: no goals

tactic: intro p h
state_before: n k : ℕ
⊢ ∀ {p : ℕ}, p ∈ (k + 2).factors → Prime p
state_after: n k p : ℕ
h : p ∈ (k + 2).factors
⊢ Prime p

tactic: let m := minFac (k + 2)
state_before: n k p : ℕ
h : p ∈ (k + 2).factors
⊢ Prime p
state_after: n k p : ℕ
h : p ∈ (k + 2).factors
m : ℕ := (k + 2).minFac
⊢ Prime p

tactic: have : (k + 2) / m < (k + 2) := factors_lemma
state_before: n k p : ℕ
h : p ∈ (k + 2).factors
m : ℕ := (k + 2).minFac
⊢ Prime p
state_after: n k p : ℕ
h : p ∈ (k + 2).factors
m : ℕ := (k + 2).minFac
this : (k + 2) / m < k + 2
⊢ Prime p

tactic: have h₁ : p = m ∨ p ∈ factors ((k + 2) / m) :=
  List.mem_cons.1 (by rwa [factors] at h)
state_before: n k p : ℕ
h : p ∈ (k + 2).factors
m : ℕ := (k + 2).minFac
this : (k + 2) / m < k + 2
⊢ Prime p
state_after: n k p : ℕ
h : p ∈ (k + 2).factors
m : ℕ := (k + 2).minFac
this : (k + 2) / m < k + 2
h₁ : p = m ∨ p ∈ ((k + 2) / m).factors
⊢ Prime p

tactic: exact Or.casesOn h₁ (fun h₂ => h₂.symm ▸ minFac_prime (by simp)) prime_of_mem_factors
state_before: n k p : ℕ
h : p ∈ (k + 2).factors
m : ℕ := (k + 2).minFac
this : (k + 2) / m < k + 2
h₁ : p = m ∨ p ∈ ((k + 2) / m).factors
⊢ Prime p
state_after: no goals

tactic: rwa [factors] at h
state_before: n k p : ℕ
h : p ∈ (k + 2).factors
m : ℕ := (k + 2).minFac
this : (k + 2) / m < k + 2
⊢ p ∈ m :: ((k + 2) / m).factors
state_after: no goals

tactic: simp
state_before: n k p : ℕ
h : p ∈ (k + 2).factors
m : ℕ := (k + 2).minFac
this : (k + 2) / m < k + 2
h₁ : p = m ∨ p ∈ ((k + 2) / m).factors
h₂ : p = m
⊢ k + 2 ≠ 1
state_after: no goals
Theorem: NormedSpace.isBounded_polar_of_mem_nhds_zero
File: Mathlib/Analysis/NormedSpace/Dual.lean

tactic: obtain ⟨a, ha⟩ : ∃ a : 𝕜, 1 < ‖a‖ := NormedField.exists_one_lt_norm 𝕜
state_before: 𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
s_nhd : s ∈ 𝓝 0
⊢ IsBounded (polar 𝕜 s)
state_after: case intro
𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
s_nhd : s ∈ 𝓝 0
a : 𝕜
ha : 1 < ‖a‖
⊢ IsBounded (polar 𝕜 s)

tactic: obtain ⟨r, r_pos, r_ball⟩ : ∃ r : ℝ, 0 < r ∧ ball 0 r ⊆ s := Metric.mem_nhds_iff.1 s_nhd
state_before: case intro
𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
s_nhd : s ∈ 𝓝 0
a : 𝕜
ha : 1 < ‖a‖
⊢ IsBounded (polar 𝕜 s)
state_after: case intro.intro.intro
𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
s_nhd : s ∈ 𝓝 0
a : 𝕜
ha : 1 < ‖a‖
r : ℝ
r_pos : 0 < r
r_ball : ball 0 r ⊆ s
⊢ IsBounded (polar 𝕜 s)

tactic: exact isBounded_closedBall.subset
  (((dualPairing 𝕜 E).flip.polar_antitone r_ball).trans <|
    polar_ball_subset_closedBall_div ha r_pos)
state_before: case intro.intro.intro
𝕜 : Type u_1
inst✝² : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
s_nhd : s ∈ 𝓝 0
a : 𝕜
ha : 1 < ‖a‖
r : ℝ
r_pos : 0 < r
r_ball : ball 0 r ⊆ s
⊢ IsBounded (polar 𝕜 s)
state_after: no goals
Theorem: Fin.foldr_eq_foldr_list
File: .lake/packages/batteries/Batteries/Data/Fin/Lemmas.lean

tactic: induction n with
| zero => rw [foldr_zero, list_zero, List.foldr_nil]
| succ n ih => rw [foldr_succ, ih, list_succ, List.foldr_cons, List.foldr_map]
state_before: n : Nat
α : Type u_1
f : Fin n → α → α
x : α
⊢ foldr n f x = List.foldr f x (list n)
state_after: no goals

tactic: rw [foldr_zero, list_zero, List.foldr_nil]
state_before: case zero
α : Type u_1
x : α
f : Fin 0 → α → α
⊢ foldr 0 f x = List.foldr f x (list 0)
state_after: no goals

tactic: rw [foldr_succ, ih, list_succ, List.foldr_cons, List.foldr_map]
state_before: case succ
α : Type u_1
x : α
n : Nat
ih : ∀ (f : Fin n → α → α), foldr n f x = List.foldr f x (list n)
f : Fin (n + 1) → α → α
⊢ foldr (n + 1) f x = List.foldr f x (list (n + 1))
state_after: no goals
Theorem: Sum.isLeft_eq_false
File: .lake/packages/batteries/Batteries/Data/Sum/Lemmas.lean

tactic: cases x <;> simp
state_before: α : Type u_1
β : Type u_2
x : α ⊕ β
⊢ x.isLeft = false ↔ x.isRight = true
state_after: no goals
Theorem: ContinuousLinearMap.comp_sub
File: Mathlib/Topology/Algebra/Module/Basic.lean

tactic: ext
state_before: R : Type u_1
inst✝¹⁶ : Ring R
R₂ : Type u_2
inst✝¹⁵ : Ring R₂
R₃ : Type u_3
inst✝¹⁴ : Ring R₃
M : Type u_4
inst✝¹³ : TopologicalSpace M
inst✝¹² : AddCommGroup M
M₂ : Type u_5
inst✝¹¹ : TopologicalSpace M₂
inst✝¹⁰ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁹ : TopologicalSpace M₃
inst✝⁸ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁷ : TopologicalSpace M₄
inst✝⁶ : AddCommGroup M₄
inst✝⁵ : Module R M
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝¹ : TopologicalAddGroup M₂
inst✝ : TopologicalAddGroup M₃
g : M₂ →SL[σ₂₃] M₃
f₁ f₂ : M →SL[σ₁₂] M₂
⊢ g.comp (f₁ - f₂) = g.comp f₁ - g.comp f₂
state_after: case h
R : Type u_1
inst✝¹⁶ : Ring R
R₂ : Type u_2
inst✝¹⁵ : Ring R₂
R₃ : Type u_3
inst✝¹⁴ : Ring R₃
M : Type u_4
inst✝¹³ : TopologicalSpace M
inst✝¹² : AddCommGroup M
M₂ : Type u_5
inst✝¹¹ : TopologicalSpace M₂
inst✝¹⁰ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁹ : TopologicalSpace M₃
inst✝⁸ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁷ : TopologicalSpace M₄
inst✝⁶ : AddCommGroup M₄
inst✝⁵ : Module R M
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝¹ : TopologicalAddGroup M₂
inst✝ : TopologicalAddGroup M₃
g : M₂ →SL[σ₂₃] M₃
f₁ f₂ : M →SL[σ₁₂] M₂
x✝ : M
⊢ (g.comp (f₁ - f₂)) x✝ = (g.comp f₁ - g.comp f₂) x✝

tactic: simp
state_before: case h
R : Type u_1
inst✝¹⁶ : Ring R
R₂ : Type u_2
inst✝¹⁵ : Ring R₂
R₃ : Type u_3
inst✝¹⁴ : Ring R₃
M : Type u_4
inst✝¹³ : TopologicalSpace M
inst✝¹² : AddCommGroup M
M₂ : Type u_5
inst✝¹¹ : TopologicalSpace M₂
inst✝¹⁰ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁹ : TopologicalSpace M₃
inst✝⁸ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁷ : TopologicalSpace M₄
inst✝⁶ : AddCommGroup M₄
inst✝⁵ : Module R M
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝¹ : TopologicalAddGroup M₂
inst✝ : TopologicalAddGroup M₃
g : M₂ →SL[σ₂₃] M₃
f₁ f₂ : M →SL[σ₁₂] M₂
x✝ : M
⊢ (g.comp (f₁ - f₂)) x✝ = (g.comp f₁ - g.comp f₂) x✝
state_after: no goals
Theorem: ZMod.χ₄_int_mod_four
File: Mathlib/NumberTheory/LegendreSymbol/ZModChar.lean

tactic: rw [← ZMod.intCast_mod n 4, Nat.cast_ofNat]
state_before: n : ℤ
⊢ χ₄ ↑n = χ₄ ↑(n % 4)
state_after: no goals
Theorem: IsCyclic.image_range_orderOf
File: Mathlib/GroupTheory/SpecificGroups/Cyclic.lean

tactic: simp_rw [← SetLike.mem_coe] at ha
state_before: α : Type u
a : α
inst✝² : Group α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
ha : ∀ (x : α), x ∈ zpowers a
⊢ image (fun i => a ^ i) (range (orderOf a)) = univ
state_after: α : Type u
a : α
inst✝² : Group α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
ha : ∀ (x : α), x ∈ ↑(zpowers a)
⊢ image (fun i => a ^ i) (range (orderOf a)) = univ

tactic: simp only [_root_.image_range_orderOf, Set.eq_univ_iff_forall.mpr ha, Set.toFinset_univ]
state_before: α : Type u
a : α
inst✝² : Group α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
ha : ∀ (x : α), x ∈ ↑(zpowers a)
⊢ image (fun i => a ^ i) (range (orderOf a)) = univ
state_after: no goals
Theorem: WithTop.coe_lt_top
File: Mathlib/Order/WithBot.lean

tactic: simp [← toDual_lt_toDual_iff, WithBot.bot_lt_coe]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : LT α
a✝ b a : α
⊢ ↑a < ⊤
state_after: no goals
Theorem: Set.image_image2_antidistrib
File: Mathlib/Data/Set/NAry.lean

tactic: rw [image2_swap f]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f f'✝ : α → β → γ
g✝ g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
g : γ → δ
f' : β' → α' → δ
g₁ : β → β'
g₂ : α → α'
h_antidistrib : ∀ (a : α) (b : β), g (f a b) = f' (g₁ b) (g₂ a)
⊢ g '' image2 f s t = image2 f' (g₁ '' t) (g₂ '' s)
state_after: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f f'✝ : α → β → γ
g✝ g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
g : γ → δ
f' : β' → α' → δ
g₁ : β → β'
g₂ : α → α'
h_antidistrib : ∀ (a : α) (b : β), g (f a b) = f' (g₁ b) (g₂ a)
⊢ g '' image2 (fun a b => f b a) t s = image2 f' (g₁ '' t) (g₂ '' s)

tactic: exact image_image2_distrib fun _ _ => h_antidistrib _ _
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f f'✝ : α → β → γ
g✝ g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
g : γ → δ
f' : β' → α' → δ
g₁ : β → β'
g₂ : α → α'
h_antidistrib : ∀ (a : α) (b : β), g (f a b) = f' (g₁ b) (g₂ a)
⊢ g '' image2 (fun a b => f b a) t s = image2 f' (g₁ '' t) (g₂ '' s)
state_after: no goals
Theorem: Set.exists_subset_card_eq
File: Mathlib/Data/Set/Card.lean

tactic: simpa using exists_subsuperset_card_eq s.empty_subset (by simp) hns
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
n : ℕ
hns : n ≤ s.ncard
⊢ ∃ t ⊆ s, t.ncard = n
state_after: no goals

tactic: simp
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
n : ℕ
hns : n ≤ s.ncard
⊢ ∅.ncard ≤ n
state_after: no goals
Theorem: Quaternion.coe_normSq_add
File: Mathlib/Algebra/Quaternion.lean

tactic: simp only [star_add, ← self_mul_star, mul_add, add_mul, add_assoc, add_left_comm]
state_before: S : Type u_1
T : Type u_2
R : Type u_3
inst✝ : CommRing R
r x y z : R
a b c : ℍ[R]
⊢ ↑(normSq (a + b)) = ↑(normSq a) + a * star b + b * star a + ↑(normSq b)
state_after: no goals
Theorem: Subgroup.subsingleton_iff
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: simp [Subgroup.one_mem]
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝³ : Group G
inst✝² : Group G'
inst✝¹ : Group G''
A : Type u_4
inst✝ : AddGroup A
H K : Subgroup G
h : Subsingleton G
x y : Subgroup G
i : G
⊢ 1 ∈ x ↔ 1 ∈ y
state_after: no goals
Theorem: GaussianFourier.integrable_cexp_neg_sum_mul_add
File: Mathlib/Analysis/SpecialFunctions/Gaussian/FourierTransform.lean

tactic: simp_rw [← Finset.sum_neg_distrib, ← Finset.sum_add_distrib, Complex.exp_sum, ← neg_mul]
state_before: b✝ : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
b : ι → ℂ
hb : ∀ (i : ι), 0 < (b i).re
c : ι → ℂ
⊢ Integrable (fun v => cexp (-∑ i : ι, b i * ↑(v i) ^ 2 + ∑ i : ι, c i * ↑(v i))) volume
state_after: b✝ : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
b : ι → ℂ
hb : ∀ (i : ι), 0 < (b i).re
c : ι → ℂ
⊢ Integrable (fun v => ∏ x : ι, cexp (-b x * ↑(v x) ^ 2 + c x * ↑(v x))) volume

tactic: apply Integrable.fintype_prod (f := fun i (v : ℝ) ↦ cexp (-b i * v^2 + c i * v)) (fun i ↦ ?_)
state_before: b✝ : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
b : ι → ℂ
hb : ∀ (i : ι), 0 < (b i).re
c : ι → ℂ
⊢ Integrable (fun v => ∏ x : ι, cexp (-b x * ↑(v x) ^ 2 + c x * ↑(v x))) volume
state_after: b✝ : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
b : ι → ℂ
hb : ∀ (i : ι), 0 < (b i).re
c : ι → ℂ
i : ι
⊢ Integrable ((fun i v => cexp (-b i * ↑v ^ 2 + c i * ↑v)) i) volume

tactic: convert integrable_cexp_quadratic (hb i) (c i) 0 using 3 with x
state_before: b✝ : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
b : ι → ℂ
hb : ∀ (i : ι), 0 < (b i).re
c : ι → ℂ
i : ι
⊢ Integrable ((fun i v => cexp (-b i * ↑v ^ 2 + c i * ↑v)) i) volume
state_after: case h.e'_5.h.h.e'_1
b✝ : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
b : ι → ℂ
hb : ∀ (i : ι), 0 < (b i).re
c : ι → ℂ
i : ι
x : ℝ
⊢ -b i * ↑x ^ 2 + c i * ↑x = -b i * ↑x ^ 2 + c i * ↑x + 0

tactic: simp only [add_zero]
state_before: case h.e'_5.h.h.e'_1
b✝ : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
b : ι → ℂ
hb : ∀ (i : ι), 0 < (b i).re
c : ι → ℂ
i : ι
x : ℝ
⊢ -b i * ↑x ^ 2 + c i * ↑x = -b i * ↑x ^ 2 + c i * ↑x + 0
state_after: no goals
Theorem: Vector.map_map₂
File: Mathlib/Data/Vector/MapLemmas.lean

tactic: induction xs, ys using Vector.revInductionOn₂ <;> simp_all
state_before: α : Type u_3
n : ℕ
β : Type u_4
xs : Vector α n
ys : Vector β n
γ : Type u_1
ζ : Type u_2
f₁ : γ → ζ
f₂ : α → β → γ
⊢ map f₁ (map₂ f₂ xs ys) = map₂ (fun x y => f₁ (f₂ x y)) xs ys
state_after: no goals
Theorem: List.modifyHead_modifyHead
File: Mathlib/Data/List/Basic.lean

tactic: cases l <;> simp
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ l : List α
f g : α → α
⊢ modifyHead g (modifyHead f l) = modifyHead (g ∘ f) l
state_after: no goals
Theorem: Complex.real_lt_real
File: Mathlib/Data/Complex/Order.lean

tactic: simp [lt_def, ofReal']
state_before: x y : ℝ
⊢ ↑x < ↑y ↔ x < y
state_after: no goals
Theorem: WeierstrassCurve.Projective.eval_polynomial
File: Mathlib/AlgebraicGeometry/EllipticCurve/Projective.lean

tactic: rw [polynomial]
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ (eval P) W.polynomial =
    P 1 ^ 2 * P 2 + W.a₁ * P 0 * P 1 * P 2 + W.a₃ * P 1 * P 2 ^ 2 -
      (P 0 ^ 3 + W.a₂ * P 0 ^ 2 * P 2 + W.a₄ * P 0 * P 2 ^ 2 + W.a₆ * P 2 ^ 3)
state_after: R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ (eval P)
      (X 1 ^ 2 * X 2 + C W.a₁ * X 0 * X 1 * X 2 + C W.a₃ * X 1 * X 2 ^ 2 -
        (X 0 ^ 3 + C W.a₂ * X 0 ^ 2 * X 2 + C W.a₄ * X 0 * X 2 ^ 2 + C W.a₆ * X 2 ^ 3)) =
    P 1 ^ 2 * P 2 + W.a₁ * P 0 * P 1 * P 2 + W.a₃ * P 1 * P 2 ^ 2 -
      (P 0 ^ 3 + W.a₂ * P 0 ^ 2 * P 2 + W.a₄ * P 0 * P 2 ^ 2 + W.a₆ * P 2 ^ 3)

tactic: eval_simp
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ (eval P)
      (X 1 ^ 2 * X 2 + C W.a₁ * X 0 * X 1 * X 2 + C W.a₃ * X 1 * X 2 ^ 2 -
        (X 0 ^ 3 + C W.a₂ * X 0 ^ 2 * X 2 + C W.a₄ * X 0 * X 2 ^ 2 + C W.a₆ * X 2 ^ 3)) =
    P 1 ^ 2 * P 2 + W.a₁ * P 0 * P 1 * P 2 + W.a₃ * P 1 * P 2 ^ 2 -
      (P 0 ^ 3 + W.a₂ * P 0 ^ 2 * P 2 + W.a₄ * P 0 * P 2 ^ 2 + W.a₆ * P 2 ^ 3)
state_after: no goals