tasksource/leandojo huggingface dataset:
Theorem: Matrix.mulVec_smul
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext i
state_before: l : Type ?u.867277
m : Type u_4
n : Type u_1
o : Type ?u.867286
m' : o → Type ?u.867291
n' : o → Type ?u.867296
R : Type u_2
S : Type u_3
α : Type v
β : Type w
γ : Type ?u.867309
inst✝⁵ : NonUnitalNonAssocSemiring α
inst✝⁴ : Fintype n
inst✝³ : Monoid R
inst✝² : NonUnitalNonAssocSemiring S
inst✝¹ : DistribMulAction R S
inst✝ : SMulCommClass R S S
M : Matrix m n S
b : R
v : n → S
⊢ mulVec M (b • v) = b • mulVec M v

tactic: simp only [mulVec, dotProduct, Finset.smul_sum, Pi.smul_apply, mul_smul_comm]
state_before: case h
l : Type ?u.867277
m : Type u_4
n : Type u_1
o : Type ?u.867286
m' : o → Type ?u.867291
n' : o → Type ?u.867296
R : Type u_2
S : Type u_3
α : Type v
β : Type w
γ : Type ?u.867309
inst✝⁵ : NonUnitalNonAssocSemiring α
inst✝⁴ : Fintype n
inst✝³ : Monoid R
inst✝² : NonUnitalNonAssocSemiring S
inst✝¹ : DistribMulAction R S
inst✝ : SMulCommClass R S S
M : Matrix m n S
b : R
v : n → S
i : m
⊢ mulVec M (b • v) i = (b • mulVec M v) i
Theorem: Multiset.Ioc_self
File: Mathlib/Data/Multiset/LocallyFinite.lean

tactic: rw [Ioc, Finset.Ioc_self, Finset.empty_val]
state_before: α : Type u_1
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ Ioc a a = 0
Theorem: OreLocalization.add_left_neg
File: Mathlib/RingTheory/OreLocalization/Basic.lean

tactic: induction' x using OreLocalization.ind with r s
state_before: R : Type u_1
inst✝¹ : Ring R
S : Submonoid R
inst✝ : OreSet S
x : OreLocalization R S
⊢ -x + x = 0

tactic: simp
state_before: case c
R : Type u_1
inst✝¹ : Ring R
S : Submonoid R
inst✝ : OreSet S
r : R
s : { x // x ∈ S }
⊢ -(r /ₒ s) + r /ₒ s = 0
Theorem: Function.Injective.injOn_range
File: Mathlib/Data/Set/Function.lean

tactic: rintro _ ⟨x, rfl⟩ _ ⟨y, rfl⟩ H
state_before: α : Type u_1
β : Type u_3
γ : Type u_2
ι : Sort ?u.34009
π : α → Type ?u.34014
s s₁ s₂ : Set α
t t₁ t₂ : Set β
p : Set γ
f f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b : β
h : Injective (g ∘ f)
⊢ InjOn g (range f)

tactic: exact congr_arg f (h H)
state_before: case intro.intro
α : Type u_1
β : Type u_3
γ : Type u_2
ι : Sort ?u.34009
π : α → Type ?u.34014
s s₁ s₂ : Set α
t t₁ t₂ : Set β
p : Set γ
f f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b : β
h : Injective (g ∘ f)
x y : α
H : g (f x) = g (f y)
⊢ f x = f y
Theorem: Matrix.submatrix_diagonal
File: Mathlib/Data/Matrix/Basic.lean

tactic: rw [submatrix_apply]
state_before: l : Type u_2
m : Type u_1
n : Type ?u.1089606
o : Type ?u.1089609
m' : o → Type ?u.1089614
n' : o → Type ?u.1089619
R : Type ?u.1089622
S : Type ?u.1089625
α : Type v
β : Type w
γ : Type ?u.1089632
inst✝² : Zero α
inst✝¹ : DecidableEq m
inst✝ : DecidableEq l
d : m → α
e : l → m
he : Function.Injective e
i j : l
⊢ submatrix (diagonal d) e e i j = diagonal (d ∘ e) i j

tactic: by_cases h : i = j
state_before: l : Type u_2
m : Type u_1
n : Type ?u.1089606
o : Type ?u.1089609
m' : o → Type ?u.1089614
n' : o → Type ?u.1089619
R : Type ?u.1089622
S : Type ?u.1089625
α : Type v
β : Type w
γ : Type ?u.1089632
inst✝² : Zero α
inst✝¹ : DecidableEq m
inst✝ : DecidableEq l
d : m → α
e : l → m
he : Function.Injective e
i j : l
⊢ diagonal d (e i) (e j) = diagonal (d ∘ e) i j

tactic: rw [h, diagonal_apply_eq, diagonal_apply_eq]
state_before: case pos
l : Type u_2
m : Type u_1
n : Type ?u.1089606
o : Type ?u.1089609
m' : o → Type ?u.1089614
n' : o → Type ?u.1089619
R : Type ?u.1089622
S : Type ?u.1089625
α : Type v
β : Type w
γ : Type ?u.1089632
inst✝² : Zero α
inst✝¹ : DecidableEq m
inst✝ : DecidableEq l
d : m → α
e : l → m
he : Function.Injective e
i j : l
h : i = j
⊢ diagonal d (e i) (e j) = diagonal (d ∘ e) i j

tactic: simp only [Function.comp_apply]
state_before: case pos
l : Type u_2
m : Type u_1
n : Type ?u.1089606
o : Type ?u.1089609
m' : o → Type ?u.1089614
n' : o → Type ?u.1089619
R : Type ?u.1089622
S : Type ?u.1089625
α : Type v
β : Type w
γ : Type ?u.1089632
inst✝² : Zero α
inst✝¹ : DecidableEq m
inst✝ : DecidableEq l
d : m → α
e : l → m
he : Function.Injective e
i j : l
h : i = j
⊢ d (e j) = (d ∘ e) j

tactic: rw [diagonal_apply_ne _ h, diagonal_apply_ne _ (he.ne h)]
state_before: case neg
l : Type u_2
m : Type u_1
n : Type ?u.1089606
o : Type ?u.1089609
m' : o → Type ?u.1089614
n' : o → Type ?u.1089619
R : Type ?u.1089622
S : Type ?u.1089625
α : Type v
β : Type w
γ : Type ?u.1089632
inst✝² : Zero α
inst✝¹ : DecidableEq m
inst✝ : DecidableEq l
d : m → α
e : l → m
he : Function.Injective e
i j : l
h : ¬i = j
⊢ diagonal d (e i) (e j) = diagonal (d ∘ e) i j
Theorem: Function.IsPeriodicPt.const_mul
File: Mathlib/Dynamics/PeriodicPts.lean

tactic: simp only [mul_comm n, hm.mul_const n]
state_before: α : Type u_1
β : Type ?u.2402
f fa : α → α
fb : β → β
x y : α
m n✝ : ℕ
hm : IsPeriodicPt f m x
n : ℕ
⊢ IsPeriodicPt f (n * m) x
Theorem: ProjectiveSpectrum.mem_compl_zeroLocus_iff_not_mem
File: Mathlib/AlgebraicGeometry/ProjectiveSpectrum/Topology.lean

tactic: rw [Set.mem_compl_iff, mem_zeroLocus, Set.singleton_subset_iff]
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommSemiring R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
I : ProjectiveSpectrum 𝒜
⊢ I ∈ zeroLocus 𝒜 {f}ᶜ ↔ ¬f ∈ I.asHomogeneousIdeal

tactic: rfl
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommSemiring R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
I : ProjectiveSpectrum 𝒜
⊢ ¬f ∈ ↑I.asHomogeneousIdeal ↔ ¬f ∈ I.asHomogeneousIdeal
Theorem: Submodule.smul_induction_on'
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: refine' Exists.elim _ fun (h : x ∈ I • N) (H : p x h) => H
state_before: R : Type u
M : Type v
F : Type ?u.42169
G : Type ?u.42172
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
x : M
hx : x ∈ I • N
p : (x : M) → x ∈ I • N → Prop
Hb : ∀ (r : R) (hr : r ∈ I) (n : M) (hn : n ∈ N), p (r • n) (_ : r • n ∈ I • N)
H1 : ∀ (x : M) (hx : x ∈ I • N) (y : M) (hy : y ∈ I • N), p x hx → p y hy → p (x + y) (_ : x + y ∈ I • N)
⊢ p x hx

tactic: exact
  smul_induction_on hx (fun a ha x hx => ⟨_, Hb _ ha _ hx⟩) fun x y ⟨_, hx⟩ ⟨_, hy⟩ =>
    ⟨_, H1 _ _ _ _ hx hy⟩
state_before: R : Type u
M : Type v
F : Type ?u.42169
G : Type ?u.42172
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
I J : Ideal R
N P : Submodule R M
x : M
hx : x ∈ I • N
p : (x : M) → x ∈ I • N → Prop
Hb : ∀ (r : R) (hr : r ∈ I) (n : M) (hn : n ∈ N), p (r • n) (_ : r • n ∈ I • N)
H1 : ∀ (x : M) (hx : x ∈ I • N) (y : M) (hy : y ∈ I • N), p x hx → p y hy → p (x + y) (_ : x + y ∈ I • N)
⊢ ∃ x_1, p x x_1
Theorem: Set.Ico_union_Ici
File: Mathlib/Data/Set/Intervals/Basic.lean

tactic: cases' le_total a b with hab hab <;> simp [hab] at h
state_before: α : Type u_1
β : Type ?u.83670
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h : c ≤ max a b
⊢ Ico a b ∪ Ici c = Ici (min a c)

tactic: exact Ico_union_Ici' h
state_before: case inl
α : Type u_1
β : Type ?u.83670
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
hab : a ≤ b
h : c ≤ b
⊢ Ico a b ∪ Ici c = Ici (min a c)

tactic: simp [*]
state_before: case inr
α : Type u_1
β : Type ?u.83670
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
hab : b ≤ a
h : c ≤ a
⊢ Ico a b ∪ Ici c = Ici (min a c)
Theorem: Std.AssocList.foldlM_eq
File: Std/Data/AssocList.lean

tactic: induction l generalizing init <;> simp [*, foldlM]
state_before: m : Type u_1 → Type u_2
δ : Type u_1
α : Type u_3
β : Type u_4
inst✝ : Monad m
f : δ → α → β → m δ
init : δ
l : AssocList α β
⊢ foldlM f init l =
    List.foldlM
      (fun d x =>
        match x with
        | (a, b) => f d a b)
      init (toList l)
Theorem: Monotone.rightLim_le_leftLim
File: Mathlib/Topology/Algebra/Order/LeftRightLim.lean

tactic: letI : TopologicalSpace α := Preorder.topology α
state_before: α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : ConditionallyCompleteLinearOrder β
inst✝¹ : TopologicalSpace β
inst✝ : OrderTopology β
f : α → β
hf : Monotone f
x y : α
h : x < y
⊢ rightLim f x ≤ leftLim f y

tactic: haveI : OrderTopology α := ⟨rfl⟩
state_before: α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : ConditionallyCompleteLinearOrder β
inst✝¹ : TopologicalSpace β
inst✝ : OrderTopology β
f : α → β
hf : Monotone f
x y : α
h : x < y
this : TopologicalSpace α := Preorder.topology α
⊢ rightLim f x ≤ leftLim f y

tactic: rcases eq_or_ne (𝓝[<] y) ⊥ with (h' | h')
state_before: α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : ConditionallyCompleteLinearOrder β
inst✝¹ : TopologicalSpace β
inst✝ : OrderTopology β
f : α → β
hf : Monotone f
x y : α
h : x < y
this✝ : TopologicalSpace α := Preorder.topology α
this : OrderTopology α
⊢ rightLim f x ≤ leftLim f y

tactic: obtain ⟨a, ⟨xa, ay⟩⟩ : (Ioo x y).Nonempty :=
  forall_mem_nonempty_iff_neBot.2 (neBot_iff.2 h') (Ioo x y)
    (Ioo_mem_nhdsWithin_Iio ⟨h, le_refl _⟩)
state_before: case inr
α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : ConditionallyCompleteLinearOrder β
inst✝¹ : TopologicalSpace β
inst✝ : OrderTopology β
f : α → β
hf : Monotone f
x y : α
h : x < y
this✝ : TopologicalSpace α := Preorder.topology α
this : OrderTopology α
h' : 𝓝[Iio y] y ≠ ⊥
⊢ rightLim f x ≤ leftLim f y

tactic: calc
  rightLim f x ≤ f a := hf.rightLim_le xa
  _ ≤ leftLim f y := hf.le_leftLim ay
state_before: case inr.intro.intro
α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : ConditionallyCompleteLinearOrder β
inst✝¹ : TopologicalSpace β
inst✝ : OrderTopology β
f : α → β
hf : Monotone f
x y : α
h : x < y
this✝ : TopologicalSpace α := Preorder.topology α
this : OrderTopology α
h' : 𝓝[Iio y] y ≠ ⊥
a : α
xa : x < a
ay : a < y
⊢ rightLim f x ≤ leftLim f y

tactic: simp [leftLim, h']
state_before: case inl
α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : ConditionallyCompleteLinearOrder β
inst✝¹ : TopologicalSpace β
inst✝ : OrderTopology β
f : α → β
hf : Monotone f
x y : α
h : x < y
this✝ : TopologicalSpace α := Preorder.topology α
this : OrderTopology α
h' : 𝓝[Iio y] y = ⊥
⊢ rightLim f x ≤ leftLim f y

tactic: exact rightLim_le hf h
state_before: case inl
α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : ConditionallyCompleteLinearOrder β
inst✝¹ : TopologicalSpace β
inst✝ : OrderTopology β
f : α → β
hf : Monotone f
x y : α
h : x < y
this✝ : TopologicalSpace α := Preorder.topology α
this : OrderTopology α
h' : 𝓝[Iio y] y = ⊥
⊢ rightLim f x ≤ f y
Theorem: Subgroup.range_mem_rightTransversals
File: Mathlib/GroupTheory/Complement.lean

tactic: rintro ⟨-, q₁, rfl⟩ ⟨-, q₂, rfl⟩ h
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
f : Quotient (QuotientGroup.rightRel H) → G
hf : ∀ (q : Quotient (QuotientGroup.rightRel H)), Quotient.mk'' (f q) = q
⊢ Function.Injective (Set.restrict (Set.range f) Quotient.mk'')

tactic: exact Subtype.ext $ congr_arg f $ ((hf q₁).symm.trans h).trans (hf q₂)
state_before: case mk.intro.mk.intro
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
f : Quotient (QuotientGroup.rightRel H) → G
hf : ∀ (q : Quotient (QuotientGroup.rightRel H)), Quotient.mk'' (f q) = q
q₁ q₂ : Quotient (QuotientGroup.rightRel H)
h :
  Set.restrict (Set.range f) Quotient.mk'' { val := f q₁, property := (_ : ∃ y, f y = f q₁) } =
    Set.restrict (Set.range f) Quotient.mk'' { val := f q₂, property := (_ : ∃ y, f y = f q₂) }
⊢ { val := f q₁, property := (_ : ∃ y, f y = f q₁) } = { val := f q₂, property := (_ : ∃ y, f y = f q₂) }
Theorem: exp_eq_exp
File: Mathlib/Analysis/NormedSpace/Exponential.lean

tactic: ext x
state_before: 𝕂 : Type u_2
𝕂' : Type u_3
𝔸 : Type u_1
inst✝⁶ : Field 𝕂
inst✝⁵ : Field 𝕂'
inst✝⁴ : Ring 𝔸
inst✝³ : Algebra 𝕂 𝔸
inst✝² : Algebra 𝕂' 𝔸
inst✝¹ : TopologicalSpace 𝔸
inst✝ : TopologicalRing 𝔸
⊢ exp 𝕂 = exp 𝕂'

tactic: rw [exp, exp]
state_before: case h
𝕂 : Type u_2
𝕂' : Type u_3
𝔸 : Type u_1
inst✝⁶ : Field 𝕂
inst✝⁵ : Field 𝕂'
inst✝⁴ : Ring 𝔸
inst✝³ : Algebra 𝕂 𝔸
inst✝² : Algebra 𝕂' 𝔸
inst✝¹ : TopologicalSpace 𝔸
inst✝ : TopologicalRing 𝔸
x : 𝔸
⊢ exp 𝕂 x = exp 𝕂' x

tactic: refine' tsum_congr fun n => _
state_before: case h
𝕂 : Type u_2
𝕂' : Type u_3
𝔸 : Type u_1
inst✝⁶ : Field 𝕂
inst✝⁵ : Field 𝕂'
inst✝⁴ : Ring 𝔸
inst✝³ : Algebra 𝕂 𝔸
inst✝² : Algebra 𝕂' 𝔸
inst✝¹ : TopologicalSpace 𝔸
inst✝ : TopologicalRing 𝔸
x : 𝔸
⊢ FormalMultilinearSeries.sum (expSeries 𝕂 𝔸) x = FormalMultilinearSeries.sum (expSeries 𝕂' 𝔸) x

tactic: rw [expSeries_eq_expSeries 𝕂 𝕂' 𝔸 n x]
state_before: case h
𝕂 : Type u_2
𝕂' : Type u_3
𝔸 : Type u_1
inst✝⁶ : Field 𝕂
inst✝⁵ : Field 𝕂'
inst✝⁴ : Ring 𝔸
inst✝³ : Algebra 𝕂 𝔸
inst✝² : Algebra 𝕂' 𝔸
inst✝¹ : TopologicalSpace 𝔸
inst✝ : TopologicalRing 𝔸
x : 𝔸
n : ℕ
⊢ (↑(expSeries 𝕂 𝔸 n) fun x_1 => x) = ↑(expSeries 𝕂' 𝔸 n) fun x_1 => x
Theorem: ZMod.addOrderOf_coe
File: Mathlib/Data/ZMod/Basic.lean

tactic: cases' a with a
state_before: a n : ℕ
n0 : n ≠ 0
⊢ addOrderOf ↑a = n / Nat.gcd n a

tactic: simp [Nat.pos_of_ne_zero n0]
state_before: case zero
n : ℕ
n0 : n ≠ 0
⊢ addOrderOf ↑Nat.zero = n / Nat.gcd n Nat.zero

case succ
n : ℕ
n0 : n ≠ 0
a : ℕ
⊢ addOrderOf ↑(Nat.succ a) = n / Nat.gcd n (Nat.succ a)

tactic: rw [← Nat.smul_one_eq_coe, addOrderOf_nsmul' _ a.succ_ne_zero, ZMod.addOrderOf_one]
state_before: case succ
n : ℕ
n0 : n ≠ 0
a : ℕ
⊢ addOrderOf ↑(Nat.succ a) = n / Nat.gcd n (Nat.succ a)
Theorem: TensorProduct.sum_tmul
File: Mathlib/LinearAlgebra/TensorProduct.lean

tactic: induction' s using Finset.induction with a s has ih h
state_before: R : Type u_4
inst✝¹⁶ : CommSemiring R
R' : Type ?u.457403
inst✝¹⁵ : Monoid R'
R'' : Type ?u.457409
inst✝¹⁴ : Semiring R''
M : Type u_2
N : Type u_3
P : Type ?u.457421
Q : Type ?u.457424
S : Type ?u.457427
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid N
inst✝¹¹ : AddCommMonoid P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : AddCommMonoid S
inst✝⁸ : Module R M
inst✝⁷ : Module R N
inst✝⁶ : Module R P
inst✝⁵ : Module R Q
inst✝⁴ : Module R S
inst✝³ : DistribMulAction R' M
inst✝² : Module R'' M
inst✝¹ : SMulCommClass R R' M
inst✝ : SMulCommClass R R'' M
α : Type u_1
s : Finset α
m : α → M
n : N
⊢ (∑ a in s, m a) ⊗ₜ[R] n = ∑ a in s, m a ⊗ₜ[R] n

tactic: simp
state_before: case empty
R : Type u_4
inst✝¹⁶ : CommSemiring R
R' : Type ?u.457403
inst✝¹⁵ : Monoid R'
R'' : Type ?u.457409
inst✝¹⁴ : Semiring R''
M : Type u_2
N : Type u_3
P : Type ?u.457421
Q : Type ?u.457424
S : Type ?u.457427
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid N
inst✝¹¹ : AddCommMonoid P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : AddCommMonoid S
inst✝⁸ : Module R M
inst✝⁷ : Module R N
inst✝⁶ : Module R P
inst✝⁵ : Module R Q
inst✝⁴ : Module R S
inst✝³ : DistribMulAction R' M
inst✝² : Module R'' M
inst✝¹ : SMulCommClass R R' M
inst✝ : SMulCommClass R R'' M
α : Type u_1
m : α → M
n : N
⊢ (∑ a in ∅, m a) ⊗ₜ[R] n = ∑ a in ∅, m a ⊗ₜ[R] n

tactic: simp [Finset.sum_insert has, add_tmul, ih]
state_before: case insert
R : Type u_4
inst✝¹⁶ : CommSemiring R
R' : Type ?u.457403
inst✝¹⁵ : Monoid R'
R'' : Type ?u.457409
inst✝¹⁴ : Semiring R''
M : Type u_2
N : Type u_3
P : Type ?u.457421
Q : Type ?u.457424
S : Type ?u.457427
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid N
inst✝¹¹ : AddCommMonoid P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : AddCommMonoid S
inst✝⁸ : Module R M
inst✝⁷ : Module R N
inst✝⁶ : Module R P
inst✝⁵ : Module R Q
inst✝⁴ : Module R S
inst✝³ : DistribMulAction R' M
inst✝² : Module R'' M
inst✝¹ : SMulCommClass R R' M
inst✝ : SMulCommClass R R'' M
α : Type u_1
m : α → M
n : N
a : α
s : Finset α
has : ¬a ∈ s
ih : (∑ a in s, m a) ⊗ₜ[R] n = ∑ a in s, m a ⊗ₜ[R] n
⊢ (∑ a in insert a s, m a) ⊗ₜ[R] n = ∑ a in insert a s, m a ⊗ₜ[R] n
Theorem: Matrix.blockDiagonal'_zero
File: Mathlib/Data/Matrix/Block.lean

tactic: ext
state_before: l : Type ?u.203967
m : Type ?u.203970
n : Type ?u.203973
o : Type u_1
p : Type ?u.203979
q : Type ?u.203982
m' : o → Type u_2
n' : o → Type u_3
p' : o → Type ?u.203997
R : Type ?u.204000
S : Type ?u.204003
α : Type u_4
β : Type ?u.204009
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
⊢ blockDiagonal' 0 = 0

tactic: simp [blockDiagonal'_apply]
state_before: case a.h
l : Type ?u.203967
m : Type ?u.203970
n : Type ?u.203973
o : Type u_1
p : Type ?u.203979
q : Type ?u.203982
m' : o → Type u_2
n' : o → Type u_3
p' : o → Type ?u.203997
R : Type ?u.204000
S : Type ?u.204003
α : Type u_4
β : Type ?u.204009
inst✝² : DecidableEq o
inst✝¹ : Zero α
inst✝ : Zero β
i✝ : (i : o) × m' i
x✝ : (i : o) × n' i
⊢ blockDiagonal' 0 i✝ x✝ = OfNat.ofNat 0 i✝ x✝
Theorem: cross_self
File: Mathlib/LinearAlgebra/CrossProduct.lean

tactic: simp_rw [cross_apply, mul_comm, cons_eq_zero_iff]
state_before: R : Type u_1
inst✝ : CommRing R
v : Fin 3 → R
⊢ ↑(↑crossProduct v) v = 0

tactic: exact ⟨sub_self _, sub_self _, sub_self _, zero_empty.symm⟩
state_before: R : Type u_1
inst✝ : CommRing R
v : Fin 3 → R
⊢ v 1 * v 2 - v 1 * v 2 = 0 ∧ v 0 * v 2 - v 0 * v 2 = 0 ∧ v 0 * v 1 - v 0 * v 1 = 0 ∧ ![] = 0
Theorem: Real.log_le_iff_le_exp
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: rw [← exp_le_exp, exp_log hx]
state_before: x y : ℝ
hx : 0 < x
⊢ log x ≤ y ↔ x ≤ exp y
Theorem: TopologicalSpace.OpenNhds.map_id_obj_unop
File: Mathlib/Topology/Category/TopCat/OpenNhds.lean

tactic: simp
state_before: X Y : TopCat
f : X ⟶ Y
x : ↑X
U : (OpenNhds x)ᵒᵖ
⊢ (map (𝟙 X) x).obj U.unop = U.unop
Theorem: IsHilbertSum.linearIsometryEquiv_symm_apply_single
File: Mathlib/Analysis/InnerProductSpace/l2Space.lean

tactic: simp [IsHilbertSum.linearIsometryEquiv, OrthogonalFamily.linearIsometry_apply_single]
state_before: ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
V : (i : ι) → G i →ₗᵢ[𝕜] E
F : ι → Submodule 𝕜 E
hV : IsHilbertSum 𝕜 G V
i : ι
x : G i
⊢ ↑(LinearIsometryEquiv.symm (linearIsometryEquiv hV)) (lp.single 2 i x) = ↑(V i) x
Theorem: sub_sq'
File: Mathlib/Algebra/GroupPower/Ring.lean

tactic: rw [sub_eq_add_neg, add_sq', neg_sq, mul_neg, ← sub_eq_add_neg]
state_before: R : Type u_1
S : Type ?u.130363
M : Type ?u.130366
inst✝ : CommRing R
a b : R
⊢ (a - b) ^ 2 = a ^ 2 + b ^ 2 - 2 * a * b
Theorem: units_inv_smul
File: Mathlib/LinearAlgebra/Ray.lean

tactic: exact this
state_before: R : Type u_1
inst✝² : LinearOrderedCommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
u : Rˣ
v : Module.Ray R M
this : 0 < ↑u * ↑u
⊢ 0 < ↑(u * u)

tactic: rw [mul_smul, smul_inv_smul]
state_before: R : Type u_1
inst✝² : LinearOrderedCommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
u : Rˣ
v : Module.Ray R M
this : 0 < ↑u * ↑u
⊢ (u * u) • u⁻¹ • v = u • v
Theorem: Rat.one_mul
File: Std/Data/Rat/Lemmas.lean

tactic: simp [mul_def, normalize_self]
state_before: a : Rat
⊢ 1 * a = a
Theorem: CategoryTheory.Functor.reprW_app_hom
File: Mathlib/CategoryTheory/Yoneda.lean

tactic: change F.reprF.app X f = (F.reprF.app (op F.reprX) ≫ F.map f.op) (𝟙 F.reprX)
state_before: C : Type u₁
inst✝¹ : Category C
F : Cᵒᵖ ⥤ Type v₁
inst✝ : Representable F
X : Cᵒᵖ
f : X.unop ⟶ reprX F
⊢ ((reprW F).app X).hom f = F.map f.op (reprx F)

tactic: rw [← F.reprF.naturality]
state_before: C : Type u₁
inst✝¹ : Category C
F : Cᵒᵖ ⥤ Type v₁
inst✝ : Representable F
X : Cᵒᵖ
f : X.unop ⟶ reprX F
⊢ (reprF F).app X f = ((reprF F).app (reprX F).op ≫ F.map f.op) (𝟙 (reprX F))

tactic: dsimp
state_before: C : Type u₁
inst✝¹ : Category C
F : Cᵒᵖ ⥤ Type v₁
inst✝ : Representable F
X : Cᵒᵖ
f : X.unop ⟶ reprX F
⊢ (reprF F).app X f = ((yoneda.obj (reprX F)).map f.op ≫ (reprF F).app X.unop.op) (𝟙 (reprX F))

tactic: simp
state_before: C : Type u₁
inst✝¹ : Category C
F : Cᵒᵖ ⥤ Type v₁
inst✝ : Representable F
X : Cᵒᵖ
f : X.unop ⟶ reprX F
⊢ (reprF F).app X f = (reprF F).app X (f ≫ 𝟙 (reprX F))
Theorem: Function.Semiconj₂.isIdempotent_left
File: Mathlib/Logic/Function/Conjugate.lean

tactic: rw [h.eq, @IsIdempotent.idempotent _ gb]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.3984
f : α → β
ga : α → α → α
gb : β → β → β
inst✝ : IsIdempotent β gb
h : Semiconj₂ f ga gb
h_inj : Injective f
x : α
⊢ f (ga x x) = f x
Theorem: Nat.floor_add_nat
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [le_floor_iff (add_nonneg ha n.cast_nonneg)]
state_before: F : Type ?u.78159
α : Type u_1
β : Type ?u.78165
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a : α
n✝ : ℕ
ha : 0 ≤ a
n b : ℕ
⊢ b ≤ ⌊a + ↑n⌋₊ ↔ b ≤ ⌊a⌋₊ + n

tactic: obtain hb | hb := le_total n b
state_before: F : Type ?u.78159
α : Type u_1
β : Type ?u.78165
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a : α
n✝ : ℕ
ha : 0 ≤ a
n b : ℕ
⊢ ↑b ≤ a + ↑n ↔ b ≤ ⌊a⌋₊ + n

tactic: obtain ⟨d, rfl⟩ := exists_add_of_le hb
state_before: case inl
F : Type ?u.78159
α : Type u_1
β : Type ?u.78165
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a : α
n✝ : ℕ
ha : 0 ≤ a
n b : ℕ
hb : n ≤ b
⊢ ↑b ≤ a + ↑n ↔ b ≤ ⌊a⌋₊ + n

tactic: rw [Nat.cast_add, add_comm n, add_comm (n : α), add_le_add_iff_right, add_le_add_iff_right,
  le_floor_iff ha]
state_before: case inl.intro
F : Type ?u.78159
α : Type u_1
β : Type ?u.78165
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a : α
n✝ : ℕ
ha : 0 ≤ a
n d : ℕ
hb : n ≤ n + d
⊢ ↑(n + d) ≤ a + ↑n ↔ n + d ≤ ⌊a⌋₊ + n

tactic: obtain ⟨d, rfl⟩ := exists_add_of_le hb
state_before: case inr
F : Type ?u.78159
α : Type u_1
β : Type ?u.78165
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a : α
n✝ : ℕ
ha : 0 ≤ a
n b : ℕ
hb : b ≤ n
⊢ ↑b ≤ a + ↑n ↔ b ≤ ⌊a⌋₊ + n

tactic: rw [Nat.cast_add, add_left_comm _ b, add_left_comm _ (b : α)]
state_before: case inr.intro
F : Type ?u.78159
α : Type u_1
β : Type ?u.78165
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a : α
n : ℕ
ha : 0 ≤ a
b d : ℕ
hb : b ≤ b + d
⊢ ↑b ≤ a + ↑(b + d) ↔ b ≤ ⌊a⌋₊ + (b + d)

tactic: refine' iff_of_true _ le_self_add
state_before: case inr.intro
F : Type ?u.78159
α : Type u_1
β : Type ?u.78165
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a : α
n : ℕ
ha : 0 ≤ a
b d : ℕ
hb : b ≤ b + d
⊢ ↑b ≤ ↑b + (a + ↑d) ↔ b ≤ b + (⌊a⌋₊ + d)

tactic: exact le_add_of_nonneg_right <| ha.trans <| le_add_of_nonneg_right d.cast_nonneg
state_before: case inr.intro
F : Type ?u.78159
α : Type u_1
β : Type ?u.78165
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a : α
n : ℕ
ha : 0 ≤ a
b d : ℕ
hb : b ≤ b + d
⊢ ↑b ≤ ↑b + (a + ↑d)
Theorem: Fin.succ_succAbove_succ
File: Mathlib/Data/Fin/Basic.lean

tactic: have h' : castSucc j.succ < i.succ := by simpa [lt_iff_val_lt_val] using h
state_before: n✝ m n : ℕ
i : Fin (n + 1)
j : Fin n
h : ↑castSucc j < i
⊢ ↑(succAbove (succ i)) (succ j) = succ (↑(succAbove i) j)

tactic: ext
state_before: n✝ m n : ℕ
i : Fin (n + 1)
j : Fin n
h : ↑castSucc j < i
h' : ↑castSucc (succ j) < succ i
⊢ ↑(succAbove (succ i)) (succ j) = succ (↑(succAbove i) j)

tactic: simp [succAbove_below _ _ h, succAbove_below _ _ h']
state_before: case h
n✝ m n : ℕ
i : Fin (n + 1)
j : Fin n
h : ↑castSucc j < i
h' : ↑castSucc (succ j) < succ i
⊢ ↑(↑(succAbove (succ i)) (succ j)) = ↑(succ (↑(succAbove i) j))

tactic: simpa [lt_iff_val_lt_val] using h
state_before: n✝ m n : ℕ
i : Fin (n + 1)
j : Fin n
h : ↑castSucc j < i
⊢ ↑castSucc (succ j) < succ i

tactic: have h' : i.succ ≤ castSucc j.succ := by simpa [le_iff_val_le_val] using h
state_before: n✝ m n : ℕ
i : Fin (n + 1)
j : Fin n
h : ↑castSucc j ≥ i
⊢ ↑(succAbove (succ i)) (succ j) = succ (↑(succAbove i) j)

tactic: ext
state_before: n✝ m n : ℕ
i : Fin (n + 1)
j : Fin n
h : ↑castSucc j ≥ i
h' : succ i ≤ ↑castSucc (succ j)
⊢ ↑(succAbove (succ i)) (succ j) = succ (↑(succAbove i) j)

tactic: simp [succAbove_above _ _ h, succAbove_above _ _ h']
state_before: case h
n✝ m n : ℕ
i : Fin (n + 1)
j : Fin n
h : ↑castSucc j ≥ i
h' : succ i ≤ ↑castSucc (succ j)
⊢ ↑(↑(succAbove (succ i)) (succ j)) = ↑(succ (↑(succAbove i) j))

tactic: simpa [le_iff_val_le_val] using h
state_before: n✝ m n : ℕ
i : Fin (n + 1)
j : Fin n
h : ↑castSucc j ≥ i
⊢ succ i ≤ ↑castSucc (succ j)
Theorem: Finset.piecewise_le_piecewise'
File: Mathlib/Data/Finset/Basic.lean

tactic: by_cases hx : x ∈ s <;> simp [hx, *]
state_before: α : Type u_2
β : Type ?u.310085
γ : Type ?u.310088
δ✝ : α → Sort ?u.310093
s : Finset α
f✝ g✝ : (i : α) → δ✝ i
inst✝¹ : (j : α) → Decidable (j ∈ s)
δ : α → Type u_1
inst✝ : (i : α) → Preorder (δ i)
f g f' g' : (i : α) → δ i
Hf : ∀ (x : α), x ∈ s → f x ≤ f' x
Hg : ∀ (x : α), ¬x ∈ s → g x ≤ g' x
x : α
⊢ piecewise s f g x ≤ piecewise s f' g' x