1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Orientation.tan_oangle_add_left_mul_norm_of_oangle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Oriented/RightAngle.lean

tactic: rw [← neg_inj, oangle_rev, ← oangle_neg_orientation_eq_neg, neg_inj] at h ⊢
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
⊢ (o.oangle (x + y) y).tan * ‖y‖ = ‖x‖
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (-o).oangle y x = ↑(π / 2)
⊢ ((-o).oangle y (x + y)).tan * ‖y‖ = ‖x‖

tactic: rw [add_comm]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (-o).oangle y x = ↑(π / 2)
⊢ ((-o).oangle y (x + y)).tan * ‖y‖ = ‖x‖
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (-o).oangle y x = ↑(π / 2)
⊢ ((-o).oangle y (y + x)).tan * ‖y‖ = ‖x‖

tactic: exact (-o).tan_oangle_add_right_mul_norm_of_oangle_eq_pi_div_two h
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (-o).oangle y x = ↑(π / 2)
⊢ ((-o).oangle y (y + x)).tan * ‖y‖ = ‖x‖
state_after: no goals
Theorem: Nat.and_two_pow
File: Mathlib/Data/Nat/Bitwise.lean

tactic: refine eq_of_testBit_eq fun j => ?_
state_before: n i : ℕ
⊢ n &&& 2 ^ i = (n.testBit i).toNat * 2 ^ i
state_after: n i j : ℕ
⊢ (n &&& 2 ^ i).testBit j = ((n.testBit i).toNat * 2 ^ i).testBit j

tactic: obtain rfl | hij := Decidable.eq_or_ne i j <;> cases' h : n.testBit i
state_before: n i j : ℕ
⊢ (n &&& 2 ^ i).testBit j = ((n.testBit i).toNat * 2 ^ i).testBit j
state_after: case inl.false
n i : ℕ
h : n.testBit i = false
⊢ (n &&& 2 ^ i).testBit i = (false.toNat * 2 ^ i).testBit i

case inl.true
n i : ℕ
h : n.testBit i = true
⊢ (n &&& 2 ^ i).testBit i = (true.toNat * 2 ^ i).testBit i

case inr.false
n i j : ℕ
hij : i ≠ j
h : n.testBit i = false
⊢ (n &&& 2 ^ i).testBit j = (false.toNat * 2 ^ i).testBit j

case inr.true
n i j : ℕ
hij : i ≠ j
h : n.testBit i = true
⊢ (n &&& 2 ^ i).testBit j = (true.toNat * 2 ^ i).testBit j

tactic: simp [h]
state_before: case inl.false
n i : ℕ
h : n.testBit i = false
⊢ (n &&& 2 ^ i).testBit i = (false.toNat * 2 ^ i).testBit i
state_after: no goals

tactic: simp [h]
state_before: case inl.true
n i : ℕ
h : n.testBit i = true
⊢ (n &&& 2 ^ i).testBit i = (true.toNat * 2 ^ i).testBit i
state_after: no goals

tactic: simp [h, testBit_two_pow_of_ne hij]
state_before: case inr.false
n i j : ℕ
hij : i ≠ j
h : n.testBit i = false
⊢ (n &&& 2 ^ i).testBit j = (false.toNat * 2 ^ i).testBit j
state_after: no goals

tactic: simp [h, testBit_two_pow_of_ne hij]
state_before: case inr.true
n i j : ℕ
hij : i ≠ j
h : n.testBit i = true
⊢ (n &&& 2 ^ i).testBit j = (true.toNat * 2 ^ i).testBit j
state_after: no goals
Theorem: CategoryTheory.Functor.hcongr_hom
File: Mathlib/CategoryTheory/EqToHom.lean

tactic: rw [h]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
β : Sort u_1
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
F✝ G✝ : C ⥤ D
X✝ Y✝ Z : C
f✝ : X✝ ⟶ Y✝
g : Y✝ ⟶ Z
F G : C ⥤ D
h : F = G
X Y : C
f : X ⟶ Y
⊢ HEq (F.map f) (G.map f)
state_after: no goals
Theorem: MeasureTheory.IsSetSemiring.pairwiseDisjoint_union_diffFinset₀
File: Mathlib/MeasureTheory/SetSemiring.lean

tactic: rw [pairwiseDisjoint_union]
state_before: α : Type u_1
C : Set (Set α)
s t : Set α
I : Finset (Set α)
hC : IsSetSemiring C
hs : s ∈ C
hI : ↑I ⊆ C
h_dis : (↑I).PairwiseDisjoint id
⊢ (↑I ∪ ↑(hC.diffFinset₀ hs hI)).PairwiseDisjoint id
state_after: α : Type u_1
C : Set (Set α)
s t : Set α
I : Finset (Set α)
hC : IsSetSemiring C
hs : s ∈ C
hI : ↑I ⊆ C
h_dis : (↑I).PairwiseDisjoint id
⊢ (↑I).PairwiseDisjoint id ∧
    (↑(hC.diffFinset₀ hs hI)).PairwiseDisjoint id ∧
      ∀ ⦃i : Set α⦄, i ∈ ↑I → ∀ ⦃j : Set α⦄, j ∈ ↑(hC.diffFinset₀ hs hI) → i ≠ j → Disjoint (id i) (id j)

tactic: refine ⟨h_dis, hC.pairwiseDisjoint_diffFinset₀ hs hI, fun u hu v hv _ ↦ ?_⟩
state_before: α : Type u_1
C : Set (Set α)
s t : Set α
I : Finset (Set α)
hC : IsSetSemiring C
hs : s ∈ C
hI : ↑I ⊆ C
h_dis : (↑I).PairwiseDisjoint id
⊢ (↑I).PairwiseDisjoint id ∧
    (↑(hC.diffFinset₀ hs hI)).PairwiseDisjoint id ∧
      ∀ ⦃i : Set α⦄, i ∈ ↑I → ∀ ⦃j : Set α⦄, j ∈ ↑(hC.diffFinset₀ hs hI) → i ≠ j → Disjoint (id i) (id j)
state_after: α : Type u_1
C : Set (Set α)
s t : Set α
I : Finset (Set α)
hC : IsSetSemiring C
hs : s ∈ C
hI : ↑I ⊆ C
h_dis : (↑I).PairwiseDisjoint id
u : Set α
hu : u ∈ ↑I
v : Set α
hv : v ∈ ↑(hC.diffFinset₀ hs hI)
x✝ : u ≠ v
⊢ Disjoint (id u) (id v)

tactic: simp_rw [id]
state_before: α : Type u_1
C : Set (Set α)
s t : Set α
I : Finset (Set α)
hC : IsSetSemiring C
hs : s ∈ C
hI : ↑I ⊆ C
h_dis : (↑I).PairwiseDisjoint id
u : Set α
hu : u ∈ ↑I
v : Set α
hv : v ∈ ↑(hC.diffFinset₀ hs hI)
x✝ : u ≠ v
⊢ Disjoint (id u) (id v)
state_after: α : Type u_1
C : Set (Set α)
s t : Set α
I : Finset (Set α)
hC : IsSetSemiring C
hs : s ∈ C
hI : ↑I ⊆ C
h_dis : (↑I).PairwiseDisjoint id
u : Set α
hu : u ∈ ↑I
v : Set α
hv : v ∈ ↑(hC.diffFinset₀ hs hI)
x✝ : u ≠ v
⊢ Disjoint u v

tactic: exact disjoint_of_subset (subset_sUnion_of_mem hu) (subset_sUnion_of_mem hv)
  (hC.disjoint_sUnion_diffFinset₀ hs hI)
state_before: α : Type u_1
C : Set (Set α)
s t : Set α
I : Finset (Set α)
hC : IsSetSemiring C
hs : s ∈ C
hI : ↑I ⊆ C
h_dis : (↑I).PairwiseDisjoint id
u : Set α
hu : u ∈ ↑I
v : Set α
hv : v ∈ ↑(hC.diffFinset₀ hs hI)
x✝ : u ≠ v
⊢ Disjoint u v
state_after: no goals
Theorem: isAlgebraic_nat
File: Mathlib/RingTheory/Algebraic.lean

tactic: rw [← map_natCast (_ : R →+* A) n]
state_before: R : Type u
S : Type u_1
A : Type v
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Ring A
inst✝⁴ : Algebra R A
inst✝³ : Algebra R S
inst✝² : Algebra S A
inst✝¹ : IsScalarTower R S A
inst✝ : Nontrivial R
n : ℕ
⊢ IsAlgebraic R ↑n
state_after: R : Type u
S : Type u_1
A : Type v
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Ring A
inst✝⁴ : Algebra R A
inst✝³ : Algebra R S
inst✝² : Algebra S A
inst✝¹ : IsScalarTower R S A
inst✝ : Nontrivial R
n : ℕ
⊢ IsAlgebraic R (?m.34915 ↑n)

R : Type u
S : Type u_1
A : Type v
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Ring A
inst✝⁴ : Algebra R A
inst✝³ : Algebra R S
inst✝² : Algebra S A
inst✝¹ : IsScalarTower R S A
inst✝ : Nontrivial R
n : ℕ
⊢ R →+* A

tactic: exact isAlgebraic_algebraMap (Nat.cast n)
state_before: R : Type u
S : Type u_1
A : Type v
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Ring A
inst✝⁴ : Algebra R A
inst✝³ : Algebra R S
inst✝² : Algebra S A
inst✝¹ : IsScalarTower R S A
inst✝ : Nontrivial R
n : ℕ
⊢ IsAlgebraic R (?m.34915 ↑n)

R : Type u
S : Type u_1
A : Type v
inst✝⁷ : CommRing R
inst✝⁶ : CommRing S
inst✝⁵ : Ring A
inst✝⁴ : Algebra R A
inst✝³ : Algebra R S
inst✝² : Algebra S A
inst✝¹ : IsScalarTower R S A
inst✝ : Nontrivial R
n : ℕ
⊢ R →+* A
state_after: no goals
Theorem: Polynomial.eq_zero_of_eq_zero
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: rw [← one_smul R p, ← h, zero_smul]
state_before: R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p✝ q : R[X]
h : 0 = 1
p : R[X]
⊢ p = 0
state_after: no goals
Theorem: PartENat.ofENat_le
File: Mathlib/Data/Nat/PartENat.lean

tactic: classical
rw [← toWithTop_le, toWithTop_ofENat, toWithTop_ofENat]
state_before: x y : ℕ∞
⊢ ↑x ≤ ↑y ↔ x ≤ y
state_after: no goals

tactic: rw [← toWithTop_le, toWithTop_ofENat, toWithTop_ofENat]
state_before: x y : ℕ∞
⊢ ↑x ≤ ↑y ↔ x ≤ y
state_after: no goals
Theorem: map_birkhoffAverage
File: Mathlib/Dynamics/BirkhoffSum/Average.lean

tactic: simp only [birkhoffAverage, map_inv_natCast_smul g' R S, map_birkhoffSum]
state_before: R : Type u_1
α : Type u_2
M : Type u_3
inst✝⁷ : DivisionSemiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
S : Type u_4
F : Type u_5
N : Type u_6
inst✝⁴ : DivisionSemiring S
inst✝³ : AddCommMonoid N
inst✝² : Module S N
inst✝¹ : FunLike F M N
inst✝ : AddMonoidHomClass F M N
g' : F
f : α → α
g : α → M
n : ℕ
x : α
⊢ g' (birkhoffAverage R f g n x) = birkhoffAverage S f (⇑g' ∘ g) n x
state_after: no goals
Theorem: Equiv.Perm.signAux_swap
File: Mathlib/GroupTheory/Perm/Sign.lean

tactic: intro
state_before: α : Type u
inst✝ : DecidableEq α
β : Type v
x y : Fin 0
⊢ x ≠ y → (swap x y).signAux = -1
state_after: α : Type u
inst✝ : DecidableEq α
β : Type v
x y : Fin 0
_hxy✝ : x ≠ y
⊢ (swap x y).signAux = -1

tactic: exact Fin.elim0 x
state_before: α : Type u
inst✝ : DecidableEq α
β : Type v
x y : Fin 0
_hxy✝ : x ≠ y
⊢ (swap x y).signAux = -1
state_after: no goals

tactic: dsimp [signAux, swap, swapCore]
state_before: α : Type u
inst✝ : DecidableEq α
β : Type v
x y : Fin 1
⊢ x ≠ y → (swap x y).signAux = -1
state_after: α : Type u
inst✝ : DecidableEq α
β : Type v
x y : Fin 1
⊢ ¬x = y →
    (∏ x_1 ∈ finPairsLT 1,
        if
            (if x_1.fst = x then y else if x_1.fst = y then x else x_1.fst) ≤
              if x_1.snd = x then y else if x_1.snd = y then x else x_1.snd then
          -1
        else 1) =
      -1

tactic: simp only [eq_iff_true_of_subsingleton, not_true, ite_true, le_refl, prod_const,
           IsEmpty.forall_iff]
state_before: α : Type u
inst✝ : DecidableEq α
β : Type v
x y : Fin 1
⊢ ¬x = y →
    (∏ x_1 ∈ finPairsLT 1,
        if
            (if x_1.fst = x then y else if x_1.fst = y then x else x_1.fst) ≤
              if x_1.snd = x then y else if x_1.snd = y then x else x_1.snd then
          -1
        else 1) =
      -1
state_after: no goals

tactic: have h2n : 2 ≤ n + 2 := by exact le_add_self
state_before: α : Type u
inst✝ : DecidableEq α
β : Type v
n : ℕ
x y : Fin (n + 2)
hxy : x ≠ y
⊢ (swap x y).signAux = -1
state_after: α : Type u
inst✝ : DecidableEq α
β : Type v
n : ℕ
x y : Fin (n + 2)
hxy : x ≠ y
h2n : 2 ≤ n + 2
⊢ (swap x y).signAux = -1

tactic: rw [← isConj_iff_eq, ← signAux_swap_zero_one h2n]
state_before: α : Type u
inst✝ : DecidableEq α
β : Type v
n : ℕ
x y : Fin (n + 2)
hxy : x ≠ y
h2n : 2 ≤ n + 2
⊢ (swap x y).signAux = -1
state_after: α : Type u
inst✝ : DecidableEq α
β : Type v
n : ℕ
x y : Fin (n + 2)
hxy : x ≠ y
h2n : 2 ≤ n + 2
⊢ IsConj (swap x y).signAux (swap ⟨0, ⋯⟩ ⟨1, ⋯⟩).signAux

tactic: exact (MonoidHom.mk' signAux signAux_mul).map_isConj
  (isConj_swap hxy (by exact of_decide_eq_true rfl))
state_before: α : Type u
inst✝ : DecidableEq α
β : Type v
n : ℕ
x y : Fin (n + 2)
hxy : x ≠ y
h2n : 2 ≤ n + 2
⊢ IsConj (swap x y).signAux (swap ⟨0, ⋯⟩ ⟨1, ⋯⟩).signAux
state_after: no goals

tactic: exact le_add_self
state_before: α : Type u
inst✝ : DecidableEq α
β : Type v
n : ℕ
x y : Fin (n + 2)
hxy : x ≠ y
⊢ 2 ≤ n + 2
state_after: no goals

tactic: exact of_decide_eq_true rfl
state_before: α : Type u
inst✝ : DecidableEq α
β : Type v
n : ℕ
x y : Fin (n + 2)
hxy : x ≠ y
h2n : 2 ≤ n + 2
⊢ ⟨0, ⋯⟩ ≠ ⟨1, ⋯⟩
state_after: no goals
Theorem: ProbabilityTheory.kernel.fst_apply'
File: Mathlib/Probability/Kernel/Composition.lean

tactic: rw [fst_apply, Measure.map_apply measurable_fst hs]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
δ : Type u_4
mδ : MeasurableSpace δ
γ : Type u_5
mγ : MeasurableSpace γ
f : β → γ
g : γ → α
κ : ↥(kernel α (β × γ))
a : α
s : Set β
hs : MeasurableSet s
⊢ ((fst κ) a) s = (κ a) {p | p.1 ∈ s}
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
δ : Type u_4
mδ : MeasurableSpace δ
γ : Type u_5
mγ : MeasurableSpace γ
f : β → γ
g : γ → α
κ : ↥(kernel α (β × γ))
a : α
s : Set β
hs : MeasurableSet s
⊢ (κ a) (Prod.fst ⁻¹' s) = (κ a) {p | p.1 ∈ s}

tactic: rfl
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
δ : Type u_4
mδ : MeasurableSpace δ
γ : Type u_5
mγ : MeasurableSpace γ
f : β → γ
g : γ → α
κ : ↥(kernel α (β × γ))
a : α
s : Set β
hs : MeasurableSet s
⊢ (κ a) (Prod.fst ⁻¹' s) = (κ a) {p | p.1 ∈ s}
state_after: no goals
Theorem: CommRingCat.pushoutCocone_inl
File: Mathlib/Algebra/Category/Ring/Constructions.lean

tactic: letI := f.toAlgebra
state_before: R A B : CommRingCat
f : R ⟶ A
g : R ⟶ B
⊢ A ⟶ (pushoutCocone f g).pt
state_after: R A B : CommRingCat
f : R ⟶ A
g : R ⟶ B
this : Algebra ↑R ↑A := RingHom.toAlgebra f
⊢ A ⟶ (pushoutCocone f g).pt

tactic: letI := g.toAlgebra
state_before: R A B : CommRingCat
f : R ⟶ A
g : R ⟶ B
this : Algebra ↑R ↑A := RingHom.toAlgebra f
⊢ A ⟶ (pushoutCocone f g).pt
state_after: R A B : CommRingCat
f : R ⟶ A
g : R ⟶ B
this✝ : Algebra ↑R ↑A := RingHom.toAlgebra f
this : Algebra ↑R ↑B := RingHom.toAlgebra g
⊢ A ⟶ (pushoutCocone f g).pt

tactic: exact Algebra.TensorProduct.includeLeftRingHom
state_before: R A B : CommRingCat
f : R ⟶ A
g : R ⟶ B
this✝ : Algebra ↑R ↑A := RingHom.toAlgebra f
this : Algebra ↑R ↑B := RingHom.toAlgebra g
⊢ A ⟶ (pushoutCocone f g).pt
state_after: no goals
Theorem: Matrix.charpoly_coeff_eq_prod_coeff_of_le
File: Mathlib/LinearAlgebra/Matrix/Charpoly/Coeff.lean

tactic: apply eq_of_sub_eq_zero
state_before: R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M : Matrix n n R
k : ℕ
h : Fintype.card n - 1 ≤ k
⊢ M.charpoly.coeff k = (∏ i : n, (X - C (M i i))).coeff k
state_after: case h
R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M : Matrix n n R
k : ℕ
h : Fintype.card n - 1 ≤ k
⊢ M.charpoly.coeff k - (∏ i : n, (X - C (M i i))).coeff k = 0

tactic: rw [← coeff_sub]
state_before: case h
R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M : Matrix n n R
k : ℕ
h : Fintype.card n - 1 ≤ k
⊢ M.charpoly.coeff k - (∏ i : n, (X - C (M i i))).coeff k = 0
state_after: case h
R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M : Matrix n n R
k : ℕ
h : Fintype.card n - 1 ≤ k
⊢ (M.charpoly - ∏ i : n, (X - C (M i i))).coeff k = 0

tactic: apply Polynomial.coeff_eq_zero_of_degree_lt
state_before: case h
R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M : Matrix n n R
k : ℕ
h : Fintype.card n - 1 ≤ k
⊢ (M.charpoly - ∏ i : n, (X - C (M i i))).coeff k = 0
state_after: case h.h
R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M : Matrix n n R
k : ℕ
h : Fintype.card n - 1 ≤ k
⊢ (M.charpoly - ∏ i : n, (X - C (M i i))).degree < ↑k

tactic: apply lt_of_lt_of_le (charpoly_sub_diagonal_degree_lt M) ?_
state_before: case h.h
R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M : Matrix n n R
k : ℕ
h : Fintype.card n - 1 ≤ k
⊢ (M.charpoly - ∏ i : n, (X - C (M i i))).degree < ↑k
state_after: R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M : Matrix n n R
k : ℕ
h : Fintype.card n - 1 ≤ k
⊢ ↑(Fintype.card n - 1) ≤ ↑k

tactic: rw [Nat.cast_le]
state_before: R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M : Matrix n n R
k : ℕ
h : Fintype.card n - 1 ≤ k
⊢ ↑(Fintype.card n - 1) ≤ ↑k
state_after: R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M : Matrix n n R
k : ℕ
h : Fintype.card n - 1 ≤ k
⊢ Fintype.card n - 1 ≤ k

tactic: apply h
state_before: R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M : Matrix n n R
k : ℕ
h : Fintype.card n - 1 ≤ k
⊢ Fintype.card n - 1 ≤ k
state_after: no goals
Theorem: Multiset.countP_cons
File: Mathlib/Data/Multiset/Basic.lean

tactic: simp [List.countP_cons]
state_before: α : Type u_1
β : Type v
γ : Type u_2
p : α → Prop
inst✝ : DecidablePred p
b : α
s : Multiset α
⊢ ∀ (a : List α), countP p (b ::ₘ Quot.mk Setoid.r a) = countP p (Quot.mk Setoid.r a) + if p b then 1 else 0
state_after: no goals
Theorem: FormalMultilinearSeries.changeOriginSeries_finite_of_finite
File: Mathlib/Analysis/Analytic/CPolynomial.lean

tactic: intro m hm
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p✝¹ pf pg : FormalMultilinearSeries 𝕜 E F
x✝ : E
r✝ r' : ℝ≥0∞
n✝ m : ℕ
p✝ : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
n : ℕ
hn : ∀ (m : ℕ), n ≤ m → p m = 0
k : ℕ
⊢ ∀ {m : ℕ}, n ≤ k + m → p.changeOriginSeries k m = 0
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p✝¹ pf pg : FormalMultilinearSeries 𝕜 E F
x✝ : E
r✝ r' : ℝ≥0∞
n✝ m✝ : ℕ
p✝ : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
n : ℕ
hn : ∀ (m : ℕ), n ≤ m → p m = 0
k m : ℕ
hm : n ≤ k + m
⊢ p.changeOriginSeries k m = 0

tactic: rw [changeOriginSeries]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p✝¹ pf pg : FormalMultilinearSeries 𝕜 E F
x✝ : E
r✝ r' : ℝ≥0∞
n✝ m✝ : ℕ
p✝ : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
n : ℕ
hn : ∀ (m : ℕ), n ≤ m → p m = 0
k m : ℕ
hm : n ≤ k + m
⊢ p.changeOriginSeries k m = 0
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p✝¹ pf pg : FormalMultilinearSeries 𝕜 E F
x✝ : E
r✝ r' : ℝ≥0∞
n✝ m✝ : ℕ
p✝ : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
n : ℕ
hn : ∀ (m : ℕ), n ≤ m → p m = 0
k m : ℕ
hm : n ≤ k + m
⊢ ∑ s : { s // s.card = m }, p.changeOriginSeriesTerm k m ↑s ⋯ = 0

tactic: exact Finset.sum_eq_zero (fun _ _ => p.changeOriginSeriesTerm_bound hn _ _ _ hm)
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p✝¹ pf pg : FormalMultilinearSeries 𝕜 E F
x✝ : E
r✝ r' : ℝ≥0∞
n✝ m✝ : ℕ
p✝ : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
p : FormalMultilinearSeries 𝕜 E F
n : ℕ
hn : ∀ (m : ℕ), n ≤ m → p m = 0
k m : ℕ
hm : n ≤ k + m
⊢ ∑ s : { s // s.card = m }, p.changeOriginSeriesTerm k m ↑s ⋯ = 0
state_after: no goals
Theorem: Ordinal.nfpFamily_eq_self
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

tactic: rw [List.foldr_fixed' h l]
state_before: ι : Type u
f✝ : ι → Ordinal.{max u v} → Ordinal.{max u v}
f : ι → Ordinal.{max u u_1} → Ordinal.{max u u_1}
a : Ordinal.{max u u_1}
h : ∀ (i : ι), f i a = a
l : List ι
⊢ List.foldr f a l ≤ a
state_after: no goals
Theorem: ContinuousLinearEquiv.comp_differentiable_iff
File: Mathlib/Analysis/Calculus/FDeriv/Equiv.lean

tactic: rw [← differentiableOn_univ, ← differentiableOn_univ]
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
iso : E ≃L[𝕜] F
f : G → E
⊢ Differentiable 𝕜 (⇑iso ∘ f) ↔ Differentiable 𝕜 f
state_after: 𝕜 : 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
iso : E ≃L[𝕜] F
f : G → E
⊢ DifferentiableOn 𝕜 (⇑iso ∘ f) univ ↔ DifferentiableOn 𝕜 f univ

tactic: exact iso.comp_differentiableOn_iff
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
iso : E ≃L[𝕜] F
f : G → E
⊢ DifferentiableOn 𝕜 (⇑iso ∘ f) univ ↔ DifferentiableOn 𝕜 f univ
state_after: no goals
Theorem: ModuleCat.Derivation.d_mul
File: Mathlib/Algebra/Category/ModuleCat/Differentials/Basic.lean

tactic: simp [d]
state_before: A B : CommRingCat
M : ModuleCat ↑B
f : A ⟶ B
D : M.Derivation f
b b' : ↑B
⊢ D.d (b * b') = b • D.d b' + b' • D.d b
state_after: no goals
Theorem: ContinuousLinearEquiv.dimH_univ
File: Mathlib/Topology/MetricSpace/HausdorffDimension.lean

tactic: rw [← e.dimH_preimage, preimage_univ]
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁶ : EMetricSpace X
inst✝⁵ : EMetricSpace Y
C K r : ℝ≥0
f : X → Y
s t : Set X
𝕜 : Type u_4
E : Type u_5
F : Type u_6
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
e : E ≃L[𝕜] F
⊢ dimH univ = dimH univ
state_after: no goals
Theorem: mul_inv_le_mul_inv_iff'
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [mul_comm c, mul_inv_le_inv_mul_iff, mul_comm]
state_before: α : Type u
inst✝² : CommGroup α
inst✝¹ : LE α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c d : α
⊢ a * b⁻¹ ≤ c * d⁻¹ ↔ a * d ≤ c * b
state_after: no goals