1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: MvPowerSeries.coeff_inv_aux
File: Mathlib/RingTheory/MvPowerSeries/Inverse.lean

tactic: cases Subsingleton.elim ‹DecidableEq σ› (Classical.decEq σ)
state_before: σ : Type u_1
R : Type u_2
inst✝¹ : Ring R
inst✝ : DecidableEq σ
n : σ →₀ ℕ
a : R
φ : MvPowerSeries σ R
⊢ inv.aux a φ n =
    if n = 0 then a else -a * ∑ x ∈ antidiagonal n, if x.2 < n then (coeff R x.1) φ * (coeff R x.2) (inv.aux a φ) else 0
state_after: case refl
σ : Type u_1
R : Type u_2
inst✝ : Ring R
n : σ →₀ ℕ
a : R
φ : MvPowerSeries σ R
⊢ inv.aux a φ n =
    if n = 0 then a else -a * ∑ x ∈ antidiagonal n, if x.2 < n then (coeff R x.1) φ * (coeff R x.2) (inv.aux a φ) else 0

tactic: rw [inv.aux]
state_before: case refl
σ : Type u_1
R : Type u_2
inst✝ : Ring R
n : σ →₀ ℕ
a : R
φ : MvPowerSeries σ R
⊢ inv.aux a φ n =
    if n = 0 then a else -a * ∑ x ∈ antidiagonal n, if x.2 < n then (coeff R x.1) φ * (coeff R x.2) (inv.aux a φ) else 0
state_after: case refl
σ : Type u_1
R : Type u_2
inst✝ : Ring R
n : σ →₀ ℕ
a : R
φ : MvPowerSeries σ R
⊢ (if n = 0 then a else -a * ∑ x ∈ antidiagonal n, if x_1 : x.2 < n then (coeff R x.1) φ * inv.aux a φ x.2 else 0) =
    if n = 0 then a else -a * ∑ x ∈ antidiagonal n, if x.2 < n then (coeff R x.1) φ * (coeff R x.2) (inv.aux a φ) else 0

tactic: rfl
state_before: case refl
σ : Type u_1
R : Type u_2
inst✝ : Ring R
n : σ →₀ ℕ
a : R
φ : MvPowerSeries σ R
⊢ (if n = 0 then a else -a * ∑ x ∈ antidiagonal n, if x_1 : x.2 < n then (coeff R x.1) φ * inv.aux a φ x.2 else 0) =
    if n = 0 then a else -a * ∑ x ∈ antidiagonal n, if x.2 < n then (coeff R x.1) φ * (coeff R x.2) (inv.aux a φ) else 0
state_after: no goals
Theorem: ZMod.exists_sq_eq_prime_iff_of_mod_four_eq_one
File: Mathlib/NumberTheory/LegendreSymbol/QuadraticReciprocity.lean

tactic: rcases eq_or_ne p q with h | h
state_before: p q : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : Fact (Nat.Prime q)
hp1 : p % 4 = 1
hq1 : q ≠ 2
⊢ IsSquare ↑q ↔ IsSquare ↑p
state_after: case inl
p q : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : Fact (Nat.Prime q)
hp1 : p % 4 = 1
hq1 : q ≠ 2
h : p = q
⊢ IsSquare ↑q ↔ IsSquare ↑p

case inr
p q : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : Fact (Nat.Prime q)
hp1 : p % 4 = 1
hq1 : q ≠ 2
h : p ≠ q
⊢ IsSquare ↑q ↔ IsSquare ↑p

tactic: subst p
state_before: case inl
p q : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : Fact (Nat.Prime q)
hp1 : p % 4 = 1
hq1 : q ≠ 2
h : p = q
⊢ IsSquare ↑q ↔ IsSquare ↑p
state_after: case inl
q : ℕ
inst✝¹ : Fact (Nat.Prime q)
hq1 : q ≠ 2
inst✝ : Fact (Nat.Prime q)
hp1 : q % 4 = 1
⊢ IsSquare ↑q ↔ IsSquare ↑q

tactic: rfl
state_before: case inl
q : ℕ
inst✝¹ : Fact (Nat.Prime q)
hq1 : q ≠ 2
inst✝ : Fact (Nat.Prime q)
hp1 : q % 4 = 1
⊢ IsSquare ↑q ↔ IsSquare ↑q
state_after: no goals

tactic: rw [← eq_one_iff' p (prime_ne_zero p q h), ← eq_one_iff' q (prime_ne_zero q p h.symm),
  quadratic_reciprocity_one_mod_four hp1 hq1]
state_before: case inr
p q : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : Fact (Nat.Prime q)
hp1 : p % 4 = 1
hq1 : q ≠ 2
h : p ≠ q
⊢ IsSquare ↑q ↔ IsSquare ↑p
state_after: no goals
Theorem: Submonoid.unop_closure
File: Mathlib/Algebra/Group/Submonoid/MulOpposite.lean

tactic: simp_rw [closure, unop_sInf, Set.preimage_setOf_eq, Submonoid.op_coe]
state_before: ι : Sort u_1
M : Type u_2
inst✝ : MulOneClass M
s : Set Mᵐᵒᵖ
⊢ (closure s).unop = closure (MulOpposite.op ⁻¹' s)
state_after: ι : Sort u_1
M : Type u_2
inst✝ : MulOneClass M
s : Set Mᵐᵒᵖ
⊢ sInf {a | s ⊆ MulOpposite.unop ⁻¹' ↑a} = sInf {S | MulOpposite.op ⁻¹' s ⊆ ↑S}

tactic: congr with a
state_before: ι : Sort u_1
M : Type u_2
inst✝ : MulOneClass M
s : Set Mᵐᵒᵖ
⊢ sInf {a | s ⊆ MulOpposite.unop ⁻¹' ↑a} = sInf {S | MulOpposite.op ⁻¹' s ⊆ ↑S}
state_after: case e_a.h
ι : Sort u_1
M : Type u_2
inst✝ : MulOneClass M
s : Set Mᵐᵒᵖ
a : Submonoid M
⊢ a ∈ {a | s ⊆ MulOpposite.unop ⁻¹' ↑a} ↔ a ∈ {S | MulOpposite.op ⁻¹' s ⊆ ↑S}

tactic: exact MulOpposite.op_surjective.forall
state_before: case e_a.h
ι : Sort u_1
M : Type u_2
inst✝ : MulOneClass M
s : Set Mᵐᵒᵖ
a : Submonoid M
⊢ a ∈ {a | s ⊆ MulOpposite.unop ⁻¹' ↑a} ↔ a ∈ {S | MulOpposite.op ⁻¹' s ⊆ ↑S}
state_after: no goals
Theorem: Cardinal.nsmul_lt_aleph0_iff
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: simpa using nat_lt_aleph0 0
state_before: case zero
α β : Type u
a : Cardinal.{u_1}
⊢ 0 • a < ℵ₀ ↔ 0 = 0 ∨ a < ℵ₀
state_after: no goals

tactic: simp only [Nat.succ_ne_zero, false_or_iff]
state_before: case succ
α β : Type u
a : Cardinal.{u_1}
n : ℕ
⊢ (n + 1) • a < ℵ₀ ↔ n + 1 = 0 ∨ a < ℵ₀
state_after: case succ
α β : Type u
a : Cardinal.{u_1}
n : ℕ
⊢ (n + 1) • a < ℵ₀ ↔ a < ℵ₀

tactic: induction' n with n ih
state_before: case succ
α β : Type u
a : Cardinal.{u_1}
n : ℕ
⊢ (n + 1) • a < ℵ₀ ↔ a < ℵ₀
state_after: case succ.zero
α β : Type u
a : Cardinal.{u_1}
⊢ (0 + 1) • a < ℵ₀ ↔ a < ℵ₀

case succ.succ
α β : Type u
a : Cardinal.{u_1}
n : ℕ
ih : (n + 1) • a < ℵ₀ ↔ a < ℵ₀
⊢ (n + 1 + 1) • a < ℵ₀ ↔ a < ℵ₀

tactic: rw [succ_nsmul, add_lt_aleph0_iff, ih, and_self_iff]
state_before: case succ.succ
α β : Type u
a : Cardinal.{u_1}
n : ℕ
ih : (n + 1) • a < ℵ₀ ↔ a < ℵ₀
⊢ (n + 1 + 1) • a < ℵ₀ ↔ a < ℵ₀
state_after: no goals

tactic: simp
state_before: case succ.zero
α β : Type u
a : Cardinal.{u_1}
⊢ (0 + 1) • a < ℵ₀ ↔ a < ℵ₀
state_after: no goals
Theorem: MeasureTheory.integral_singleton'
File: Mathlib/MeasureTheory/Integral/Bochner.lean

tactic: simp only [Measure.restrict_singleton, integral_smul_measure, integral_dirac' f a hf, smul_eq_mul,
  mul_comm]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝⁹ : NontriviallyNormedField 𝕜
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : SMulCommClass ℝ 𝕜 E
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℝ F
inst✝⁴ : CompleteSpace F
G : Type u_5
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace ℝ G
f✝ g : α → E
m : MeasurableSpace α
μ✝ : Measure α
X : Type u_6
inst✝¹ : TopologicalSpace X
inst✝ : FirstCountableTopology X
ν μ : Measure α
f : α → E
hf : StronglyMeasurable f
a : α
⊢ ∫ (a : α) in {a}, f a ∂μ = (μ {a}).toReal • f a
state_after: no goals
Theorem: PowerSeries.exp_mul_exp_neg_eq_one
File: Mathlib/RingTheory/PowerSeries/WellKnown.lean

tactic: convert exp_mul_exp_eq_exp_add (1 : A) (-1) <;> simp
state_before: A : Type u_1
inst✝¹ : CommRing A
inst✝ : Algebra ℚ A
⊢ exp A * evalNegHom (exp A) = 1
state_after: no goals
Theorem: CategoryTheory.PreGaloisCategory.not_initial_iff_fiber_nonempty
File: Mathlib/CategoryTheory/Galois/Basic.lean

tactic: rw [← not_isEmpty_iff]
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
⊢ IsInitial X → False ↔ Nonempty ↑(F.obj X)
state_after: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
⊢ IsInitial X → False ↔ ¬IsEmpty ↑(F.obj X)

tactic: refine ⟨fun h he ↦ ?_, fun h hin ↦ h <| (initial_iff_fiber_empty F X).mp ⟨hin⟩⟩
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
⊢ IsInitial X → False ↔ ¬IsEmpty ↑(F.obj X)
state_after: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
h : IsInitial X → False
he : IsEmpty ↑(F.obj X)
⊢ False

tactic: exact Nonempty.elim ((initial_iff_fiber_empty F X).mpr he) h
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : PreGaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
X : C
h : IsInitial X → False
he : IsEmpty ↑(F.obj X)
⊢ False
state_after: no goals
Theorem: Multiset.map_congr
File: Mathlib/Data/Multiset/Basic.lean

tactic: rintro rfl h
state_before: α : Type u_1
β : Type v
γ : Type u_2
f g : α → β
s t : Multiset α
⊢ s = t → (∀ x ∈ t, f x = g x) → map f s = map g t
state_after: α : Type u_1
β : Type v
γ : Type u_2
f g : α → β
s : Multiset α
h : ∀ x ∈ s, f x = g x
⊢ map f s = map g s

tactic: induction s using Quot.inductionOn
state_before: α : Type u_1
β : Type v
γ : Type u_2
f g : α → β
s : Multiset α
h : ∀ x ∈ s, f x = g x
⊢ map f s = map g s
state_after: case h
α : Type u_1
β : Type v
γ : Type u_2
f g : α → β
a✝ : List α
h : ∀ x ∈ Quot.mk Setoid.r a✝, f x = g x
⊢ map f (Quot.mk Setoid.r a✝) = map g (Quot.mk Setoid.r a✝)

tactic: exact congr_arg _ (List.map_congr_left h)
state_before: case h
α : Type u_1
β : Type v
γ : Type u_2
f g : α → β
a✝ : List α
h : ∀ x ∈ Quot.mk Setoid.r a✝, f x = g x
⊢ map f (Quot.mk Setoid.r a✝) = map g (Quot.mk Setoid.r a✝)
state_after: no goals
Theorem: ZMod.minOrder_of_prime
File: Mathlib/GroupTheory/Order/Min.lean

tactic: rw [ZMod.minOrder hp.ne_zero hp.ne_one, hp.minFac_eq]
state_before: α : Type u_1
p : ℕ
hp : Nat.Prime p
⊢ minOrder (ZMod p) = ↑p
state_after: no goals
Theorem: LinearMap.span_inl_union_inr
File: Mathlib/LinearAlgebra/Prod.lean

tactic: rw [span_union, prod_eq_sup_map, ← span_image, ← span_image]
state_before: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
M₅ : Type u_1
M₆ : Type u_2
inst✝⁸ : Semiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : AddCommMonoid M₂
inst✝⁵ : AddCommMonoid M₃
inst✝⁴ : AddCommMonoid M₄
inst✝³ : Module R M
inst✝² : Module R M₂
inst✝¹ : Module R M₃
inst✝ : Module R M₄
s : Set M
t : Set M₂
⊢ span R (⇑(inl R M M₂) '' s ∪ ⇑(inr R M M₂) '' t) = (span R s).prod (span R t)
state_after: no goals
Theorem: Rat.mkRat_zero
File: .lake/packages/batteries/Batteries/Data/Rat/Lemmas.lean

tactic: simp [mkRat_def]
state_before: n : Int
⊢ mkRat n 0 = 0
state_after: no goals
Theorem: MeasureTheory.withDensity_smul_measure
File: Mathlib/MeasureTheory/Measure/WithDensity.lean

tactic: ext s hs
state_before: α : Type u_1
m0 : MeasurableSpace α
μ : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
⊢ (r • μ).withDensity f = r • μ.withDensity f
state_after: case h
α : Type u_1
m0 : MeasurableSpace α
μ : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ ((r • μ).withDensity f) s = (r • μ.withDensity f) s

tactic: rw [withDensity_apply _ hs, Measure.coe_smul, Pi.smul_apply, withDensity_apply _ hs,
  smul_eq_mul, setLIntegral_smul_measure]
state_before: case h
α : Type u_1
m0 : MeasurableSpace α
μ : Measure α
r : ℝ≥0∞
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ ((r • μ).withDensity f) s = (r • μ.withDensity f) s
state_after: no goals
Theorem: List.isRotated_reverse_iff
File: Mathlib/Data/List/Rotate.lean

tactic: simp [isRotated_reverse_comm_iff]
state_before: α : Type u
l l' : List α
⊢ l.reverse ~r l'.reverse ↔ l ~r l'
state_after: no goals
Theorem: Partrec.bind_decode₂_iff
File: Mathlib/Computability/Partrec.lean

tactic: simpa [encodek₂] using (nat_iff.2 h).comp (@Computable.encode α _)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α →. σ
h : Nat.Partrec fun n => (↑(decode₂ α n)).bind fun a => Part.map encode (f a)
⊢ Partrec fun a => Part.map encode (f a)
state_after: no goals
Theorem: Multiset.coe_ndinter
File: Mathlib/Data/Multiset/FinsetOps.lean

tactic: simp only [ndinter, mem_coe, filter_coe, coe_eq_coe, ← elem_eq_mem]
state_before: α : Type u_1
inst✝ : DecidableEq α
s : Multiset α
l₁ l₂ : List α
⊢ (↑l₁).ndinter ↑l₂ = ↑(l₁ ∩ l₂)
state_after: α : Type u_1
inst✝ : DecidableEq α
s : Multiset α
l₁ l₂ : List α
⊢ List.filter (fun b => elem b l₂) l₁ ~ l₁ ∩ l₂

tactic: apply Perm.refl
state_before: α : Type u_1
inst✝ : DecidableEq α
s : Multiset α
l₁ l₂ : List α
⊢ List.filter (fun b => elem b l₂) l₁ ~ l₁ ∩ l₂
state_after: no goals
Theorem: List.get_iterate
File: Mathlib/Data/List/Iterate.lean

tactic: simp
state_before: α : Type u_1
f : α → α
a : α
n : ℕ
i : Fin (iterate f a n).length
⊢ (iterate f a n).get i = f^[↑i] a
state_after: no goals
Theorem: Finset.biUnion_image_right
File: Mathlib/Data/Finset/NAry.lean

tactic: push_cast
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
inst✝⁷ : DecidableEq α'
inst✝⁶ : DecidableEq β'
inst✝⁵ : DecidableEq γ
inst✝⁴ : DecidableEq γ'
inst✝³ : DecidableEq δ
inst✝² : DecidableEq δ'
inst✝¹ : DecidableEq ε
inst✝ : DecidableEq ε'
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
⊢ ↑(t.biUnion fun b => image (fun a => f a b) s) = ↑(image₂ f s t)
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
inst✝⁷ : DecidableEq α'
inst✝⁶ : DecidableEq β'
inst✝⁵ : DecidableEq γ
inst✝⁴ : DecidableEq γ'
inst✝³ : DecidableEq δ
inst✝² : DecidableEq δ'
inst✝¹ : DecidableEq ε
inst✝ : DecidableEq ε'
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
⊢ ⋃ x ∈ ↑t, (fun a => f a x) '' ↑s = image2 f ↑s ↑t

tactic: exact Set.iUnion_image_right _
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
inst✝⁷ : DecidableEq α'
inst✝⁶ : DecidableEq β'
inst✝⁵ : DecidableEq γ
inst✝⁴ : DecidableEq γ'
inst✝³ : DecidableEq δ
inst✝² : DecidableEq δ'
inst✝¹ : DecidableEq ε
inst✝ : DecidableEq ε'
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
⊢ ⋃ x ∈ ↑t, (fun a => f a x) '' ↑s = image2 f ↑s ↑t
state_after: no goals
Theorem: Matrix.fromBlocks_conjTranspose
File: Mathlib/Data/Matrix/Block.lean

tactic: simp only [conjTranspose, fromBlocks_transpose, fromBlocks_map]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝ : Star α
A : Matrix n l α
B : Matrix n m α
C : Matrix o l α
D : Matrix o m α
⊢ (fromBlocks A B C D)ᴴ = fromBlocks Aᴴ Cᴴ Bᴴ Dᴴ
state_after: no goals
Theorem: PNat.lt_find_iff
File: Mathlib/Data/PNat/Find.lean

tactic: simp only [← add_one_le_iff, le_find_iff, add_le_add_iff_right]
state_before: p q : ℕ+ → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
h : ∃ n, p n
n✝ m n : ℕ+
⊢ n < PNat.find h ↔ ∀ m ≤ n, ¬p m
state_after: no goals
Theorem: Polynomial.eval₂RingHom_eval₂RingHom
File: Mathlib/Algebra/Polynomial/Bivariate.lean

tactic: ext <;> simp
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : R →+* S
x y : S
⊢ eval₂RingHom (eval₂RingHom f x) y = (evalEvalRingHom x y).comp (mapRingHom (mapRingHom f))
state_after: no goals
Theorem: CategoryTheory.Preadditive.epi_of_isZero_cokernel'
File: Mathlib/CategoryTheory/Preadditive/Basic.lean

tactic: obtain ⟨a, ha⟩ := CokernelCofork.IsColimit.desc' hc _ hg
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Preadditive C
P Q R : C
f✝ f' : P ⟶ Q
g✝ g' : Q ⟶ R
X Y : C
f : X ⟶ Y
c : CokernelCofork f
hc : IsColimit c
h : IsZero c.pt
R✝ : C
g : Y ⟶ R✝
hg : f ≫ g = 0
⊢ g = 0
state_after: case mk
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Preadditive C
P Q R : C
f✝ f' : P ⟶ Q
g✝ g' : Q ⟶ R
X Y : C
f : X ⟶ Y
c : CokernelCofork f
hc : IsColimit c
h : IsZero c.pt
R✝ : C
g : Y ⟶ R✝
hg : f ≫ g = 0
a : c.pt ⟶ R✝
ha : Cofork.π c ≫ a = g
⊢ g = 0

tactic: rw [← ha, h.eq_of_src a 0, Limits.comp_zero]
state_before: case mk
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Preadditive C
P Q R : C
f✝ f' : P ⟶ Q
g✝ g' : Q ⟶ R
X Y : C
f : X ⟶ Y
c : CokernelCofork f
hc : IsColimit c
h : IsZero c.pt
R✝ : C
g : Y ⟶ R✝
hg : f ≫ g = 0
a : c.pt ⟶ R✝
ha : Cofork.π c ≫ a = g
⊢ g = 0
state_after: no goals
Theorem: QuadraticForm.isSymm_toMatrix'
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: ext i j
state_before: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
n : Type w
inst✝⁵ : Fintype n
inst✝⁴ : DecidableEq n
inst✝³ : CommRing R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticForm R (n → R)
⊢ Q.toMatrix'.IsSymm
state_after: case a
S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
n : Type w
inst✝⁵ : Fintype n
inst✝⁴ : DecidableEq n
inst✝³ : CommRing R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticForm R (n → R)
i j : n
⊢ Q.toMatrix'.transpose i j = Q.toMatrix' i j

tactic: rw [toMatrix', Matrix.transpose_apply, LinearMap.toMatrix₂'_apply, LinearMap.toMatrix₂'_apply,
  ← associated_isSymm, RingHom.id_apply, associated_apply]
state_before: case a
S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
n : Type w
inst✝⁵ : Fintype n
inst✝⁴ : DecidableEq n
inst✝³ : CommRing R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : Invertible 2
Q : QuadraticForm R (n → R)
i j : n
⊢ Q.toMatrix'.transpose i j = Q.toMatrix' i j
state_after: no goals
Theorem: Orientation.volumeForm_zero_pos
File: Mathlib/Analysis/InnerProductSpace/Orientation.lean

tactic: simp [volumeForm, Or.by_cases, if_pos]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
n : ℕ
_i✝ : Fact (finrank ℝ E = n)
o : Orientation ℝ E (Fin n)
_i : Fact (finrank ℝ E = 0)
⊢ positiveOrientation.volumeForm = AlternatingMap.constLinearEquivOfIsEmpty 1
state_after: no goals
Theorem: IsLocalization.ringEquivOfRingEquiv_mk'
File: Mathlib/RingTheory/Localization/Basic.lean

tactic: simp [map_mk']
state_before: R : Type u_1
inst✝⁷ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝⁶ : CommSemiring S
inst✝⁵ : Algebra R S
P : Type u_3
inst✝⁴ : CommSemiring P
inst✝³ : IsLocalization M S
g : R →+* P
hg : ∀ (y : ↥M), IsUnit (g ↑y)
T : Submonoid P
Q : Type u_4
inst✝² : CommSemiring Q
hy : M ≤ Submonoid.comap g T
inst✝¹ : Algebra P Q
inst✝ : IsLocalization T Q
j : R ≃+* P
H : Submonoid.map j.toMonoidHom M = T
x : R
y : ↥M
⊢ (ringEquivOfRingEquiv S Q j H) (mk' S x y) = mk' Q (j x) ⟨j ↑y, ⋯⟩
state_after: no goals
Theorem: Real.strictConcaveOn_negMulLog
File: Mathlib/Analysis/SpecialFunctions/Log/NegMulLog.lean

tactic: simpa only [negMulLog_eq_neg] using strictConvexOn_mul_log.neg
state_before: ⊢ StrictConcaveOn ℝ (Set.Ici 0) negMulLog
state_after: no goals
Theorem: List.exists_lt_of_prod_lt'
File: Mathlib/Algebra/Order/BigOperators/Group/List.lean

tactic: contrapose! h
state_before: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
P : Type u_5
M₀ : Type u_6
G : Type u_7
R : Type u_8
inst✝³ : Monoid M
inst✝² : LinearOrder M
inst✝¹ : CovariantClass M M (Function.swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
l : List ι
f g : ι → M
h : (map f l).prod < (map g l).prod
⊢ ∃ i ∈ l, f i < g i
state_after: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
P : Type u_5
M₀ : Type u_6
G : Type u_7
R : Type u_8
inst✝³ : Monoid M
inst✝² : LinearOrder M
inst✝¹ : CovariantClass M M (Function.swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
l : List ι
f g : ι → M
h : ∀ i ∈ l, g i ≤ f i
⊢ (map g l).prod ≤ (map f l).prod

tactic: exact prod_le_prod' h
state_before: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
P : Type u_5
M₀ : Type u_6
G : Type u_7
R : Type u_8
inst✝³ : Monoid M
inst✝² : LinearOrder M
inst✝¹ : CovariantClass M M (Function.swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
l : List ι
f g : ι → M
h : ∀ i ∈ l, g i ≤ f i
⊢ (map g l).prod ≤ (map f l).prod
state_after: no goals
Theorem: AddMonoidAlgebra.finiteType_iff_fg
File: Mathlib/RingTheory/FiniteType.lean

tactic: refine ⟨fun h => ?_, fun h => @AddMonoidAlgebra.finiteType_of_fg _ _ _ _ h⟩
state_before: R : Type u_1
M : Type u_2
inst✝² : AddMonoid M
inst✝¹ : CommRing R
inst✝ : Nontrivial R
⊢ FiniteType R R[M] ↔ AddMonoid.FG M
state_after: R : Type u_1
M : Type u_2
inst✝² : AddMonoid M
inst✝¹ : CommRing R
inst✝ : Nontrivial R
h : FiniteType R R[M]
⊢ AddMonoid.FG M

tactic: obtain ⟨S, hS⟩ := @exists_finset_adjoin_eq_top R M _ _ h
state_before: R : Type u_1
M : Type u_2
inst✝² : AddMonoid M
inst✝¹ : CommRing R
inst✝ : Nontrivial R
h : FiniteType R R[M]
⊢ AddMonoid.FG M
state_after: case intro
R : Type u_1
M : Type u_2
inst✝² : AddMonoid M
inst✝¹ : CommRing R
inst✝ : Nontrivial R
h : FiniteType R R[M]
S : Finset M
hS : adjoin R (of' R M '' ↑S) = ⊤
⊢ AddMonoid.FG M

tactic: refine AddMonoid.fg_def.2 ⟨S, (eq_top_iff' _).2 fun m => ?_⟩
state_before: case intro
R : Type u_1
M : Type u_2
inst✝² : AddMonoid M
inst✝¹ : CommRing R
inst✝ : Nontrivial R
h : FiniteType R R[M]
S : Finset M
hS : adjoin R (of' R M '' ↑S) = ⊤
⊢ AddMonoid.FG M
state_after: case intro
R : Type u_1
M : Type u_2
inst✝² : AddMonoid M
inst✝¹ : CommRing R
inst✝ : Nontrivial R
h : FiniteType R R[M]
S : Finset M
hS : adjoin R (of' R M '' ↑S) = ⊤
m : M
⊢ m ∈ closure ↑S

tactic: have hm : of' R M m ∈ Subalgebra.toSubmodule (adjoin R (of' R M '' ↑S)) := by
  simp only [hS, top_toSubmodule, Submodule.mem_top]
state_before: case intro
R : Type u_1
M : Type u_2
inst✝² : AddMonoid M
inst✝¹ : CommRing R
inst✝ : Nontrivial R
h : FiniteType R R[M]
S : Finset M
hS : adjoin R (of' R M '' ↑S) = ⊤
m : M
⊢ m ∈ closure ↑S
state_after: case intro
R : Type u_1
M : Type u_2
inst✝² : AddMonoid M
inst✝¹ : CommRing R
inst✝ : Nontrivial R
h : FiniteType R R[M]
S : Finset M
hS : adjoin R (of' R M '' ↑S) = ⊤
m : M
hm : of' R M m ∈ Subalgebra.toSubmodule (adjoin R (of' R M '' ↑S))
⊢ m ∈ closure ↑S

tactic: rw [adjoin_eq_span] at hm
state_before: case intro
R : Type u_1
M : Type u_2
inst✝² : AddMonoid M
inst✝¹ : CommRing R
inst✝ : Nontrivial R
h : FiniteType R R[M]
S : Finset M
hS : adjoin R (of' R M '' ↑S) = ⊤
m : M
hm : of' R M m ∈ Subalgebra.toSubmodule (adjoin R (of' R M '' ↑S))
⊢ m ∈ closure ↑S
state_after: case intro
R : Type u_1
M : Type u_2
inst✝² : AddMonoid M
inst✝¹ : CommRing R
inst✝ : Nontrivial R
h : FiniteType R R[M]
S : Finset M
hS : adjoin R (of' R M '' ↑S) = ⊤
m : M
hm : of' R M m ∈ span R ↑(Submonoid.closure (of' R M '' ↑S))
⊢ m ∈ closure ↑S

tactic: exact mem_closure_of_mem_span_closure hm
state_before: case intro
R : Type u_1
M : Type u_2
inst✝² : AddMonoid M
inst✝¹ : CommRing R
inst✝ : Nontrivial R
h : FiniteType R R[M]
S : Finset M
hS : adjoin R (of' R M '' ↑S) = ⊤
m : M
hm : of' R M m ∈ span R ↑(Submonoid.closure (of' R M '' ↑S))
⊢ m ∈ closure ↑S
state_after: no goals

tactic: simp only [hS, top_toSubmodule, Submodule.mem_top]
state_before: R : Type u_1
M : Type u_2
inst✝² : AddMonoid M
inst✝¹ : CommRing R
inst✝ : Nontrivial R
h : FiniteType R R[M]
S : Finset M
hS : adjoin R (of' R M '' ↑S) = ⊤
m : M
⊢ of' R M m ∈ Subalgebra.toSubmodule (adjoin R (of' R M '' ↑S))
state_after: no goals
Theorem: CategoryTheory.Limits.map_π_preserves_coequalizer_inv_desc
File: Mathlib/CategoryTheory/Limits/Preserves/Shapes/Equalizers.lean

tactic: rw [← Category.assoc, map_π_preserves_coequalizer_inv, coequalizer.π_desc]
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
G : C ⥤ D
X Y Z : C
f g : X ⟶ Y
h : Y ⟶ Z
w : f ≫ h = g ≫ h
inst✝² : HasCoequalizer f g
inst✝¹ : HasCoequalizer (G.map f) (G.map g)
inst✝ : PreservesColimit (parallelPair f g) G
W : D
k : G.obj Y ⟶ W
wk : G.map f ≫ k = G.map g ≫ k
⊢ G.map (coequalizer.π f g) ≫ (PreservesCoequalizer.iso G f g).inv ≫ coequalizer.desc k wk = k
state_after: no goals