1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Rel.abs_edgeDensity_sub_edgeDensity_le_one_sub_mul
File: Mathlib/Combinatorics/SimpleGraph/Density.lean

tactic: refine abs_sub_le_iff.2 ⟨edgeDensity_sub_edgeDensity_le_one_sub_mul r hs ht hs₂ ht₂, ?_⟩
state_before: 𝕜 : Type u_1
ι : Type u_2
κ : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hs₂ : s₂.Nonempty
ht₂ : t₂.Nonempty
⊢ |edgeDensity r s₂ t₂ - edgeDensity r s₁ t₁| ≤ 1 - ↑s₂.card / ↑s₁.card * (↑t₂.card / ↑t₁.card)
state_after: 𝕜 : Type u_1
ι : Type u_2
κ : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hs₂ : s₂.Nonempty
ht₂ : t₂.Nonempty
⊢ edgeDensity r s₁ t₁ - edgeDensity r s₂ t₂ ≤ 1 - ↑s₂.card / ↑s₁.card * (↑t₂.card / ↑t₁.card)

tactic: rw [← add_sub_cancel_right (edgeDensity r s₁ t₁) (edgeDensity (fun x y ↦ ¬r x y) s₁ t₁),
  ← add_sub_cancel_right (edgeDensity r s₂ t₂) (edgeDensity (fun x y ↦ ¬r x y) s₂ t₂),
  edgeDensity_add_edgeDensity_compl _ (hs₂.mono hs) (ht₂.mono ht),
  edgeDensity_add_edgeDensity_compl _ hs₂ ht₂, sub_sub_sub_cancel_left]
state_before: 𝕜 : Type u_1
ι : Type u_2
κ : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hs₂ : s₂.Nonempty
ht₂ : t₂.Nonempty
⊢ edgeDensity r s₁ t₁ - edgeDensity r s₂ t₂ ≤ 1 - ↑s₂.card / ↑s₁.card * (↑t₂.card / ↑t₁.card)
state_after: 𝕜 : Type u_1
ι : Type u_2
κ : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hs₂ : s₂.Nonempty
ht₂ : t₂.Nonempty
⊢ edgeDensity (fun x y => ¬r x y) s₂ t₂ - edgeDensity (fun x y => ¬r x y) s₁ t₁ ≤
    1 - ↑s₂.card / ↑s₁.card * (↑t₂.card / ↑t₁.card)

tactic: exact edgeDensity_sub_edgeDensity_le_one_sub_mul _ hs ht hs₂ ht₂
state_before: 𝕜 : Type u_1
ι : Type u_2
κ : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝ : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
hs : s₂ ⊆ s₁
ht : t₂ ⊆ t₁
hs₂ : s₂.Nonempty
ht₂ : t₂.Nonempty
⊢ edgeDensity (fun x y => ¬r x y) s₂ t₂ - edgeDensity (fun x y => ¬r x y) s₁ t₁ ≤
    1 - ↑s₂.card / ↑s₁.card * (↑t₂.card / ↑t₁.card)
state_after: no goals
Theorem: UniqueFactorizationMonoid.normalizedFactors_irreducible
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: obtain ⟨p, a_assoc, hp⟩ :=
  prime_factors_irreducible ha ⟨prime_of_normalized_factor, normalizedFactors_prod ha.ne_zero⟩
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
a : α
ha : Irreducible a
⊢ normalizedFactors a = {normalize a}
state_after: case intro.intro
α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
a : α
ha : Irreducible a
p : α
a_assoc : a ~ᵤ p
hp : normalizedFactors a = {p}
⊢ normalizedFactors a = {normalize a}

tactic: have p_mem : p ∈ normalizedFactors a := by
  rw [hp]
  exact Multiset.mem_singleton_self _
state_before: case intro.intro
α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
a : α
ha : Irreducible a
p : α
a_assoc : a ~ᵤ p
hp : normalizedFactors a = {p}
⊢ normalizedFactors a = {normalize a}
state_after: case intro.intro
α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
a : α
ha : Irreducible a
p : α
a_assoc : a ~ᵤ p
hp : normalizedFactors a = {p}
p_mem : p ∈ normalizedFactors a
⊢ normalizedFactors a = {normalize a}

tactic: convert hp
state_before: case intro.intro
α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
a : α
ha : Irreducible a
p : α
a_assoc : a ~ᵤ p
hp : normalizedFactors a = {p}
p_mem : p ∈ normalizedFactors a
⊢ normalizedFactors a = {normalize a}
state_after: case h.e'_3.h.e'_4
α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
a : α
ha : Irreducible a
p : α
a_assoc : a ~ᵤ p
hp : normalizedFactors a = {p}
p_mem : p ∈ normalizedFactors a
⊢ normalize a = p

tactic: rwa [← normalize_normalized_factor p p_mem, normalize_eq_normalize_iff, dvd_dvd_iff_associated]
state_before: case h.e'_3.h.e'_4
α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
a : α
ha : Irreducible a
p : α
a_assoc : a ~ᵤ p
hp : normalizedFactors a = {p}
p_mem : p ∈ normalizedFactors a
⊢ normalize a = p
state_after: no goals

tactic: rw [hp]
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
a : α
ha : Irreducible a
p : α
a_assoc : a ~ᵤ p
hp : normalizedFactors a = {p}
⊢ p ∈ normalizedFactors a
state_after: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
a : α
ha : Irreducible a
p : α
a_assoc : a ~ᵤ p
hp : normalizedFactors a = {p}
⊢ p ∈ {p}

tactic: exact Multiset.mem_singleton_self _
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
a : α
ha : Irreducible a
p : α
a_assoc : a ~ᵤ p
hp : normalizedFactors a = {p}
⊢ p ∈ {p}
state_after: no goals
Theorem: GeneralizedContinuedFraction.convergents'_succ
File: Mathlib/Algebra/ContinuedFractions/Computation/Translations.lean

tactic: rcases eq_or_ne (fract v) 0 with h | h
state_before: K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
⊢ (of v).convergents' (n + 1) = ↑⌊v⌋ + 1 / (of (fract v)⁻¹).convergents' n
state_after: case inl
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
h : fract v = 0
⊢ (of v).convergents' (n + 1) = ↑⌊v⌋ + 1 / (of (fract v)⁻¹).convergents' n

case inr
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
h : fract v ≠ 0
⊢ (of v).convergents' (n + 1) = ↑⌊v⌋ + 1 / (of (fract v)⁻¹).convergents' n

tactic: obtain ⟨a, rfl⟩ : ∃ a : ℤ, v = a := ⟨⌊v⌋, eq_of_sub_eq_zero h⟩
state_before: case inl
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
h : fract v = 0
⊢ (of v).convergents' (n + 1) = ↑⌊v⌋ + 1 / (of (fract v)⁻¹).convergents' n
state_after: case inl.intro
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
n : ℕ
a : ℤ
h : fract ↑a = 0
⊢ (of ↑a).convergents' (n + 1) = ↑⌊↑a⌋ + 1 / (of (fract ↑a)⁻¹).convergents' n

tactic: rw [convergents'_of_int, fract_intCast, inv_zero, ← cast_zero, convergents'_of_int, cast_zero,
  div_zero, add_zero, floor_intCast]
state_before: case inl.intro
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
n : ℕ
a : ℤ
h : fract ↑a = 0
⊢ (of ↑a).convergents' (n + 1) = ↑⌊↑a⌋ + 1 / (of (fract ↑a)⁻¹).convergents' n
state_after: no goals

tactic: rw [convergents', of_h_eq_floor, add_right_inj, convergents'Aux_succ_some (of_s_head h)]
state_before: case inr
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
h : fract v ≠ 0
⊢ (of v).convergents' (n + 1) = ↑⌊v⌋ + 1 / (of (fract v)⁻¹).convergents' n
state_after: case inr
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
h : fract v ≠ 0
⊢ { a := 1, b := ↑⌊(fract v)⁻¹⌋ }.a / ({ a := 1, b := ↑⌊(fract v)⁻¹⌋ }.b + convergents'Aux (of v).s.tail n) =
    1 / (of (fract v)⁻¹).convergents' n

tactic: rw [convergents', of_h_eq_floor, add_right_inj, of_s_tail]
state_before: K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
h : fract v ≠ 0
⊢ { a := 1, b := ↑⌊(fract v)⁻¹⌋ }.b + convergents'Aux (of v).s.tail n = (of (fract v)⁻¹).convergents' n
state_after: no goals
Theorem: List.mem_ofFn
File: Mathlib/Data/List/OfFn.lean

tactic: simp only [mem_iff_get, Set.mem_range, get_ofFn]
state_before: α : Type u
n : ℕ
f : Fin n → α
a : α
⊢ a ∈ ofFn f ↔ a ∈ Set.range f
state_after: α : Type u
n : ℕ
f : Fin n → α
a : α
⊢ (∃ n_1, f (Fin.cast ⋯ n_1) = a) ↔ ∃ y, f y = a

tactic: exact ⟨fun ⟨i, hi⟩ => ⟨Fin.cast (by simp) i, hi⟩, fun ⟨i, hi⟩ => ⟨Fin.cast (by simp) i, hi⟩⟩
state_before: α : Type u
n : ℕ
f : Fin n → α
a : α
⊢ (∃ n_1, f (Fin.cast ⋯ n_1) = a) ↔ ∃ y, f y = a
state_after: no goals

tactic: simp
state_before: α : Type u
n : ℕ
f : Fin n → α
a : α
x✝ : ∃ n_1, f (Fin.cast ⋯ n_1) = a
i : Fin (ofFn f).length
hi : f (Fin.cast ⋯ i) = a
⊢ (ofFn f).length = n
state_after: no goals

tactic: simp
state_before: α : Type u
n : ℕ
f : Fin n → α
a : α
x✝ : ∃ y, f y = a
i : Fin n
hi : f i = a
⊢ n = (ofFn f).length
state_after: no goals
Theorem: SimpleGraph.Walk.coe_support
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: cases p <;> rfl
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
p : G.Walk u v
⊢ ↑p.support = {u} + ↑p.support.tail
state_after: no goals
Theorem: Finset.subset_powersetCard_univ_iff
File: Mathlib/Data/Finset/Slice.lean

tactic: rw [mem_powersetCard_univ, mem_coe]
state_before: α : Type u_1
ι : Sort u_2
κ : ι → Sort u_3
inst✝ : Fintype α
𝒜 : Finset (Finset α)
s : Finset α
r : ℕ
A : Finset α
⊢ A ∈ 𝒜 → A ∈ powersetCard r univ ↔ A ∈ ↑𝒜 → A.card = r
state_after: no goals
Theorem: Polynomial.C_mul_monomial
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: simp only [← monomial_zero_left, monomial_mul_monomial, zero_add]
state_before: R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
⊢ C a * (monomial n) b = (monomial n) (a * b)
state_after: no goals
Theorem: Matrix.diagonal_neg
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext i j
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : DecidableEq n
inst✝ : NegZeroClass α
d : n → α
⊢ -diagonal d = diagonal fun i => -d i
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : DecidableEq n
inst✝ : NegZeroClass α
d : n → α
i j : n
⊢ (-diagonal d) i j = diagonal (fun i => -d i) i j

tactic: by_cases h : i = j <;>
simp [h]
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : DecidableEq n
inst✝ : NegZeroClass α
d : n → α
i j : n
⊢ (-diagonal d) i j = diagonal (fun i => -d i) i j
state_after: no goals
Theorem: Vector.map_mapAccumr
File: Mathlib/Data/Vector/MapLemmas.lean

tactic: induction xs using Vector.revInductionOn generalizing s <;> simp_all
state_before: α : Type u_3
n : ℕ
β : Type u_2
σ₁ : Type ?u.4097
γ : Type u_1
σ₂ : Type
xs : Vector α n
f₁✝ : β → σ₁ → σ₁ × γ
f₂ : α → σ₂ → σ₂ × β
s : σ₂
f₁ : β → γ
⊢ map f₁ (mapAccumr f₂ xs s).2 =
    (mapAccumr
        (fun x s =>
          let r := f₂ x s;
          (r.1, f₁ r.2))
        xs s).2
state_after: no goals
Theorem: preNormEDS_four
File: Mathlib/NumberTheory/EllipticDivisibilitySequence.lean

tactic: erw [preNormEDS_ofNat, preNormEDS'_four]
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : ℤ → R
f : R →+* S
b c d : R
⊢ preNormEDS b c d 4 = d
state_after: no goals
Theorem: Finset.inv_smul_mem_iff
File: Mathlib/Data/Finset/Pointwise.lean

tactic: rw [← smul_mem_smul_finset_iff a, smul_inv_smul]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : DecidableEq β
inst✝¹ : Group α
inst✝ : MulAction α β
s t : Finset β
a : α
b : β
⊢ a⁻¹ • b ∈ s ↔ b ∈ a • s
state_after: no goals
Theorem: Multiset.le_cons_of_not_mem
File: Mathlib/Data/Multiset/Basic.lean

tactic: refine ⟨?_, fun h => le_trans h <| le_cons_self _ _⟩
state_before: α : Type u_1
β : Type v
γ : Type u_2
s t : Multiset α
a : α
m : a ∉ s
⊢ s ≤ a ::ₘ t ↔ s ≤ t
state_after: α : Type u_1
β : Type v
γ : Type u_2
s t : Multiset α
a : α
m : a ∉ s
⊢ s ≤ a ::ₘ t → s ≤ t

tactic: suffices ∀ {t'}, s ≤ t' → a ∈ t' → a ::ₘ s ≤ t' by
  exact fun h => (cons_le_cons_iff a).1 (this h (mem_cons_self _ _))
state_before: α : Type u_1
β : Type v
γ : Type u_2
s t : Multiset α
a : α
m : a ∉ s
⊢ s ≤ a ::ₘ t → s ≤ t
state_after: α : Type u_1
β : Type v
γ : Type u_2
s t : Multiset α
a : α
m : a ∉ s
⊢ ∀ {t' : Multiset α}, s ≤ t' → a ∈ t' → a ::ₘ s ≤ t'

tactic: introv h
state_before: α : Type u_1
β : Type v
γ : Type u_2
s t : Multiset α
a : α
m : a ∉ s
⊢ ∀ {t' : Multiset α}, s ≤ t' → a ∈ t' → a ::ₘ s ≤ t'
state_after: α : Type u_1
β : Type v
γ : Type u_2
s t : Multiset α
a : α
m : a ∉ s
t' : Multiset α
h : s ≤ t'
⊢ a ∈ t' → a ::ₘ s ≤ t'

tactic: revert m
state_before: α : Type u_1
β : Type v
γ : Type u_2
s t : Multiset α
a : α
m : a ∉ s
t' : Multiset α
h : s ≤ t'
⊢ a ∈ t' → a ::ₘ s ≤ t'
state_after: α : Type u_1
β : Type v
γ : Type u_2
s t : Multiset α
a : α
t' : Multiset α
h : s ≤ t'
⊢ a ∉ s → a ∈ t' → a ::ₘ s ≤ t'

tactic: refine leInductionOn h ?_
state_before: α : Type u_1
β : Type v
γ : Type u_2
s t : Multiset α
a : α
t' : Multiset α
h : s ≤ t'
⊢ a ∉ s → a ∈ t' → a ::ₘ s ≤ t'
state_after: α : Type u_1
β : Type v
γ : Type u_2
s t : Multiset α
a : α
t' : Multiset α
h : s ≤ t'
⊢ ∀ {l₁ l₂ : List α}, l₁ <+ l₂ → a ∉ ↑l₁ → a ∈ ↑l₂ → a ::ₘ ↑l₁ ≤ ↑l₂

tactic: introv s m₁ m₂
state_before: α : Type u_1
β : Type v
γ : Type u_2
s t : Multiset α
a : α
t' : Multiset α
h : s ≤ t'
⊢ ∀ {l₁ l₂ : List α}, l₁ <+ l₂ → a ∉ ↑l₁ → a ∈ ↑l₂ → a ::ₘ ↑l₁ ≤ ↑l₂
state_after: α : Type u_1
β : Type v
γ : Type u_2
s✝ t : Multiset α
a : α
t' : Multiset α
h : s✝ ≤ t'
l₁ l₂ : List α
s : l₁ <+ l₂
m₁ : a ∉ ↑l₁
m₂ : a ∈ ↑l₂
⊢ a ::ₘ ↑l₁ ≤ ↑l₂

tactic: rcases append_of_mem m₂ with ⟨r₁, r₂, rfl⟩
state_before: α : Type u_1
β : Type v
γ : Type u_2
s✝ t : Multiset α
a : α
t' : Multiset α
h : s✝ ≤ t'
l₁ l₂ : List α
s : l₁ <+ l₂
m₁ : a ∉ ↑l₁
m₂ : a ∈ ↑l₂
⊢ a ::ₘ ↑l₁ ≤ ↑l₂
state_after: case intro.intro
α : Type u_1
β : Type v
γ : Type u_2
s✝ t : Multiset α
a : α
t' : Multiset α
h : s✝ ≤ t'
l₁ : List α
m₁ : a ∉ ↑l₁
r₁ r₂ : List α
s : l₁ <+ r₁ ++ a :: r₂
m₂ : a ∈ ↑(r₁ ++ a :: r₂)
⊢ a ::ₘ ↑l₁ ≤ ↑(r₁ ++ a :: r₂)

tactic: exact
  perm_middle.subperm_left.2
    ((subperm_cons _).2 <| ((sublist_or_mem_of_sublist s).resolve_right m₁).subperm)
state_before: case intro.intro
α : Type u_1
β : Type v
γ : Type u_2
s✝ t : Multiset α
a : α
t' : Multiset α
h : s✝ ≤ t'
l₁ : List α
m₁ : a ∉ ↑l₁
r₁ r₂ : List α
s : l₁ <+ r₁ ++ a :: r₂
m₂ : a ∈ ↑(r₁ ++ a :: r₂)
⊢ a ::ₘ ↑l₁ ≤ ↑(r₁ ++ a :: r₂)
state_after: no goals

tactic: exact fun h => (cons_le_cons_iff a).1 (this h (mem_cons_self _ _))
state_before: α : Type u_1
β : Type v
γ : Type u_2
s t : Multiset α
a : α
m : a ∉ s
this : ∀ {t' : Multiset α}, s ≤ t' → a ∈ t' → a ::ₘ s ≤ t'
⊢ s ≤ a ::ₘ t → s ≤ t
state_after: no goals
Theorem: ContinuousMultilinearMap.norm_ofSubsingleton
File: Mathlib/Analysis/NormedSpace/Multilinear/Basic.lean

tactic: letI : Unique ι := uniqueOfSubsingleton i
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : SeminormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
inst✝⁵ : SeminormedAddCommGroup G'
inst✝⁴ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝³ : NormedField 𝕜'
inst✝² : NormedSpace 𝕜' G
inst✝¹ : SMulCommClass 𝕜 𝕜' G
inst✝ : Subsingleton ι
i : ι
f : G →L[𝕜] G'
⊢ ‖(ofSubsingleton 𝕜 G G' i) f‖ = ‖f‖
state_after: 𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : SeminormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
inst✝⁵ : SeminormedAddCommGroup G'
inst✝⁴ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝³ : NormedField 𝕜'
inst✝² : NormedSpace 𝕜' G
inst✝¹ : SMulCommClass 𝕜 𝕜' G
inst✝ : Subsingleton ι
i : ι
f : G →L[𝕜] G'
this : Unique ι := uniqueOfSubsingleton i
⊢ ‖(ofSubsingleton 𝕜 G G' i) f‖ = ‖f‖

tactic: simp [norm_def, ContinuousLinearMap.norm_def, (Equiv.funUnique _ _).symm.surjective.forall]
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹⁶ : Fintype ι
inst✝¹⁵ : Fintype ι'
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝¹² : (i : ι) → NormedSpace 𝕜 (E i)
inst✝¹¹ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁹ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁸ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁷ : SeminormedAddCommGroup G
inst✝⁶ : NormedSpace 𝕜 G
inst✝⁵ : SeminormedAddCommGroup G'
inst✝⁴ : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m : (i : ι) → E i
𝕜' : Type u_1
inst✝³ : NormedField 𝕜'
inst✝² : NormedSpace 𝕜' G
inst✝¹ : SMulCommClass 𝕜 𝕜' G
inst✝ : Subsingleton ι
i : ι
f : G →L[𝕜] G'
this : Unique ι := uniqueOfSubsingleton i
⊢ ‖(ofSubsingleton 𝕜 G G' i) f‖ = ‖f‖
state_after: no goals
Theorem: CategoryTheory.Biprod.ofComponents_comp
File: Mathlib/CategoryTheory/Preadditive/Biproducts.lean

tactic: dsimp [Biprod.ofComponents]
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : Preadditive C
inst✝ : HasBinaryBiproducts C
X₁✝ X₂✝ Y₁✝ Y₂✝ : C
f₁₁✝ : X₁✝ ⟶ Y₁✝
f₁₂✝ : X₁✝ ⟶ Y₂✝
f₂₁✝ : X₂✝ ⟶ Y₁✝
f₂₂✝ : X₂✝ ⟶ Y₂✝
X₁ X₂ Y₁ Y₂ Z₁ Z₂ : C
f₁₁ : X₁ ⟶ Y₁
f₁₂ : X₁ ⟶ Y₂
f₂₁ : X₂ ⟶ Y₁
f₂₂ : X₂ ⟶ Y₂
g₁₁ : Y₁ ⟶ Z₁
g₁₂ : Y₁ ⟶ Z₂
g₂₁ : Y₂ ⟶ Z₁
g₂₂ : Y₂ ⟶ Z₂
⊢ ofComponents f₁₁ f₁₂ f₂₁ f₂₂ ≫ ofComponents g₁₁ g₁₂ g₂₁ g₂₂ =
    ofComponents (f₁₁ ≫ g₁₁ + f₁₂ ≫ g₂₁) (f₁₁ ≫ g₁₂ + f₁₂ ≫ g₂₂) (f₂₁ ≫ g₁₁ + f₂₂ ≫ g₂₁) (f₂₁ ≫ g₁₂ + f₂₂ ≫ g₂₂)
state_after: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : Preadditive C
inst✝ : HasBinaryBiproducts C
X₁✝ X₂✝ Y₁✝ Y₂✝ : C
f₁₁✝ : X₁✝ ⟶ Y₁✝
f₁₂✝ : X₁✝ ⟶ Y₂✝
f₂₁✝ : X₂✝ ⟶ Y₁✝
f₂₂✝ : X₂✝ ⟶ Y₂✝
X₁ X₂ Y₁ Y₂ Z₁ Z₂ : C
f₁₁ : X₁ ⟶ Y₁
f₁₂ : X₁ ⟶ Y₂
f₂₁ : X₂ ⟶ Y₁
f₂₂ : X₂ ⟶ Y₂
g₁₁ : Y₁ ⟶ Z₁
g₁₂ : Y₁ ⟶ Z₂
g₂₁ : Y₂ ⟶ Z₁
g₂₂ : Y₂ ⟶ Z₂
⊢ (biprod.fst ≫ f₁₁ ≫ biprod.inl + biprod.fst ≫ f₁₂ ≫ biprod.inr + biprod.snd ≫ f₂₁ ≫ biprod.inl +
        biprod.snd ≫ f₂₂ ≫ biprod.inr) ≫
      (biprod.fst ≫ g₁₁ ≫ biprod.inl + biprod.fst ≫ g₁₂ ≫ biprod.inr + biprod.snd ≫ g₂₁ ≫ biprod.inl +
        biprod.snd ≫ g₂₂ ≫ biprod.inr) =
    biprod.fst ≫ (f₁₁ ≫ g₁₁ + f₁₂ ≫ g₂₁) ≫ biprod.inl + biprod.fst ≫ (f₁₁ ≫ g₁₂ + f₁₂ ≫ g₂₂) ≫ biprod.inr +
        biprod.snd ≫ (f₂₁ ≫ g₁₁ + f₂₂ ≫ g₂₁) ≫ biprod.inl +
      biprod.snd ≫ (f₂₁ ≫ g₁₂ + f₂₂ ≫ g₂₂) ≫ biprod.inr

tactic: ext <;>
  simp only [add_comp, comp_add, add_comp_assoc, add_zero, zero_add, biprod.inl_fst,
    biprod.inl_snd, biprod.inr_fst, biprod.inr_snd, biprod.inl_fst_assoc, biprod.inl_snd_assoc,
    biprod.inr_fst_assoc, biprod.inr_snd_assoc, comp_zero, zero_comp, Category.assoc]
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : Preadditive C
inst✝ : HasBinaryBiproducts C
X₁✝ X₂✝ Y₁✝ Y₂✝ : C
f₁₁✝ : X₁✝ ⟶ Y₁✝
f₁₂✝ : X₁✝ ⟶ Y₂✝
f₂₁✝ : X₂✝ ⟶ Y₁✝
f₂₂✝ : X₂✝ ⟶ Y₂✝
X₁ X₂ Y₁ Y₂ Z₁ Z₂ : C
f₁₁ : X₁ ⟶ Y₁
f₁₂ : X₁ ⟶ Y₂
f₂₁ : X₂ ⟶ Y₁
f₂₂ : X₂ ⟶ Y₂
g₁₁ : Y₁ ⟶ Z₁
g₁₂ : Y₁ ⟶ Z₂
g₂₁ : Y₂ ⟶ Z₁
g₂₂ : Y₂ ⟶ Z₂
⊢ (biprod.fst ≫ f₁₁ ≫ biprod.inl + biprod.fst ≫ f₁₂ ≫ biprod.inr + biprod.snd ≫ f₂₁ ≫ biprod.inl +
        biprod.snd ≫ f₂₂ ≫ biprod.inr) ≫
      (biprod.fst ≫ g₁₁ ≫ biprod.inl + biprod.fst ≫ g₁₂ ≫ biprod.inr + biprod.snd ≫ g₂₁ ≫ biprod.inl +
        biprod.snd ≫ g₂₂ ≫ biprod.inr) =
    biprod.fst ≫ (f₁₁ ≫ g₁₁ + f₁₂ ≫ g₂₁) ≫ biprod.inl + biprod.fst ≫ (f₁₁ ≫ g₁₂ + f₁₂ ≫ g₂₂) ≫ biprod.inr +
        biprod.snd ≫ (f₂₁ ≫ g₁₁ + f₂₂ ≫ g₂₁) ≫ biprod.inl +
      biprod.snd ≫ (f₂₁ ≫ g₁₂ + f₂₂ ≫ g₂₂) ≫ biprod.inr
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.hom_inv_whiskerRight
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: rw [← comp_whiskerRight, hom_inv_id, id_whiskerRight]
state_before: C : Type u
𝒞 : Category.{v, u} C
inst✝ : MonoidalCategory C
X Y : C
f : X ≅ Y
Z : C
⊢ f.hom ▷ Z ≫ f.inv ▷ Z = 𝟙 (X ⊗ Z)
state_after: no goals
Theorem: Filter.Tendsto.atBot_add
File: Mathlib/Topology/Order/LeftRightNhds.lean

tactic: conv in _ + _ => rw [add_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrderedAddCommGroup α
inst✝ : OrderTopology α
l : Filter β
f g : β → α
C : α
hf : Tendsto f l atBot
hg : Tendsto g l (𝓝 C)
⊢ Tendsto (fun x => f x + g x) l atBot
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrderedAddCommGroup α
inst✝ : OrderTopology α
l : Filter β
f g : β → α
C : α
hf : Tendsto f l atBot
hg : Tendsto g l (𝓝 C)
⊢ Tendsto (fun x => g x + f x) l atBot

tactic: exact hg.add_atBot hf
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrderedAddCommGroup α
inst✝ : OrderTopology α
l : Filter β
f g : β → α
C : α
hf : Tendsto f l atBot
hg : Tendsto g l (𝓝 C)
⊢ Tendsto (fun x => g x + f x) l atBot
state_after: no goals
Theorem: Mathlib.Tactic.Ring.of_lift
File: Mathlib/Tactic/Ring/Basic.lean

tactic: rwa [← h1.1, ← h2.1]
state_before: u : Lean.Level
R : Type ?u.234147
α✝ : Q(Type u)
sα : Q(CommSemiring $α✝)
inst✝ : CommSemiring R
α β : Type u_1
inst : CSLift α β
a b : α
a' b' : β
h1 : CSLiftVal a a'
h2 : CSLiftVal b b'
h : a' = b'
⊢ CSLift.lift a = CSLift.lift b
state_after: no goals
Theorem: Pell.IsFundamental.zpow_y_lt_iff_lt
File: Mathlib/NumberTheory/Pell.lean

tactic: refine ⟨fun H => ?_, fun H => h.y_strictMono H⟩
state_before: d : ℤ
a : Solution₁ d
h : IsFundamental a
m n : ℤ
⊢ (a ^ m).y < (a ^ n).y ↔ m < n
state_after: d : ℤ
a : Solution₁ d
h : IsFundamental a
m n : ℤ
H : (a ^ m).y < (a ^ n).y
⊢ m < n

tactic: contrapose! H
state_before: d : ℤ
a : Solution₁ d
h : IsFundamental a
m n : ℤ
H : (a ^ m).y < (a ^ n).y
⊢ m < n
state_after: d : ℤ
a : Solution₁ d
h : IsFundamental a
m n : ℤ
H : n ≤ m
⊢ (a ^ n).y ≤ (a ^ m).y

tactic: exact h.y_strictMono.monotone H
state_before: d : ℤ
a : Solution₁ d
h : IsFundamental a
m n : ℤ
H : n ≤ m
⊢ (a ^ n).y ≤ (a ^ m).y
state_after: no goals