tasksource/leandojo huggingface dataset:
Theorem: ContinuousLinearMap.norm_id
File: Mathlib/Analysis/NormedSpace/OperatorNorm.lean

tactic: refine' norm_id_of_nontrivial_seminorm _
state_before: 𝕜 : Type u_2
𝕜₂ : Type ?u.2599087
𝕜₃ : Type ?u.2599090
E : Type u_1
Eₗ : Type ?u.2599096
F : Type ?u.2599099
Fₗ : Type ?u.2599102
G : Type ?u.2599105
Gₗ : Type ?u.2599108
𝓕 : Type ?u.2599111
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedAddCommGroup Fₗ
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕜₂
inst✝⁵ : NontriviallyNormedField 𝕜₃
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedSpace 𝕜₂ F
inst✝² : NormedSpace 𝕜₃ G
inst✝¹ : NormedSpace 𝕜 Fₗ
c : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
f g : E →SL[σ₁₂] F
x y z : E
inst✝ : Nontrivial E
⊢ ‖id 𝕜 E‖ = 1

tactic: obtain ⟨x, hx⟩ := exists_ne (0 : E)
state_before: 𝕜 : Type u_2
𝕜₂ : Type ?u.2599087
𝕜₃ : Type ?u.2599090
E : Type u_1
Eₗ : Type ?u.2599096
F : Type ?u.2599099
Fₗ : Type ?u.2599102
G : Type ?u.2599105
Gₗ : Type ?u.2599108
𝓕 : Type ?u.2599111
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedAddCommGroup Fₗ
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕜₂
inst✝⁵ : NontriviallyNormedField 𝕜₃
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedSpace 𝕜₂ F
inst✝² : NormedSpace 𝕜₃ G
inst✝¹ : NormedSpace 𝕜 Fₗ
c : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
f g : E →SL[σ₁₂] F
x y z : E
inst✝ : Nontrivial E
⊢ ∃ x, ‖x‖ ≠ 0

tactic: exact ⟨x, ne_of_gt (norm_pos_iff.2 hx)⟩
state_before: case intro
𝕜 : Type u_2
𝕜₂ : Type ?u.2599087
𝕜₃ : Type ?u.2599090
E : Type u_1
Eₗ : Type ?u.2599096
F : Type ?u.2599099
Fₗ : Type ?u.2599102
G : Type ?u.2599105
Gₗ : Type ?u.2599108
𝓕 : Type ?u.2599111
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedAddCommGroup G
inst✝⁸ : NormedAddCommGroup Fₗ
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NontriviallyNormedField 𝕜₂
inst✝⁵ : NontriviallyNormedField 𝕜₃
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedSpace 𝕜₂ F
inst✝² : NormedSpace 𝕜₃ G
inst✝¹ : NormedSpace 𝕜 Fₗ
c : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
f g : E →SL[σ₁₂] F
x✝ y z : E
inst✝ : Nontrivial E
x : E
hx : x ≠ 0
⊢ ∃ x, ‖x‖ ≠ 0
Theorem: MeasureTheory.ae_eq_set_compl_compl
File: Mathlib/MeasureTheory/Measure/MeasureSpaceDef.lean

tactic: simp only [← measure_symmDiff_eq_zero_iff, compl_symmDiff_compl]
state_before: α : Type u_1
β : Type ?u.111469
γ : Type ?u.111472
δ : Type ?u.111475
ι : Type ?u.111478
inst✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ s t : Set α
⊢ sᶜ =ᵐ[μ] tᶜ ↔ s =ᵐ[μ] t
Theorem: CategoryTheory.Limits.kernelSubobjectIsoComp_hom_arrow
File: Mathlib/CategoryTheory/Subobject/Limits.lean

tactic: simp [kernelSubobjectIsoComp]
state_before: C : Type u
inst✝⁴ : Category C
X Y Z : C
inst✝³ : HasZeroMorphisms C
f✝ : X ⟶ Y
inst✝² : HasKernel f✝
X' : C
f : X' ⟶ X
inst✝¹ : IsIso f
g : X ⟶ Y
inst✝ : HasKernel g
⊢ (kernelSubobjectIsoComp f g).hom ≫ arrow (kernelSubobject g) = arrow (kernelSubobject (f ≫ g)) ≫ f
Theorem: Finset.Nonempty.sup'_id_eq_cSup
File: Mathlib/Order/ConditionallyCompleteLattice/Finset.lean

tactic: rw [hs.sup'_eq_cSup_image, Set.image_id]
state_before: α : Type u_1
β : Type ?u.5868
γ : Type ?u.5871
inst✝ : ConditionallyCompleteLattice α
s✝ t : Set α
a b : α
s : Finset α
hs : Finset.Nonempty s
⊢ sup' s hs id = sSup ↑s
Theorem: Part.bind_some
File: Mathlib/Data/Part.lean

tactic: simp
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.21510
a : α
f : α → Part β
⊢ ∀ (a_1 : β), a_1 ∈ Part.bind (some a) f ↔ a_1 ∈ f a
Theorem: exists_compact_iff_hasCompactMulSupport
File: Mathlib/Topology/Support.lean

tactic: simp_rw [← nmem_mulSupport, ← mem_compl_iff, ← subset_def, compl_subset_compl,
  hasCompactMulSupport_def, exists_compact_superset_iff]
state_before: X : Type ?u.9177
α : Type u_1
α' : Type ?u.9183
β : Type u_2
γ : Type ?u.9189
δ : Type ?u.9192
M : Type ?u.9195
E : Type ?u.9198
R : Type ?u.9201
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace α'
inst✝³ : One β
inst✝² : One γ
inst✝¹ : One δ
g : β → γ
f : α → β
f₂ : α → γ
m : β → γ → δ
x : α
inst✝ : T2Space α
⊢ (∃ K, IsCompact K ∧ ∀ (x : α), ¬x ∈ K → f x = 1) ↔ HasCompactMulSupport f
Theorem: Std.PairingHeapImp.Heap.size_deleteMin_lt
File: Std/Data/PairingHeap.lean

tactic: cases s with cases eq | node a c => simp_arith [size_combine, size]
state_before: α : Type u_1
le : α → α → Bool
a : α
s' s : Heap α
eq : deleteMin le s = some (a, s')
⊢ size s' < size s

tactic: simp_arith [size_combine, size]
state_before: case node.refl
α : Type u_1
le : α → α → Bool
a : α
c sibling✝ : Heap α
⊢ size (combine le c) < size (node a c sibling✝)
Theorem: ContinuousLinearMap.inverse_equiv
File: Mathlib/Topology/Algebra/Module/Basic.lean

tactic: have h : ∃ e' : M ≃L[R] M₂, (e' : M →L[R] M₂) = ↑e := ⟨e, rfl⟩
state_before: R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁶ : TopologicalSpace M
inst✝⁵ : TopologicalSpace M₂
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M₂
inst✝² : Module R M₂
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
e : M ≃L[R] M₂
⊢ inverse ↑e = ↑(ContinuousLinearEquiv.symm e)

tactic: simp only [inverse, dif_pos h]
state_before: R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁶ : TopologicalSpace M
inst✝⁵ : TopologicalSpace M₂
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M₂
inst✝² : Module R M₂
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
e : M ≃L[R] M₂
h : ∃ e', ↑e' = ↑e
⊢ inverse ↑e = ↑(ContinuousLinearEquiv.symm e)

tactic: congr
state_before: R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁶ : TopologicalSpace M
inst✝⁵ : TopologicalSpace M₂
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M₂
inst✝² : Module R M₂
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
e : M ≃L[R] M₂
h : ∃ e', ↑e' = ↑e
⊢ ↑(ContinuousLinearEquiv.symm (choose h)) = ↑(ContinuousLinearEquiv.symm e)

tactic: exact_mod_cast Classical.choose_spec h
state_before: case e_e.e_e
R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁶ : TopologicalSpace M
inst✝⁵ : TopologicalSpace M₂
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M₂
inst✝² : Module R M₂
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
e : M ≃L[R] M₂
h : ∃ e', ↑e' = ↑e
⊢ choose h = e
Theorem: Part.some_inter_some
File: Mathlib/Data/Part.lean

tactic: simp [inter_def]
state_before: α : Type u_1
β : Type ?u.88117
γ : Type ?u.88120
inst✝ : Inter α
a b : α
⊢ some a ∩ some b = some (a ∩ b)
Theorem: AlgebraicGeometry.StructureSheaf.stalkToFiberRingHom_germ
File: Mathlib/AlgebraicGeometry/StructureSheaf.lean

tactic: cases x
state_before: R : Type u
inst✝ : CommRing R
U : Opens ↑(PrimeSpectrum.Top R)
x : { x // x ∈ U }
s : ↑((structureSheaf R).val.obj U.op)
⊢ ↑(stalkToFiberRingHom R ↑x) (↑(germ (Sheaf.presheaf (structureSheaf R)) x) s) = ↑s x

tactic: exact stalkToFiberRingHom_germ' R U _ _ _
state_before: case mk
R : Type u
inst✝ : CommRing R
U : Opens ↑(PrimeSpectrum.Top R)
s : ↑((structureSheaf R).val.obj U.op)
val✝ : ↑(PrimeSpectrum.Top R)
property✝ : val✝ ∈ U
⊢ ↑(stalkToFiberRingHom R ↑{ val := val✝, property := property✝ })
      (↑(germ (Sheaf.presheaf (structureSheaf R)) { val := val✝, property := property✝ }) s) =
    ↑s { val := val✝, property := property✝ }
Theorem: LocalHomeomorph.extend_coord_change_source_mem_nhdsWithin'
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: apply extend_coord_change_source_mem_nhdsWithin
state_before: 𝕜 : Type u_4
E : Type u_3
M : Type u_1
H : Type u_2
E' : Type ?u.173038
M' : Type ?u.173041
H' : Type ?u.173044
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : LocalHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
x✝ : M
s t : Set M
x : M
hxf : x ∈ f.source
hxf' : x ∈ f'.source
⊢ (LocalEquiv.symm (extend f I) ≫ extend f' I).source ∈ 𝓝[range ↑I] ↑(extend f I) x

tactic: rw [← extend_image_source_inter]
state_before: case hx
𝕜 : Type u_4
E : Type u_3
M : Type u_1
H : Type u_2
E' : Type ?u.173038
M' : Type ?u.173041
H' : Type ?u.173044
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : LocalHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
x✝ : M
s t : Set M
x : M
hxf : x ∈ f.source
hxf' : x ∈ f'.source
⊢ ↑(extend f I) x ∈ (LocalEquiv.symm (extend f I) ≫ extend f' I).source

tactic: exact mem_image_of_mem _ ⟨hxf, hxf'⟩
state_before: case hx
𝕜 : Type u_4
E : Type u_3
M : Type u_1
H : Type u_2
E' : Type ?u.173038
M' : Type ?u.173041
H' : Type ?u.173044
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : LocalHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
x✝ : M
s t : Set M
x : M
hxf : x ∈ f.source
hxf' : x ∈ f'.source
⊢ ↑(extend f I) x ∈ ↑(extend f I) '' (f.source ∩ f'.source)
Theorem: Nat.two_mul_ne_two_mul_add_one
File: Mathlib/Data/Nat/Basic.lean

tactic: rw [add_comm, add_mul_mod_self_left, mul_mod_right, mod_eq_of_lt] <;> simp
state_before: m✝ n✝ k n m : ℕ
⊢ ¬2 * n % 2 = (2 * m + 1) % 2
Theorem: EMetric.secondCountable_of_sigmaCompact
File: Mathlib/Topology/MetricSpace/EMetricSpace.lean

tactic: suffices SeparableSpace α by exact UniformSpace.secondCountable_of_separable α
state_before: α : Type u
β : Type v
X : Type ?u.281110
inst✝¹ : PseudoEMetricSpace α
x y z : α
ε ε₁ ε₂ : ℝ≥0∞
s t : Set α
inst✝ : SigmaCompactSpace α
⊢ SecondCountableTopology α

tactic: choose T _ hTc hsubT using fun n =>
  subset_countable_closure_of_compact (isCompact_compactCovering α n)
state_before: α : Type u
β : Type v
X : Type ?u.281110
inst✝¹ : PseudoEMetricSpace α
x y z : α
ε ε₁ ε₂ : ℝ≥0∞
s t : Set α
inst✝ : SigmaCompactSpace α
⊢ SeparableSpace α

tactic: refine' ⟨⟨⋃ n, T n, countable_iUnion hTc, fun x => _⟩⟩
state_before: α : Type u
β : Type v
X : Type ?u.281110
inst✝¹ : PseudoEMetricSpace α
x y z : α
ε ε₁ ε₂ : ℝ≥0∞
s t : Set α
inst✝ : SigmaCompactSpace α
T : ℕ → Set α
h✝ : ∀ (n : ℕ), T n ⊆ compactCovering α n
hTc : ∀ (n : ℕ), Set.Countable (T n)
hsubT : ∀ (n : ℕ), compactCovering α n ⊆ closure (T n)
⊢ SeparableSpace α

tactic: rcases iUnion_eq_univ_iff.1 (iUnion_compactCovering α) x with ⟨n, hn⟩
state_before: α : Type u
β : Type v
X : Type ?u.281110
inst✝¹ : PseudoEMetricSpace α
x✝ y z : α
ε ε₁ ε₂ : ℝ≥0∞
s t : Set α
inst✝ : SigmaCompactSpace α
T : ℕ → Set α
h✝ : ∀ (n : ℕ), T n ⊆ compactCovering α n
hTc : ∀ (n : ℕ), Set.Countable (T n)
hsubT : ∀ (n : ℕ), compactCovering α n ⊆ closure (T n)
x : α
⊢ x ∈ closure (⋃ (n : ℕ), T n)

tactic: exact closure_mono (subset_iUnion _ n) (hsubT _ hn)
state_before: case intro
α : Type u
β : Type v
X : Type ?u.281110
inst✝¹ : PseudoEMetricSpace α
x✝ y z : α
ε ε₁ ε₂ : ℝ≥0∞
s t : Set α
inst✝ : SigmaCompactSpace α
T : ℕ → Set α
h✝ : ∀ (n : ℕ), T n ⊆ compactCovering α n
hTc : ∀ (n : ℕ), Set.Countable (T n)
hsubT : ∀ (n : ℕ), compactCovering α n ⊆ closure (T n)
x : α
n : ℕ
hn : x ∈ compactCovering α n
⊢ x ∈ closure (⋃ (n : ℕ), T n)

tactic: exact UniformSpace.secondCountable_of_separable α
state_before: α : Type u
β : Type v
X : Type ?u.281110
inst✝¹ : PseudoEMetricSpace α
x y z : α
ε ε₁ ε₂ : ℝ≥0∞
s t : Set α
inst✝ : SigmaCompactSpace α
this : SeparableSpace α
⊢ SecondCountableTopology α
Theorem: Path.Homotopy.continuous_transReflReparamAux
File: Mathlib/AlgebraicTopology/FundamentalGroupoid/Basic.lean

tactic: refine' continuous_if_le _ _ (Continuous.continuousOn _) (Continuous.continuousOn _) _ <;>
  [continuity; continuity; continuity; continuity; skip]
state_before: X : Type u
Y : Type v
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x₀ x₁ : X
⊢ Continuous transReflReparamAux

tactic: intro x hx
state_before: case refine'_5
X : Type u
Y : Type v
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x₀ x₁ : X
⊢ ∀ (x : ↑I), ↑x = 1 / 2 → 2 * ↑x = 1

tactic: simp [hx]
state_before: case refine'_5
X : Type u
Y : Type v
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x₀ x₁ : X
x : ↑I
hx : ↑x = 1 / 2
⊢ 2 * ↑x = 1
Theorem: ContDiffBump.one_of_mem_closedBall
File: Mathlib/Analysis/Calculus/BumpFunctionInner.lean

tactic: apply ContDiffBumpBase.eq_one _ _ f.one_lt_rOut_div_rIn
state_before: E : Type u_1
X : Type ?u.80093
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c : E
f : ContDiffBump c
x : E
n : ℕ∞
hx : x ∈ closedBall c f.rIn
⊢ ↑f x = 1

tactic: simpa only [norm_smul, norm_eq_abs, abs_inv, abs_of_nonneg f.rIn_pos.le, ← div_eq_inv_mul,
  div_le_one f.rIn_pos] using mem_closedBall_iff_norm.1 hx
state_before: case a
E : Type u_1
X : Type ?u.80093
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c : E
f : ContDiffBump c
x : E
n : ℕ∞
hx : x ∈ closedBall c f.rIn
⊢ ‖(fun x => f.rIn⁻¹ • (x - c)) x‖ ≤ 1
Theorem: Nat.cast_sub
File: Mathlib/Data/Int/Cast/Basic.lean

tactic: rw [← cast_add, Nat.sub_add_cancel h]
state_before: R : Type u
inst✝ : AddGroupWithOne R
m n : ℕ
h : m ≤ n
⊢ ↑(n - m) + ↑m = ↑n
Theorem: Stream'.tail_drop'
File: Mathlib/Data/Stream/Init.lean

tactic: ext
state_before: α : Type u
β : Type v
δ : Type w
i : ℕ
s : Stream' α
⊢ tail (drop i s) = drop (i + 1) s

tactic: simp [add_comm, add_assoc, add_left_comm]
state_before: case a
α : Type u
β : Type v
δ : Type w
i : ℕ
s : Stream' α
n✝ : ℕ
⊢ nth (tail (drop i s)) n✝ = nth (drop (i + 1) s) n✝
Theorem: Fintype.induction_empty_option
File: Mathlib/Data/Fintype/Option.lean

tactic: obtain ⟨p⟩ :=
  let f_empty := fun i => by convert h_empty
  let h_option : ∀ {α : Type u} [Fintype α] [DecidableEq α],
        (∀ (h : Fintype α), P α) → ∀ (h : Fintype (Option α)), P (Option α)  := by
    rintro α hα - Pα hα'
    convert h_option α (Pα _)
  @truncRecEmptyOption (fun α => ∀ h, @P α h) (@fun α β e hα hβ => @of_equiv α β hβ e (hα _))
    f_empty h_option α _ (Classical.decEq α)
state_before: α✝ : Type ?u.7602
β : Type ?u.7605
γ : Type ?u.7608
P : (α : Type u) → [inst : Fintype α] → Prop
of_equiv : ∀ (α β : Type u) [inst : Fintype β] (e : α ≃ β), P α → P β
h_empty : P PEmpty
h_option : ∀ (α : Type u) [inst : Fintype α], P α → P (Option α)
α : Type u
h_fintype : Fintype α
⊢ P α

tactic: convert h_empty
state_before: α✝ : Type ?u.7602
β : Type ?u.7605
γ : Type ?u.7608
P : (α : Type u) → [inst : Fintype α] → Prop
of_equiv : ∀ (α β : Type u) [inst : Fintype β] (e : α ≃ β), P α → P β
h_empty : P PEmpty
h_option : ∀ (α : Type u) [inst : Fintype α], P α → P (Option α)
α : Type u
h_fintype : Fintype α
i : Fintype PEmpty
⊢ P PEmpty

tactic: rintro α hα - Pα hα'
state_before: α✝ : Type ?u.7602
β : Type ?u.7605
γ : Type ?u.7608
P : (α : Type u) → [inst : Fintype α] → Prop
of_equiv : ∀ (α β : Type u) [inst : Fintype β] (e : α ≃ β), P α → P β
h_empty : P PEmpty
h_option : ∀ (α : Type u) [inst : Fintype α], P α → P (Option α)
α : Type u
h_fintype : Fintype α
f_empty : ∀ (i : Fintype PEmpty), P PEmpty := fun i => ?m.7730 i
⊢ ∀ {α : Type u} [inst : Fintype α] [inst : DecidableEq α],
    (∀ (h : Fintype α), P α) → ∀ (h : Fintype (Option α)), P (Option α)

tactic: convert h_option α (Pα _)
state_before: α✝¹ : Type ?u.7602
β : Type ?u.7605
γ : Type ?u.7608
P : (α : Type u) → [inst : Fintype α] → Prop
of_equiv : ∀ (α β : Type u) [inst : Fintype β] (e : α ≃ β), P α → P β
h_empty : P PEmpty
h_option : ∀ (α : Type u) [inst : Fintype α], P α → P (Option α)
α✝ : Type u
h_fintype : Fintype α✝
f_empty : ∀ (i : Fintype PEmpty), P PEmpty := fun i => ?m.7730 i
α : Type u
hα : Fintype α
Pα : ∀ (h : Fintype α), P α
hα' : Fintype (Option α)
⊢ P (Option α)

tactic: exact p _
state_before: case mk
α✝ : Type ?u.7602
β : Type ?u.7605
γ : Type ?u.7608
P : (α : Type u) → [inst : Fintype α] → Prop
of_equiv : ∀ (α β : Type u) [inst : Fintype β] (e : α ≃ β), P α → P β
h_empty : P PEmpty
h_option : ∀ (α : Type u) [inst : Fintype α], P α → P (Option α)
α : Type u
h_fintype : Fintype α
x✝ : Trunc (∀ (h : Fintype α), P α)
p : ∀ (h : Fintype α), P α
⊢ P α
Theorem: LinearRecurrence.geom_sol_iff_root_charPoly
File: Mathlib/Algebra/LinearRecurrence.lean

tactic: rw [charPoly, Polynomial.IsRoot.def, Polynomial.eval]
state_before: α : Type u_1
inst✝ : CommRing α
E : LinearRecurrence α
q : α
⊢ (IsSolution E fun n => q ^ n) ↔ IsRoot (charPoly E) q

tactic: simp only [Polynomial.eval₂_finset_sum, one_mul, RingHom.id_apply, Polynomial.eval₂_monomial,
  Polynomial.eval₂_sub]
state_before: α : Type u_1
inst✝ : CommRing α
E : LinearRecurrence α
q : α
⊢ (IsSolution E fun n => q ^ n) ↔
    eval₂ (RingHom.id α) q (↑(monomial E.order) 1 - ∑ i : Fin E.order, ↑(monomial ↑i) (coeffs E i)) = 0

tactic: constructor
state_before: α : Type u_1
inst✝ : CommRing α
E : LinearRecurrence α
q : α
⊢ (IsSolution E fun n => q ^ n) ↔ q ^ E.order - ∑ x : Fin E.order, coeffs E x * q ^ ↑x = 0

tactic: intro h
state_before: case mp
α : Type u_1
inst✝ : CommRing α
E : LinearRecurrence α
q : α
⊢ (IsSolution E fun n => q ^ n) → q ^ E.order - ∑ x : Fin E.order, coeffs E x * q ^ ↑x = 0

tactic: simpa [sub_eq_zero] using h 0
state_before: case mp
α : Type u_1
inst✝ : CommRing α
E : LinearRecurrence α
q : α
h : IsSolution E fun n => q ^ n
⊢ q ^ E.order - ∑ x : Fin E.order, coeffs E x * q ^ ↑x = 0

tactic: intro h n
state_before: case mpr
α : Type u_1
inst✝ : CommRing α
E : LinearRecurrence α
q : α
⊢ q ^ E.order - ∑ x : Fin E.order, coeffs E x * q ^ ↑x = 0 → IsSolution E fun n => q ^ n

tactic: simp only [pow_add, sub_eq_zero.mp h, mul_sum]
state_before: case mpr
α : Type u_1
inst✝ : CommRing α
E : LinearRecurrence α
q : α
h : q ^ E.order - ∑ x : Fin E.order, coeffs E x * q ^ ↑x = 0
n : ℕ
⊢ (fun n => q ^ n) (n + E.order) = ∑ i : Fin E.order, coeffs E i * (fun n => q ^ n) (n + ↑i)

tactic: exact sum_congr rfl fun _ _ ↦ by ring
state_before: case mpr
α : Type u_1
inst✝ : CommRing α
E : LinearRecurrence α
q : α
h : q ^ E.order - ∑ x : Fin E.order, coeffs E x * q ^ ↑x = 0
n : ℕ
⊢ ∑ x : Fin E.order, q ^ n * (coeffs E x * q ^ ↑x) = ∑ x : Fin E.order, coeffs E x * (q ^ n * q ^ ↑x)

tactic: ring
state_before: α : Type u_1
inst✝ : CommRing α
E : LinearRecurrence α
q : α
h : q ^ E.order - ∑ x : Fin E.order, coeffs E x * q ^ ↑x = 0
n : ℕ
x✝¹ : Fin E.order
x✝ : x✝¹ ∈ univ
⊢ q ^ n * (coeffs E x✝¹ * q ^ ↑x✝¹) = coeffs E x✝¹ * (q ^ n * q ^ ↑x✝¹)
Theorem: CategoryTheory.Bicategory.leftUnitor_inv_naturality
File: Mathlib/CategoryTheory/Bicategory/Basic.lean

tactic: simp
state_before: B : Type u
inst✝ : Bicategory B
a b c d e : B
f g : a ⟶ b
η : f ⟶ g
⊢ η ≫ (λ_ g).inv = (λ_ f).inv ≫ 𝟙 a ◁ η
Theorem: UV.mem_compression
File: Mathlib/Combinatorics/SetFamily/Compression/UV.lean

tactic: simp [compression, mem_union, mem_filter, mem_image, and_comm]
state_before: α : Type u_1
inst✝² : GeneralizedBooleanAlgebra α
inst✝¹ : DecidableRel Disjoint
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v a b : α
⊢ a ∈ 𝓒 u v s ↔ a ∈ s ∧ compress u v a ∈ s ∨ ¬a ∈ s ∧ ∃ b, b ∈ s ∧ compress u v b = a
Theorem: iSup₂_disjoint_iff
File: Mathlib/Order/CompleteBooleanAlgebra.lean

tactic: simp_rw [iSup_disjoint_iff]
state_before: α : Type u
β : Type v
ι : Sort w
κ : ι → Sort u_1
inst✝ : Frame α
s t : Set α
a b : α
f : (i : ι) → κ i → α
⊢ Disjoint (⨆ (i : ι) (j : κ i), f i j) a ↔ ∀ (i : ι) (j : κ i), Disjoint (f i j) a
Theorem: Polynomial.bernoulli_def
File: Mathlib/NumberTheory/BernoulliPolynomials.lean

tactic: rw [← sum_range_reflect, add_succ_sub_one, add_zero, bernoulli]
state_before: n : ℕ
⊢ bernoulli n = ∑ i in range (n + 1), ↑(monomial i) (_root_.bernoulli (n - i) * ↑(Nat.choose n i))

tactic: apply sum_congr rfl
state_before: n : ℕ
⊢ ∑ i in range (n + 1), ↑(monomial (n - i)) (_root_.bernoulli i * ↑(Nat.choose n i)) =
    ∑ j in range (n + 1), ↑(monomial (n - j)) (_root_.bernoulli (n - (n - j)) * ↑(Nat.choose n (n - j)))

tactic: rintro x hx
state_before: n : ℕ
⊢ ∀ (x : ℕ),
    x ∈ range (n + 1) →
      ↑(monomial (n - x)) (_root_.bernoulli x * ↑(Nat.choose n x)) =
        ↑(monomial (n - x)) (_root_.bernoulli (n - (n - x)) * ↑(Nat.choose n (n - x)))

tactic: rw [mem_range_succ_iff] at hx
state_before: n x : ℕ
hx : x ∈ range (n + 1)
⊢ ↑(monomial (n - x)) (_root_.bernoulli x * ↑(Nat.choose n x)) =
    ↑(monomial (n - x)) (_root_.bernoulli (n - (n - x)) * ↑(Nat.choose n (n - x)))

tactic: rw [choose_symm hx, tsub_tsub_cancel_of_le hx]
state_before: n x : ℕ
hx : x ≤ n
⊢ ↑(monomial (n - x)) (_root_.bernoulli x * ↑(Nat.choose n x)) =
    ↑(monomial (n - x)) (_root_.bernoulli (n - (n - x)) * ↑(Nat.choose n (n - x)))
Theorem: List.range_add
File: Std/Data/List/Lemmas.lean

tactic: rw [← range'_eq_map_range]
state_before: a b : Nat
⊢ range (a + b) = range a ++ map (fun x => a + x) (range b)

tactic: simpa [range_eq_range', Nat.add_comm] using (range'_append_1 0 a b).symm
state_before: a b : Nat
⊢ range (a + b) = range a ++ range' a b
Theorem: le_inv_iff_mul_le_one_left
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [mul_inv_self]
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LE α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c d : α
⊢ b * a ≤ b * b⁻¹ ↔ b * a ≤ 1
Theorem: Nat.minSqFac_has_prop
File: Mathlib/Data/Nat/Squarefree.lean

tactic: dsimp only [minSqFac]
state_before: n : ℕ
⊢ MinSqFacProp n (minSqFac n)

tactic: split_ifs with d2 d4
state_before: n : ℕ
⊢ MinSqFacProp n (if 2 ∣ n then if 2 ∣ n / 2 then some 2 else minSqFacAux (n / 2) 3 else minSqFacAux n 3)

tactic: exact ⟨prime_two, (dvd_div_iff d2).1 d4, fun p pp _ => pp.two_le⟩
state_before: case inl.inl
n : ℕ
d2 : 2 ∣ n
d4 : 2 ∣ n / 2
⊢ MinSqFacProp n (some 2)

tactic: cases' Nat.eq_zero_or_pos n with n0 n0
state_before: case inl.inr
n : ℕ
d2 : 2 ∣ n
d4 : ¬2 ∣ n / 2
⊢ MinSqFacProp n (minSqFacAux (n / 2) 3)

tactic: refine' minSqFacProp_div _ prime_two d2 (mt (dvd_div_iff d2).2 d4) _
state_before: case inl.inr.inr
n : ℕ
d2 : 2 ∣ n
d4 : ¬2 ∣ n / 2
n0 : n > 0
⊢ MinSqFacProp n (minSqFacAux (n / 2) 3)

tactic: refine' minSqFacAux_has_prop 3 (Nat.div_pos (le_of_dvd n0 d2) (by decide)) 0 rfl _
state_before: case inl.inr.inr
n : ℕ
d2 : 2 ∣ n
d4 : ¬2 ∣ n / 2
n0 : n > 0
⊢ MinSqFacProp (n / 2) (minSqFacAux (n / 2) 3)

tactic: refine' fun p pp dp => succ_le_of_lt (lt_of_le_of_ne pp.two_le _)
state_before: case inl.inr.inr
n : ℕ
d2 : 2 ∣ n
d4 : ¬2 ∣ n / 2
n0 : n > 0
⊢ ∀ (m : ℕ), Prime m → m ∣ n / 2 → 3 ≤ m

tactic: rintro rfl
state_before: case inl.inr.inr
n : ℕ
d2 : 2 ∣ n
d4 : ¬2 ∣ n / 2
n0 : n > 0
p : ℕ
pp : Prime p
dp : p ∣ n / 2
⊢ 2 ≠ p

tactic: contradiction
state_before: case inl.inr.inr
n : ℕ
d2 : 2 ∣ n
d4 : ¬2 ∣ n / 2
n0 : n > 0
pp : Prime 2
dp : 2 ∣ n / 2
⊢ False

tactic: subst n0
state_before: case inl.inr.inl
n : ℕ
d2 : 2 ∣ n
d4 : ¬2 ∣ n / 2
n0 : n = 0
⊢ MinSqFacProp n (minSqFacAux (n / 2) 3)

tactic: cases d4 (by decide)
state_before: case inl.inr.inl
d2 : 2 ∣ 0
d4 : ¬2 ∣ 0 / 2
⊢ MinSqFacProp 0 (minSqFacAux (0 / 2) 3)

tactic: decide
state_before: d2 : 2 ∣ 0
d4 : ¬2 ∣ 0 / 2
⊢ 2 ∣ 0 / 2

tactic: decide
state_before: n : ℕ
d2 : 2 ∣ n
d4 : ¬2 ∣ n / 2
n0 : n > 0
⊢ 0 < 2

tactic: cases' Nat.eq_zero_or_pos n with n0 n0
state_before: case inr
n : ℕ
d2 : ¬2 ∣ n
⊢ MinSqFacProp n (minSqFacAux n 3)

tactic: refine' minSqFacAux_has_prop _ n0 0 rfl _
state_before: case inr.inr
n : ℕ
d2 : ¬2 ∣ n
n0 : n > 0
⊢ MinSqFacProp n (minSqFacAux n 3)

tactic: refine' fun p pp dp => succ_le_of_lt (lt_of_le_of_ne pp.two_le _)
state_before: case inr.inr
n : ℕ
d2 : ¬2 ∣ n
n0 : n > 0
⊢ ∀ (m : ℕ), Prime m → m ∣ n → 3 ≤ m

tactic: rintro rfl
state_before: case inr.inr
n : ℕ
d2 : ¬2 ∣ n
n0 : n > 0
p : ℕ
pp : Prime p
dp : p ∣ n
⊢ 2 ≠ p

tactic: contradiction
state_before: case inr.inr
n : ℕ
d2 : ¬2 ∣ n
n0 : n > 0
pp : Prime 2
dp : 2 ∣ n
⊢ False

tactic: subst n0
state_before: case inr.inl
n : ℕ
d2 : ¬2 ∣ n
n0 : n = 0
⊢ MinSqFacProp n (minSqFacAux n 3)

tactic: cases d2 (by decide)
state_before: case inr.inl
d2 : ¬2 ∣ 0
⊢ MinSqFacProp 0 (minSqFacAux 0 3)

tactic: decide
state_before: d2 : ¬2 ∣ 0
⊢ 2 ∣ 0