tasksource/leandojo huggingface dataset:
Theorem: Finite.induction_empty_option
File: Mathlib/Data/Fintype/Option.lean

tactic: cases nonempty_fintype α
state_before: α✝ : Type ?u.8615
β : Type ?u.8618
γ : Type ?u.8621
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
⊢ P α

tactic: refine' Fintype.induction_empty_option _ _ _ α
state_before: case intro
α✝ : Type ?u.8615
β : Type ?u.8618
γ : Type ?u.8621
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ P α

tactic: exacts [fun α β _ => of_equiv, h_empty, @h_option]
state_before: case intro.refine'_1
α✝ : Type ?u.8615
β : Type ?u.8618
γ : Type ?u.8621
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ ∀ (α β : Type u) [inst : Fintype β], α ≃ β → P α → P β

case intro.refine'_2
α✝ : Type ?u.8615
β : Type ?u.8618
γ : Type ?u.8621
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ P PEmpty

case intro.refine'_3
α✝ : Type ?u.8615
β : Type ?u.8618
γ : Type ?u.8621
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ ∀ (α : Type u) [inst : Fintype α], P α → P (Option α)
Theorem: Polynomial.sum_eq_of_subset
File: Mathlib/Data/Polynomial/Basic.lean

tactic: refine Finset.sum_subset hs fun n _hn h'n => ?_
state_before: R : Type u
a b : R
m n : ℕ
inst✝¹ : Semiring R
p✝ q : R[X]
S : Type u_1
inst✝ : AddCommMonoid S
p : R[X]
f : ℕ → R → S
hf : ∀ (i : ℕ), f i 0 = 0
s : Finset ℕ
hs : support p ⊆ s
⊢ sum p f = ∑ n in s, f n (coeff p n)

tactic: rw [not_mem_support_iff] at h'n
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝¹ : Semiring R
p✝ q : R[X]
S : Type u_1
inst✝ : AddCommMonoid S
p : R[X]
f : ℕ → R → S
hf : ∀ (i : ℕ), f i 0 = 0
s : Finset ℕ
hs : support p ⊆ s
n : ℕ
_hn : n ∈ s
h'n : ¬n ∈ support p
⊢ f n (coeff p n) = 0

tactic: simp [h'n, hf]
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝¹ : Semiring R
p✝ q : R[X]
S : Type u_1
inst✝ : AddCommMonoid S
p : R[X]
f : ℕ → R → S
hf : ∀ (i : ℕ), f i 0 = 0
s : Finset ℕ
hs : support p ⊆ s
n : ℕ
_hn : n ∈ s
h'n : coeff p n = 0
⊢ f n (coeff p n) = 0
Theorem: AlgebraicGeometry.PresheafedSpace.restrictStalkIso_inv_eq_germ
File: Mathlib/AlgebraicGeometry/Stalks.lean

tactic: rw [← restrictStalkIso_hom_eq_germ, Category.assoc, Iso.hom_inv_id, Category.comp_id]
state_before: C : Type u
inst✝¹ : Category C
inst✝ : HasColimits C
U : TopCat
X : PresheafedSpace C
f : U ⟶ ↑X
h : OpenEmbedding ((CategoryTheory.forget TopCat).map f)
V : Opens ↑U
x : ↑U
hx : x ∈ V
⊢ germ X.presheaf
        { val := (CategoryTheory.forget TopCat).map f x,
          property :=
            (_ :
              (CategoryTheory.forget TopCat).map f x ∈
                (IsOpenMap.functor (_ : IsOpenMap ((CategoryTheory.forget TopCat).map f))).obj V) } ≫
      (restrictStalkIso X h x).inv =
    germ (restrict X h).presheaf { val := x, property := hx }
Theorem: continuous_sInf_rng
File: Mathlib/Topology/Order.lean

tactic: simp only [continuous_iff_coinduced_le, le_sInf_iff]
state_before: α : Type u
β : Type v
γ : Type ?u.41516
f : α → β
ι : Sort ?u.41523
t₁ : TopologicalSpace α
T : Set (TopologicalSpace β)
⊢ Continuous f ↔ ∀ (t : TopologicalSpace β), t ∈ T → Continuous f
Theorem: Multiset.bind_cons
File: Mathlib/Data/Multiset/Bind.lean

tactic: simp
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.13993
δ : Type ?u.13996
a : α
s t : Multiset α
f✝ g✝ : α → Multiset β
f : α → β
g : α → Multiset β
⊢ (bind 0 fun a => f a ::ₘ g a) = map f 0 + bind 0 g

tactic: simp (config := { contextual := true }) [add_comm, add_left_comm, add_assoc]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.13993
δ : Type ?u.13996
a : α
s t : Multiset α
f✝ g✝ : α → Multiset β
f : α → β
g : α → Multiset β
⊢ ∀ ⦃a : α⦄ {s : Multiset α},
    (bind s fun a => f a ::ₘ g a) = map f s + bind s g →
      (bind (a ::ₘ s) fun a => f a ::ₘ g a) = map f (a ::ₘ s) + bind (a ::ₘ s) g
Theorem: Basis.orientation_comp_linearEquiv_eq_iff_det_pos
File: Mathlib/LinearAlgebra/Orientation.lean

tactic: rw [orientation_map, e.map_orientation_eq_det_inv_smul, units_inv_smul, units_smul_eq_self_iff,
  LinearEquiv.coe_det]
state_before: R : Type u_2
inst✝⁴ : LinearOrderedCommRing R
M : Type u_3
inst✝³ : AddCommGroup M
inst✝² : Module R M
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
e : Basis ι R M
f : M ≃ₗ[R] M
⊢ Basis.orientation (Basis.map e f) = Basis.orientation e ↔ 0 < ↑LinearMap.det ↑f
Theorem: CategoryTheory.isIso_iff_nonzero
File: Mathlib/CategoryTheory/Preadditive/Schur.lean

tactic: intro h
state_before: C : Type u_2
inst✝⁴ : Category C
inst✝³ : Preadditive C
inst✝² : HasKernels C
X Y : C
inst✝¹ : Simple X
inst✝ : Simple Y
f : X ⟶ Y
I : IsIso f
⊢ f ≠ 0

tactic: apply id_nonzero X
state_before: C : Type u_2
inst✝⁴ : Category C
inst✝³ : Preadditive C
inst✝² : HasKernels C
X Y : C
inst✝¹ : Simple X
inst✝ : Simple Y
f : X ⟶ Y
I : IsIso f
h : f = 0
⊢ False

tactic: simp only [← IsIso.hom_inv_id f, h, zero_comp]
state_before: C : Type u_2
inst✝⁴ : Category C
inst✝³ : Preadditive C
inst✝² : HasKernels C
X Y : C
inst✝¹ : Simple X
inst✝ : Simple Y
f : X ⟶ Y
I : IsIso f
h : f = 0
⊢ 𝟙 X = 0
Theorem: Finsupp.total_comapDomain
File: Mathlib/LinearAlgebra/Finsupp.lean

tactic: rw [Finsupp.total_apply]
state_before: α : Type u_3
M : Type u_4
N : Type ?u.454082
P : Type ?u.454085
R : Type u_2
S : Type ?u.454091
inst✝¹² : Semiring R
inst✝¹¹ : Semiring S
inst✝¹⁰ : AddCommMonoid M
inst✝⁹ : Module R M
inst✝⁸ : AddCommMonoid N
inst✝⁷ : Module R N
inst✝⁶ : AddCommMonoid P
inst✝⁵ : Module R P
α' : Type u_1
M' : Type ?u.454186
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M'
inst✝² : AddCommMonoid M
inst✝¹ : Module R M'
inst✝ : Module R M
v : α → M
v' : α' → M'
f : α → α'
l : α' →₀ R
hf : InjOn f (f ⁻¹' ↑l.support)
⊢ ↑(Finsupp.total α M R v) (comapDomain f l hf) = ∑ i in Finset.preimage l.support f hf, ↑l (f i) • v i

tactic: rfl
state_before: α : Type u_3
M : Type u_4
N : Type ?u.454082
P : Type ?u.454085
R : Type u_2
S : Type ?u.454091
inst✝¹² : Semiring R
inst✝¹¹ : Semiring S
inst✝¹⁰ : AddCommMonoid M
inst✝⁹ : Module R M
inst✝⁸ : AddCommMonoid N
inst✝⁷ : Module R N
inst✝⁶ : AddCommMonoid P
inst✝⁵ : Module R P
α' : Type u_1
M' : Type ?u.454186
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M'
inst✝² : AddCommMonoid M
inst✝¹ : Module R M'
inst✝ : Module R M
v : α → M
v' : α' → M'
f : α → α'
l : α' →₀ R
hf : InjOn f (f ⁻¹' ↑l.support)
⊢ (sum (comapDomain f l hf) fun i a => a • v i) = ∑ i in Finset.preimage l.support f hf, ↑l (f i) • v i
Theorem: upperCentralSeries_eq_top_iff_nilpotencyClass_le
File: Mathlib/GroupTheory/Nilpotent.lean

tactic: constructor
state_before: G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hG : Group.IsNilpotent G
n : ℕ
⊢ upperCentralSeries G n = ⊤ ↔ nilpotencyClass G ≤ n

tactic: intro h
state_before: case mp
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hG : Group.IsNilpotent G
n : ℕ
⊢ upperCentralSeries G n = ⊤ → nilpotencyClass G ≤ n

tactic: exact Nat.find_le h
state_before: case mp
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hG : Group.IsNilpotent G
n : ℕ
h : upperCentralSeries G n = ⊤
⊢ nilpotencyClass G ≤ n

tactic: intro h
state_before: case mpr
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hG : Group.IsNilpotent G
n : ℕ
⊢ nilpotencyClass G ≤ n → upperCentralSeries G n = ⊤

tactic: apply eq_top_iff.mpr
state_before: case mpr
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hG : Group.IsNilpotent G
n : ℕ
h : nilpotencyClass G ≤ n
⊢ upperCentralSeries G n = ⊤

tactic: rw [← upperCentralSeries_nilpotencyClass]
state_before: case mpr
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hG : Group.IsNilpotent G
n : ℕ
h : nilpotencyClass G ≤ n
⊢ ⊤ ≤ upperCentralSeries G n

tactic: exact upperCentralSeries_mono _ h
state_before: case mpr
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
hG : Group.IsNilpotent G
n : ℕ
h : nilpotencyClass G ≤ n
⊢ upperCentralSeries G (nilpotencyClass G) ≤ upperCentralSeries G n
Theorem: StrictMonoOn.lt_iff_lt
File: Mathlib/Order/Monotone/Basic.lean

tactic: rw [lt_iff_le_not_le, lt_iff_le_not_le, hf.le_iff_le ha hb, hf.le_iff_le hb ha]
state_before: ι : Type ?u.27670
α : Type u
β : Type v
γ : Type w
δ : Type ?u.27679
π : ι → Type ?u.27684
r : α → α → Prop
inst✝¹ : LinearOrder α
inst✝ : Preorder β
f : α → β
s : Set α
hf : StrictMonoOn f s
a b : α
ha : a ∈ s
hb : b ∈ s
⊢ f a < f b ↔ a < b
Theorem: EuclideanGeometry.orthogonalProjection_orthogonalProjection
File: Mathlib/Geometry/Euclidean/Basic.lean

tactic: ext
state_before: V : Type u_1
P : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : MetricSpace P
inst✝² : NormedAddTorsor V P
s : AffineSubspace ℝ P
inst✝¹ : Nonempty { x // x ∈ s }
inst✝ : CompleteSpace { x // x ∈ direction s }
p : P
⊢ ↑(orthogonalProjection s) ↑(↑(orthogonalProjection s) p) = ↑(orthogonalProjection s) p

tactic: rw [orthogonalProjection_eq_self_iff]
state_before: case a
V : Type u_1
P : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : MetricSpace P
inst✝² : NormedAddTorsor V P
s : AffineSubspace ℝ P
inst✝¹ : Nonempty { x // x ∈ s }
inst✝ : CompleteSpace { x // x ∈ direction s }
p : P
⊢ ↑(↑(orthogonalProjection s) ↑(↑(orthogonalProjection s) p)) = ↑(↑(orthogonalProjection s) p)

tactic: exact orthogonalProjection_mem p
state_before: case a
V : Type u_1
P : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : MetricSpace P
inst✝² : NormedAddTorsor V P
s : AffineSubspace ℝ P
inst✝¹ : Nonempty { x // x ∈ s }
inst✝ : CompleteSpace { x // x ∈ direction s }
p : P
⊢ ↑(↑(orthogonalProjection s) p) ∈ s
Theorem: Rat.not_firstCountableTopology_opc
File: Mathlib/Topology/Instances/RatLemmas.lean

tactic: intro
state_before: p q : ℚ
s t : Set ℚ
⊢ ¬FirstCountableTopology ℚ∞

tactic: exact not_countably_generated_nhds_infty_opc inferInstance
state_before: p q : ℚ
s t : Set ℚ
a✝ : FirstCountableTopology ℚ∞
⊢ False
Theorem: Equiv.Perm.support_conj
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: ext
state_before: ι : Type ?u.3038576
α : Type u_1
β : Type ?u.3038582
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
⊢ support (σ * τ * σ⁻¹) = map (Equiv.toEmbedding σ) (support τ)

tactic: simp only [mem_map_equiv, Perm.coe_mul, Function.comp_apply, Ne.def, Perm.mem_support,
  Equiv.eq_symm_apply]
state_before: case a
ι : Type ?u.3038576
α : Type u_1
β : Type ?u.3038582
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
a✝ : α
⊢ a✝ ∈ support (σ * τ * σ⁻¹) ↔ a✝ ∈ map (Equiv.toEmbedding σ) (support τ)

tactic: rfl
state_before: case a
ι : Type ?u.3038576
α : Type u_1
β : Type ?u.3038582
inst✝¹ : DecidableEq α
inst✝ : Fintype α
σ τ : Perm α
a✝ : α
⊢ ¬↑σ (↑τ (↑σ⁻¹ a✝)) = a✝ ↔ ¬↑σ (↑τ (↑σ.symm a✝)) = a✝
Theorem: Nat.ArithmeticFunction.sigma_zero_apply
File: Mathlib/NumberTheory/ArithmeticFunction.lean

tactic: simp [sigma_apply]
state_before: R : Type ?u.524469
n : ℕ
⊢ ↑(σ 0) n = card (divisors n)
Theorem: Real.abs_cos_le_one
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp only [← sq, cos_sq_le_one]
state_before: x y : ℝ
⊢ cos x * cos x ≤ 1
Theorem: Heyting.IsRegular.disjoint_compl_left_iff
File: Mathlib/Order/Heyting/Regular.lean

tactic: rw [← le_compl_iff_disjoint_left, ha.eq]
state_before: α : Type u_1
inst✝ : HeytingAlgebra α
a b : α
ha : IsRegular a
⊢ Disjoint (aᶜ) b ↔ b ≤ a
Theorem: CategoryTheory.Limits.Bicone.π_of_isColimit
File: Mathlib/CategoryTheory/Limits/Shapes/Biproducts.lean

tactic: rw [ht.fac]
state_before: J : Type w
C : Type u
inst✝¹ : Category C
inst✝ : HasZeroMorphisms C
F f : J → C
t : Bicone f
ht : IsColimit (toCocone t)
j : J
j' : Discrete J
⊢ (toCocone t).ι.app j' ≫ π t j =
    (toCocone t).ι.app j' ≫
      IsColimit.desc ht (Cofan.mk (f j) fun j' => if h : j' = j then eqToHom (_ : f j' = f j) else 0)

tactic: simp [t.ι_π]
state_before: J : Type w
C : Type u
inst✝¹ : Category C
inst✝ : HasZeroMorphisms C
F f : J → C
t : Bicone f
ht : IsColimit (toCocone t)
j : J
j' : Discrete J
⊢ (toCocone t).ι.app j' ≫ π t j = (Cofan.mk (f j) fun j' => if h : j' = j then eqToHom (_ : f j' = f j) else 0).ι.app j'
Theorem: MeasureTheory.MeasurePreserving.symm
File: Mathlib/Dynamics/Ergodic/MeasurePreserving.lean

tactic: rw [← h.map_eq, map_map e.symm.measurable e.measurable, e.symm_comp_self, map_id]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.1189
δ : Type ?u.1192
inst✝³ : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
μa✝ : Measure α
μb✝ : Measure β
μc : Measure γ
μd : Measure δ
e : α ≃ᵐ β
μa : Measure α
μb : Measure β
h : MeasurePreserving ↑e
⊢ map (↑(MeasurableEquiv.symm e)) μb = μa
Theorem: Nat.count_succ'
File: Mathlib/Data/Nat/Count.lean

tactic: rw [count_add', count_one]
state_before: p : ℕ → Prop
inst✝ : DecidablePred p
n : ℕ
⊢ count p (n + 1) = count (fun k => p (k + 1)) n + if p 0 then 1 else 0
Theorem: List.perm_insert_swap
File: Mathlib/Data/List/Perm.lean

tactic: by_cases xl : x ∈ l <;> by_cases yl : y ∈ l <;> simp [xl, yl]
state_before: α : Type uu
β : Type vv
l₁ l₂ : List α
inst✝ : DecidableEq α
x y : α
l : List α
⊢ List.insert x (List.insert y l) ~ List.insert y (List.insert x l)

tactic: by_cases xy : x = y
state_before: case neg
α : Type uu
β : Type vv
l₁ l₂ : List α
inst✝ : DecidableEq α
x y : α
l : List α
xl : ¬x ∈ l
yl : ¬y ∈ l
⊢ List.insert x (y :: l) ~ List.insert y (x :: l)

tactic: simp [List.insert, xl, yl, xy, Ne.symm xy]
state_before: case neg
α : Type uu
β : Type vv
l₁ l₂ : List α
inst✝ : DecidableEq α
x y : α
l : List α
xl : ¬x ∈ l
yl : ¬y ∈ l
xy : ¬x = y
⊢ List.insert x (y :: l) ~ List.insert y (x :: l)

tactic: constructor
state_before: case neg
α : Type uu
β : Type vv
l₁ l₂ : List α
inst✝ : DecidableEq α
x y : α
l : List α
xl : ¬x ∈ l
yl : ¬y ∈ l
xy : ¬x = y
⊢ x :: y :: l ~ y :: x :: l

tactic: simp [xy]
state_before: case pos
α : Type uu
β : Type vv
l₁ l₂ : List α
inst✝ : DecidableEq α
x y : α
l : List α
xl : ¬x ∈ l
yl : ¬y ∈ l
xy : x = y
⊢ List.insert x (y :: l) ~ List.insert y (x :: l)
Theorem: Multiset.disjoint_add_left
File: Mathlib/Data/Multiset/Basic.lean

tactic: simp [Disjoint, or_imp, forall_and]
state_before: α : Type u_1
β : Type ?u.484252
γ : Type ?u.484255
s t u : Multiset α
⊢ Disjoint (s + t) u ↔ Disjoint s u ∧ Disjoint t u
Theorem: GeneralizedContinuedFraction.IntFractPair.exists_succ_nth_stream_of_fr_zero
File: Mathlib/Algebra/ContinuedFractions/Computation/Translations.lean

tactic: rcases succ_nth_stream_eq_some_iff.mp stream_succ_nth_eq with
  ⟨ifp_n, seq_nth_eq, _, rfl⟩
state_before: K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
ifp_succ_n : IntFractPair K
stream_succ_nth_eq : IntFractPair.stream v (n + 1) = some ifp_succ_n
succ_nth_fr_eq_zero : ifp_succ_n.fr = 0
⊢ ∃ ifp_n, IntFractPair.stream v n = some ifp_n ∧ ifp_n.fr⁻¹ = ↑⌊ifp_n.fr⁻¹⌋

tactic: refine' ⟨ifp_n, seq_nth_eq, _⟩
state_before: case intro.intro.intro
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
ifp_n : IntFractPair K
seq_nth_eq : IntFractPair.stream v n = some ifp_n
left✝ : ifp_n.fr ≠ 0
stream_succ_nth_eq : IntFractPair.stream v (n + 1) = some (IntFractPair.of ifp_n.fr⁻¹)
succ_nth_fr_eq_zero : (IntFractPair.of ifp_n.fr⁻¹).fr = 0
⊢ ∃ ifp_n, IntFractPair.stream v n = some ifp_n ∧ ifp_n.fr⁻¹ = ↑⌊ifp_n.fr⁻¹⌋

tactic: simpa only [IntFractPair.of, Int.fract, sub_eq_zero] using succ_nth_fr_eq_zero
state_before: case intro.intro.intro
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
ifp_n : IntFractPair K
seq_nth_eq : IntFractPair.stream v n = some ifp_n
left✝ : ifp_n.fr ≠ 0
stream_succ_nth_eq : IntFractPair.stream v (n + 1) = some (IntFractPair.of ifp_n.fr⁻¹)
succ_nth_fr_eq_zero : (IntFractPair.of ifp_n.fr⁻¹).fr = 0
⊢ ifp_n.fr⁻¹ = ↑⌊ifp_n.fr⁻¹⌋
Theorem: Complex.tan_periodic
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: simpa only [tan_eq_sin_div_cos] using sin_antiperiodic.div cos_antiperiodic
state_before: ⊢ Function.Periodic tan ↑π
Theorem: IsAntichain.image_relEmbedding
File: Mathlib/Order/Antichain.lean

tactic: intro b hb b' hb' h₁ h₂
state_before: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
r' : β → β → Prop
s t : Set α
a b : α
hs : IsAntichain r s
φ : r ↪r r'
⊢ IsAntichain r' (↑φ '' s)

tactic: rw [Set.mem_image] at hb hb'
state_before: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
r' : β → β → Prop
s t : Set α
a b✝ : α
hs : IsAntichain r s
φ : r ↪r r'
b : β
hb : b ∈ ↑φ '' s
b' : β
hb' : b' ∈ ↑φ '' s
h₁ : b ≠ b'
h₂ : r' b b'
⊢ False

tactic: obtain ⟨⟨a, has, rfl⟩, ⟨a', has', rfl⟩⟩ := hb, hb'
state_before: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
r' : β → β → Prop
s t : Set α
a b✝ : α
hs : IsAntichain r s
φ : r ↪r r'
b : β
hb : ∃ x, x ∈ s ∧ ↑φ x = b
b' : β
hb' : ∃ x, x ∈ s ∧ ↑φ x = b'
h₁ : b ≠ b'
h₂ : r' b b'
⊢ False

tactic: exact hs has has' (fun haa' => h₁ (by rw [haa'])) (φ.map_rel_iff.mp h₂)
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
r' : β → β → Prop
s t : Set α
a✝ b : α
hs : IsAntichain r s
φ : r ↪r r'
a : α
has : a ∈ s
a' : α
has' : a' ∈ s
h₁ : ↑φ a ≠ ↑φ a'
h₂ : r' (↑φ a) (↑φ a')
⊢ False

tactic: rw [haa']
state_before: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
r' : β → β → Prop
s t : Set α
a✝ b : α
hs : IsAntichain r s
φ : r ↪r r'
a : α
has : a ∈ s
a' : α
has' : a' ∈ s
h₁ : ↑φ a ≠ ↑φ a'
h₂ : r' (↑φ a) (↑φ a')
haa' : a = a'
⊢ ↑φ a = ↑φ a'
Theorem: Set.Finite.toFinset_nonempty
File: Mathlib/Data/Set/Finite.lean

tactic: rw [← Finset.coe_nonempty, Finite.coe_toFinset]
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s t : Set α
a : α
hs : Set.Finite s
ht : Set.Finite t
h : Set.Finite s
⊢ Finset.Nonempty (Finite.toFinset h) ↔ Set.Nonempty s
Theorem: MeasureTheory.Integrable.re_im_iff
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: simp_rw [← memℒp_one_iff_integrable]
state_before: α : Type u_1
β : Type ?u.1131588
γ : Type ?u.1131591
δ : Type ?u.1131594
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
𝕜 : Type u_2
inst✝ : IsROrC 𝕜
f : α → 𝕜
⊢ ((Integrable fun x => ↑IsROrC.re (f x)) ∧ Integrable fun x => ↑IsROrC.im (f x)) ↔ Integrable f

tactic: exact memℒp_re_im_iff
state_before: α : Type u_1
β : Type ?u.1131588
γ : Type ?u.1131591
δ : Type ?u.1131594
m : MeasurableSpace α
μ ν : Measure α
inst✝³ : MeasurableSpace δ
inst✝² : NormedAddCommGroup β
inst✝¹ : NormedAddCommGroup γ
𝕜 : Type u_2
inst✝ : IsROrC 𝕜
f : α → 𝕜
⊢ Memℒp (fun x => ↑IsROrC.re (f x)) 1 ∧ Memℒp (fun x => ↑IsROrC.im (f x)) 1 ↔ Memℒp f 1
Theorem: Complex.arg_inv
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

tactic: rw [← arg_conj, inv_def, mul_comm]
state_before: x : ℂ
⊢ arg x⁻¹ = if arg x = π then π else -arg x

tactic: by_cases hx : x = 0
state_before: x : ℂ
⊢ arg (↑(↑normSq x)⁻¹ * ↑(starRingEnd ℂ) x) = arg (↑(starRingEnd ℂ) x)

tactic: simp [hx]
state_before: case pos
x : ℂ
hx : x = 0
⊢ arg (↑(↑normSq x)⁻¹ * ↑(starRingEnd ℂ) x) = arg (↑(starRingEnd ℂ) x)

tactic: exact arg_real_mul (conj x) (by simp [hx])
state_before: case neg
x : ℂ
hx : ¬x = 0
⊢ arg (↑(↑normSq x)⁻¹ * ↑(starRingEnd ℂ) x) = arg (↑(starRingEnd ℂ) x)

tactic: simp [hx]
state_before: x : ℂ
hx : ¬x = 0
⊢ 0 < (↑normSq x)⁻¹
Theorem: Padic.norm_le_pow_iff_norm_lt_pow_add_one
File: Mathlib/NumberTheory/Padics/PadicNumbers.lean

tactic: have aux : ∀ n : ℤ, 0 < ((p : ℝ) ^ n) := by
  apply Nat.zpow_pos_of_pos
  exact hp.1.pos
state_before: p : ℕ
hp : Fact (Nat.Prime p)
x : ℚ_[p]
n : ℤ
⊢ ‖x‖ ≤ ↑p ^ n ↔ ‖x‖ < ↑p ^ (n + 1)

tactic: by_cases hx0 : x = 0
state_before: p : ℕ
hp : Fact (Nat.Prime p)
x : ℚ_[p]
n : ℤ
aux : ∀ (n : ℤ), 0 < ↑p ^ n
⊢ ‖x‖ ≤ ↑p ^ n ↔ ‖x‖ < ↑p ^ (n + 1)

tactic: rw [norm_eq_pow_val hx0]
state_before: case neg
p : ℕ
hp : Fact (Nat.Prime p)
x : ℚ_[p]
n : ℤ
aux : ∀ (n : ℤ), 0 < ↑p ^ n
hx0 : ¬x = 0
⊢ ‖x‖ ≤ ↑p ^ n ↔ ‖x‖ < ↑p ^ (n + 1)

tactic: have h1p : 1 < (p : ℝ) := by exact_mod_cast hp.1.one_lt
state_before: case neg
p : ℕ
hp : Fact (Nat.Prime p)
x : ℚ_[p]
n : ℤ
aux : ∀ (n : ℤ), 0 < ↑p ^ n
hx0 : ¬x = 0
⊢ ↑p ^ (-valuation x) ≤ ↑p ^ n ↔ ↑p ^ (-valuation x) < ↑p ^ (n + 1)

tactic: have H := zpow_strictMono h1p
state_before: case neg
p : ℕ
hp : Fact (Nat.Prime p)
x : ℚ_[p]
n : ℤ
aux : ∀ (n : ℤ), 0 < ↑p ^ n
hx0 : ¬x = 0
h1p : 1 < ↑p
⊢ ↑p ^ (-valuation x) ≤ ↑p ^ n ↔ ↑p ^ (-valuation x) < ↑p ^ (n + 1)

tactic: rw [H.le_iff_le, H.lt_iff_lt, Int.lt_add_one_iff]
state_before: case neg
p : ℕ
hp : Fact (Nat.Prime p)
x : ℚ_[p]
n : ℤ
aux : ∀ (n : ℤ), 0 < ↑p ^ n
hx0 : ¬x = 0
h1p : 1 < ↑p
H : StrictMono ((fun x x_1 => x ^ x_1) ↑p)
⊢ ↑p ^ (-valuation x) ≤ ↑p ^ n ↔ ↑p ^ (-valuation x) < ↑p ^ (n + 1)

tactic: apply Nat.zpow_pos_of_pos
state_before: p : ℕ
hp : Fact (Nat.Prime p)
x : ℚ_[p]
n : ℤ
⊢ ∀ (n : ℤ), 0 < ↑p ^ n

tactic: exact hp.1.pos
state_before: case h
p : ℕ
hp : Fact (Nat.Prime p)
x : ℚ_[p]
n : ℤ
⊢ 0 < p

tactic: simp [hx0, norm_zero, aux, le_of_lt (aux _)]
state_before: case pos
p : ℕ
hp : Fact (Nat.Prime p)
x : ℚ_[p]
n : ℤ
aux : ∀ (n : ℤ), 0 < ↑p ^ n
hx0 : x = 0
⊢ ‖x‖ ≤ ↑p ^ n ↔ ‖x‖ < ↑p ^ (n + 1)

tactic: exact_mod_cast hp.1.one_lt
state_before: p : ℕ
hp : Fact (Nat.Prime p)
x : ℚ_[p]
n : ℤ
aux : ∀ (n : ℤ), 0 < ↑p ^ n
hx0 : ¬x = 0
⊢ 1 < ↑p
Theorem: PFun.Part.bind_comp
File: Mathlib/Data/PFun.lean

tactic: ext c
state_before: α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.57854
ε : Type ?u.57857
ι : Type ?u.57860
f✝ : α →. β
f : β →. γ
g : α →. β
a : Part α
⊢ Part.bind a (comp f g) = Part.bind (Part.bind a g) f

tactic: simp_rw [Part.mem_bind_iff, comp_apply, Part.mem_bind_iff, ← exists_and_right, ← exists_and_left]
state_before: case H
α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.57854
ε : Type ?u.57857
ι : Type ?u.57860
f✝ : α →. β
f : β →. γ
g : α →. β
a : Part α
c : γ
⊢ c ∈ Part.bind a (comp f g) ↔ c ∈ Part.bind (Part.bind a g) f

tactic: rw [exists_comm]
state_before: case H
α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.57854
ε : Type ?u.57857
ι : Type ?u.57860
f✝ : α →. β
f : β →. γ
g : α →. β
a : Part α
c : γ
⊢ (∃ a_1 x, a_1 ∈ a ∧ x ∈ g a_1 ∧ c ∈ f x) ↔ ∃ a_1 x, (x ∈ a ∧ a_1 ∈ g x) ∧ c ∈ f a_1

tactic: simp_rw [and_assoc]
state_before: case H
α : Type u_3
β : Type u_1
γ : Type u_2
δ : Type ?u.57854
ε : Type ?u.57857
ι : Type ?u.57860
f✝ : α →. β
f : β →. γ
g : α →. β
a : Part α
c : γ
⊢ (∃ b a_1, a_1 ∈ a ∧ b ∈ g a_1 ∧ c ∈ f b) ↔ ∃ a_1 x, (x ∈ a ∧ a_1 ∈ g x) ∧ c ∈ f a_1
Theorem: MeasureTheory.SignedMeasure.measurable_rnDeriv
File: Mathlib/MeasureTheory/Decomposition/Lebesgue.lean

tactic: rw [rnDeriv]
state_before: α : Type u_1
β : Type ?u.303346
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ Measurable (rnDeriv s μ)

tactic: measurability
state_before: α : Type u_1
β : Type ?u.303346
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ Measurable fun x =>
    ENNReal.toReal (Measure.rnDeriv (toJordanDecomposition s).posPart μ x) -
      ENNReal.toReal (Measure.rnDeriv (toJordanDecomposition s).negPart μ x)
Theorem: tendsto_rpow_neg_div
File: Mathlib/Analysis/SpecialFunctions/Pow/Asymptotics.lean

tactic: convert tendsto_rpow_div_mul_add (-(1 : ℝ)) _ (0 : ℝ) zero_ne_one
state_before: ⊢ Tendsto (fun x => x ^ (-1 / x)) atTop (𝓝 1)

tactic: funext
state_before: case h.e'_3.h.h.e'_6.h.e'_6
x✝ : ℝ
⊢ x✝ = 1 * x✝ + 0

tactic: congr 2
state_before: case h.e'_3.h.h.e'_6.h.e'_6
x✝ : ℝ
⊢ x✝ = 1 * x✝ + 0

tactic: ring
state_before: case h.e'_3.h.h.e'_6.h.e'_6
x✝ : ℝ
⊢ x✝ = 1 * x✝ + 0