1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: PNat.gcd_eq_left_iff_dvd
File: Mathlib/Data/PNat/Prime.lean

tactic: rw [dvd_iff]
state_before: m n : ℕ+
⊢ m ∣ n ↔ m.gcd n = m
state_after: m n : ℕ+
⊢ ↑m ∣ ↑n ↔ m.gcd n = m

tactic: rw [Nat.gcd_eq_left_iff_dvd]
state_before: m n : ℕ+
⊢ ↑m ∣ ↑n ↔ m.gcd n = m
state_after: m n : ℕ+
⊢ (↑m).gcd ↑n = ↑m ↔ m.gcd n = m

tactic: rw [← coe_inj]
state_before: m n : ℕ+
⊢ (↑m).gcd ↑n = ↑m ↔ m.gcd n = m
state_after: m n : ℕ+
⊢ (↑m).gcd ↑n = ↑m ↔ ↑(m.gcd n) = ↑m

tactic: simp
state_before: m n : ℕ+
⊢ (↑m).gcd ↑n = ↑m ↔ ↑(m.gcd n) = ↑m
state_after: no goals
Theorem: Ordinal.limitRecOn_succ
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simp_rw [limitRecOn, SuccOrder.limitRecOn_succ _ _ (not_isMax _)]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
C : Ordinal.{u_4} → Sort u_5
o : Ordinal.{u_4}
H₁ : C 0
H₂ : (o : Ordinal.{u_4}) → C o → C (succ o)
H₃ : (o : Ordinal.{u_4}) → o.IsLimit → ((o' : Ordinal.{u_4}) → o' < o → C o') → C o
⊢ (succ o).limitRecOn H₁ H₂ H₃ = H₂ o (o.limitRecOn H₁ H₂ H₃)
state_after: no goals
Theorem: Matrix.det_add_mul
File: Mathlib/LinearAlgebra/Matrix/SchurComplement.lean

tactic: nth_rewrite 1 [← Matrix.mul_one A]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A : Matrix m m α
U : Matrix m n α
V : Matrix n m α
hA : IsUnit A.det
⊢ (A + U * V).det = A.det * (1 + V * A⁻¹ * U).det
state_after: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A : Matrix m m α
U : Matrix m n α
V : Matrix n m α
hA : IsUnit A.det
⊢ (A * 1 + U * V).det = A.det * (1 + V * A⁻¹ * U).det

tactic: rwa [← Matrix.mul_nonsing_inv_cancel_left A (U * V), ← Matrix.mul_add,
  det_mul, ← Matrix.mul_assoc, det_one_add_mul_comm, ← Matrix.mul_assoc]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A : Matrix m m α
U : Matrix m n α
V : Matrix n m α
hA : IsUnit A.det
⊢ (A * 1 + U * V).det = A.det * (1 + V * A⁻¹ * U).det
state_after: no goals
Theorem: CategoryTheory.Limits.pullbackSymmetry_inv_comp_fst
File: Mathlib/CategoryTheory/Limits/Shapes/Pullbacks.lean

tactic: simp [Iso.inv_comp_eq]
state_before: C : Type u
inst✝² : Category.{v, u} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
W X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : HasPullback f g
⊢ (pullbackSymmetry f g).inv ≫ pullback.fst = pullback.snd
state_after: no goals
Theorem: Metric.closure_eq_iInter_thickening'
File: Mathlib/Topology/MetricSpace/Thickening.lean

tactic: rw [← cthickening_zero]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ ε : ℝ
s✝ t : Set α
x : α
E : Set α
s : Set ℝ
hs₀ : s ⊆ Ioi 0
hs : ∀ (ε : ℝ), 0 < ε → (s ∩ Ioc 0 ε).Nonempty
⊢ closure E = ⋂ δ ∈ s, thickening δ E
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ ε : ℝ
s✝ t : Set α
x : α
E : Set α
s : Set ℝ
hs₀ : s ⊆ Ioi 0
hs : ∀ (ε : ℝ), 0 < ε → (s ∩ Ioc 0 ε).Nonempty
⊢ cthickening 0 E = ⋂ δ ∈ s, thickening δ E

tactic: apply cthickening_eq_iInter_thickening' le_rfl _ hs₀ hs
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ ε : ℝ
s✝ t : Set α
x : α
E : Set α
s : Set ℝ
hs₀ : s ⊆ Ioi 0
hs : ∀ (ε : ℝ), 0 < ε → (s ∩ Ioc 0 ε).Nonempty
⊢ cthickening 0 E = ⋂ δ ∈ s, thickening δ E
state_after: no goals
Theorem: Fin.univ_succ
File: Mathlib/Data/Fintype/Basic.lean

tactic: simp [map_eq_image]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
n : ℕ
⊢ 0 ∉ map { toFun := succ, inj' := ⋯ } univ
state_after: no goals

tactic: simp [map_eq_image]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
n : ℕ
⊢ univ = Finset.cons 0 (map { toFun := succ, inj' := ⋯ } univ) ⋯
state_after: no goals
Theorem: FiniteField.isSquare_two_iff
File: Mathlib/NumberTheory/LegendreSymbol/QuadraticChar/GaussSum.lean

tactic: by_cases hF : ringChar F = 2
state_before: F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
⊢ IsSquare 2 ↔ Fintype.card F % 8 ≠ 3 ∧ Fintype.card F % 8 ≠ 5
state_after: case pos
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ringChar F = 2
⊢ IsSquare 2 ↔ Fintype.card F % 8 ≠ 3 ∧ Fintype.card F % 8 ≠ 5

case neg
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ¬ringChar F = 2
⊢ IsSquare 2 ↔ Fintype.card F % 8 ≠ 3 ∧ Fintype.card F % 8 ≠ 5

tactic: have h := FiniteField.even_card_of_char_two hF
state_before: case pos
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ringChar F = 2
⊢ IsSquare 2 ↔ Fintype.card F % 8 ≠ 3 ∧ Fintype.card F % 8 ≠ 5
state_after: case pos
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ringChar F = 2
h : Fintype.card F % 2 = 0
⊢ IsSquare 2 ↔ Fintype.card F % 8 ≠ 3 ∧ Fintype.card F % 8 ≠ 5

tactic: simp only [FiniteField.isSquare_of_char_two hF, true_iff_iff]
state_before: case pos
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ringChar F = 2
h : Fintype.card F % 2 = 0
⊢ IsSquare 2 ↔ Fintype.card F % 8 ≠ 3 ∧ Fintype.card F % 8 ≠ 5
state_after: case pos
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ringChar F = 2
h : Fintype.card F % 2 = 0
⊢ Fintype.card F % 8 ≠ 3 ∧ Fintype.card F % 8 ≠ 5

tactic: omega
state_before: case pos
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ringChar F = 2
h : Fintype.card F % 2 = 0
⊢ Fintype.card F % 8 ≠ 3 ∧ Fintype.card F % 8 ≠ 5
state_after: no goals

tactic: have h := FiniteField.odd_card_of_char_ne_two hF
state_before: case neg
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ¬ringChar F = 2
⊢ IsSquare 2 ↔ Fintype.card F % 8 ≠ 3 ∧ Fintype.card F % 8 ≠ 5
state_after: case neg
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ¬ringChar F = 2
h : Fintype.card F % 2 = 1
⊢ IsSquare 2 ↔ Fintype.card F % 8 ≠ 3 ∧ Fintype.card F % 8 ≠ 5

tactic: rw [← quadraticChar_one_iff_isSquare (Ring.two_ne_zero hF), quadraticChar_two hF,
  χ₈_nat_eq_if_mod_eight]
state_before: case neg
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ¬ringChar F = 2
h : Fintype.card F % 2 = 1
⊢ IsSquare 2 ↔ Fintype.card F % 8 ≠ 3 ∧ Fintype.card F % 8 ≠ 5
state_after: case neg
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ¬ringChar F = 2
h : Fintype.card F % 2 = 1
⊢ (if Fintype.card F % 2 = 0 then 0 else if Fintype.card F % 8 = 1 ∨ Fintype.card F % 8 = 7 then 1 else -1) = 1 ↔
    Fintype.card F % 8 ≠ 3 ∧ Fintype.card F % 8 ≠ 5

tactic: omega
state_before: case neg
F : Type u_1
inst✝¹ : Field F
inst✝ : Fintype F
hF : ¬ringChar F = 2
h : Fintype.card F % 2 = 1
⊢ (if Fintype.card F % 2 = 0 then 0 else if Fintype.card F % 8 = 1 ∨ Fintype.card F % 8 = 7 then 1 else -1) = 1 ↔
    Fintype.card F % 8 ≠ 3 ∧ Fintype.card F % 8 ≠ 5
state_after: no goals
Theorem: Complex.cos_sub_sin_I
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [neg_mul, ← cosh_sub_sinh, sinh_mul_I, cosh_mul_I]
state_before: x y : ℂ
⊢ cos x - sin x * I = cexp (-x * I)
state_after: no goals
Theorem: List.get_range
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp
state_before: n i : Nat
H : i < (range n).length
⊢ (range n).get ⟨i, H⟩ = i
state_after: no goals
Theorem: image_commutatorSet_closureCommutatorRepresentatives
File: Mathlib/GroupTheory/Abelianization.lean

tactic: apply Set.Subset.antisymm
state_before: G : Type u
inst✝ : Group G
⊢ ⇑(closureCommutatorRepresentatives G).subtype '' commutatorSet ↥(closureCommutatorRepresentatives G) = commutatorSet G
state_after: case h₁
G : Type u
inst✝ : Group G
⊢ ⇑(closureCommutatorRepresentatives G).subtype '' commutatorSet ↥(closureCommutatorRepresentatives G) ⊆ commutatorSet G

case h₂
G : Type u
inst✝ : Group G
⊢ commutatorSet G ⊆ ⇑(closureCommutatorRepresentatives G).subtype '' commutatorSet ↥(closureCommutatorRepresentatives G)

tactic: rintro - ⟨-, ⟨g₁, g₂, rfl⟩, rfl⟩
state_before: case h₁
G : Type u
inst✝ : Group G
⊢ ⇑(closureCommutatorRepresentatives G).subtype '' commutatorSet ↥(closureCommutatorRepresentatives G) ⊆ commutatorSet G
state_after: case h₁.intro.intro.intro.intro
G : Type u
inst✝ : Group G
g₁ g₂ : ↥(closureCommutatorRepresentatives G)
⊢ (closureCommutatorRepresentatives G).subtype ⁅g₁, g₂⁆ ∈ commutatorSet G

tactic: exact ⟨g₁, g₂, rfl⟩
state_before: case h₁.intro.intro.intro.intro
G : Type u
inst✝ : Group G
g₁ g₂ : ↥(closureCommutatorRepresentatives G)
⊢ (closureCommutatorRepresentatives G).subtype ⁅g₁, g₂⁆ ∈ commutatorSet G
state_after: no goals

tactic: exact fun g hg =>
  ⟨_,
    ⟨⟨_, subset_closure (Or.inl ⟨_, ⟨⟨g, hg⟩, rfl⟩, rfl⟩)⟩,
      ⟨_, subset_closure (Or.inr ⟨_, ⟨⟨g, hg⟩, rfl⟩, rfl⟩)⟩, rfl⟩,
    hg.choose_spec.choose_spec⟩
state_before: case h₂
G : Type u
inst✝ : Group G
⊢ commutatorSet G ⊆ ⇑(closureCommutatorRepresentatives G).subtype '' commutatorSet ↥(closureCommutatorRepresentatives G)
state_after: no goals
Theorem: Filter.top_pow
File: Mathlib/Order/Filter/Pointwise.lean

tactic: rw [pow_succ, top_pow n.succ_ne_zero, top_mul_top]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
ε : Type u_6
inst✝ : Monoid α
f g : Filter α
s : Set α
a : α
m n✝ n : ℕ
x✝ : n + 2 ≠ 0
⊢ ⊤ ^ (n + 2) = ⊤
state_after: no goals
Theorem: Ordinal.card_nat
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: induction n <;> [simp; simp only [card_add, card_one, Nat.cast_succ, *]]
state_before: α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
n : ℕ
⊢ (↑n).card = ↑n
state_after: no goals
Theorem: Polynomial.mirror_neg
File: Mathlib/Algebra/Polynomial/Mirror.lean

tactic: rw [mirror, mirror, reverse_neg, natTrailingDegree_neg, neg_mul_eq_neg_mul]
state_before: R : Type u_1
inst✝ : Ring R
p q : R[X]
⊢ (-p).mirror = -p.mirror
state_after: no goals
Theorem: ProbabilityTheory.eq_condKernel_of_kernel_eq_compProd
File: Mathlib/Probability/Kernel/Disintegration/Unique.lean

tactic: filter_upwards [kernel.condKernel_apply_eq_condKernel ρ a,
  kernel.apply_eq_measure_condKernel_of_compProd_eq hκ a] with a h1 h2
state_before: α : Type u_1
β : Type u_2
Ω : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
inst✝⁵ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
inst✝³ : Nonempty Ω
inst✝² : CountableOrCountablyGenerated α β
ρ : ↥(kernel α (β × Ω))
inst✝¹ : IsFiniteKernel ρ
κ : ↥(kernel (α × β) Ω)
inst✝ : IsFiniteKernel κ
hκ : kernel.fst ρ ⊗ₖ κ = ρ
a : α
⊢ ∀ᵐ (x : β) ∂(kernel.fst ρ) a, κ (a, x) = (kernel.condKernel ρ) (a, x)
state_after: case h
α : Type u_1
β : Type u_2
Ω : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
inst✝⁵ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
inst✝³ : Nonempty Ω
inst✝² : CountableOrCountablyGenerated α β
ρ : ↥(kernel α (β × Ω))
inst✝¹ : IsFiniteKernel ρ
κ : ↥(kernel (α × β) Ω)
inst✝ : IsFiniteKernel κ
hκ : kernel.fst ρ ⊗ₖ κ = ρ
a✝ : α
a : β
h1 : (kernel.condKernel ρ) (a✝, a) = (ρ a✝).condKernel a
h2 : κ (a✝, a) = (ρ a✝).condKernel a
⊢ κ (a✝, a) = (kernel.condKernel ρ) (a✝, a)

tactic: rw [h1, h2]
state_before: case h
α : Type u_1
β : Type u_2
Ω : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
inst✝⁵ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
inst✝³ : Nonempty Ω
inst✝² : CountableOrCountablyGenerated α β
ρ : ↥(kernel α (β × Ω))
inst✝¹ : IsFiniteKernel ρ
κ : ↥(kernel (α × β) Ω)
inst✝ : IsFiniteKernel κ
hκ : kernel.fst ρ ⊗ₖ κ = ρ
a✝ : α
a : β
h1 : (kernel.condKernel ρ) (a✝, a) = (ρ a✝).condKernel a
h2 : κ (a✝, a) = (ρ a✝).condKernel a
⊢ κ (a✝, a) = (kernel.condKernel ρ) (a✝, a)
state_after: no goals
Theorem: List.nthLe_range'_1
File: Mathlib/Data/List/Range.lean

tactic: simp
state_before: α : Type u
n m i : ℕ
H : i < (range' n m).length
⊢ (range' n m).nthLe i H = n + i
state_after: no goals
Theorem: isUpperSet_iff_forall_lt
File: Mathlib/Order/UpperLower/Basic.lean

tactic: simp [le_iff_eq_or_lt, or_imp, forall_and]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝ : PartialOrder α
s : Set α
a : α
⊢ (∀ ⦃b : α⦄, a ≤ b → a ∈ s → b ∈ s) ↔ ∀ ⦃b : α⦄, a < b → a ∈ s → b ∈ s
state_after: no goals
Theorem: intervalIntegral.integral_comp_mul_deriv''
File: Mathlib/MeasureTheory/Integral/FundThmCalculus.lean

tactic: simpa [mul_comm] using integral_comp_smul_deriv'' hf hff' hf' hg
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
f✝¹ : ℝ → E
g' g✝ φ : ℝ → ℝ
a b : ℝ
inst✝ : CompleteSpace E
f✝ f'✝ : ℝ → E
f f' g : ℝ → ℝ
hf : ContinuousOn f [[a, b]]
hff' : ∀ x ∈ Ioo (min a b) (max a b), HasDerivWithinAt f (f' x) (Ioi x) x
hf' : ContinuousOn f' [[a, b]]
hg : ContinuousOn g (f '' [[a, b]])
⊢ ∫ (x : ℝ) in a..b, (g ∘ f) x * f' x = ∫ (u : ℝ) in f a..f b, g u
state_after: no goals
Theorem: Multiset.disjoint_ndinsert_right
File: Mathlib/Data/Multiset/FinsetOps.lean

tactic: rw [disjoint_comm, disjoint_ndinsert_left]
state_before: α : Type u_1
inst✝ : DecidableEq α
s✝ : Multiset α
a : α
s t : Multiset α
⊢ s.Disjoint (ndinsert a t) ↔ a ∉ s ∧ s.Disjoint t
state_after: α : Type u_1
inst✝ : DecidableEq α
s✝ : Multiset α
a : α
s t : Multiset α
⊢ a ∉ s ∧ t.Disjoint s ↔ a ∉ s ∧ s.Disjoint t

tactic: tauto
state_before: α : Type u_1
inst✝ : DecidableEq α
s✝ : Multiset α
a : α
s t : Multiset α
⊢ a ∉ s ∧ t.Disjoint s ↔ a ∉ s ∧ s.Disjoint t
state_after: no goals
Theorem: LinearMap.det_eq_one_of_subsingleton
File: Mathlib/LinearAlgebra/Determinant.lean

tactic: have b : Basis (Fin 0) R M := Basis.empty M
state_before: R : Type u_1
inst✝¹⁰ : CommRing R
M : Type u_2
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
M' : Type u_3
inst✝⁷ : AddCommGroup M'
inst✝⁶ : Module R M'
ι : Type u_4
inst✝⁵ : DecidableEq ι
inst✝⁴ : Fintype ι
e : Basis ι R M
A : Type u_5
inst✝³ : CommRing A
inst✝² : Module A M
κ : Type u_6
inst✝¹ : Fintype κ
inst✝ : Subsingleton M
f : M →ₗ[R] M
⊢ LinearMap.det f = 1
state_after: R : Type u_1
inst✝¹⁰ : CommRing R
M : Type u_2
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
M' : Type u_3
inst✝⁷ : AddCommGroup M'
inst✝⁶ : Module R M'
ι : Type u_4
inst✝⁵ : DecidableEq ι
inst✝⁴ : Fintype ι
e : Basis ι R M
A : Type u_5
inst✝³ : CommRing A
inst✝² : Module A M
κ : Type u_6
inst✝¹ : Fintype κ
inst✝ : Subsingleton M
f : M →ₗ[R] M
b : Basis (Fin 0) R M
⊢ LinearMap.det f = 1

tactic: rw [← f.det_toMatrix b]
state_before: R : Type u_1
inst✝¹⁰ : CommRing R
M : Type u_2
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
M' : Type u_3
inst✝⁷ : AddCommGroup M'
inst✝⁶ : Module R M'
ι : Type u_4
inst✝⁵ : DecidableEq ι
inst✝⁴ : Fintype ι
e : Basis ι R M
A : Type u_5
inst✝³ : CommRing A
inst✝² : Module A M
κ : Type u_6
inst✝¹ : Fintype κ
inst✝ : Subsingleton M
f : M →ₗ[R] M
b : Basis (Fin 0) R M
⊢ LinearMap.det f = 1
state_after: R : Type u_1
inst✝¹⁰ : CommRing R
M : Type u_2
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
M' : Type u_3
inst✝⁷ : AddCommGroup M'
inst✝⁶ : Module R M'
ι : Type u_4
inst✝⁵ : DecidableEq ι
inst✝⁴ : Fintype ι
e : Basis ι R M
A : Type u_5
inst✝³ : CommRing A
inst✝² : Module A M
κ : Type u_6
inst✝¹ : Fintype κ
inst✝ : Subsingleton M
f : M →ₗ[R] M
b : Basis (Fin 0) R M
⊢ ((toMatrix b b) f).det = 1

tactic: exact Matrix.det_isEmpty
state_before: R : Type u_1
inst✝¹⁰ : CommRing R
M : Type u_2
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
M' : Type u_3
inst✝⁷ : AddCommGroup M'
inst✝⁶ : Module R M'
ι : Type u_4
inst✝⁵ : DecidableEq ι
inst✝⁴ : Fintype ι
e : Basis ι R M
A : Type u_5
inst✝³ : CommRing A
inst✝² : Module A M
κ : Type u_6
inst✝¹ : Fintype κ
inst✝ : Subsingleton M
f : M →ₗ[R] M
b : Basis (Fin 0) R M
⊢ ((toMatrix b b) f).det = 1
state_after: no goals
Theorem: MeasureTheory.Measure.MutuallySingular.self_iff
File: Mathlib/MeasureTheory/Measure/MutuallySingular.lean

tactic: refine ⟨?_, fun h ↦ by (rw [h]; exact zero_left)⟩
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ₁ μ₂ ν ν₁ ν₂ μ : Measure α
⊢ μ ⟂ₘ μ ↔ μ = 0
state_after: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ₁ μ₂ ν ν₁ ν₂ μ : Measure α
⊢ μ ⟂ₘ μ → μ = 0

tactic: rintro ⟨s, hs, hμs, hμs_compl⟩
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ₁ μ₂ ν ν₁ ν₂ μ : Measure α
⊢ μ ⟂ₘ μ → μ = 0
state_after: case intro.intro.intro
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ₁ μ₂ ν ν₁ ν₂ μ : Measure α
s : Set α
hs : MeasurableSet s
hμs : μ s = 0
hμs_compl : μ sᶜ = 0
⊢ μ = 0

tactic: suffices μ Set.univ = 0 by rwa [measure_univ_eq_zero] at this
state_before: case intro.intro.intro
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ₁ μ₂ ν ν₁ ν₂ μ : Measure α
s : Set α
hs : MeasurableSet s
hμs : μ s = 0
hμs_compl : μ sᶜ = 0
⊢ μ = 0
state_after: case intro.intro.intro
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ₁ μ₂ ν ν₁ ν₂ μ : Measure α
s : Set α
hs : MeasurableSet s
hμs : μ s = 0
hμs_compl : μ sᶜ = 0
⊢ μ univ = 0

tactic: rw [← Set.union_compl_self s, measure_union disjoint_compl_right hs.compl, hμs, hμs_compl,
  add_zero]
state_before: case intro.intro.intro
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ₁ μ₂ ν ν₁ ν₂ μ : Measure α
s : Set α
hs : MeasurableSet s
hμs : μ s = 0
hμs_compl : μ sᶜ = 0
⊢ μ univ = 0
state_after: no goals

tactic: (rw [h]; exact zero_left)
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ₁ μ₂ ν ν₁ ν₂ μ : Measure α
h : μ = 0
⊢ μ ⟂ₘ μ
state_after: no goals

tactic: rw [h]
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ₁ μ₂ ν ν₁ ν₂ μ : Measure α
h : μ = 0
⊢ μ ⟂ₘ μ
state_after: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ₁ μ₂ ν ν₁ ν₂ μ : Measure α
h : μ = 0
⊢ 0 ⟂ₘ 0

tactic: exact zero_left
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ₁ μ₂ ν ν₁ ν₂ μ : Measure α
h : μ = 0
⊢ 0 ⟂ₘ 0
state_after: no goals

tactic: rwa [measure_univ_eq_zero] at this
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ₁ μ₂ ν ν₁ ν₂ μ : Measure α
s : Set α
hs : MeasurableSet s
hμs : μ s = 0
hμs_compl : μ sᶜ = 0
this : μ univ = 0
⊢ μ = 0
state_after: no goals
Theorem: IsSepClosed.exists_eval₂_eq_zero
File: Mathlib/FieldTheory/IsSepClosed.lean

tactic: rwa [degree_map_eq_of_injective f.injective]
state_before: k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed K
f : k →+* K
p : k[X]
hp : p.degree ≠ 0
hsep : p.Separable
⊢ (map f p).degree ≠ 0
state_after: no goals

tactic: rwa [eval₂_eq_eval_map, ← IsRoot]
state_before: k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed K
f : k →+* K
p : k[X]
hp : p.degree ≠ 0
hsep : p.Separable
x : K
hx : (map f p).IsRoot x
⊢ eval₂ f x p = 0
state_after: no goals
Theorem: sub_eq_add
File: Mathlib/Algebra/Ring/BooleanRing.lean

tactic: rw [sub_eq_add_neg, add_right_inj, neg_eq]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : BooleanRing α
a b : α
⊢ a - b = a + b
state_after: no goals
Theorem: CategoryTheory.skeleton_skeletal
File: Mathlib/CategoryTheory/Skeletal.lean

tactic: rintro X Y ⟨h⟩
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
⊢ Skeletal (Skeleton C)
state_after: case intro
C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
X Y : Skeleton C
h : X ≅ Y
⊢ X = Y

tactic: have : X.out ≈ Y.out := ⟨(fromSkeleton C).mapIso h⟩
state_before: case intro
C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
X Y : Skeleton C
h : X ≅ Y
⊢ X = Y
state_after: case intro
C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
X Y : Skeleton C
h : X ≅ Y
this : Quotient.out X ≈ Quotient.out Y
⊢ X = Y

tactic: simpa using Quotient.sound this
state_before: case intro
C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
X Y : Skeleton C
h : X ≅ Y
this : Quotient.out X ≈ Quotient.out Y
⊢ X = Y
state_after: no goals
Theorem: ContinuousMultilinearMap.norm_domDomCongr
File: Mathlib/Analysis/NormedSpace/Multilinear/Curry.lean

tactic: simp only [norm_def, LinearEquiv.coe_mk, ← σ.prod_comp,
  (σ.arrowCongr (Equiv.refl G)).surjective.forall, domDomCongr_apply, Equiv.arrowCongr_apply,
  Equiv.coe_refl, id_comp, comp_apply, Equiv.symm_apply_apply, id]
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin n.succ → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin n.succ) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin n.succ) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
σ : ι ≃ ι'
f : ContinuousMultilinearMap 𝕜 (fun x => G) G'
⊢ ‖domDomCongr σ f‖ = ‖f‖
state_after: no goals
Theorem: LieSubmodule.lie_le_left
File: Mathlib/Algebra/Lie/IdealOperations.lean

tactic: rw [lie_comm]
state_before: R : Type u
L : Type v
M : Type w
M₂ : Type w₁
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
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N N' : LieSubmodule R L M
I J : LieIdeal R L
N₂ : LieSubmodule R L M₂
⊢ ⁅I, J⁆ ≤ I
state_after: R : Type u
L : Type v
M : Type w
M₂ : Type w₁
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
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N N' : LieSubmodule R L M
I J : LieIdeal R L
N₂ : LieSubmodule R L M₂
⊢ ⁅J, I⁆ ≤ I

tactic: exact lie_le_right I J
state_before: R : Type u
L : Type v
M : Type w
M₂ : Type w₁
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
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N N' : LieSubmodule R L M
I J : LieIdeal R L
N₂ : LieSubmodule R L M₂
⊢ ⁅J, I⁆ ≤ I
state_after: no goals
Theorem: ByteArray.get_extract
File: .lake/packages/batteries/Batteries/Data/ByteArray.lean

tactic: simp [getElem_eq_data_getElem]
state_before: i : Nat
a : ByteArray
start stop : Nat
h : i < (a.extract start stop).size
⊢ (a.extract start stop)[i] = a[start + i]
state_after: no goals
Theorem: UpperSet.coe_eq_univ
File: Mathlib/Order/UpperLower/Basic.lean

tactic: simp [SetLike.ext'_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝ : LE α
S : Set (UpperSet α)
s t : UpperSet α
a : α
⊢ ↑s = univ ↔ s = ⊥
state_after: no goals
Theorem: List.getElem_enumFrom
File: Mathlib/Data/List/Enum.lean

tactic: simpa [enumFrom_length] using h
state_before: α : Type u_1
β : Type u_2
l : List α
n i : ℕ
h : i < (enumFrom n l).length
⊢ i < l.length
state_after: no goals

tactic: simp [getElem_eq_getElem?]
state_before: α : Type u_1
β : Type u_2
l : List α
n i : ℕ
h : i < (enumFrom n l).length
⊢ (enumFrom n l)[i] = (n + i, l[i])
state_after: no goals