tasksource/leandojo huggingface dataset:
Theorem: Finset.disjSups_assoc
File: Mathlib/Data/Finset/Sups.lean

tactic: refine' associative_of_commutative_of_le disjSups_comm _
state_before: α : Type u_1
inst✝³ : DecidableEq α
inst✝² : DistribLattice α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s t u v : Finset α
⊢ ∀ (s t u : Finset α), s ○ t ○ u = s ○ (t ○ u)

tactic: simp only [le_eq_subset, disjSups_subset_iff, mem_disjSups]
state_before: α : Type u_1
inst✝³ : DecidableEq α
inst✝² : DistribLattice α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s t u v : Finset α
⊢ ∀ (a b c : Finset α), a ○ b ○ c ≤ a ○ (b ○ c)

tactic: rintro s t u _ ⟨a, ha, b, hb, hab, rfl⟩ c hc habc
state_before: α : Type u_1
inst✝³ : DecidableEq α
inst✝² : DistribLattice α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s t u v : Finset α
⊢ ∀ (a b c : Finset α) (a_1 : α),
    (∃ a_2, a_2 ∈ a ∧ ∃ b_1, b_1 ∈ b ∧ Disjoint a_2 b_1 ∧ a_2 ⊔ b_1 = a_1) →
      ∀ (b_1 : α),
        b_1 ∈ c →
          Disjoint a_1 b_1 →
            ∃ a_5,
              a_5 ∈ a ∧
                ∃ b_2, (∃ a, a ∈ b ∧ ∃ b, b ∈ c ∧ Disjoint a b ∧ a ⊔ b = b_2) ∧ Disjoint a_5 b_2 ∧ a_5 ⊔ b_2 = a_1 ⊔ b_1

tactic: rw [disjoint_sup_left] at habc
state_before: case intro.intro.intro.intro.intro
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : DistribLattice α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s✝ t✝ u✝ v s t u : Finset α
a : α
ha : a ∈ s
b : α
hb : b ∈ t
hab : Disjoint a b
c : α
hc : c ∈ u
habc : Disjoint (a ⊔ b) c
⊢ ∃ a_1,
    a_1 ∈ s ∧ ∃ b_1, (∃ a, a ∈ t ∧ ∃ b, b ∈ u ∧ Disjoint a b ∧ a ⊔ b = b_1) ∧ Disjoint a_1 b_1 ∧ a_1 ⊔ b_1 = a ⊔ b ⊔ c

tactic: exact ⟨a, ha, _, ⟨b, hb, c, hc, habc.2, rfl⟩, hab.sup_right habc.1, sup_assoc.symm⟩
state_before: case intro.intro.intro.intro.intro
α : Type u_1
inst✝³ : DecidableEq α
inst✝² : DistribLattice α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s✝ t✝ u✝ v s t u : Finset α
a : α
ha : a ∈ s
b : α
hb : b ∈ t
hab : Disjoint a b
c : α
hc : c ∈ u
habc : Disjoint a c ∧ Disjoint b c
⊢ ∃ a_1,
    a_1 ∈ s ∧ ∃ b_1, (∃ a, a ∈ t ∧ ∃ b, b ∈ u ∧ Disjoint a b ∧ a ⊔ b = b_1) ∧ Disjoint a_1 b_1 ∧ a_1 ⊔ b_1 = a ⊔ b ⊔ c
Theorem: OrthonormalBasis.sum_repr_symm
File: Mathlib/Analysis/InnerProductSpace/PiL2.lean

tactic: simpa using (b.toBasis.equivFun_symm_apply v).symm
state_before: ι : Type u_1
ι' : Type ?u.817499
𝕜 : Type u_2
inst✝⁹ : IsROrC 𝕜
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type ?u.817528
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type ?u.817546
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type ?u.817566
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
inst✝ : Fintype ι
b : OrthonormalBasis ι 𝕜 E
v : EuclideanSpace 𝕜 ι
⊢ ∑ i : ι, v i • ↑b i = ↑(LinearIsometryEquiv.symm b.repr) v
Theorem: NormedSpace.exists_lt_norm
File: Mathlib/Analysis/NormedSpace/Basic.lean

tactic: rcases exists_ne (0 : E) with ⟨x, hx⟩
state_before: α : Type ?u.319308
β : Type ?u.319311
γ : Type ?u.319314
ι : Type ?u.319317
𝕜 : Type ?u.319320
E : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : Nontrivial E
c : ℝ
⊢ ∃ x, c < ‖x‖

tactic: rcases NormedField.exists_lt_norm 𝕜 (c / ‖x‖) with ⟨r, hr⟩
state_before: case intro
α : Type ?u.319308
β : Type ?u.319311
γ : Type ?u.319314
ι : Type ?u.319317
𝕜 : Type ?u.319320
E : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : Nontrivial E
c : ℝ
x : E
hx : x ≠ 0
⊢ ∃ x, c < ‖x‖

tactic: use r • x
state_before: case intro.intro
α : Type ?u.319308
β : Type ?u.319311
γ : Type ?u.319314
ι : Type ?u.319317
𝕜 : Type ?u.319320
E : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : Nontrivial E
c : ℝ
x : E
hx : x ≠ 0
r : 𝕜
hr : c / ‖x‖ < ‖r‖
⊢ ∃ x, c < ‖x‖

tactic: rwa [norm_smul, ← _root_.div_lt_iff]
state_before: case intro.intro
α : Type ?u.319308
β : Type ?u.319311
γ : Type ?u.319314
ι : Type ?u.319317
𝕜 : Type ?u.319320
E : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : Nontrivial E
c : ℝ
x : E
hx : x ≠ 0
r : 𝕜
hr : c / ‖x‖ < ‖r‖
⊢ c < ‖r • x‖

tactic: rwa [norm_pos_iff]
state_before: case intro.intro
α : Type ?u.319308
β : Type ?u.319311
γ : Type ?u.319314
ι : Type ?u.319317
𝕜 : Type ?u.319320
E : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : Nontrivial E
c : ℝ
x : E
hx : x ≠ 0
r : 𝕜
hr : c / ‖x‖ < ‖r‖
⊢ 0 < ‖x‖
Theorem: MeasureTheory.integral_inv_eq_self
File: Mathlib/MeasureTheory/Group/Integration.lean

tactic: have h : MeasurableEmbedding fun x : G => x⁻¹ := (MeasurableEquiv.inv G).measurableEmbedding
state_before: 𝕜 : Type ?u.2501
M : Type ?u.2504
α : Type ?u.2507
G : Type u_1
E : Type u_2
F : Type ?u.2516
inst✝⁷ : MeasurableSpace G
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedAddCommGroup F
μ✝ : Measure G
f✝ : G → E
g : G
inst✝² : Group G
inst✝¹ : MeasurableInv G
f : G → E
μ : Measure G
inst✝ : IsInvInvariant μ
⊢ (∫ (x : G), f x⁻¹ ∂μ) = ∫ (x : G), f x ∂μ

tactic: rw [← h.integral_map, map_inv_eq_self]
state_before: 𝕜 : Type ?u.2501
M : Type ?u.2504
α : Type ?u.2507
G : Type u_1
E : Type u_2
F : Type ?u.2516
inst✝⁷ : MeasurableSpace G
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedAddCommGroup F
μ✝ : Measure G
f✝ : G → E
g : G
inst✝² : Group G
inst✝¹ : MeasurableInv G
f : G → E
μ : Measure G
inst✝ : IsInvInvariant μ
h : MeasurableEmbedding fun x => x⁻¹
⊢ (∫ (x : G), f x⁻¹ ∂μ) = ∫ (x : G), f x ∂μ
Theorem: Set.image_iUnion
File: Mathlib/Data/Set/Lattice.lean

tactic: ext1 x
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.195273
ι : Sort u_3
ι' : Sort ?u.195279
ι₂ : Sort ?u.195282
κ : ι → Sort ?u.195287
κ₁ : ι → Sort ?u.195292
κ₂ : ι → Sort ?u.195297
κ' : ι' → Sort ?u.195302
f : α → β
s : ι → Set α
⊢ (f '' ⋃ (i : ι), s i) = ⋃ (i : ι), f '' s i

tactic: simp only [mem_image, mem_iUnion, ← exists_and_right, ← exists_and_left]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type ?u.195273
ι : Sort u_3
ι' : Sort ?u.195279
ι₂ : Sort ?u.195282
κ : ι → Sort ?u.195287
κ₁ : ι → Sort ?u.195292
κ₂ : ι → Sort ?u.195297
κ' : ι' → Sort ?u.195302
f : α → β
s : ι → Set α
x : β
⊢ (x ∈ f '' ⋃ (i : ι), s i) ↔ x ∈ ⋃ (i : ι), f '' s i

tactic: rw [exists_swap]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type ?u.195273
ι : Sort u_3
ι' : Sort ?u.195279
ι₂ : Sort ?u.195282
κ : ι → Sort ?u.195287
κ₁ : ι → Sort ?u.195292
κ₂ : ι → Sort ?u.195297
κ' : ι' → Sort ?u.195302
f : α → β
s : ι → Set α
x : β
⊢ (∃ x_1 x_2, x_1 ∈ s x_2 ∧ f x_1 = x) ↔ ∃ i x_1, x_1 ∈ s i ∧ f x_1 = x
Theorem: prime_dvd_char_iff_dvd_card
File: Mathlib/Algebra/CharP/CharAndCard.lean

tactic: refine'
  ⟨fun h =>
    h.trans <|
      Int.coe_nat_dvd.mp <|
        (CharP.int_cast_eq_zero_iff R (ringChar R) (Fintype.card R)).mp <| by
          exact_mod_cast CharP.cast_card_eq_zero R,
    fun h => _⟩
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : Fintype R
p : ℕ
inst✝ : Fact (Nat.Prime p)
⊢ p ∣ ringChar R ↔ p ∣ Fintype.card R

tactic: by_contra h₀
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : Fintype R
p : ℕ
inst✝ : Fact (Nat.Prime p)
h : p ∣ Fintype.card R
⊢ p ∣ ringChar R

tactic: rcases exists_prime_addOrderOf_dvd_card p h with ⟨r, hr⟩
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : Fintype R
p : ℕ
inst✝ : Fact (Nat.Prime p)
h : p ∣ Fintype.card R
h₀ : ¬p ∣ ringChar R
⊢ False

tactic: have hr₁ := addOrderOf_nsmul_eq_zero r
state_before: case intro
R : Type u_1
inst✝² : CommRing R
inst✝¹ : Fintype R
p : ℕ
inst✝ : Fact (Nat.Prime p)
h : p ∣ Fintype.card R
h₀ : ¬p ∣ ringChar R
r : R
hr : addOrderOf r = p
⊢ False

tactic: rw [hr, nsmul_eq_mul] at hr₁
state_before: case intro
R : Type u_1
inst✝² : CommRing R
inst✝¹ : Fintype R
p : ℕ
inst✝ : Fact (Nat.Prime p)
h : p ∣ Fintype.card R
h₀ : ¬p ∣ ringChar R
r : R
hr : addOrderOf r = p
hr₁ : addOrderOf r • r = 0
⊢ False

tactic: rcases IsUnit.exists_left_inv ((isUnit_iff_not_dvd_char R p).mpr h₀) with ⟨u, hu⟩
state_before: case intro
R : Type u_1
inst✝² : CommRing R
inst✝¹ : Fintype R
p : ℕ
inst✝ : Fact (Nat.Prime p)
h : p ∣ Fintype.card R
h₀ : ¬p ∣ ringChar R
r : R
hr : addOrderOf r = p
hr₁ : ↑p * r = 0
⊢ False

tactic: rw [MulZeroClass.mul_zero, ← mul_assoc, hu, one_mul] at hr₁
state_before: case intro.intro
R : Type u_1
inst✝² : CommRing R
inst✝¹ : Fintype R
p : ℕ
inst✝ : Fact (Nat.Prime p)
h : p ∣ Fintype.card R
h₀ : ¬p ∣ ringChar R
r : R
hr : addOrderOf r = p
u : R
hu : u * ↑p = 1
hr₁ : u * (↑p * r) = u * 0
⊢ False

tactic: exact mt AddMonoid.addOrderOf_eq_one_iff.mpr (ne_of_eq_of_ne hr (Nat.Prime.ne_one Fact.out)) hr₁
state_before: case intro.intro
R : Type u_1
inst✝² : CommRing R
inst✝¹ : Fintype R
p : ℕ
inst✝ : Fact (Nat.Prime p)
h : p ∣ Fintype.card R
h₀ : ¬p ∣ ringChar R
r : R
hr : addOrderOf r = p
u : R
hu : u * ↑p = 1
hr₁ : r = 0
⊢ False

tactic: exact_mod_cast CharP.cast_card_eq_zero R
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : Fintype R
p : ℕ
inst✝ : Fact (Nat.Prime p)
h : p ∣ ringChar R
⊢ ↑↑(Fintype.card R) = 0
Theorem: IsCoprime.of_mul_right_left
File: Mathlib/RingTheory/Coprime/Basic.lean

tactic: rw [isCoprime_comm] at H⊢
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
H : IsCoprime x (y * z)
⊢ IsCoprime x y

tactic: exact H.of_mul_left_left
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
H : IsCoprime (y * z) x
⊢ IsCoprime y x
Theorem: Cubic.monic_of_d_eq_one
File: Mathlib/Algebra/CubicDiscriminant.lean

tactic: rw [Monic, leadingCoeff_of_c_eq_zero ha hb hc, hd]
state_before: R : Type u_1
S : Type ?u.567669
F : Type ?u.567672
K : Type ?u.567675
P Q : Cubic R
a b c d a' b' c' d' : R
inst✝ : Semiring R
ha : P.a = 0
hb : P.b = 0
hc : P.c = 0
hd : P.d = 1
⊢ Monic (toPoly P)
Theorem: ZMod.cast_zero
File: Mathlib/Data/ZMod/Basic.lean

tactic: delta ZMod.cast
state_before: n : ℕ
R : Type u_1
inst✝ : AddGroupWithOne R
⊢ ↑0 = 0

tactic: cases n
state_before: n : ℕ
R : Type u_1
inst✝ : AddGroupWithOne R
⊢ (match (motive := (x : ℕ) → ZMod x → R) n with
      | 0 => Int.cast
      | Nat.succ n => fun i => ↑(val i))
      0 =
    0

tactic: . exact Int.cast_zero
state_before: case zero
R : Type u_1
inst✝ : AddGroupWithOne R
⊢ (match (motive := (x : ℕ) → ZMod x → R) Nat.zero with
      | 0 => Int.cast
      | Nat.succ n => fun i => ↑(val i))
      0 =
    0

case succ
R : Type u_1
inst✝ : AddGroupWithOne R
n✝ : ℕ
⊢ (match (motive := (x : ℕ) → ZMod x → R) Nat.succ n✝ with
      | 0 => Int.cast
      | Nat.succ n => fun i => ↑(val i))
      0 =
    0

tactic: . simp
state_before: case succ
R : Type u_1
inst✝ : AddGroupWithOne R
n✝ : ℕ
⊢ (match (motive := (x : ℕ) → ZMod x → R) Nat.succ n✝ with
      | 0 => Int.cast
      | Nat.succ n => fun i => ↑(val i))
      0 =
    0

tactic: exact Int.cast_zero
state_before: case zero
R : Type u_1
inst✝ : AddGroupWithOne R
⊢ (match (motive := (x : ℕ) → ZMod x → R) Nat.zero with
      | 0 => Int.cast
      | Nat.succ n => fun i => ↑(val i))
      0 =
    0

tactic: simp
state_before: case succ
R : Type u_1
inst✝ : AddGroupWithOne R
n✝ : ℕ
⊢ (match (motive := (x : ℕ) → ZMod x → R) Nat.succ n✝ with
      | 0 => Int.cast
      | Nat.succ n => fun i => ↑(val i))
      0 =
    0
Theorem: CategoryTheory.topologyOfClosureOperator_self
File: Mathlib/CategoryTheory/Sites/Closed.lean

tactic: ext (X S)
state_before: C : Type u
inst✝ : Category C
J₁ J₂ : GrothendieckTopology C
⊢ topologyOfClosureOperator (GrothendieckTopology.closureOperator J₁)
      (_ :
        ∀ (X Y : C) (f : Y ⟶ X) (S : Sieve X),
          GrothendieckTopology.close J₁ (Sieve.pullback f S) = Sieve.pullback f (GrothendieckTopology.close J₁ S)) =
    J₁

tactic: apply GrothendieckTopology.close_eq_top_iff_mem
state_before: case h.h.h
C : Type u
inst✝ : Category C
J₁ J₂ : GrothendieckTopology C
X : C
S : Sieve X
⊢ S ∈
      GrothendieckTopology.sieves
        (topologyOfClosureOperator (GrothendieckTopology.closureOperator J₁)
          (_ :
            ∀ (X Y : C) (f : Y ⟶ X) (S : Sieve X),
              GrothendieckTopology.close J₁ (Sieve.pullback f S) = Sieve.pullback f (GrothendieckTopology.close J₁ S)))
        X ↔
    S ∈ GrothendieckTopology.sieves J₁ X
Theorem: himp_triangle
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [le_himp_iff, inf_right_comm, ← le_himp_iff]
state_before: ι : Type ?u.75762
α : Type u_1
β : Type ?u.75768
inst✝ : GeneralizedHeytingAlgebra α
a✝ b✝ c✝ d a b c : α
⊢ (a ⇨ b) ⊓ (b ⇨ c) ≤ a ⇨ c

tactic: exact himp_inf_le.trans le_himp_himp
state_before: ι : Type ?u.75762
α : Type u_1
β : Type ?u.75768
inst✝ : GeneralizedHeytingAlgebra α
a✝ b✝ c✝ d a b c : α
⊢ (a ⇨ b) ⊓ a ≤ (b ⇨ c) ⇨ c
Theorem: Finmap.insert_entries_of_neg
File: Mathlib/Data/Finmap.lean

tactic: simp [AList.insert_entries_of_neg (mt mem_toFinmap.1 h), -insert_entries]
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
a : α
b : β a
s✝ : Finmap β
s : AList β
h : ¬a ∈ ⟦s⟧
⊢ (insert a b ⟦s⟧).entries = { fst := a, snd := b } ::ₘ ⟦s⟧.entries
Theorem: ENNReal.coe_rpow_of_nonneg
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: by_cases hx : x = 0
state_before: x : ℝ≥0
y : ℝ
h : 0 ≤ y
⊢ ↑x ^ y = ↑(x ^ y)

tactic: rcases le_iff_eq_or_lt.1 h with (H | H)
state_before: case pos
x : ℝ≥0
y : ℝ
h : 0 ≤ y
hx : x = 0
⊢ ↑x ^ y = ↑(x ^ y)

tactic: simp [hx, H.symm]
state_before: case pos.inl
x : ℝ≥0
y : ℝ
h : 0 ≤ y
hx : x = 0
H : 0 = y
⊢ ↑x ^ y = ↑(x ^ y)

tactic: simp [hx, zero_rpow_of_pos H, NNReal.zero_rpow (ne_of_gt H)]
state_before: case pos.inr
x : ℝ≥0
y : ℝ
h : 0 ≤ y
hx : x = 0
H : 0 < y
⊢ ↑x ^ y = ↑(x ^ y)

tactic: exact coe_rpow_of_ne_zero hx _
state_before: case neg
x : ℝ≥0
y : ℝ
h : 0 ≤ y
hx : ¬x = 0
⊢ ↑x ^ y = ↑(x ^ y)
Theorem: ContinuousLinearMap.norm_iteratedFDerivWithin_le_of_bilinear_of_le_one
File: Mathlib/Analysis/Calculus/ContDiff.lean

tactic: apply (B.norm_iteratedFDerivWithin_le_of_bilinear hf hg hs hx hn).trans
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type ?u.4063834
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝ f₁ : E → F
g✝ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
hB : ‖B‖ ≤ 1
⊢ ‖iteratedFDerivWithin 𝕜 n (fun y => ↑(↑B (f y)) (g y)) s x‖ ≤
    ∑ i in Finset.range (n + 1),
      ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖

tactic: apply mul_le_of_le_one_left (Finset.sum_nonneg' fun i => ?_) hB
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type ?u.4063834
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝ f₁ : E → F
g✝ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
hB : ‖B‖ ≤ 1
⊢ ‖B‖ *
      ∑ i in Finset.range (n + 1),
        ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖ ≤
    ∑ i in Finset.range (n + 1),
      ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖

tactic: positivity
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type ?u.4063834
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s✝ s₁ t u : Set E
f✝ f₁ : E → F
g✝ : F → G
x✝ x₀ : E
c : F
b : E × F → G
m n✝ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
B : E →L[𝕜] F →L[𝕜] G
f : D → E
g : D → F
N : ℕ∞
s : Set D
x : D
hf : ContDiffOn 𝕜 N f s
hg : ContDiffOn 𝕜 N g s
hs : UniqueDiffOn 𝕜 s
hx : x ∈ s
n : ℕ
hn : ↑n ≤ N
hB : ‖B‖ ≤ 1
i : ℕ
⊢ 0 ≤ ↑(Nat.choose n i) * ‖iteratedFDerivWithin 𝕜 i f s x‖ * ‖iteratedFDerivWithin 𝕜 (n - i) g s x‖
Theorem: Sym2.inductionOn₂
File: Mathlib/Data/Sym/Sym2.lean

tactic: intro ⟨a₁, a₂⟩ ⟨b₁, b₂⟩
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.3467
f : Sym2 α → Sym2 β → Prop
i : Sym2 α
j : Sym2 β
hf : ∀ (a₁ a₂ : α) (b₁ b₂ : β), f (Quotient.mk (Rel.setoid α) (a₁, a₂)) (Quotient.mk (Rel.setoid β) (b₁, b₂))
⊢ ∀ (a : α × α) (b : β × β), f (Quotient.mk (Rel.setoid α) a) (Quotient.mk (Rel.setoid β) b)

tactic: exact hf _ _ _ _
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.3467
f : Sym2 α → Sym2 β → Prop
i : Sym2 α
j : Sym2 β
hf : ∀ (a₁ a₂ : α) (b₁ b₂ : β), f (Quotient.mk (Rel.setoid α) (a₁, a₂)) (Quotient.mk (Rel.setoid β) (b₁, b₂))
a₁ a₂ : α
b₁ b₂ : β
⊢ f (Quotient.mk (Rel.setoid α) (a₁, a₂)) (Quotient.mk (Rel.setoid β) (b₁, b₂))
Theorem: Polynomial.Monic.comp_X_add_C
File: Mathlib/Data/Polynomial/RingDivision.lean

tactic: refine' hp.comp (monic_X_add_C _) fun ha => _
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
hp : Monic p
r : R
⊢ Monic (Polynomial.comp p (X + ↑C r))

tactic: rw [natDegree_X_add_C] at ha
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
hp : Monic p
r : R
ha : natDegree (X + ↑C r) = 0
⊢ False

tactic: exact one_ne_zero ha
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
hp : Monic p
r : R
ha : 1 = 0
⊢ False
Theorem: Submodule.map₂_bot_right
File: Mathlib/Algebra/Module/Submodule/Bilinear.lean

tactic: rw [Submodule.mem_bot] at hn
state_before: ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
p : Submodule R M
m : M
_hm : m ∈ p
n : N
hn : n ∈ ⊥
⊢ ↑(↑f m) n ∈ ⊥

tactic: rw [hn, LinearMap.map_zero]
state_before: ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
p : Submodule R M
m : M
_hm : m ∈ p
n : N
hn : n = 0
⊢ ↑(↑f m) n ∈ ⊥

tactic: simp only [mem_bot]
state_before: ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
p : Submodule R M
m : M
_hm : m ∈ p
n : N
hn : n = 0
⊢ 0 ∈ ⊥
Theorem: Bool.and_or_distrib_left
File: Mathlib/Data/Bool/Basic.lean

tactic: cases a <;> simp
state_before: a b c : Bool
⊢ (a && (b || c)) = (a && b || a && c)
Theorem: AffineEquiv.pointReflection_midpoint_right
File: Mathlib/LinearAlgebra/AffineSpace/Midpoint.lean

tactic: rw [midpoint_comm, AffineEquiv.pointReflection_midpoint_left]
state_before: R : Type u_3
V : Type u_2
V' : Type ?u.25882
P : Type u_1
P' : Type ?u.25888
inst✝⁷ : Ring R
inst✝⁶ : Invertible 2
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x✝ y✝ z x y : P
⊢ ↑(pointReflection R (midpoint R x y)) y = x
Theorem: CategoryTheory.Limits.biproduct.toSubtype_fromSubtype
File: Mathlib/CategoryTheory/Limits/Shapes/Biproducts.lean

tactic: ext1 i
state_before: J : Type w
C : Type u
inst✝⁴ : Category C
inst✝³ : HasZeroMorphisms C
f : J → C
inst✝² : HasBiproduct f
p : J → Prop
inst✝¹ : HasBiproduct (Subtype.restrict p f)
inst✝ : DecidablePred p
⊢ toSubtype f p ≫ fromSubtype f p = map fun j => if p j then 𝟙 (f j) else 0

tactic: by_cases h : p i
state_before: case w
J : Type w
C : Type u
inst✝⁴ : Category C
inst✝³ : HasZeroMorphisms C
f : J → C
inst✝² : HasBiproduct f
p : J → Prop
inst✝¹ : HasBiproduct (Subtype.restrict p f)
inst✝ : DecidablePred p
i : J
⊢ ι f i ≫ toSubtype f p ≫ fromSubtype f p = ι f i ≫ map fun j => if p j then 𝟙 (f j) else 0

tactic: simp [h]
state_before: case pos
J : Type w
C : Type u
inst✝⁴ : Category C
inst✝³ : HasZeroMorphisms C
f : J → C
inst✝² : HasBiproduct f
p : J → Prop
inst✝¹ : HasBiproduct (Subtype.restrict p f)
inst✝ : DecidablePred p
i : J
h : p i
⊢ ι f i ≫ toSubtype f p ≫ fromSubtype f p = ι f i ≫ map fun j => if p j then 𝟙 (f j) else 0

tactic: simp [h]
state_before: case neg
J : Type w
C : Type u
inst✝⁴ : Category C
inst✝³ : HasZeroMorphisms C
f : J → C
inst✝² : HasBiproduct f
p : J → Prop
inst✝¹ : HasBiproduct (Subtype.restrict p f)
inst✝ : DecidablePred p
i : J
h : ¬p i
⊢ ι f i ≫ toSubtype f p ≫ fromSubtype f p = ι f i ≫ map fun j => if p j then 𝟙 (f j) else 0
Theorem: Matrix.cons_val'
File: Mathlib/Data/Matrix/Notation.lean

tactic: refine' Fin.cases _ _ i <;> simp
state_before: α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
v : n' → α
B : Fin m → n' → α
i : Fin (Nat.succ m)
j : n'
⊢ vecCons v B i j = vecCons (v j) (fun i => B i j) i
Theorem: Metric.hausdorffDist_closure₁
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: simp [hausdorffDist]
state_before: ι : Sort ?u.86576
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
⊢ hausdorffDist (closure s) t = hausdorffDist s t
Theorem: Finset.eraseNone_inter
File: Mathlib/Data/Finset/Option.lean

tactic: ext
state_before: α : Type u_1
β : Type ?u.12137
inst✝¹ : DecidableEq (Option α)
inst✝ : DecidableEq α
s t : Finset (Option α)
⊢ ↑eraseNone (s ∩ t) = ↑eraseNone s ∩ ↑eraseNone t

tactic: simp
state_before: case a
α : Type u_1
β : Type ?u.12137
inst✝¹ : DecidableEq (Option α)
inst✝ : DecidableEq α
s t : Finset (Option α)
a✝ : α
⊢ a✝ ∈ ↑eraseNone (s ∩ t) ↔ a✝ ∈ ↑eraseNone s ∩ ↑eraseNone t
Theorem: Equiv.Perm.cycleType_eq_zero
File: Mathlib/GroupTheory/Perm/Cycle/Type.lean

tactic: simp [cycleType_def, cycleFactorsFinset_eq_empty_iff]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
⊢ cycleType σ = 0 ↔ σ = 1
Theorem: List.replicate_sublist_replicate
File: Std/Data/List/Lemmas.lean

tactic: refine ⟨fun h => ?_, fun h => ?_⟩
state_before: α : Type u_1
m n : Nat
a : α
⊢ replicate m a <+ replicate n a ↔ m ≤ n

tactic: have := h.length_le
state_before: case refine_1
α : Type u_1
m n : Nat
a : α
h : replicate m a <+ replicate n a
⊢ m ≤ n

tactic: simp only [length_replicate] at this ⊢
state_before: case refine_1
α : Type u_1
m n : Nat
a : α
h : replicate m a <+ replicate n a
this : length (replicate m a) ≤ length (replicate n a)
⊢ m ≤ n

tactic: exact this
state_before: case refine_1
α : Type u_1
m n : Nat
a : α
h : replicate m a <+ replicate n a
this : m ≤ n
⊢ m ≤ n

tactic: induction h with
| refl => apply Sublist.refl
| step => simp [*, replicate, Sublist.cons]
state_before: case refine_2
α : Type u_1
m n : Nat
a : α
h : m ≤ n
⊢ replicate m a <+ replicate n a

tactic: apply Sublist.refl
state_before: case refine_2.refl
α : Type u_1
m n : Nat
a : α
⊢ replicate m a <+ replicate m a

tactic: simp [*, replicate, Sublist.cons]
state_before: case refine_2.step
α : Type u_1
m n : Nat
a : α
m✝ : Nat
a✝ : Nat.le m m✝
a_ih✝ : replicate m a <+ replicate m✝ a
⊢ replicate m a <+ replicate (succ m✝) a