1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Continuous.connectedComponentsLift_continuous
File: Mathlib/Topology/Connected/TotallyDisconnected.lean

tactic: convert h.image_eq_of_connectedComponent_eq
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝² : TopologicalSpace α
s t u v : Set α
inst✝¹ : TopologicalSpace β
inst✝ : TotallyDisconnectedSpace β
f : α → β
h : Continuous f
⊢ ∀ (a b : α), Setoid.r a b → f a = f b
state_after: no goals
Theorem: Filter.isBounded_top
File: Mathlib/Order/LiminfLimsup.lean

tactic: simp [IsBounded, eq_univ_iff_forall]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
r : α → α → Prop
f g : Filter α
⊢ IsBounded r ⊤ ↔ ∃ t, ∀ (x : α), r x t
state_after: no goals
Theorem: MeasureTheory.integrableOn_finite_biUnion
File: Mathlib/MeasureTheory/Integral/IntegrableOn.lean

tactic: refine hs.induction_on ?_ ?_
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f g : α → E
s✝ t✝ : Set α
μ ν : Measure α
s : Set β
hs : s.Finite
t : β → Set α
⊢ IntegrableOn f (⋃ i ∈ s, t i) μ ↔ ∀ i ∈ s, IntegrableOn f (t i) μ
state_after: case refine_1
α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f g : α → E
s✝ t✝ : Set α
μ ν : Measure α
s : Set β
hs : s.Finite
t : β → Set α
⊢ IntegrableOn f (⋃ i ∈ ∅, t i) μ ↔ ∀ i ∈ ∅, IntegrableOn f (t i) μ

case refine_2
α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f g : α → E
s✝ t✝ : Set α
μ ν : Measure α
s : Set β
hs : s.Finite
t : β → Set α
⊢ ∀ {a : β} {s : Set β},
    a ∉ s →
      s.Finite →
        (IntegrableOn f (⋃ i ∈ s, t i) μ ↔ ∀ i ∈ s, IntegrableOn f (t i) μ) →
          (IntegrableOn f (⋃ i ∈ insert a s, t i) μ ↔ ∀ i ∈ insert a s, IntegrableOn f (t i) μ)

tactic: simp
state_before: case refine_1
α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f g : α → E
s✝ t✝ : Set α
μ ν : Measure α
s : Set β
hs : s.Finite
t : β → Set α
⊢ IntegrableOn f (⋃ i ∈ ∅, t i) μ ↔ ∀ i ∈ ∅, IntegrableOn f (t i) μ
state_after: no goals

tactic: intro a s _ _ hf
state_before: case refine_2
α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f g : α → E
s✝ t✝ : Set α
μ ν : Measure α
s : Set β
hs : s.Finite
t : β → Set α
⊢ ∀ {a : β} {s : Set β},
    a ∉ s →
      s.Finite →
        (IntegrableOn f (⋃ i ∈ s, t i) μ ↔ ∀ i ∈ s, IntegrableOn f (t i) μ) →
          (IntegrableOn f (⋃ i ∈ insert a s, t i) μ ↔ ∀ i ∈ insert a s, IntegrableOn f (t i) μ)
state_after: case refine_2
α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f g : α → E
s✝¹ t✝ : Set α
μ ν : Measure α
s✝ : Set β
hs : s✝.Finite
t : β → Set α
a : β
s : Set β
a✝¹ : a ∉ s
a✝ : s.Finite
hf : IntegrableOn f (⋃ i ∈ s, t i) μ ↔ ∀ i ∈ s, IntegrableOn f (t i) μ
⊢ IntegrableOn f (⋃ i ∈ insert a s, t i) μ ↔ ∀ i ∈ insert a s, IntegrableOn f (t i) μ

tactic: simp [hf, or_imp, forall_and]
state_before: case refine_2
α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f g : α → E
s✝¹ t✝ : Set α
μ ν : Measure α
s✝ : Set β
hs : s✝.Finite
t : β → Set α
a : β
s : Set β
a✝¹ : a ∉ s
a✝ : s.Finite
hf : IntegrableOn f (⋃ i ∈ s, t i) μ ↔ ∀ i ∈ s, IntegrableOn f (t i) μ
⊢ IntegrableOn f (⋃ i ∈ insert a s, t i) μ ↔ ∀ i ∈ insert a s, IntegrableOn f (t i) μ
state_after: no goals
Theorem: Set.ncard_add_ncard_compl
File: Mathlib/Data/Set/Card.lean

tactic: rw [← ncard_univ, ← ncard_union_eq (@disjoint_compl_right _ _ s) hs hsc, union_compl_self]
state_before: α : Type u_1
β : Type u_2
s✝ t : Set α
f : α → β
s : Set α
hs : autoParam s.Finite _auto✝
hsc : autoParam sᶜ.Finite _auto✝
⊢ s.ncard + sᶜ.ncard = Nat.card α
state_after: no goals
Theorem: Finset.not_subset
File: Mathlib/Data/Finset/Basic.lean

tactic: simp only [← coe_subset, Set.not_subset, mem_coe]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s t : Finset α
⊢ ¬s ⊆ t ↔ ∃ x ∈ s, x ∉ t
state_after: no goals
Theorem: RCLike.inv_pos
File: Mathlib/Analysis/RCLike/Basic.lean

tactic: refine ⟨fun h => ?_, fun h => RCLike.inv_pos_of_pos h⟩
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z w : K
⊢ 0 < z⁻¹ ↔ 0 < z
state_after: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z w : K
h : 0 < z⁻¹
⊢ 0 < z

tactic: rw [← inv_inv z]
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z w : K
h : 0 < z⁻¹
⊢ 0 < z
state_after: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z w : K
h : 0 < z⁻¹
⊢ 0 < z⁻¹⁻¹

tactic: exact RCLike.inv_pos_of_pos h
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z w : K
h : 0 < z⁻¹
⊢ 0 < z⁻¹⁻¹
state_after: no goals
Theorem: MeasureTheory.IsSetSemiring.diffFinset₀_subset
File: Mathlib/MeasureTheory/SetSemiring.lean

tactic: classical
simp only [diffFinset₀, coe_sdiff, coe_singleton, diff_singleton_subset_iff]
exact (hC.exists_disjoint_finset_diff_eq hs hI).choose_spec.1.trans (Set.subset_insert _ _)
state_before: α : Type u_1
C : Set (Set α)
s t : Set α
I : Finset (Set α)
hC : IsSetSemiring C
hs : s ∈ C
hI : ↑I ⊆ C
⊢ ↑(hC.diffFinset₀ hs hI) ⊆ C
state_after: no goals

tactic: simp only [diffFinset₀, coe_sdiff, coe_singleton, diff_singleton_subset_iff]
state_before: α : Type u_1
C : Set (Set α)
s t : Set α
I : Finset (Set α)
hC : IsSetSemiring C
hs : s ∈ C
hI : ↑I ⊆ C
⊢ ↑(hC.diffFinset₀ hs hI) ⊆ C
state_after: α : Type u_1
C : Set (Set α)
s t : Set α
I : Finset (Set α)
hC : IsSetSemiring C
hs : s ∈ C
hI : ↑I ⊆ C
⊢ ↑⋯.choose ⊆ insert ∅ C

tactic: exact (hC.exists_disjoint_finset_diff_eq hs hI).choose_spec.1.trans (Set.subset_insert _ _)
state_before: α : Type u_1
C : Set (Set α)
s t : Set α
I : Finset (Set α)
hC : IsSetSemiring C
hs : s ∈ C
hI : ↑I ⊆ C
⊢ ↑⋯.choose ⊆ insert ∅ C
state_after: no goals
Theorem: Unitization.uniformity_eq_aux
File: Mathlib/Analysis/NormedSpace/Unitization.lean

tactic: have key : UniformInducing (addEquiv 𝕜 A) :=
  antilipschitzWith_addEquiv.uniformInducing lipschitzWith_addEquiv.uniformContinuous
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NonUnitalNormedRing A
inst✝³ : NormedSpace 𝕜 A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : SMulCommClass 𝕜 A A
inst✝ : RegularNormedAlgebra 𝕜 A
⊢ 𝓤 (Unitization 𝕜 A) = 𝓤 (Unitization 𝕜 A)
state_after: 𝕜 : Type u_1
A : Type u_2
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NonUnitalNormedRing A
inst✝³ : NormedSpace 𝕜 A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : SMulCommClass 𝕜 A A
inst✝ : RegularNormedAlgebra 𝕜 A
key : UniformInducing ⇑(addEquiv 𝕜 A)
⊢ 𝓤 (Unitization 𝕜 A) = 𝓤 (Unitization 𝕜 A)

tactic: rw [← key.comap_uniformity]
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NonUnitalNormedRing A
inst✝³ : NormedSpace 𝕜 A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : SMulCommClass 𝕜 A A
inst✝ : RegularNormedAlgebra 𝕜 A
key : UniformInducing ⇑(addEquiv 𝕜 A)
⊢ 𝓤 (Unitization 𝕜 A) = 𝓤 (Unitization 𝕜 A)
state_after: 𝕜 : Type u_1
A : Type u_2
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NonUnitalNormedRing A
inst✝³ : NormedSpace 𝕜 A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : SMulCommClass 𝕜 A A
inst✝ : RegularNormedAlgebra 𝕜 A
key : UniformInducing ⇑(addEquiv 𝕜 A)
⊢ 𝓤 (Unitization 𝕜 A) = comap (fun x => ((addEquiv 𝕜 A) x.1, (addEquiv 𝕜 A) x.2)) (𝓤 (𝕜 × A))

tactic: rfl
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NonUnitalNormedRing A
inst✝³ : NormedSpace 𝕜 A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : SMulCommClass 𝕜 A A
inst✝ : RegularNormedAlgebra 𝕜 A
key : UniformInducing ⇑(addEquiv 𝕜 A)
⊢ 𝓤 (Unitization 𝕜 A) = comap (fun x => ((addEquiv 𝕜 A) x.1, (addEquiv 𝕜 A) x.2)) (𝓤 (𝕜 × A))
state_after: no goals
Theorem: MonoidHom.rangeRestrict_injective_iff
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: convert Set.injective_codRestrict _
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁵ : Group G
inst✝⁴ : Group G'
inst✝³ : Group G''
A : Type u_4
inst✝² : AddGroup A
N : Type u_5
P : Type u_6
inst✝¹ : Group N
inst✝ : Group P
K : Subgroup G
f : G →* N
⊢ Injective ⇑f.rangeRestrict ↔ Injective ⇑f
state_after: no goals
Theorem: sup_eq_right
File: Mathlib/Order/Lattice.lean

tactic: simp [le_rfl]
state_before: α : Type u
β : Type v
inst✝ : SemilatticeSup α
a b c d : α
⊢ a ⊔ b ≤ b ∧ b ≤ a ⊔ b ↔ a ≤ b
state_after: no goals
Theorem: Orientation.map_refl
File: Mathlib/LinearAlgebra/Orientation.lean

tactic: rw [Orientation.map, AlternatingMap.domLCongr_refl, Module.Ray.map_refl]
state_before: R : Type u_1
inst✝⁴ : StrictOrderedCommSemiring R
M : Type u_2
inst✝³ : AddCommMonoid M
inst✝² : Module R M
N : Type u_3
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
ι : Type u_4
ι' : Type u_5
⊢ map ι (LinearEquiv.refl R M) = Equiv.refl (Orientation R M ι)
state_after: no goals
Theorem: List.map_append_bind_perm
File: Mathlib/Data/List/Perm.lean

tactic: simpa [← map_eq_bind] using bind_append_perm l (fun x => [f x]) g
state_before: α : Type u_1
β : Type u_2
l✝ l₁ l₂ : List α
a : α
l : List α
f : α → β
g : α → List β
⊢ map f l ++ l.bind g ~ l.bind fun x => f x :: g x
state_after: no goals
Theorem: Cardinal.pow_le
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: rw [Nat.cast_zero, power_zero]
state_before: κ μ : Cardinal.{u}
H1✝ : ℵ₀ ≤ κ
H2 : μ < ℵ₀
n : ℕ
H3 : μ = ↑n
α : Type u
H1 : ℵ₀ ≤ ⟦α⟧
⊢ ⟦α⟧ ^ ↑Nat.zero < ℵ₀
state_after: κ μ : Cardinal.{u}
H1✝ : ℵ₀ ≤ κ
H2 : μ < ℵ₀
n : ℕ
H3 : μ = ↑n
α : Type u
H1 : ℵ₀ ≤ ⟦α⟧
⊢ 1 < ℵ₀

tactic: exact one_lt_aleph0
state_before: κ μ : Cardinal.{u}
H1✝ : ℵ₀ ≤ κ
H2 : μ < ℵ₀
n : ℕ
H3 : μ = ↑n
α : Type u
H1 : ℵ₀ ≤ ⟦α⟧
⊢ 1 < ℵ₀
state_after: no goals

tactic: rw [Nat.cast_succ, power_add, power_one]
state_before: κ μ : Cardinal.{u}
H1✝ : ℵ₀ ≤ κ
H2 : μ < ℵ₀
n✝ : ℕ
H3 : μ = ↑n✝
α : Type u
H1 : ℵ₀ ≤ ⟦α⟧
n : ℕ
ih : ⟦α⟧ ^ ↑n ≤ ⟦α⟧
⊢ ⟦α⟧ ^ ↑n.succ ≤ ⟦α⟧ * ⟦α⟧
state_after: κ μ : Cardinal.{u}
H1✝ : ℵ₀ ≤ κ
H2 : μ < ℵ₀
n✝ : ℕ
H3 : μ = ↑n✝
α : Type u
H1 : ℵ₀ ≤ ⟦α⟧
n : ℕ
ih : ⟦α⟧ ^ ↑n ≤ ⟦α⟧
⊢ ⟦α⟧ ^ ↑n * ⟦α⟧ ≤ ⟦α⟧ * ⟦α⟧

tactic: exact mul_le_mul_right' ih _
state_before: κ μ : Cardinal.{u}
H1✝ : ℵ₀ ≤ κ
H2 : μ < ℵ₀
n✝ : ℕ
H3 : μ = ↑n✝
α : Type u
H1 : ℵ₀ ≤ ⟦α⟧
n : ℕ
ih : ⟦α⟧ ^ ↑n ≤ ⟦α⟧
⊢ ⟦α⟧ ^ ↑n * ⟦α⟧ ≤ ⟦α⟧ * ⟦α⟧
state_after: no goals
Theorem: Finset.Ioc_union_Ioc_eq_Ioc
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: rw [← coe_inj, coe_union, coe_Ioc, coe_Ioc, coe_Ioc, Set.Ioc_union_Ioc_eq_Ioc h₁ h₂]
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ a b c : α
h₁ : a ≤ b
h₂ : b ≤ c
⊢ Ioc a b ∪ Ioc b c = Ioc a c
state_after: no goals
Theorem: tendsto_atTop_ciInf
File: Mathlib/Topology/Order/MonotoneConvergence.lean

tactic: convert tendsto_atBot_ciSup h_anti.dual hbdd.dual using 1
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
inst✝² : TopologicalSpace α
inst✝¹ : ConditionallyCompleteLattice α
inst✝ : InfConvergenceClass α
f : ι → α
a : α
h_anti : Antitone f
hbdd : BddBelow (range f)
⊢ Tendsto f atTop (𝓝 (⨅ i, f i))
state_after: no goals
Theorem: AlgebraicGeometry.LocallyRingedSpace.IsOpenImmersion.isoRestrict_inv_ofRestrict
File: Mathlib/Geometry/RingedSpace/OpenImmersion.lean

tactic: simp only [← isoRestrict_hom_ofRestrict f, Iso.inv_hom_id_assoc]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : LocallyRingedSpace
f : X ⟶ Y
H : IsOpenImmersion f
⊢ (isoRestrict f).inv ≫ f = Y.ofRestrict ⋯
state_after: no goals
Theorem: Equiv.graph_inv
File: Mathlib/Data/Rel.lean

tactic: ext x y
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α ≃ β
⊢ Function.graph ⇑f.symm = (Function.graph ⇑f).inv
state_after: case a.h.a
α : Type u_1
β : Type u_2
γ : Type u_3
f : α ≃ β
x : β
y : α
⊢ Function.graph (⇑f.symm) x y ↔ (Function.graph ⇑f).inv x y

tactic: aesop (add norm Rel.inv_def)
state_before: case a.h.a
α : Type u_1
β : Type u_2
γ : Type u_3
f : α ≃ β
x : β
y : α
⊢ Function.graph (⇑f.symm) x y ↔ (Function.graph ⇑f).inv x y
state_after: no goals
Theorem: Multiset.count_dedup
File: Mathlib/Data/Multiset/Dedup.lean

tactic: simp only [quot_mk_to_coe'', coe_dedup, mem_coe, List.mem_dedup, coe_nodup, coe_count]
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
m : Multiset α
a : α
x✝ : List α
⊢ count a (dedup (Quot.mk Setoid.r x✝)) = if a ∈ Quot.mk Setoid.r x✝ then 1 else 0
state_after: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
m : Multiset α
a : α
x✝ : List α
⊢ List.count a x✝.dedup = if a ∈ x✝ then 1 else 0

tactic: apply List.count_dedup _ _
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
m : Multiset α
a : α
x✝ : List α
⊢ List.count a x✝.dedup = if a ∈ x✝ then 1 else 0
state_after: no goals
Theorem: Polynomial.degree_pow'
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: rw [pow_zero, ← C_1] at *
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
h : p.leadingCoeff ^ 0 ≠ 0
⊢ (p ^ 0).degree = 0 • p.degree
state_after: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
h : 1 ≠ 0
⊢ (C 1).degree = 0 • p.degree

tactic: rw [degree_C h, zero_nsmul]
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
h : 1 ≠ 0
⊢ (C 1).degree = 0 • p.degree
state_after: no goals

tactic: have h₁ : leadingCoeff p ^ n ≠ 0 := fun h₁ => h <| by rw [pow_succ, h₁, zero_mul]
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
n : ℕ
h : p.leadingCoeff ^ (n + 1) ≠ 0
⊢ (p ^ (n + 1)).degree = (n + 1) • p.degree
state_after: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
n : ℕ
h : p.leadingCoeff ^ (n + 1) ≠ 0
h₁ : p.leadingCoeff ^ n ≠ 0
⊢ (p ^ (n + 1)).degree = (n + 1) • p.degree

tactic: have h₂ : leadingCoeff (p ^ n) * leadingCoeff p ≠ 0 := by
  rwa [pow_succ, ← leadingCoeff_pow' h₁] at h
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
n : ℕ
h : p.leadingCoeff ^ (n + 1) ≠ 0
h₁ : p.leadingCoeff ^ n ≠ 0
⊢ (p ^ (n + 1)).degree = (n + 1) • p.degree
state_after: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
n : ℕ
h : p.leadingCoeff ^ (n + 1) ≠ 0
h₁ : p.leadingCoeff ^ n ≠ 0
h₂ : (p ^ n).leadingCoeff * p.leadingCoeff ≠ 0
⊢ (p ^ (n + 1)).degree = (n + 1) • p.degree

tactic: rw [pow_succ, degree_mul' h₂, succ_nsmul, degree_pow' h₁]
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
n : ℕ
h : p.leadingCoeff ^ (n + 1) ≠ 0
h₁ : p.leadingCoeff ^ n ≠ 0
h₂ : (p ^ n).leadingCoeff * p.leadingCoeff ≠ 0
⊢ (p ^ (n + 1)).degree = (n + 1) • p.degree
state_after: no goals

tactic: rw [pow_succ, h₁, zero_mul]
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
n : ℕ
h : p.leadingCoeff ^ (n + 1) ≠ 0
h₁ : p.leadingCoeff ^ n = 0
⊢ p.leadingCoeff ^ (n + 1) = 0
state_after: no goals

tactic: rwa [pow_succ, ← leadingCoeff_pow' h₁] at h
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
n : ℕ
h : p.leadingCoeff ^ (n + 1) ≠ 0
h₁ : p.leadingCoeff ^ n ≠ 0
⊢ (p ^ n).leadingCoeff * p.leadingCoeff ≠ 0
state_after: no goals
Theorem: InnerProductGeometry.IsConformalMap.preserves_angle
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Conformal.lean

tactic: obtain ⟨c, hc, li, rfl⟩ := h
state_before: E : Type u_1
F : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ E
inst✝ : InnerProductSpace ℝ F
f' : E →L[ℝ] F
h : IsConformalMap f'
u v : E
⊢ angle (f' u) (f' v) = angle u v
state_after: case intro.intro.intro
E : Type u_1
F : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ E
inst✝ : InnerProductSpace ℝ F
u v : E
c : ℝ
hc : c ≠ 0
li : E →ₗᵢ[ℝ] F
⊢ angle ((c • li.toContinuousLinearMap) u) ((c • li.toContinuousLinearMap) v) = angle u v

tactic: exact (angle_smul_smul hc _ _).trans (li.angle_map _ _)
state_before: case intro.intro.intro
E : Type u_1
F : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace ℝ E
inst✝ : InnerProductSpace ℝ F
u v : E
c : ℝ
hc : c ≠ 0
li : E →ₗᵢ[ℝ] F
⊢ angle ((c • li.toContinuousLinearMap) u) ((c • li.toContinuousLinearMap) v) = angle u v
state_after: no goals
Theorem: AffineIndependent.injective
File: Mathlib/LinearAlgebra/AffineSpace/Independent.lean

tactic: intro i j hij
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
ha : AffineIndependent k p
⊢ Injective p
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
ha : AffineIndependent k p
i j : ι
hij : p i = p j
⊢ i = j

tactic: rw [affineIndependent_iff_linearIndependent_vsub _ _ j] at ha
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
ha : AffineIndependent k p
i j : ι
hij : p i = p j
⊢ i = j
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
i j : ι
ha : LinearIndependent k fun i => p ↑i -ᵥ p j
hij : p i = p j
⊢ i = j

tactic: by_contra hij'
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
i j : ι
ha : LinearIndependent k fun i => p ↑i -ᵥ p j
hij : p i = p j
⊢ i = j
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
i j : ι
ha : LinearIndependent k fun i => p ↑i -ᵥ p j
hij : p i = p j
hij' : ¬i = j
⊢ False

tactic: refine ha.ne_zero ⟨i, hij'⟩ (vsub_eq_zero_iff_eq.mpr ?_)
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
i j : ι
ha : LinearIndependent k fun i => p ↑i -ᵥ p j
hij : p i = p j
hij' : ¬i = j
⊢ False
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
i j : ι
ha : LinearIndependent k fun i => p ↑i -ᵥ p j
hij : p i = p j
hij' : ¬i = j
⊢ p ↑⟨i, hij'⟩ = p j

tactic: simp_all only [ne_eq]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
ι : Type u_4
inst✝ : Nontrivial k
p : ι → P
i j : ι
ha : LinearIndependent k fun i => p ↑i -ᵥ p j
hij : p i = p j
hij' : ¬i = j
⊢ p ↑⟨i, hij'⟩ = p j
state_after: no goals
Theorem: Finsupp.mem_toMultiset
File: Mathlib/Data/Finsupp/Multiset.lean

tactic: classical
rw [← Multiset.count_ne_zero, Finsupp.count_toMultiset, Finsupp.mem_support_iff]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
f : α →₀ ℕ
i : α
⊢ i ∈ toMultiset f ↔ i ∈ f.support
state_after: no goals

tactic: rw [← Multiset.count_ne_zero, Finsupp.count_toMultiset, Finsupp.mem_support_iff]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
f : α →₀ ℕ
i : α
⊢ i ∈ toMultiset f ↔ i ∈ f.support
state_after: no goals
Theorem: Configuration.ProjectivePlane.lineCount_eq_pointCount
File: Mathlib/Combinatorics/Configuration.lean

tactic: cases nonempty_fintype P
state_before: P : Type u_1
L : Type u_2
inst✝³ : Membership P L
inst✝² : ProjectivePlane P L
inst✝¹ : Finite P
inst✝ : Finite L
p : P
l : L
q : P
hq : q ∉ l
⊢ lineCount L q = pointCount P l
state_after: case intro
P : Type u_1
L : Type u_2
inst✝³ : Membership P L
inst✝² : ProjectivePlane P L
inst✝¹ : Finite P
inst✝ : Finite L
p : P
l : L
q : P
hq : q ∉ l
val✝ : Fintype P
⊢ lineCount L q = pointCount P l

tactic: cases nonempty_fintype L
state_before: case intro
P : Type u_1
L : Type u_2
inst✝³ : Membership P L
inst✝² : ProjectivePlane P L
inst✝¹ : Finite P
inst✝ : Finite L
p : P
l : L
q : P
hq : q ∉ l
val✝ : Fintype P
⊢ lineCount L q = pointCount P l
state_after: case intro.intro
P : Type u_1
L : Type u_2
inst✝³ : Membership P L
inst✝² : ProjectivePlane P L
inst✝¹ : Finite P
inst✝ : Finite L
p : P
l : L
q : P
hq : q ∉ l
val✝¹ : Fintype P
val✝ : Fintype L
⊢ lineCount L q = pointCount P l

tactic: exact HasLines.lineCount_eq_pointCount (card_points_eq_card_lines P L) hq
state_before: case intro.intro
P : Type u_1
L : Type u_2
inst✝³ : Membership P L
inst✝² : ProjectivePlane P L
inst✝¹ : Finite P
inst✝ : Finite L
p : P
l : L
q : P
hq : q ∉ l
val✝¹ : Fintype P
val✝ : Fintype L
⊢ lineCount L q = pointCount P l
state_after: no goals
Theorem: Int.gcd_dvd_iff
File: Mathlib/Data/Int/GCD.lean

tactic: constructor
state_before: a b : ℤ
n : ℕ
⊢ a.gcd b ∣ n ↔ ∃ x y, ↑n = a * x + b * y
state_after: case mp
a b : ℤ
n : ℕ
⊢ a.gcd b ∣ n → ∃ x y, ↑n = a * x + b * y

case mpr
a b : ℤ
n : ℕ
⊢ (∃ x y, ↑n = a * x + b * y) → a.gcd b ∣ n

tactic: intro h
state_before: case mp
a b : ℤ
n : ℕ
⊢ a.gcd b ∣ n → ∃ x y, ↑n = a * x + b * y
state_after: case mp
a b : ℤ
n : ℕ
h : a.gcd b ∣ n
⊢ ∃ x y, ↑n = a * x + b * y

tactic: rw [← Nat.mul_div_cancel' h, Int.ofNat_mul, gcd_eq_gcd_ab, Int.add_mul, mul_assoc, mul_assoc]
state_before: case mp
a b : ℤ
n : ℕ
h : a.gcd b ∣ n
⊢ ∃ x y, ↑n = a * x + b * y
state_after: case mp
a b : ℤ
n : ℕ
h : a.gcd b ∣ n
⊢ ∃ x y, a * (a.gcdA b * ↑(n / a.gcd b)) + b * (a.gcdB b * ↑(n / a.gcd b)) = a * x + b * y

tactic: exact ⟨_, _, rfl⟩
state_before: case mp
a b : ℤ
n : ℕ
h : a.gcd b ∣ n
⊢ ∃ x y, a * (a.gcdA b * ↑(n / a.gcd b)) + b * (a.gcdB b * ↑(n / a.gcd b)) = a * x + b * y
state_after: no goals

tactic: rintro ⟨x, y, h⟩
state_before: case mpr
a b : ℤ
n : ℕ
⊢ (∃ x y, ↑n = a * x + b * y) → a.gcd b ∣ n
state_after: case mpr.intro.intro
a b : ℤ
n : ℕ
x y : ℤ
h : ↑n = a * x + b * y
⊢ a.gcd b ∣ n

tactic: rw [← Int.natCast_dvd_natCast, h]
state_before: case mpr.intro.intro
a b : ℤ
n : ℕ
x y : ℤ
h : ↑n = a * x + b * y
⊢ a.gcd b ∣ n
state_after: case mpr.intro.intro
a b : ℤ
n : ℕ
x y : ℤ
h : ↑n = a * x + b * y
⊢ ↑(a.gcd b) ∣ a * x + b * y

tactic: exact Int.dvd_add (dvd_mul_of_dvd_left gcd_dvd_left _) (dvd_mul_of_dvd_left gcd_dvd_right y)
state_before: case mpr.intro.intro
a b : ℤ
n : ℕ
x y : ℤ
h : ↑n = a * x + b * y
⊢ ↑(a.gcd b) ∣ a * x + b * y
state_after: no goals
Theorem: Subalgebra.bot_eq_top_iff_rank_eq_one
File: Mathlib/LinearAlgebra/Dimension/FreeAndStrongRankCondition.lean

tactic: haveI := Module.Free.of_equiv (Subalgebra.topEquiv (R := F) (A := E)).toLinearEquiv.symm
state_before: F : Type u_1
E : Type u_2
inst✝⁵ : CommRing F
inst✝⁴ : StrongRankCondition F
inst✝³ : Ring E
inst✝² : Algebra F E
S : Subalgebra F E
inst✝¹ : Nontrivial E
inst✝ : Module.Free F E
⊢ ⊥ = ⊤ ↔ Module.rank F E = 1
state_after: F : Type u_1
E : Type u_2
inst✝⁵ : CommRing F
inst✝⁴ : StrongRankCondition F
inst✝³ : Ring E
inst✝² : Algebra F E
S : Subalgebra F E
inst✝¹ : Nontrivial E
inst✝ : Module.Free F E
this : Module.Free F ↥⊤
⊢ ⊥ = ⊤ ↔ Module.rank F E = 1

tactic: rw [← rank_top, Subalgebra.rank_eq_one_iff, eq_comm]
state_before: F : Type u_1
E : Type u_2
inst✝⁵ : CommRing F
inst✝⁴ : StrongRankCondition F
inst✝³ : Ring E
inst✝² : Algebra F E
S : Subalgebra F E
inst✝¹ : Nontrivial E
inst✝ : Module.Free F E
this : Module.Free F ↥⊤
⊢ ⊥ = ⊤ ↔ Module.rank F E = 1
state_after: no goals