1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Equiv.optionCongr_swap
File: Mathlib/GroupTheory/Perm/Option.lean

tactic: ext (_ | i)
state_before: α : Type u_1
inst✝ : DecidableEq α
x y : α
⊢ optionCongr (swap x y) = swap (some x) (some y)
state_after: case H.none.a
α : Type u_1
inst✝ : DecidableEq α
x y a✝ : α
⊢ a✝ ∈ (optionCongr (swap x y)) none ↔ a✝ ∈ (swap (some x) (some y)) none

case H.some.a
α : Type u_1
inst✝ : DecidableEq α
x y i a✝ : α
⊢ a✝ ∈ (optionCongr (swap x y)) (some i) ↔ a✝ ∈ (swap (some x) (some y)) (some i)

tactic: simp [swap_apply_of_ne_of_ne]
state_before: case H.none.a
α : Type u_1
inst✝ : DecidableEq α
x y a✝ : α
⊢ a✝ ∈ (optionCongr (swap x y)) none ↔ a✝ ∈ (swap (some x) (some y)) none
state_after: no goals

tactic: by_cases hx : i = x
state_before: case H.some.a
α : Type u_1
inst✝ : DecidableEq α
x y i a✝ : α
⊢ a✝ ∈ (optionCongr (swap x y)) (some i) ↔ a✝ ∈ (swap (some x) (some y)) (some i)
state_after: case pos
α : Type u_1
inst✝ : DecidableEq α
x y i a✝ : α
hx : i = x
⊢ a✝ ∈ (optionCongr (swap x y)) (some i) ↔ a✝ ∈ (swap (some x) (some y)) (some i)

case neg
α : Type u_1
inst✝ : DecidableEq α
x y i a✝ : α
hx : ¬i = x
⊢ a✝ ∈ (optionCongr (swap x y)) (some i) ↔ a✝ ∈ (swap (some x) (some y)) (some i)

tactic: by_cases hy : i = y <;> simp [hx, hy, swap_apply_of_ne_of_ne]
state_before: case neg
α : Type u_1
inst✝ : DecidableEq α
x y i a✝ : α
hx : ¬i = x
⊢ a✝ ∈ (optionCongr (swap x y)) (some i) ↔ a✝ ∈ (swap (some x) (some y)) (some i)
state_after: no goals

tactic: simp only [hx, optionCongr_apply, Option.map_some', swap_apply_left, Option.mem_def,
       Option.some.injEq]
state_before: case pos
α : Type u_1
inst✝ : DecidableEq α
x y i a✝ : α
hx : i = x
⊢ a✝ ∈ (optionCongr (swap x y)) (some i) ↔ a✝ ∈ (swap (some x) (some y)) (some i)
state_after: no goals
Theorem: MeasureTheory.measure_mul_right_null
File: Mathlib/MeasureTheory/Group/Prod.lean

tactic: simp_rw [← inv_preimage, preimage_preimage, mul_inv_rev, inv_inv]
state_before: G : Type u_1
inst✝⁶ : MeasurableSpace G
inst✝⁵ : Group G
inst✝⁴ : MeasurableMul₂ G
μ ν : Measure G
inst✝³ : SigmaFinite ν
inst✝² : SigmaFinite μ
s : Set G
inst✝¹ : MeasurableInv G
inst✝ : μ.IsMulLeftInvariant
y : G
⊢ μ ((fun x => x * y) ⁻¹' s) = 0 ↔ μ ((fun x => y⁻¹ * x) ⁻¹' s⁻¹)⁻¹ = 0
state_after: no goals

tactic: simp only [measure_inv_null μ, measure_preimage_mul]
state_before: G : Type u_1
inst✝⁶ : MeasurableSpace G
inst✝⁵ : Group G
inst✝⁴ : MeasurableMul₂ G
μ ν : Measure G
inst✝³ : SigmaFinite ν
inst✝² : SigmaFinite μ
s : Set G
inst✝¹ : MeasurableInv G
inst✝ : μ.IsMulLeftInvariant
y : G
⊢ μ ((fun x => y⁻¹ * x) ⁻¹' s⁻¹)⁻¹ = 0 ↔ μ s = 0
state_after: no goals
Theorem: Finset.insert_compl_self
File: Mathlib/Data/Fintype/Basic.lean

tactic: rw [← compl_erase, erase_singleton, compl_empty]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : Fintype α
s t : Finset α
inst✝ : DecidableEq α
a x : α
⊢ insert x {x}ᶜ = univ
state_after: no goals
Theorem: Nat.Prime.prod_divisors
File: Mathlib/NumberTheory/Divisors.lean

tactic: rw [← cons_self_properDivisors h.ne_zero, prod_cons, h.prod_properDivisors]
state_before: n : ℕ
α : Type u_1
inst✝ : CommMonoid α
p : ℕ
f : ℕ → α
h : Prime p
⊢ ∏ x ∈ p.divisors, f x = f p * f 1
state_after: no goals
Theorem: Matroid.StrictRestriction.ne
File: Mathlib/Data/Matroid/Restrict.lean

tactic: rintro rfl
state_before: α : Type u_1
M : Matroid α
R I J X Y : Set α
N : Matroid α
h : N <r M
⊢ N ≠ M
state_after: α : Type u_1
R I J X Y : Set α
N : Matroid α
h : N <r N
⊢ False

tactic: rw [← ofMatroid_lt_iff] at h
state_before: α : Type u_1
R I J X Y : Set α
N : Matroid α
h : N <r N
⊢ False
state_after: α : Type u_1
R I J X Y : Set α
N : Matroid α
h : { toMatroid := N } < { toMatroid := N }
⊢ False

tactic: simp at h
state_before: α : Type u_1
R I J X Y : Set α
N : Matroid α
h : { toMatroid := N } < { toMatroid := N }
⊢ False
state_after: no goals
Theorem: NNRat.addSubmonoid_closure_range_mul_self
File: Mathlib/Data/Rat/Star.lean

tactic: simpa only [sq] using addSubmonoid_closure_range_pow two_ne_zero
state_before: ⊢ closure (range fun x => x * x) = ⊤
state_after: no goals
Theorem: Filter.blimsup_true
File: Mathlib/Order/LiminfLimsup.lean

tactic: simp [blimsup_eq, limsup_eq]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : ConditionallyCompleteLattice α
f : Filter β
u : β → α
⊢ (blimsup u f fun x => True) = limsup u f
state_after: no goals
Theorem: Measurable.measurableSet_preimage_iff_inter_range
File: Mathlib/MeasureTheory/Constructions/Polish.lean

tactic: rw [hf.measurableSet_preimage_iff_preimage_val, inter_comm,
  ← (MeasurableEmbedding.subtype_coe hr).measurableSet_image, Subtype.image_preimage_coe]
state_before: α : Type u_1
ι : Type u_2
X : Type u_3
Y : Type u_4
Z : Type u_5
β : Type u_6
inst✝⁸ : MeasurableSpace X
inst✝⁷ : StandardBorelSpace X
inst✝⁶ : TopologicalSpace Y
inst✝⁵ : T0Space Y
inst✝⁴ : MeasurableSpace Y
inst✝³ : OpensMeasurableSpace Y
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace Z
f : X → Z
inst✝ : CountablySeparated ↑(range f)
hf : Measurable f
hr : MeasurableSet (range f)
s : Set Z
⊢ MeasurableSet (f ⁻¹' s) ↔ MeasurableSet (s ∩ range f)
state_after: no goals
Theorem: Nat.choose_mul
File: Mathlib/Data/Nat/Choose/Basic.lean

tactic: apply_rules [factorial_pos, Nat.mul_pos]
state_before: n k s : ℕ
hkn : k ≤ n
hsk : s ≤ k
⊢ 0 < (n - k)! * (k - s)! * s !
state_after: no goals

tactic: rw [Nat.mul_assoc, Nat.mul_assoc, Nat.mul_assoc, Nat.mul_assoc _ s !, Nat.mul_assoc,
  Nat.mul_comm (n - k)!, Nat.mul_comm s !]
state_before: n k s : ℕ
hkn : k ≤ n
hsk : s ≤ k
h : 0 < (n - k)! * (k - s)! * s !
⊢ n.choose k * k.choose s * ((n - k)! * (k - s)! * s !) = n.choose k * (k.choose s * s ! * (k - s)!) * (n - k)!
state_after: no goals

tactic: rw [choose_mul_factorial_mul_factorial hsk, choose_mul_factorial_mul_factorial hkn]
state_before: n k s : ℕ
hkn : k ≤ n
hsk : s ≤ k
h : 0 < (n - k)! * (k - s)! * s !
⊢ n.choose k * (k.choose s * s ! * (k - s)!) * (n - k)! = n !
state_after: no goals

tactic: rw [choose_mul_factorial_mul_factorial (Nat.sub_le_sub_right hkn _),
  choose_mul_factorial_mul_factorial (hsk.trans hkn)]
state_before: n k s : ℕ
hkn : k ≤ n
hsk : s ≤ k
h : 0 < (n - k)! * (k - s)! * s !
⊢ n ! = n.choose s * s ! * ((n - s).choose (k - s) * (k - s)! * (n - s - (k - s))!)
state_after: no goals

tactic: rw [Nat.sub_sub_sub_cancel_right hsk, Nat.mul_assoc, Nat.mul_left_comm s !, Nat.mul_assoc,
  Nat.mul_comm (k - s)!, Nat.mul_comm s !, Nat.mul_right_comm, ← Nat.mul_assoc]
state_before: n k s : ℕ
hkn : k ≤ n
hsk : s ≤ k
h : 0 < (n - k)! * (k - s)! * s !
⊢ n.choose s * s ! * ((n - s).choose (k - s) * (k - s)! * (n - s - (k - s))!) =
    n.choose s * (n - s).choose (k - s) * ((n - k)! * (k - s)! * s !)
state_after: no goals
Theorem: CochainComplex.HomComplex.Cochain.rightShift_rightUnshift
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplexShift.lean

tactic: ext p q hpq
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n✝ : ℤ
γ✝ γ₁ γ₂ : Cochain K L n✝
a n' : ℤ
γ : Cochain K ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj L) n'
n : ℤ
hn' : n' + a = n
⊢ (γ.rightUnshift n hn').rightShift a n' hn' = γ
state_after: case h
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n✝ : ℤ
γ✝ γ₁ γ₂ : Cochain K L n✝
a n' : ℤ
γ : Cochain K ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj L) n'
n : ℤ
hn' : n' + a = n
p q : ℤ
hpq : p + n' = q
⊢ ((γ.rightUnshift n hn').rightShift a n' hn').v p q hpq = γ.v p q hpq

tactic: simp only [(γ.rightUnshift n hn').rightShift_v a n' hn' p q hpq (p + n) rfl,
  γ.rightUnshift_v n hn' p (p + n) rfl q hpq,
  shiftFunctorObjXIso, assoc, Iso.hom_inv_id, comp_id]
state_before: case h
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n✝ : ℤ
γ✝ γ₁ γ₂ : Cochain K L n✝
a n' : ℤ
γ : Cochain K ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj L) n'
n : ℤ
hn' : n' + a = n
p q : ℤ
hpq : p + n' = q
⊢ ((γ.rightUnshift n hn').rightShift a n' hn').v p q hpq = γ.v p q hpq
state_after: no goals
Theorem: SimpleGraph.Coloring.even_length_iff_congr
File: Mathlib/Combinatorics/SimpleGraph/ConcreteColorings.lean

tactic: induction p with
| nil => simp
| @cons u v w h p ih =>
  simp only [Walk.length_cons, Nat.even_add_one]
  have : ¬ c u = true ↔ c v = true := by
    rw [← not_iff, ← Bool.eq_iff_iff]
    exact c.valid h
  tauto
state_before: α : Type u_1
G : SimpleGraph α
c : G.Coloring Bool
u v : α
p : G.Walk u v
⊢ Even p.length ↔ (c u = true ↔ c v = true)
state_after: no goals

tactic: simp
state_before: case nil
α : Type u_1
G : SimpleGraph α
c : G.Coloring Bool
u v u✝ : α
⊢ Even Walk.nil.length ↔ (c u✝ = true ↔ c u✝ = true)
state_after: no goals

tactic: simp only [Walk.length_cons, Nat.even_add_one]
state_before: case cons
α : Type u_1
G : SimpleGraph α
c : G.Coloring Bool
u✝ v✝ u v w : α
h : G.Adj u v
p : G.Walk v w
ih : Even p.length ↔ (c v = true ↔ c w = true)
⊢ Even (Walk.cons h p).length ↔ (c u = true ↔ c w = true)
state_after: case cons
α : Type u_1
G : SimpleGraph α
c : G.Coloring Bool
u✝ v✝ u v w : α
h : G.Adj u v
p : G.Walk v w
ih : Even p.length ↔ (c v = true ↔ c w = true)
⊢ ¬Even p.length ↔ (c u = true ↔ c w = true)

tactic: have : ¬ c u = true ↔ c v = true := by
  rw [← not_iff, ← Bool.eq_iff_iff]
  exact c.valid h
state_before: case cons
α : Type u_1
G : SimpleGraph α
c : G.Coloring Bool
u✝ v✝ u v w : α
h : G.Adj u v
p : G.Walk v w
ih : Even p.length ↔ (c v = true ↔ c w = true)
⊢ ¬Even p.length ↔ (c u = true ↔ c w = true)
state_after: case cons
α : Type u_1
G : SimpleGraph α
c : G.Coloring Bool
u✝ v✝ u v w : α
h : G.Adj u v
p : G.Walk v w
ih : Even p.length ↔ (c v = true ↔ c w = true)
this : ¬c u = true ↔ c v = true
⊢ ¬Even p.length ↔ (c u = true ↔ c w = true)

tactic: tauto
state_before: case cons
α : Type u_1
G : SimpleGraph α
c : G.Coloring Bool
u✝ v✝ u v w : α
h : G.Adj u v
p : G.Walk v w
ih : Even p.length ↔ (c v = true ↔ c w = true)
this : ¬c u = true ↔ c v = true
⊢ ¬Even p.length ↔ (c u = true ↔ c w = true)
state_after: no goals

tactic: rw [← not_iff, ← Bool.eq_iff_iff]
state_before: α : Type u_1
G : SimpleGraph α
c : G.Coloring Bool
u✝ v✝ u v w : α
h : G.Adj u v
p : G.Walk v w
ih : Even p.length ↔ (c v = true ↔ c w = true)
⊢ ¬c u = true ↔ c v = true
state_after: α : Type u_1
G : SimpleGraph α
c : G.Coloring Bool
u✝ v✝ u v w : α
h : G.Adj u v
p : G.Walk v w
ih : Even p.length ↔ (c v = true ↔ c w = true)
⊢ ¬c u = c v

tactic: exact c.valid h
state_before: α : Type u_1
G : SimpleGraph α
c : G.Coloring Bool
u✝ v✝ u v w : α
h : G.Adj u v
p : G.Walk v w
ih : Even p.length ↔ (c v = true ↔ c w = true)
⊢ ¬c u = c v
state_after: no goals
Theorem: mul_mul_invOf_self_cancel
File: Mathlib/Algebra/Group/Invertible/Defs.lean

tactic: simp [mul_assoc]
state_before: α : Type u
inst✝¹ : Monoid α
a b : α
inst✝ : Invertible b
⊢ a * b * ⅟b = a
state_after: no goals
Theorem: CategoryTheory.ShortComplex.Splitting.mono_f
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

tactic: have := s.isSplitMono_f
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.81883, u_2} D
inst✝¹ : Preadditive C
inst✝ : Preadditive D
S : ShortComplex C
s : S.Splitting
⊢ Mono S.f
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.81883, u_2} D
inst✝¹ : Preadditive C
inst✝ : Preadditive D
S : ShortComplex C
s : S.Splitting
this : IsSplitMono S.f
⊢ Mono S.f

tactic: infer_instance
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.81883, u_2} D
inst✝¹ : Preadditive C
inst✝ : Preadditive D
S : ShortComplex C
s : S.Splitting
this : IsSplitMono S.f
⊢ Mono S.f
state_after: no goals
Theorem: Commute.sq_sub_sq
File: Mathlib/Algebra/Ring/Commute.lean

tactic: rw [sq, sq, h.mul_self_sub_mul_self_eq]
state_before: α : Type u
β : Type v
γ : Type w
R : Type x
inst✝ : Ring R
a b : R
h : Commute a b
⊢ a ^ 2 - b ^ 2 = (a + b) * (a - b)
state_after: no goals
Theorem: AddCommGroup.zsmul_modEq_zsmul
File: Mathlib/Algebra/ModEq.lean

tactic: rw [← smul_sub, smul_comm, smul_right_inj hn]
state_before: α : Type u_1
inst✝¹ : AddCommGroup α
p a a₁ a₂ b b₁ b₂ c : α
n : ℕ
z : ℤ
inst✝ : NoZeroSMulDivisors ℤ α
hn : z ≠ 0
m : ℤ
⊢ z • b - z • a = m • z • p ↔ b - a = m • p
state_after: no goals
Theorem: HomologicalComplex.homotopyCofiber.d_fstX
File: Mathlib/Algebra/Homology/HomotopyCofiber.lean

tactic: obtain rfl := c.next_eq' hjk
state_before: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i j k : ι
hij : c.Rel i j
hjk : c.Rel j k
⊢ d φ i j ≫ fstX φ j k hjk = -fstX φ i j hij ≫ F.d j k
state_after: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i j : ι
hij : c.Rel i j
hjk : c.Rel j (c.next j)
⊢ d φ i j ≫ fstX φ j (c.next j) hjk = -fstX φ i j hij ≫ F.d j (c.next j)

tactic: simp [d, dif_pos hij, dif_pos hjk]
state_before: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i j : ι
hij : c.Rel i j
hjk : c.Rel j (c.next j)
⊢ d φ i j ≫ fstX φ j (c.next j) hjk = -fstX φ i j hij ≫ F.d j (c.next j)
state_after: no goals
Theorem: linearMap_toMatrix_mul_basis_toMatrix
File: Mathlib/LinearAlgebra/Matrix/Basis.lean

tactic: rw [toLin_toMatrix, toLin_mul b b' c', toLin_toMatrix, b'.toLin_toMatrix, LinearMap.comp_id]
state_before: ι : Type u_1
ι' : Type u_2
κ : Type u_3
κ' : Type u_4
R : Type u_5
M : Type u_6
inst✝¹³ : CommSemiring R
inst✝¹² : AddCommMonoid M
inst✝¹¹ : Module R M
R₂ : Type u_7
M₂ : Type u_8
inst✝¹⁰ : CommRing R₂
inst✝⁹ : AddCommGroup M₂
inst✝⁸ : Module R₂ M₂
e : Basis ι R M
v : ι' → M
i : ι
j : ι'
N : Type u_9
inst✝⁷ : AddCommMonoid N
inst✝⁶ : Module R N
b : Basis ι R M
b' : Basis ι' R M
c : Basis κ R N
c' : Basis κ' R N
f : M →ₗ[R] N
inst✝⁵ : Fintype ι'
inst✝⁴ : Finite κ
inst✝³ : Fintype ι
inst✝² : Finite κ'
inst✝¹ : DecidableEq ι
inst✝ : DecidableEq ι'
⊢ (toLin b c') ((toMatrix b' c') f * b'.toMatrix ⇑b) = (toLin b c') ((toMatrix b c') f)
state_after: no goals
Theorem: Filter.iInf_neBot_of_directed
File: Mathlib/Order/Filter/Basic.lean

tactic: cases isEmpty_or_nonempty ι
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f✝ g : Filter α
s t : Set α
f : ι → Filter α
hn : Nonempty α
hd : Directed (fun x x_1 => x ≥ x_1) f
hb : ∀ (i : ι), (f i).NeBot
⊢ (iInf f).NeBot
state_after: case inl
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f✝ g : Filter α
s t : Set α
f : ι → Filter α
hn : Nonempty α
hd : Directed (fun x x_1 => x ≥ x_1) f
hb : ∀ (i : ι), (f i).NeBot
h✝ : IsEmpty ι
⊢ (iInf f).NeBot

case inr
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f✝ g : Filter α
s t : Set α
f : ι → Filter α
hn : Nonempty α
hd : Directed (fun x x_1 => x ≥ x_1) f
hb : ∀ (i : ι), (f i).NeBot
h✝ : Nonempty ι
⊢ (iInf f).NeBot

tactic: constructor
state_before: case inl
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f✝ g : Filter α
s t : Set α
f : ι → Filter α
hn : Nonempty α
hd : Directed (fun x x_1 => x ≥ x_1) f
hb : ∀ (i : ι), (f i).NeBot
h✝ : IsEmpty ι
⊢ (iInf f).NeBot
state_after: case inl.ne'
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f✝ g : Filter α
s t : Set α
f : ι → Filter α
hn : Nonempty α
hd : Directed (fun x x_1 => x ≥ x_1) f
hb : ∀ (i : ι), (f i).NeBot
h✝ : IsEmpty ι
⊢ iInf f ≠ ⊥

tactic: simp [iInf_of_empty f, top_ne_bot]
state_before: case inl.ne'
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f✝ g : Filter α
s t : Set α
f : ι → Filter α
hn : Nonempty α
hd : Directed (fun x x_1 => x ≥ x_1) f
hb : ∀ (i : ι), (f i).NeBot
h✝ : IsEmpty ι
⊢ iInf f ≠ ⊥
state_after: no goals

tactic: exact iInf_neBot_of_directed' hd hb
state_before: case inr
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f✝ g : Filter α
s t : Set α
f : ι → Filter α
hn : Nonempty α
hd : Directed (fun x x_1 => x ≥ x_1) f
hb : ∀ (i : ι), (f i).NeBot
h✝ : Nonempty ι
⊢ (iInf f).NeBot
state_after: no goals
Theorem: Multiset.le_prod_of_submultiplicative
File: Mathlib/Algebra/Order/BigOperators/Group/Multiset.lean

tactic: simp
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : CommMonoid α
inst✝ : OrderedCommMonoid β
f : α → β
h_one : f 1 = 1
h_mul : ∀ (a b : α), f (a * b) ≤ f a * f b
s : Multiset α
⊢ ∀ (a b : α), (fun x => True) a → (fun x => True) b → (fun x => True) (a * b)
state_after: no goals

tactic: simp
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : CommMonoid α
inst✝ : OrderedCommMonoid β
f : α → β
h_one : f 1 = 1
h_mul : ∀ (a b : α), f (a * b) ≤ f a * f b
s : Multiset α
⊢ ∀ a ∈ s, (fun x => True) a
state_after: no goals
Theorem: MeasureTheory.snorm_sub_le
File: Mathlib/MeasureTheory/Function/LpSeminorm/TriangleInequality.lean

tactic: simpa [LpAddConst_of_one_le hp] using snorm_sub_le' hf hg p
state_before: α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
q : ℝ
μ : Measure α
f✝ g✝ f g : α → E
hf : AEStronglyMeasurable f μ
hg : AEStronglyMeasurable g μ
hp : 1 ≤ p
⊢ snorm (f - g) p μ ≤ snorm f p μ + snorm g p μ
state_after: no goals
Theorem: mfderivWithin_zero_of_not_mdifferentiableWithinAt
File: Mathlib/Geometry/Manifold/MFDeriv/Basic.lean

tactic: simp only [mfderivWithin, h, if_neg, not_false_iff]
state_before: 𝕜 : Type u_1
inst✝¹⁵ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹⁴ : NormedAddCommGroup E
inst✝¹³ : NormedSpace 𝕜 E
H : Type u_3
inst✝¹² : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹¹ : TopologicalSpace M
inst✝¹⁰ : ChartedSpace H M
E' : Type u_5
inst✝⁹ : NormedAddCommGroup E'
inst✝⁸ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝⁷ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝⁶ : TopologicalSpace M'
inst✝⁵ : ChartedSpace H' M'
E'' : Type u_8
inst✝⁴ : NormedAddCommGroup E''
inst✝³ : NormedSpace 𝕜 E''
H'' : Type u_9
inst✝² : TopologicalSpace H''
I'' : ModelWithCorners 𝕜 E'' H''
M'' : Type u_10
inst✝¹ : TopologicalSpace M''
inst✝ : ChartedSpace H'' M''
f f₀ f₁ : M → M'
x : M
s t : Set M
g : M' → M''
u : Set M'
Is : SmoothManifoldWithCorners I M
I's : SmoothManifoldWithCorners I' M'
I''s : SmoothManifoldWithCorners I'' M''
f' f₀' f₁' : TangentSpace I x →L[𝕜] TangentSpace I' (f x)
g' : TangentSpace I' (f x) →L[𝕜] TangentSpace I'' (g (f x))
h : ¬MDifferentiableWithinAt I I' f s x
⊢ mfderivWithin I I' f s x = 0
state_after: no goals
Theorem: finsuppTensorFinsupp_single
File: Mathlib/LinearAlgebra/DirectSum/Finsupp.lean

tactic: simp [finsuppTensorFinsupp]
state_before: R : Type u_1
S : Type u_2
M : Type u_3
N : Type u_4
ι : Type u_5
κ : Type u_6
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
inst✝⁵ : AddCommMonoid N
inst✝⁴ : Module R N
inst✝³ : Semiring S
inst✝² : Algebra R S
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
i : ι
m : M
k : κ
n : N
⊢ (finsuppTensorFinsupp R S M N ι κ) (Finsupp.single i m ⊗ₜ[R] Finsupp.single k n) = Finsupp.single (i, k) (m ⊗ₜ[R] n)
state_after: no goals
Theorem: CategoryTheory.ShortComplex.isComplex_toComposableArrows
File: Mathlib/Algebra/Homology/ExactSequence.lean

tactic: simp
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
n : ℕ
S✝ : ComposableArrows C n
S : ShortComplex C
⊢ S.toComposableArrows.map' 0 1 ⋯ ⋯ ≫ S.toComposableArrows.map' 1 2 ⋯ ⋯ = 0
state_after: no goals
Theorem: NormedAddCommGroup.summable_imp_tendsto_of_complete
File: Mathlib/Analysis/Normed/Group/Completeness.lean

tactic: refine cauchySeq_tendsto_of_complete <| cauchySeq_of_summable_dist ?_
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : CompleteSpace E
u : ℕ → E
hu : Summable fun x => ‖u x‖
⊢ ∃ a, Tendsto (fun n => ∑ i ∈ range n, u i) atTop (𝓝 a)
state_after: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : CompleteSpace E
u : ℕ → E
hu : Summable fun x => ‖u x‖
⊢ Summable fun n => dist (∑ i ∈ range n, u i) (∑ i ∈ range n.succ, u i)

tactic: simp [dist_eq_norm, sum_range_succ, hu]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : CompleteSpace E
u : ℕ → E
hu : Summable fun x => ‖u x‖
⊢ Summable fun n => dist (∑ i ∈ range n, u i) (∑ i ∈ range n.succ, u i)
state_after: no goals
Theorem: IsQuasiregular.isUnit_one_add
File: Mathlib/Algebra/Algebra/Quasispectrum.lean

tactic: obtain ⟨y, hy₁, hy₂⟩ := isQuasiregular_iff.mp hx
state_before: R : Type u_1
inst✝ : Semiring R
x : R
hx : IsQuasiregular x
⊢ IsUnit (1 + x)
state_after: case intro.intro
R : Type u_1
inst✝ : Semiring R
x : R
hx : IsQuasiregular x
y : R
hy₁ : y + x + x * y = 0
hy₂ : x + y + y * x = 0
⊢ IsUnit (1 + x)

tactic: refine ⟨⟨1 + x, 1 + y, ?_, ?_⟩, rfl⟩
state_before: case intro.intro
R : Type u_1
inst✝ : Semiring R
x : R
hx : IsQuasiregular x
y : R
hy₁ : y + x + x * y = 0
hy₂ : x + y + y * x = 0
⊢ IsUnit (1 + x)
state_after: case intro.intro.refine_1
R : Type u_1
inst✝ : Semiring R
x : R
hx : IsQuasiregular x
y : R
hy₁ : y + x + x * y = 0
hy₂ : x + y + y * x = 0
⊢ (1 + x) * (1 + y) = 1

case intro.intro.refine_2
R : Type u_1
inst✝ : Semiring R
x : R
hx : IsQuasiregular x
y : R
hy₁ : y + x + x * y = 0
hy₂ : x + y + y * x = 0
⊢ (1 + y) * (1 + x) = 1

tactic: convert congr(1 + $(hy₁)) using 1 <;> [noncomm_ring; simp]
state_before: case intro.intro.refine_1
R : Type u_1
inst✝ : Semiring R
x : R
hx : IsQuasiregular x
y : R
hy₁ : y + x + x * y = 0
hy₂ : x + y + y * x = 0
⊢ (1 + x) * (1 + y) = 1
state_after: no goals

tactic: convert congr(1 + $(hy₂)) using 1 <;> [noncomm_ring; simp]
state_before: case intro.intro.refine_2
R : Type u_1
inst✝ : Semiring R
x : R
hx : IsQuasiregular x
y : R
hy₁ : y + x + x * y = 0
hy₂ : x + y + y * x = 0
⊢ (1 + y) * (1 + x) = 1
state_after: no goals
Theorem: Matrix.schur_complement_eq₂₂
File: Mathlib/LinearAlgebra/Matrix/SchurComplement.lean

tactic: simp [Function.star_sum_elim, fromBlocks_mulVec, vecMul_fromBlocks, add_vecMul,
  dotProduct_mulVec, vecMul_sub, Matrix.mul_assoc, vecMul_mulVec, hD.eq,
  conjTranspose_nonsing_inv, star_mulVec]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
𝕜 : Type u_5
inst✝⁷ : CommRing 𝕜
inst✝⁶ : PartialOrder 𝕜
inst✝⁵ : StarRing 𝕜
inst✝⁴ : StarOrderedRing 𝕜
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq n
A : Matrix m m 𝕜
B : Matrix m n 𝕜
D : Matrix n n 𝕜
x : m → 𝕜
y : n → 𝕜
inst✝ : Invertible D
hD : D.IsHermitian
⊢ star (x ⊕ᵥ y) ᵥ* fromBlocks A B Bᴴ D ⬝ᵥ (x ⊕ᵥ y) =
    star ((D⁻¹ * Bᴴ) *ᵥ x + y) ᵥ* D ⬝ᵥ ((D⁻¹ * Bᴴ) *ᵥ x + y) + star x ᵥ* (A - B * D⁻¹ * Bᴴ) ⬝ᵥ x
state_after: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
𝕜 : Type u_5
inst✝⁷ : CommRing 𝕜
inst✝⁶ : PartialOrder 𝕜
inst✝⁵ : StarRing 𝕜
inst✝⁴ : StarOrderedRing 𝕜
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq n
A : Matrix m m 𝕜
B : Matrix m n 𝕜
D : Matrix n n 𝕜
x : m → 𝕜
y : n → 𝕜
inst✝ : Invertible D
hD : D.IsHermitian
⊢ star x ᵥ* A ⬝ᵥ x + star y ᵥ* Bᴴ ⬝ᵥ x + (star x ᵥ* B ⬝ᵥ y + star y ᵥ* D ⬝ᵥ y) =
    star x ᵥ* (B * (D⁻¹ * Bᴴ)) ⬝ᵥ x + star y ᵥ* Bᴴ ⬝ᵥ x + (star x ᵥ* B ⬝ᵥ y + star y ᵥ* D ⬝ᵥ y) +
      (star x ᵥ* A ⬝ᵥ x - star x ᵥ* (B * (D⁻¹ * Bᴴ)) ⬝ᵥ x)

tactic: abel
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
𝕜 : Type u_5
inst✝⁷ : CommRing 𝕜
inst✝⁶ : PartialOrder 𝕜
inst✝⁵ : StarRing 𝕜
inst✝⁴ : StarOrderedRing 𝕜
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq n
A : Matrix m m 𝕜
B : Matrix m n 𝕜
D : Matrix n n 𝕜
x : m → 𝕜
y : n → 𝕜
inst✝ : Invertible D
hD : D.IsHermitian
⊢ star x ᵥ* A ⬝ᵥ x + star y ᵥ* Bᴴ ⬝ᵥ x + (star x ᵥ* B ⬝ᵥ y + star y ᵥ* D ⬝ᵥ y) =
    star x ᵥ* (B * (D⁻¹ * Bᴴ)) ⬝ᵥ x + star y ᵥ* Bᴴ ⬝ᵥ x + (star x ᵥ* B ⬝ᵥ y + star y ᵥ* D ⬝ᵥ y) +
      (star x ᵥ* A ⬝ᵥ x - star x ᵥ* (B * (D⁻¹ * Bᴴ)) ⬝ᵥ x)
state_after: no goals