1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Tree.treesOfNumNodesEq_succ
File: Mathlib/Combinatorics/Enumerative/Catalan.lean

tactic: rw [treesOfNumNodesEq]
state_before: n : ℕ
⊢ treesOfNumNodesEq (n + 1) =
    (antidiagonal n).biUnion fun ij => pairwiseNode (treesOfNumNodesEq ij.1) (treesOfNumNodesEq ij.2)
state_after: n : ℕ
⊢ ((antidiagonal n).attach.biUnion fun ijh => pairwiseNode (treesOfNumNodesEq (↑ijh).1) (treesOfNumNodesEq (↑ijh).2)) =
    (antidiagonal n).biUnion fun ij => pairwiseNode (treesOfNumNodesEq ij.1) (treesOfNumNodesEq ij.2)

tactic: ext
state_before: n : ℕ
⊢ ((antidiagonal n).attach.biUnion fun ijh => pairwiseNode (treesOfNumNodesEq (↑ijh).1) (treesOfNumNodesEq (↑ijh).2)) =
    (antidiagonal n).biUnion fun ij => pairwiseNode (treesOfNumNodesEq ij.1) (treesOfNumNodesEq ij.2)
state_after: case a
n : ℕ
a✝ : Tree Unit
⊢ (a✝ ∈
      (antidiagonal n).attach.biUnion fun ijh =>
        pairwiseNode (treesOfNumNodesEq (↑ijh).1) (treesOfNumNodesEq (↑ijh).2)) ↔
    a✝ ∈ (antidiagonal n).biUnion fun ij => pairwiseNode (treesOfNumNodesEq ij.1) (treesOfNumNodesEq ij.2)

tactic: simp
state_before: case a
n : ℕ
a✝ : Tree Unit
⊢ (a✝ ∈
      (antidiagonal n).attach.biUnion fun ijh =>
        pairwiseNode (treesOfNumNodesEq (↑ijh).1) (treesOfNumNodesEq (↑ijh).2)) ↔
    a✝ ∈ (antidiagonal n).biUnion fun ij => pairwiseNode (treesOfNumNodesEq ij.1) (treesOfNumNodesEq ij.2)
state_after: no goals
Theorem: Nat.primeFactors_subset_of_mem_factoredNumbers
File: Mathlib/NumberTheory/SmoothNumbers.lean

tactic: rw [mem_factoredNumbers] at hm
state_before: s : Finset ℕ
m : ℕ
hm : m ∈ factoredNumbers s
⊢ m.primeFactors ⊆ s
state_after: s : Finset ℕ
m : ℕ
hm : m ≠ 0 ∧ ∀ p ∈ m.factors, p ∈ s
⊢ m.primeFactors ⊆ s

tactic: exact fun n hn ↦ hm.2 n (mem_primeFactors_iff_mem_factors.mp hn)
state_before: s : Finset ℕ
m : ℕ
hm : m ≠ 0 ∧ ∀ p ∈ m.factors, p ∈ s
⊢ m.primeFactors ⊆ s
state_after: no goals
Theorem: Nat.coprime_mul_right_add_left
File: Mathlib/Data/Nat/GCD/Basic.lean

tactic: rw [Coprime, Coprime, gcd_mul_right_add_left]
state_before: m n k : ℕ
⊢ (k * n + m).Coprime n ↔ m.Coprime n
state_after: no goals
Theorem: Set.not_nonempty_iff_eq_empty'
File: Mathlib/Data/Set/Basic.lean

tactic: rw [nonempty_subtype, not_exists, eq_empty_iff_forall_not_mem]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s s₁ s₂ t t₁ t₂ u : Set α
⊢ ¬Nonempty ↑s ↔ s = ∅
state_after: no goals
Theorem: CliffordAlgebra.changeForm.associated_neg_proof
File: Mathlib/LinearAlgebra/CliffordAlgebra/Contraction.lean

tactic: simp [QuadraticForm.toQuadraticForm_associated]
state_before: R : Type u1
inst✝³ : CommRing R
M : Type u2
inst✝² : AddCommGroup M
inst✝¹ : Module R M
Q Q' Q'' : QuadraticForm R M
B B' : BilinForm R M
h : B.toQuadraticForm = Q' - Q
h' : B'.toQuadraticForm = Q'' - Q'
inst✝ : Invertible 2
⊢ (QuadraticForm.associated (-Q)).toQuadraticForm = 0 - Q
state_after: no goals
Theorem: not_summable_of_antitone_of_neg
File: Mathlib/Analysis/SumOverResidueClass.lean

tactic: intro hs
state_before: f : ℕ → ℝ
hf : Antitone f
n : ℕ
hn : f n < 0
⊢ ¬Summable f
state_after: f : ℕ → ℝ
hf : Antitone f
n : ℕ
hn : f n < 0
hs : Summable f
⊢ False

tactic: have := hs.tendsto_atTop_zero
state_before: f : ℕ → ℝ
hf : Antitone f
n : ℕ
hn : f n < 0
hs : Summable f
⊢ False
state_after: f : ℕ → ℝ
hf : Antitone f
n : ℕ
hn : f n < 0
hs : Summable f
this : Filter.Tendsto f Filter.atTop (nhds 0)
⊢ False

tactic: simp only [Metric.tendsto_atTop, dist_zero_right, Real.norm_eq_abs] at this
state_before: f : ℕ → ℝ
hf : Antitone f
n : ℕ
hn : f n < 0
hs : Summable f
this : Filter.Tendsto f Filter.atTop (nhds 0)
⊢ False
state_after: f : ℕ → ℝ
hf : Antitone f
n : ℕ
hn : f n < 0
hs : Summable f
this : ∀ ε > 0, ∃ N, ∀ n ≥ N, |f n| < ε
⊢ False

tactic: obtain ⟨N, hN⟩ := this (|f n|) (abs_pos_of_neg hn)
state_before: f : ℕ → ℝ
hf : Antitone f
n : ℕ
hn : f n < 0
hs : Summable f
this : ∀ ε > 0, ∃ N, ∀ n ≥ N, |f n| < ε
⊢ False
state_after: case intro
f : ℕ → ℝ
hf : Antitone f
n : ℕ
hn : f n < 0
hs : Summable f
this : ∀ ε > 0, ∃ N, ∀ n ≥ N, |f n| < ε
N : ℕ
hN : ∀ n_1 ≥ N, |f n_1| < |f n|
⊢ False

tactic: specialize hN (max n N) (n.le_max_right N)
state_before: case intro
f : ℕ → ℝ
hf : Antitone f
n : ℕ
hn : f n < 0
hs : Summable f
this : ∀ ε > 0, ∃ N, ∀ n ≥ N, |f n| < ε
N : ℕ
hN : ∀ n_1 ≥ N, |f n_1| < |f n|
⊢ False
state_after: case intro
f : ℕ → ℝ
hf : Antitone f
n : ℕ
hn : f n < 0
hs : Summable f
this : ∀ ε > 0, ∃ N, ∀ n ≥ N, |f n| < ε
N : ℕ
hN : |f (max n N)| < |f n|
⊢ False

tactic: contrapose! hN
state_before: case intro
f : ℕ → ℝ
hf : Antitone f
n : ℕ
hn : f n < 0
hs : Summable f
this : ∀ ε > 0, ∃ N, ∀ n ≥ N, |f n| < ε
N : ℕ
hN : |f (max n N)| < |f n|
⊢ False
state_after: case intro
f : ℕ → ℝ
hf : Antitone f
n : ℕ
hn : f n < 0
hs : Summable f
this : ∀ ε > 0, ∃ N, ∀ n ≥ N, |f n| < ε
N : ℕ
hN : ¬False
⊢ |f n| ≤ |f (max n N)|

tactic: clear hN
state_before: case intro
f : ℕ → ℝ
hf : Antitone f
n : ℕ
hn : f n < 0
hs : Summable f
this : ∀ ε > 0, ∃ N, ∀ n ≥ N, |f n| < ε
N : ℕ
hN : ¬False
⊢ |f n| ≤ |f (max n N)|
state_after: case intro
f : ℕ → ℝ
hf : Antitone f
n : ℕ
hn : f n < 0
hs : Summable f
this : ∀ ε > 0, ∃ N, ∀ n ≥ N, |f n| < ε
N : ℕ
⊢ |f n| ≤ |f (max n N)|

tactic: have H : f (max n N) ≤ f n := hf (n.le_max_left N)
state_before: case intro
f : ℕ → ℝ
hf : Antitone f
n : ℕ
hn : f n < 0
hs : Summable f
this : ∀ ε > 0, ∃ N, ∀ n ≥ N, |f n| < ε
N : ℕ
⊢ |f n| ≤ |f (max n N)|
state_after: case intro
f : ℕ → ℝ
hf : Antitone f
n : ℕ
hn : f n < 0
hs : Summable f
this : ∀ ε > 0, ∃ N, ∀ n ≥ N, |f n| < ε
N : ℕ
H : f (max n N) ≤ f n
⊢ |f n| ≤ |f (max n N)|

tactic: rwa [abs_of_neg hn, abs_of_neg (H.trans_lt hn), neg_le_neg_iff]
state_before: case intro
f : ℕ → ℝ
hf : Antitone f
n : ℕ
hn : f n < 0
hs : Summable f
this : ∀ ε > 0, ∃ N, ∀ n ≥ N, |f n| < ε
N : ℕ
H : f (max n N) ≤ f n
⊢ |f n| ≤ |f (max n N)|
state_after: no goals
Theorem: MulEquiv.coe_monoidHom_symm_comp_coe_monoidHom
File: Mathlib/Algebra/Group/Equiv/Basic.lean

tactic: ext
state_before: F : Type u_1
α : Type u_2
β : Type u_3
A : Type u_4
B : Type u_5
M : Type u_6
N : Type u_7
P : Type u_8
Q : Type u_9
G : Type u_10
H : Type u_11
inst✝³ : EquivLike F α β
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
e : M ≃* N
⊢ (↑e.symm).comp ↑e = MonoidHom.id M
state_after: case h
F : Type u_1
α : Type u_2
β : Type u_3
A : Type u_4
B : Type u_5
M : Type u_6
N : Type u_7
P : Type u_8
Q : Type u_9
G : Type u_10
H : Type u_11
inst✝³ : EquivLike F α β
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
e : M ≃* N
x✝ : M
⊢ ((↑e.symm).comp ↑e) x✝ = (MonoidHom.id M) x✝

tactic: simp
state_before: case h
F : Type u_1
α : Type u_2
β : Type u_3
A : Type u_4
B : Type u_5
M : Type u_6
N : Type u_7
P : Type u_8
Q : Type u_9
G : Type u_10
H : Type u_11
inst✝³ : EquivLike F α β
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
e : M ≃* N
x✝ : M
⊢ ((↑e.symm).comp ↑e) x✝ = (MonoidHom.id M) x✝
state_after: no goals
Theorem: NumberField.mixedEmbedding.convexBodyLT_neg_mem
File: Mathlib/NumberTheory/NumberField/CanonicalEmbedding/ConvexBody.lean

tactic: simp only [Set.mem_prod, Prod.fst_neg, Set.mem_pi, Set.mem_univ, Pi.neg_apply,
  mem_ball_zero_iff, norm_neg, Real.norm_eq_abs, forall_true_left, Subtype.forall,
  Prod.snd_neg, Complex.norm_eq_abs] at hx ⊢
state_before: K : Type u_1
inst✝ : Field K
f : InfinitePlace K → ℝ≥0
x : ({ w // w.IsReal } → ℝ) × ({ w // w.IsComplex } → ℂ)
hx : x ∈ convexBodyLT K f
⊢ -x ∈ convexBodyLT K f
state_after: K : Type u_1
inst✝ : Field K
f : InfinitePlace K → ℝ≥0
x : ({ w // w.IsReal } → ℝ) × ({ w // w.IsComplex } → ℂ)
hx :
  (∀ (a : InfinitePlace K) (b : a.IsReal), |x.1 ⟨a, b⟩| < ↑(f a)) ∧
    ∀ (a : InfinitePlace K) (b : a.IsComplex), Complex.abs (x.2 ⟨a, b⟩) < ↑(f a)
⊢ (∀ (a : InfinitePlace K) (b : a.IsReal), |x.1 ⟨a, b⟩| < ↑(f a)) ∧
    ∀ (a : InfinitePlace K) (b : a.IsComplex), Complex.abs (x.2 ⟨a, b⟩) < ↑(f a)

tactic: exact hx
state_before: K : Type u_1
inst✝ : Field K
f : InfinitePlace K → ℝ≥0
x : ({ w // w.IsReal } → ℝ) × ({ w // w.IsComplex } → ℂ)
hx :
  (∀ (a : InfinitePlace K) (b : a.IsReal), |x.1 ⟨a, b⟩| < ↑(f a)) ∧
    ∀ (a : InfinitePlace K) (b : a.IsComplex), Complex.abs (x.2 ⟨a, b⟩) < ↑(f a)
⊢ (∀ (a : InfinitePlace K) (b : a.IsReal), |x.1 ⟨a, b⟩| < ↑(f a)) ∧
    ∀ (a : InfinitePlace K) (b : a.IsComplex), Complex.abs (x.2 ⟨a, b⟩) < ↑(f a)
state_after: no goals
Theorem: ProbabilityTheory.kernel.lintegral_density
File: Mathlib/Probability/Kernel/Disintegration/Density.lean

tactic: rw [← setLIntegral_univ]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
hκν : fst κ ≤ ν
inst✝ : IsFiniteKernel ν
a : α
s : Set β
hs : MeasurableSet s
⊢ ∫⁻ (x : γ), ENNReal.ofReal (density κ ν a x s) ∂ν a = (κ a) (univ ×ˢ s)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
hκν : fst κ ≤ ν
inst✝ : IsFiniteKernel ν
a : α
s : Set β
hs : MeasurableSet s
⊢ ∫⁻ (x : γ) in univ, ENNReal.ofReal (density κ ν a x s) ∂ν a = (κ a) (univ ×ˢ s)

tactic: exact setLIntegral_density hκν a hs MeasurableSet.univ
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
hκν : fst κ ≤ ν
inst✝ : IsFiniteKernel ν
a : α
s : Set β
hs : MeasurableSet s
⊢ ∫⁻ (x : γ) in univ, ENNReal.ofReal (density κ ν a x s) ∂ν a = (κ a) (univ ×ˢ s)
state_after: no goals
Theorem: CochainComplex.shiftShortComplexFunctorIso_zero_add_hom_app
File: Mathlib/Algebra/Homology/HomotopyCategory/ShiftSequence.lean

tactic: ext <;> dsimp <;> simp [one_smul, shiftFunctorZero_hom_app_f]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
a : ℤ
K : CochainComplex C ℤ
⊢ (shiftShortComplexFunctorIso C 0 a a ⋯).hom.app K =
    (shortComplexFunctor C (up ℤ) a).map ((shiftFunctorZero (CochainComplex C ℤ) ℤ).hom.app K)
state_after: no goals
Theorem: IsSl2Triple.symm
File: Mathlib/Algebra/Lie/Sl2.lean

tactic: simpa using ht.h_ne_zero
state_before: R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
h e f : L
ht : IsSl2Triple h e f
⊢ -h ≠ 0
state_after: no goals

tactic: rw [← neg_eq_iff_eq_neg, lie_skew, ht.lie_e_f]
state_before: R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
h e f : L
ht : IsSl2Triple h e f
⊢ ⁅f, e⁆ = -h
state_after: no goals

tactic: rw [neg_lie, neg_eq_iff_eq_neg, ht.lie_h_f_nsmul]
state_before: R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
h e f : L
ht : IsSl2Triple h e f
⊢ ⁅-h, f⁆ = 2 • f
state_after: no goals

tactic: rw [neg_lie, neg_inj, ht.lie_h_e_nsmul]
state_before: R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
h e f : L
ht : IsSl2Triple h e f
⊢ ⁅-h, e⁆ = -(2 • e)
state_after: no goals
Theorem: Equiv.pow_addLeft
File: Mathlib/GroupTheory/Perm/Basic.lean

tactic: ext
state_before: α : Type u
β : Type v
inst✝ : AddGroup α
a b : α
n : ℕ
⊢ Equiv.addLeft a ^ n = Equiv.addLeft (n • a)
state_after: case H
α : Type u
β : Type v
inst✝ : AddGroup α
a b : α
n : ℕ
x✝ : α
⊢ (Equiv.addLeft a ^ n) x✝ = (Equiv.addLeft (n • a)) x✝

tactic: simp [Perm.coe_pow]
state_before: case H
α : Type u
β : Type v
inst✝ : AddGroup α
a b : α
n : ℕ
x✝ : α
⊢ (Equiv.addLeft a ^ n) x✝ = (Equiv.addLeft (n • a)) x✝
state_after: no goals
Theorem: SimpleGraph.cliqueFree_bot
File: Mathlib/Combinatorics/SimpleGraph/Clique.lean

tactic: intro t ht
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
h : 2 ≤ n
⊢ ⊥.CliqueFree n
state_after: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
h : 2 ≤ n
t : Finset α
ht : ⊥.IsNClique n t
⊢ False

tactic: have := le_trans h (isNClique_bot_iff.1 ht).1
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
h : 2 ≤ n
t : Finset α
ht : ⊥.IsNClique n t
⊢ False
state_after: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
h : 2 ≤ n
t : Finset α
ht : ⊥.IsNClique n t
this : 2 ≤ 1
⊢ False

tactic: contradiction
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
m n : ℕ
s : Finset α
h : 2 ≤ n
t : Finset α
ht : ⊥.IsNClique n t
this : 2 ≤ 1
⊢ False
state_after: no goals
Theorem: PiNat.exists_retraction_of_isClosed
File: Mathlib/Topology/MetricSpace/PiNat.lean

tactic: rcases exists_lipschitz_retraction_of_isClosed hs hne with ⟨f, fs, frange, hf⟩
state_before: E : ℕ → Type u_1
inst✝¹ : (n : ℕ) → TopologicalSpace (E n)
inst✝ : ∀ (n : ℕ), DiscreteTopology (E n)
s : Set ((n : ℕ) → E n)
hs : IsClosed s
hne : s.Nonempty
⊢ ∃ f, (∀ x ∈ s, f x = x) ∧ range f = s ∧ Continuous f
state_after: case intro.intro.intro
E : ℕ → Type u_1
inst✝¹ : (n : ℕ) → TopologicalSpace (E n)
inst✝ : ∀ (n : ℕ), DiscreteTopology (E n)
s : Set ((n : ℕ) → E n)
hs : IsClosed s
hne : s.Nonempty
f : ((n : ℕ) → E n) → (n : ℕ) → E n
fs : ∀ x ∈ s, f x = x
frange : range f = s
hf : LipschitzWith 1 f
⊢ ∃ f, (∀ x ∈ s, f x = x) ∧ range f = s ∧ Continuous f

tactic: exact ⟨f, fs, frange, hf.continuous⟩
state_before: case intro.intro.intro
E : ℕ → Type u_1
inst✝¹ : (n : ℕ) → TopologicalSpace (E n)
inst✝ : ∀ (n : ℕ), DiscreteTopology (E n)
s : Set ((n : ℕ) → E n)
hs : IsClosed s
hne : s.Nonempty
f : ((n : ℕ) → E n) → (n : ℕ) → E n
fs : ∀ x ∈ s, f x = x
frange : range f = s
hf : LipschitzWith 1 f
⊢ ∃ f, (∀ x ∈ s, f x = x) ∧ range f = s ∧ Continuous f
state_after: no goals
Theorem: Polynomial.leadingCoeff_C_mul_X_pow
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: rw [C_mul_X_pow_eq_monomial, leadingCoeff_monomial]
state_before: R : Type u
S : Type v
a✝ b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
a : R
n : ℕ
⊢ (C a * X ^ n).leadingCoeff = a
state_after: no goals
Theorem: Con.coe_iInf
File: Mathlib/GroupTheory/Congruence/Basic.lean

tactic: rw [iInf, coe_sInf, ← Set.range_comp, sInf_range, Function.comp]
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝² : Mul M
inst✝¹ : Mul N
inst✝ : Mul P
c : Con M
ι : Sort u_4
f : ι → Con M
⊢ ⇑(iInf f) = ⨅ i, ⇑(f i)
state_after: no goals
Theorem: IntermediateField.isPurelyInseparable_adjoin_simple_iff_natSepDegree_eq_one
File: Mathlib/FieldTheory/PurelyInseparable.lean

tactic: rw [← le_perfectClosure_iff, adjoin_simple_le_iff, mem_perfectClosure_iff_natSepDegree_eq_one]
state_before: F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
x : E
⊢ IsPurelyInseparable F ↥F⟮x⟯ ↔ (minpoly F x).natSepDegree = 1
state_after: no goals
Theorem: TensorProduct.toMatrix_map
File: Mathlib/LinearAlgebra/TensorProduct/Matrix.lean

tactic: ext ⟨i, j⟩ ⟨i', j'⟩
state_before: R : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
M' : Type u_5
N' : Type u_6
ι : Type u_7
κ : Type u_8
τ : Type u_9
ι' : Type u_10
κ' : Type u_11
inst✝¹⁸ : DecidableEq ι
inst✝¹⁷ : DecidableEq κ
inst✝¹⁶ : DecidableEq τ
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype κ
inst✝¹³ : Fintype τ
inst✝¹² : Finite ι'
inst✝¹¹ : Finite κ'
inst✝¹⁰ : CommRing R
inst✝⁹ : AddCommGroup M
inst✝⁸ : AddCommGroup N
inst✝⁷ : AddCommGroup P
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup N'
inst✝⁴ : Module R M
inst✝³ : Module R N
inst✝² : Module R P
inst✝¹ : Module R M'
inst✝ : Module R N'
bM : Basis ι R M
bN : Basis κ R N
bP : Basis τ R P
bM' : Basis ι' R M'
bN' : Basis κ' R N'
f : M →ₗ[R] M'
g : N →ₗ[R] N'
⊢ (toMatrix (bM.tensorProduct bN) (bM'.tensorProduct bN')) (map f g) =
    kroneckerMap (fun x x_1 => x * x_1) ((toMatrix bM bM') f) ((toMatrix bN bN') g)
state_after: case a.mk.mk
R : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
M' : Type u_5
N' : Type u_6
ι : Type u_7
κ : Type u_8
τ : Type u_9
ι' : Type u_10
κ' : Type u_11
inst✝¹⁸ : DecidableEq ι
inst✝¹⁷ : DecidableEq κ
inst✝¹⁶ : DecidableEq τ
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype κ
inst✝¹³ : Fintype τ
inst✝¹² : Finite ι'
inst✝¹¹ : Finite κ'
inst✝¹⁰ : CommRing R
inst✝⁹ : AddCommGroup M
inst✝⁸ : AddCommGroup N
inst✝⁷ : AddCommGroup P
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup N'
inst✝⁴ : Module R M
inst✝³ : Module R N
inst✝² : Module R P
inst✝¹ : Module R M'
inst✝ : Module R N'
bM : Basis ι R M
bN : Basis κ R N
bP : Basis τ R P
bM' : Basis ι' R M'
bN' : Basis κ' R N'
f : M →ₗ[R] M'
g : N →ₗ[R] N'
i : ι'
j : κ'
i' : ι
j' : κ
⊢ (toMatrix (bM.tensorProduct bN) (bM'.tensorProduct bN')) (map f g) (i, j) (i', j') =
    kroneckerMap (fun x x_1 => x * x_1) ((toMatrix bM bM') f) ((toMatrix bN bN') g) (i, j) (i', j')

tactic: simp_rw [Matrix.kroneckerMap_apply, toMatrix_apply, Basis.tensorProduct_apply,
  TensorProduct.map_tmul, Basis.tensorProduct_repr_tmul_apply]
state_before: case a.mk.mk
R : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
M' : Type u_5
N' : Type u_6
ι : Type u_7
κ : Type u_8
τ : Type u_9
ι' : Type u_10
κ' : Type u_11
inst✝¹⁸ : DecidableEq ι
inst✝¹⁷ : DecidableEq κ
inst✝¹⁶ : DecidableEq τ
inst✝¹⁵ : Fintype ι
inst✝¹⁴ : Fintype κ
inst✝¹³ : Fintype τ
inst✝¹² : Finite ι'
inst✝¹¹ : Finite κ'
inst✝¹⁰ : CommRing R
inst✝⁹ : AddCommGroup M
inst✝⁸ : AddCommGroup N
inst✝⁷ : AddCommGroup P
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup N'
inst✝⁴ : Module R M
inst✝³ : Module R N
inst✝² : Module R P
inst✝¹ : Module R M'
inst✝ : Module R N'
bM : Basis ι R M
bN : Basis κ R N
bP : Basis τ R P
bM' : Basis ι' R M'
bN' : Basis κ' R N'
f : M →ₗ[R] M'
g : N →ₗ[R] N'
i : ι'
j : κ'
i' : ι
j' : κ
⊢ (toMatrix (bM.tensorProduct bN) (bM'.tensorProduct bN')) (map f g) (i, j) (i', j') =
    kroneckerMap (fun x x_1 => x * x_1) ((toMatrix bM bM') f) ((toMatrix bN bN') g) (i, j) (i', j')
state_after: no goals
Theorem: Num.div_zero
File: Mathlib/Data/Num/Lemmas.lean

tactic: cases n
state_before: n : Num
⊢ n.div 0 = 0
state_after: case zero

⊢ zero.div 0 = 0

case pos
a✝ : PosNum
⊢ (pos a✝).div 0 = 0

tactic: rfl
state_before: case zero

⊢ zero.div 0 = 0
state_after: no goals

tactic: simp [Num.div]
state_before: case pos
a✝ : PosNum
⊢ (pos a✝).div 0 = 0
state_after: no goals
Theorem: min_eq_bot
File: Mathlib/Order/BoundedOrder.lean

tactic: simp only [← inf_eq_min, ← le_bot_iff, inf_le_iff]
state_before: α : Type u
β : Type v
γ : Type u_1
δ : Type u_2
inst✝¹ : LinearOrder α
inst✝ : OrderBot α
a b : α
⊢ min a b = ⊥ ↔ a = ⊥ ∨ b = ⊥
state_after: no goals
Theorem: HasFDerivAtFilter.sub_const
File: Mathlib/Analysis/Calculus/FDeriv/Add.lean

tactic: simpa only [sub_eq_add_neg] using hf.add_const (-c)
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
hf : HasFDerivAtFilter f f' x L
c : F
⊢ HasFDerivAtFilter (fun x => f x - c) f' x L
state_after: no goals
Theorem: isRelPrime_mul_unit_right_left
File: Mathlib/Algebra/Divisibility/Units.lean

tactic: rw [mul_comm, isRelPrime_mul_unit_left_left hu]
state_before: α : Type u_1
inst✝ : CommMonoid α
x y z : α
hu : IsUnit x
⊢ IsRelPrime (y * x) z ↔ IsRelPrime y z
state_after: no goals
Theorem: ArithmeticFunction.moebius_sq_eq_one_of_squarefree
File: Mathlib/NumberTheory/ArithmeticFunction.lean

tactic: rw [moebius_apply_of_squarefree hl, ← pow_mul, mul_comm, pow_mul, neg_one_sq, one_pow]
state_before: R : Type u_1
l : ℕ
hl : Squarefree l
⊢ μ l ^ 2 = 1
state_after: no goals
Theorem: RelSeries.mem_toList
File: Mathlib/Order/RelSeries.lean

tactic: rw [RelSeries.toList, List.mem_ofFn, RelSeries.mem_def]
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s✝ : Rel β β
s : RelSeries r
x : α
⊢ x ∈ s.toList ↔ x ∈ s
state_after: no goals
Theorem: CoxeterSystem.wordProd_cons
File: Mathlib/GroupTheory/Coxeter/Basic.lean

tactic: simp [wordProd]
state_before: B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i : B
ω : List B
⊢ cs.wordProd (i :: ω) = cs.simple i * cs.wordProd ω
state_after: no goals
Theorem: Polynomial.roots_X_sub_C
File: Mathlib/Algebra/Polynomial/Roots.lean

tactic: classical
ext s
rw [count_roots, rootMultiplicity_X_sub_C, count_singleton]
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
r : R
⊢ (X - C r).roots = {r}
state_after: no goals

tactic: ext s
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
r : R
⊢ (X - C r).roots = {r}
state_after: case a
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
r s : R
⊢ count s (X - C r).roots = count s {r}

tactic: rw [count_roots, rootMultiplicity_X_sub_C, count_singleton]
state_before: case a
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
r s : R
⊢ count s (X - C r).roots = count s {r}
state_after: no goals
Theorem: TensorProduct.directLimitRight_symm_of_tmul
File: Mathlib/LinearAlgebra/TensorProduct/DirectLimit.lean

tactic: simp [directLimitRight, congr_symm_apply_of]
state_before: R : Type u_1
inst✝⁷ : CommRing R
ι : Type u_2
inst✝⁶ : DecidableEq ι
inst✝⁵ : Preorder ι
G : ι → Type u_3
inst✝⁴ : (i : ι) → AddCommGroup (G i)
inst✝³ : (i : ι) → Module R (G i)
f : (i j : ι) → i ≤ j → G i →ₗ[R] G j
M : Type u_4
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
i : ι
m : M
g : G i
⊢ (directLimitRight f M).symm
      ((of R ι (fun x => M ⊗[R] G x) (fun i j h => LinearMap.lTensor M (f i j h)) i) (m ⊗ₜ[R] g)) =
    m ⊗ₜ[R] (of R ι G f i) g
state_after: no goals
Theorem: StieltjesFunction.iInf_rat_gt_eq
File: Mathlib/MeasureTheory/Measure/Stieltjes.lean

tactic: rw [← iInf_Ioi_eq f x]
state_before: f✝ f : StieltjesFunction
x : ℝ
⊢ ⨅ r, ↑f ↑↑r = ↑f x
state_after: f✝ f : StieltjesFunction
x : ℝ
⊢ ⨅ r, ↑f ↑↑r = ⨅ r, ↑f ↑r

tactic: refine (Real.iInf_Ioi_eq_iInf_rat_gt _ ?_ f.mono).symm
state_before: f✝ f : StieltjesFunction
x : ℝ
⊢ ⨅ r, ↑f ↑↑r = ⨅ r, ↑f ↑r
state_after: f✝ f : StieltjesFunction
x : ℝ
⊢ BddBelow (↑f '' Ioi x)

tactic: refine ⟨f x, fun y => ?_⟩
state_before: f✝ f : StieltjesFunction
x : ℝ
⊢ BddBelow (↑f '' Ioi x)
state_after: f✝ f : StieltjesFunction
x y : ℝ
⊢ y ∈ ↑f '' Ioi x → ↑f x ≤ y

tactic: rintro ⟨y, hy_mem, rfl⟩
state_before: f✝ f : StieltjesFunction
x y : ℝ
⊢ y ∈ ↑f '' Ioi x → ↑f x ≤ y
state_after: case intro.intro
f✝ f : StieltjesFunction
x y : ℝ
hy_mem : y ∈ Ioi x
⊢ ↑f x ≤ ↑f y

tactic: exact f.mono (le_of_lt hy_mem)
state_before: case intro.intro
f✝ f : StieltjesFunction
x y : ℝ
hy_mem : y ∈ Ioi x
⊢ ↑f x ≤ ↑f y
state_after: no goals
Theorem: MeasureTheory.OuterMeasure.iInf_apply
File: Mathlib/MeasureTheory/OuterMeasure/OfFunction.lean

tactic: rw [iInf, sInf_apply (range_nonempty m)]
state_before: α : Type u_1
ι : Sort u_2
inst✝ : Nonempty ι
m : ι → OuterMeasure α
s : Set α
⊢ (⨅ i, m i) s = ⨅ t, ⨅ (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ i, (m i) (t n)
state_after: α : Type u_1
ι : Sort u_2
inst✝ : Nonempty ι
m : ι → OuterMeasure α
s : Set α
⊢ ⨅ t, ⨅ (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ μ ∈ range m, μ (t n) =
    ⨅ t, ⨅ (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ i, (m i) (t n)

tactic: simp only [iInf_range]
state_before: α : Type u_1
ι : Sort u_2
inst✝ : Nonempty ι
m : ι → OuterMeasure α
s : Set α
⊢ ⨅ t, ⨅ (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ μ ∈ range m, μ (t n) =
    ⨅ t, ⨅ (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ i, (m i) (t n)
state_after: no goals
Theorem: Order.not_isPredLimit
File: Mathlib/Order/SuccPred/Limit.lean

tactic: simp
state_before: α : Type u_1
inst✝³ : PartialOrder α
inst✝² : PredOrder α
a b : α
C : α → Sort u_2
inst✝¹ : IsPredArchimedean α
inst✝ : NoMaxOrder α
⊢ ¬IsPredLimit a
state_after: no goals