1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Filter.hasBasis_biInf_principal
File: Mathlib/Order/Filter/Bases.lean

tactic: refine mem_biInf_of_directed ?_ ne
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s✝ : ι → Set α
t✝ : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
s : β → Set α
S : Set β
h : DirectedOn (s ⁻¹'o fun x x_1 => x ≥ x_1) S
ne : S.Nonempty
t : Set α
⊢ t ∈ ⨅ i ∈ S, 𝓟 (s i) ↔ ∃ i ∈ S, s i ⊆ t
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s✝ : ι → Set α
t✝ : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
s : β → Set α
S : Set β
h : DirectedOn (s ⁻¹'o fun x x_1 => x ≥ x_1) S
ne : S.Nonempty
t : Set α
⊢ DirectedOn ((fun i => 𝓟 (s i)) ⁻¹'o fun x x_1 => x ≥ x_1) S

tactic: rw [directedOn_iff_directed, ← directed_comp] at h ⊢
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s✝ : ι → Set α
t✝ : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
s : β → Set α
S : Set β
h : DirectedOn (s ⁻¹'o fun x x_1 => x ≥ x_1) S
ne : S.Nonempty
t : Set α
⊢ DirectedOn ((fun i => 𝓟 (s i)) ⁻¹'o fun x x_1 => x ≥ x_1) S
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s✝ : ι → Set α
t✝ : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
s : β → Set α
S : Set β
h : Directed (fun x x_1 => x ≥ x_1) (s ∘ Subtype.val)
ne : S.Nonempty
t : Set α
⊢ Directed (fun x x_1 => x ≥ x_1) ((fun i => 𝓟 (s i)) ∘ Subtype.val)

tactic: refine h.mono_comp ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s✝ : ι → Set α
t✝ : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
s : β → Set α
S : Set β
h : Directed (fun x x_1 => x ≥ x_1) (s ∘ Subtype.val)
ne : S.Nonempty
t : Set α
⊢ Directed (fun x x_1 => x ≥ x_1) ((fun i => 𝓟 (s i)) ∘ Subtype.val)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s✝ : ι → Set α
t✝ : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
s : β → Set α
S : Set β
h : Directed (fun x x_1 => x ≥ x_1) (s ∘ Subtype.val)
ne : S.Nonempty
t : Set α
⊢ ∀ ⦃x y : Set α⦄, x ≥ y → 𝓟 x ≥ 𝓟 y

tactic: exact fun _ _ => principal_mono.2
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s✝ : ι → Set α
t✝ : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
s : β → Set α
S : Set β
h : Directed (fun x x_1 => x ≥ x_1) (s ∘ Subtype.val)
ne : S.Nonempty
t : Set α
⊢ ∀ ⦃x y : Set α⦄, x ≥ y → 𝓟 x ≥ 𝓟 y
state_after: no goals
Theorem: Polynomial.degree_C_mul
File: Mathlib/Algebra/Polynomial/Degree/Lemmas.lean

tactic: rw [degree_mul, degree_C a0, zero_add]
state_before: R : Type u
S : Type v
ι : Type w
a✝ b : R
m n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p q : R[X]
a : R
a0 : a ≠ 0
⊢ (C a * p).degree = p.degree
state_after: no goals
Theorem: Decidable.forall_or_right
File: Mathlib/Logic/Basic.lean

tactic: simp [or_comm, Decidable.forall_or_left]
state_before: α : Sort u_1
β : Sort u_2
p✝ q✝ : α → Prop
q : Prop
p : α → Prop
inst✝ : Decidable q
⊢ (∀ (x : α), p x ∨ q) ↔ (∀ (x : α), p x) ∨ q
state_after: no goals
Theorem: EuclideanGeometry.inversion_dist_center'
File: Mathlib/Geometry/Euclidean/Inversion/Basic.lean

tactic: rw [dist_comm, inversion_dist_center]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
a b c✝ d x✝ y z : P
r R : ℝ
c x : P
⊢ inversion c (dist c x) x = x
state_after: no goals
Theorem: Ideal.IsHomogeneous.sInf
File: Mathlib/RingTheory/GradedAlgebra/HomogeneousIdeal.lean

tactic: rw [sInf_eq_iInf]
state_before: ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
ℐ : Set (Ideal A)
h : ∀ I ∈ ℐ, IsHomogeneous 𝒜 I
⊢ IsHomogeneous 𝒜 (InfSet.sInf ℐ)
state_after: ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
ℐ : Set (Ideal A)
h : ∀ I ∈ ℐ, IsHomogeneous 𝒜 I
⊢ IsHomogeneous 𝒜 (⨅ a ∈ ℐ, a)

tactic: exact iInf₂ h
state_before: ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
ℐ : Set (Ideal A)
h : ∀ I ∈ ℐ, IsHomogeneous 𝒜 I
⊢ IsHomogeneous 𝒜 (⨅ a ∈ ℐ, a)
state_after: no goals
Theorem: Nat.card_uIcc
File: Mathlib/Order/Interval/Finset/Nat.lean

tactic: rw [← Int.natCast_inj, sup_eq_max, inf_eq_min, Int.ofNat_sub] <;> omega
state_before: a b c : ℕ
⊢ a ⊔ b + 1 - a ⊓ b = (↑b - ↑a).natAbs + 1
state_after: no goals
Theorem: Vector.map₂_flip
File: Mathlib/Data/Vector/MapLemmas.lean

tactic: induction xs, ys using Vector.inductionOn₂ <;> simp_all[flip]
state_before: α : Type u_2
n : ℕ
β : Type u_3
xs : Vector α n
ys : Vector β n
γ : Type u_1
f : α → β → γ
⊢ map₂ f xs ys = map₂ (flip f) ys xs
state_after: no goals
Theorem: OrderIso.refl_trans
File: Mathlib/Order/Hom/Basic.lean

tactic: ext x
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝² : LE α
inst✝¹ : LE β
inst✝ : LE γ
e : α ≃o β
⊢ (refl α).trans e = e
state_after: case h.h
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝² : LE α
inst✝¹ : LE β
inst✝ : LE γ
e : α ≃o β
x : α
⊢ ((refl α).trans e) x = e x

tactic: rfl
state_before: case h.h
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝² : LE α
inst✝¹ : LE β
inst✝ : LE γ
e : α ≃o β
x : α
⊢ ((refl α).trans e) x = e x
state_after: no goals
Theorem: TrivSqZeroExt.norm_inl
File: Mathlib/Analysis/NormedSpace/TrivSqZeroExt.lean

tactic: simp [norm_def]
state_before: 𝕜 : Type u_1
S : Type u_2
R : Type u_3
M : Type u_4
inst✝¹³ : SeminormedCommRing S
inst✝¹² : SeminormedRing R
inst✝¹¹ : SeminormedAddCommGroup M
inst✝¹⁰ : Algebra S R
inst✝⁹ : Module S M
inst✝⁸ : Module R M
inst✝⁷ : Module Rᵐᵒᵖ M
inst✝⁶ : BoundedSMul S R
inst✝⁵ : BoundedSMul S M
inst✝⁴ : BoundedSMul R M
inst✝³ : BoundedSMul Rᵐᵒᵖ M
inst✝² : SMulCommClass R Rᵐᵒᵖ M
inst✝¹ : IsScalarTower S R M
inst✝ : IsScalarTower S Rᵐᵒᵖ M
r : R
⊢ ‖inl r‖ = ‖r‖
state_after: no goals
Theorem: Rat.normalize_num_den
File: .lake/packages/batteries/Batteries/Data/Rat/Lemmas.lean

tactic: have := normalize_num_den' n d z
state_before: n : Int
d : Nat
z : d ≠ 0
n' : Int
d' : Nat
z' : d' ≠ 0
c : n'.natAbs.Coprime d'
h : normalize n d z = { num := n', den := d', den_nz := z', reduced := c }
⊢ ∃ m, m ≠ 0 ∧ n = n' * ↑m ∧ d = d' * m
state_after: n : Int
d : Nat
z : d ≠ 0
n' : Int
d' : Nat
z' : d' ≠ 0
c : n'.natAbs.Coprime d'
h : normalize n d z = { num := n', den := d', den_nz := z', reduced := c }
this : ∃ d_1, d_1 ≠ 0 ∧ n = (normalize n d z).num * ↑d_1 ∧ d = (normalize n d z).den * d_1
⊢ ∃ m, m ≠ 0 ∧ n = n' * ↑m ∧ d = d' * m

tactic: rwa [h] at this
state_before: n : Int
d : Nat
z : d ≠ 0
n' : Int
d' : Nat
z' : d' ≠ 0
c : n'.natAbs.Coprime d'
h : normalize n d z = { num := n', den := d', den_nz := z', reduced := c }
this : ∃ d_1, d_1 ≠ 0 ∧ n = (normalize n d z).num * ↑d_1 ∧ d = (normalize n d z).den * d_1
⊢ ∃ m, m ≠ 0 ∧ n = n' * ↑m ∧ d = d' * m
state_after: no goals
Theorem: BoxIntegral.Prepartition.card_filter_mem_Icc_le
File: Mathlib/Analysis/BoxIntegral/Partition/Basic.lean

tactic: rw [← Fintype.card_set]
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x✝ : ι → ℝ
inst✝ : Fintype ι
x : ι → ℝ
⊢ (filter (fun J => x ∈ Box.Icc J) π.boxes).card ≤ 2 ^ Fintype.card ι
state_after: ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x✝ : ι → ℝ
inst✝ : Fintype ι
x : ι → ℝ
⊢ (filter (fun J => x ∈ Box.Icc J) π.boxes).card ≤ Fintype.card (Set ι)

tactic: refine Finset.card_le_card_of_injOn (fun J : Box ι => { i | J.lower i = x i })
  (fun _ _ => Finset.mem_univ _) ?_
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x✝ : ι → ℝ
inst✝ : Fintype ι
x : ι → ℝ
⊢ (filter (fun J => x ∈ Box.Icc J) π.boxes).card ≤ Fintype.card (Set ι)
state_after: ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x✝ : ι → ℝ
inst✝ : Fintype ι
x : ι → ℝ
⊢ InjOn (fun J => {i | J.lower i = x i}) ↑(filter (fun J => x ∈ Box.Icc J) π.boxes)

tactic: simpa using π.injOn_setOf_mem_Icc_setOf_lower_eq x
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x✝ : ι → ℝ
inst✝ : Fintype ι
x : ι → ℝ
⊢ InjOn (fun J => {i | J.lower i = x i}) ↑(filter (fun J => x ∈ Box.Icc J) π.boxes)
state_after: no goals
Theorem: Set.pairwise_sUnion
File: Mathlib/Data/Set/Pairwise/Lattice.lean

tactic: rw [sUnion_eq_iUnion, pairwise_iUnion h.directed_val, SetCoe.forall]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
κ : Sort u_6
r✝ p q : α → α → Prop
f g : ι → α
s✝ t u : Set α
a b : α
r : α → α → Prop
s : Set (Set α)
h : DirectedOn (fun x x_1 => x ⊆ x_1) s
⊢ (⋃₀ s).Pairwise r ↔ ∀ a ∈ s, a.Pairwise r
state_after: no goals
Theorem: List.prod_eq_one
File: Mathlib/Algebra/BigOperators/Group/List.lean

tactic: induction' l with i l hil
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l l₁ l₂ : List M
a : M
hl : ∀ x ∈ l, x = 1
⊢ l.prod = 1
state_after: case nil
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l l₁ l₂ : List M
a : M
hl : ∀ x ∈ [], x = 1
⊢ [].prod = 1

case cons
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l✝ l₁ l₂ : List M
a i : M
l : List M
hil : (∀ x ∈ l, x = 1) → l.prod = 1
hl : ∀ x ∈ i :: l, x = 1
⊢ (i :: l).prod = 1

tactic: rw [List.prod_cons, hil fun x hx ↦ hl _ (mem_cons_of_mem i hx), hl _ (mem_cons_self i l), one_mul]
state_before: case cons
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l✝ l₁ l₂ : List M
a i : M
l : List M
hil : (∀ x ∈ l, x = 1) → l.prod = 1
hl : ∀ x ∈ i :: l, x = 1
⊢ (i :: l).prod = 1
state_after: no goals

tactic: rfl
state_before: case nil
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l l₁ l₂ : List M
a : M
hl : ∀ x ∈ [], x = 1
⊢ [].prod = 1
state_after: no goals
Theorem: CategoryTheory.Functor.shiftIso_add
File: Mathlib/CategoryTheory/Shift/ShiftSequence.lean

tactic: rw [add_assoc, ha', ha'']
state_before: C : Type u_1
A : Type u_2
inst✝⁶ : Category.{?u.41942, u_1} C
inst✝⁵ : Category.{?u.41946, u_2} A
F : C ⥤ A
M : Type u_3
inst✝⁴ : AddMonoid M
inst✝³ : HasShift C M
G : Type u_4
inst✝² : AddGroup G
inst✝¹ : HasShift C G
inst✝ : F.ShiftSequence M
n m a a' a'' : M
ha' : n + a = a'
ha'' : m + a' = a''
⊢ m + n + a = a''
state_after: no goals
Theorem: Finset.disjSups_singleton
File: Mathlib/Data/Finset/Sups.lean

tactic: split_ifs with h <;> simp [disjSups, filter_singleton, h]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq β
inst✝² : SemilatticeSup α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s s₁ s₂ t t₁ t₂ u : Finset α
a b c : α
⊢ {a} ○ {b} = if Disjoint a b then {a ⊔ b} else ∅
state_after: no goals
Theorem: Stream'.WSeq.tail_cons
File: Mathlib/Data/Seq/WSeq.lean

tactic: simp [tail]
state_before: α : Type u
β : Type v
γ : Type w
a : α
s : WSeq α
⊢ (cons a s).tail = s
state_after: no goals
Theorem: toIocDiv_neg'
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: simpa only [neg_neg] using toIocDiv_neg hp (-a) (-b)
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ toIocDiv hp (-a) b = -(toIcoDiv hp a (-b) + 1)
state_after: no goals
Theorem: Bornology.isVonNBounded_pi_iff
File: Mathlib/Analysis/LocallyConvex/Bounded.lean

tactic: simp_rw [isVonNBounded_iff_tendsto_smallSets_nhds, nhds_pi, Filter.pi, smallSets_iInf,
  smallSets_comap_eq_comap_image, tendsto_iInf, tendsto_comap_iff, Function.comp,
  ← image_smul, image_image, eval, Pi.smul_apply, Pi.zero_apply]
state_before: 𝕜✝ : Type u_1
𝕜' : Type u_2
E✝ : Type u_3
E' : Type u_4
F : Type u_5
ι✝ : Type u_6
𝕜 : Type u_7
ι : Type u_8
E : ι → Type u_9
inst✝³ : NormedDivisionRing 𝕜
inst✝² : (i : ι) → AddCommGroup (E i)
inst✝¹ : (i : ι) → Module 𝕜 (E i)
inst✝ : (i : ι) → TopologicalSpace (E i)
S : Set ((i : ι) → E i)
⊢ IsVonNBounded 𝕜 S ↔ ∀ (i : ι), IsVonNBounded 𝕜 (eval i '' S)
state_after: no goals
Theorem: WittVector.ghostFun_intCast
File: Mathlib/RingTheory/WittVector/Basic.lean

tactic: cases i <;> simp [*, Int.castDef, ghostFun_natCast, ghostFun_neg, -Pi.natCast_def,
  -Pi.intCast_def]
state_before: p : ℕ
R : Type u_1
S : Type u_2
T : Type u_3
hp : Fact (Nat.Prime p)
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : CommRing T
α : Type u_4
β : Type u_5
x y : 𝕎 R
i : ℤ
⊢ WittVector.ghostFun i.castDef = ↑i
state_after: no goals
Theorem: MulHom.cancel_left
File: Mathlib/Algebra/Group/Hom/Defs.lean

tactic: rw [← MulHom.comp_apply, h, MulHom.comp_apply]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
H : Type u_8
F : Type u_9
inst✝² : Mul M
inst✝¹ : Mul N
inst✝ : Mul P
g : N →ₙ* P
f₁ f₂ : M →ₙ* N
hg : Function.Injective ⇑g
h : g.comp f₁ = g.comp f₂
x : M
⊢ g (f₁ x) = g (f₂ x)
state_after: no goals
Theorem: card_le_of_injective'
File: Mathlib/LinearAlgebra/InvariantBasisNumber.lean

tactic: let P := Finsupp.linearEquivFunOnFinite R R β
state_before: R : Type u
inst✝³ : Semiring R
inst✝² : StrongRankCondition R
α : Type u_1
β : Type u_2
inst✝¹ : Fintype α
inst✝ : Fintype β
f : (α →₀ R) →ₗ[R] β →₀ R
i : Injective ⇑f
⊢ Fintype.card α ≤ Fintype.card β
state_after: R : Type u
inst✝³ : Semiring R
inst✝² : StrongRankCondition R
α : Type u_1
β : Type u_2
inst✝¹ : Fintype α
inst✝ : Fintype β
f : (α →₀ R) →ₗ[R] β →₀ R
i : Injective ⇑f
P : (β →₀ R) ≃ₗ[R] β → R := Finsupp.linearEquivFunOnFinite R R β
⊢ Fintype.card α ≤ Fintype.card β

tactic: let Q := (Finsupp.linearEquivFunOnFinite R R α).symm
state_before: R : Type u
inst✝³ : Semiring R
inst✝² : StrongRankCondition R
α : Type u_1
β : Type u_2
inst✝¹ : Fintype α
inst✝ : Fintype β
f : (α →₀ R) →ₗ[R] β →₀ R
i : Injective ⇑f
P : (β →₀ R) ≃ₗ[R] β → R := Finsupp.linearEquivFunOnFinite R R β
⊢ Fintype.card α ≤ Fintype.card β
state_after: R : Type u
inst✝³ : Semiring R
inst✝² : StrongRankCondition R
α : Type u_1
β : Type u_2
inst✝¹ : Fintype α
inst✝ : Fintype β
f : (α →₀ R) →ₗ[R] β →₀ R
i : Injective ⇑f
P : (β →₀ R) ≃ₗ[R] β → R := Finsupp.linearEquivFunOnFinite R R β
Q : (α → R) ≃ₗ[R] α →₀ R := (Finsupp.linearEquivFunOnFinite R R α).symm
⊢ Fintype.card α ≤ Fintype.card β

tactic: exact
  card_le_of_injective R ((P.toLinearMap.comp f).comp Q.toLinearMap)
    ((P.injective.comp i).comp Q.injective)
state_before: R : Type u
inst✝³ : Semiring R
inst✝² : StrongRankCondition R
α : Type u_1
β : Type u_2
inst✝¹ : Fintype α
inst✝ : Fintype β
f : (α →₀ R) →ₗ[R] β →₀ R
i : Injective ⇑f
P : (β →₀ R) ≃ₗ[R] β → R := Finsupp.linearEquivFunOnFinite R R β
Q : (α → R) ≃ₗ[R] α →₀ R := (Finsupp.linearEquivFunOnFinite R R α).symm
⊢ Fintype.card α ≤ Fintype.card β
state_after: no goals
Theorem: Matroid.indep_or_dep
File: Mathlib/Data/Matroid/Basic.lean

tactic: rw [Dep, and_iff_left hX]
state_before: α : Type u_1
M : Matroid α
X : Set α
hX : autoParam (X ⊆ M.E) _auto✝
⊢ M.Indep X ∨ M.Dep X
state_after: α : Type u_1
M : Matroid α
X : Set α
hX : autoParam (X ⊆ M.E) _auto✝
⊢ M.Indep X ∨ ¬M.Indep X

tactic: apply em
state_before: α : Type u_1
M : Matroid α
X : Set α
hX : autoParam (X ⊆ M.E) _auto✝
⊢ M.Indep X ∨ ¬M.Indep X
state_after: no goals
Theorem: CategoryTheory.tensorRightHomEquiv_whiskerRight_comp_evaluation
File: Mathlib/CategoryTheory/Monoidal/Rigid/Basic.lean

tactic: dsimp [tensorRightHomEquiv]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ (tensorRightHomEquiv Y X Xᘁ (𝟙_ C)) (f ▷ X ≫ ε_ X Xᘁ) = 𝟙 Y ⊗≫ (Y ◁ η_ X Xᘁ ≫ f ▷ (X ⊗ Xᘁ)) ⊗≫ ε_ X Xᘁ ▷ Xᘁ
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ (ρ_ Y).inv ≫ Y ◁ η_ X Xᘁ ≫ (α_ Y X Xᘁ).inv ≫ (f ▷ X ≫ ε_ X Xᘁ) ▷ Xᘁ =
    𝟙 Y ⊗≫ (Y ◁ η_ X Xᘁ ≫ f ▷ (X ⊗ Xᘁ)) ⊗≫ ε_ X Xᘁ ▷ Xᘁ

tactic: coherence
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ (ρ_ Y).inv ≫ Y ◁ η_ X Xᘁ ≫ (α_ Y X Xᘁ).inv ≫ (f ▷ X ≫ ε_ X Xᘁ) ▷ Xᘁ =
    𝟙 Y ⊗≫ (Y ◁ η_ X Xᘁ ≫ f ▷ (X ⊗ Xᘁ)) ⊗≫ ε_ X Xᘁ ▷ Xᘁ
state_after: no goals

tactic: rw [whisker_exchange]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ 𝟙 Y ⊗≫ (Y ◁ η_ X Xᘁ ≫ f ▷ (X ⊗ Xᘁ)) ⊗≫ ε_ X Xᘁ ▷ Xᘁ = f ⊗≫ Xᘁ ◁ η_ X Xᘁ ⊗≫ ε_ X Xᘁ ▷ Xᘁ
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ 𝟙 Y ⊗≫ (f ▷ 𝟙_ C ≫ Xᘁ ◁ η_ X Xᘁ) ⊗≫ ε_ X Xᘁ ▷ Xᘁ = f ⊗≫ Xᘁ ◁ η_ X Xᘁ ⊗≫ ε_ X Xᘁ ▷ Xᘁ

tactic: coherence
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ 𝟙 Y ⊗≫ (f ▷ 𝟙_ C ≫ Xᘁ ◁ η_ X Xᘁ) ⊗≫ ε_ X Xᘁ ▷ Xᘁ = f ⊗≫ Xᘁ ◁ η_ X Xᘁ ⊗≫ ε_ X Xᘁ ▷ Xᘁ
state_after: no goals

tactic: rw [coevaluation_evaluation'']
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ f ⊗≫ Xᘁ ◁ η_ X Xᘁ ⊗≫ ε_ X Xᘁ ▷ Xᘁ = f ≫ (λ_ Xᘁ).inv
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ f ⊗≫ ⊗𝟙 = f ≫ (λ_ Xᘁ).inv

tactic: coherence
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ f ⊗≫ ⊗𝟙 = f ≫ (λ_ Xᘁ).inv
state_after: no goals
Theorem: MeasureTheory.SignedMeasure.totalVariation_neg
File: Mathlib/MeasureTheory/Decomposition/Jordan.lean

tactic: simp [totalVariation, toJordanDecomposition_neg, add_comm]
state_before: α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
⊢ (-s).totalVariation = s.totalVariation
state_after: no goals
Theorem: intervalIntegral.integral_nonneg_of_ae_restrict
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: let H := ae_restrict_of_ae_restrict_of_subset Ioc_subset_Icc_self hf
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f g : ℝ → ℝ
a b : ℝ
μ : Measure ℝ
hab : a ≤ b
hf : 0 ≤ᶠ[ae (μ.restrict (Icc a b))] f
⊢ 0 ≤ ∫ (u : ℝ) in a..b, f u ∂μ
state_after: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f g : ℝ → ℝ
a b : ℝ
μ : Measure ℝ
hab : a ≤ b
hf : 0 ≤ᶠ[ae (μ.restrict (Icc a b))] f
H : ∀ᵐ (x : ℝ) ∂μ.restrict (Ioc a b), 0 x ≤ f x := ae_restrict_of_ae_restrict_of_subset Ioc_subset_Icc_self hf
⊢ 0 ≤ ∫ (u : ℝ) in a..b, f u ∂μ

tactic: simpa only [integral_of_le hab] using setIntegral_nonneg_of_ae_restrict H
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f g : ℝ → ℝ
a b : ℝ
μ : Measure ℝ
hab : a ≤ b
hf : 0 ≤ᶠ[ae (μ.restrict (Icc a b))] f
H : ∀ᵐ (x : ℝ) ∂μ.restrict (Ioc a b), 0 x ≤ f x := ae_restrict_of_ae_restrict_of_subset Ioc_subset_Icc_self hf
⊢ 0 ≤ ∫ (u : ℝ) in a..b, f u ∂μ
state_after: no goals
Theorem: Finset.mul_prod_Ioc_eq_prod_Icc
File: Mathlib/Algebra/BigOperators/Intervals.lean

tactic: rw [Icc_eq_cons_Ioc h, prod_cons]
state_before: α : Type u_1
M : Type u_2
inst✝² : PartialOrder α
inst✝¹ : CommMonoid M
f : α → M
a b : α
inst✝ : LocallyFiniteOrder α
h : a ≤ b
⊢ f a * ∏ x ∈ Ioc a b, f x = ∏ x ∈ Icc a b, f x
state_after: no goals
Theorem: isSplittingField_iff_intermediateField
File: Mathlib/FieldTheory/Adjoin.lean

tactic: rw [← toSubalgebra_injective.eq_iff,
    adjoin_algebraic_toSubalgebra fun _ ↦ isAlgebraic_of_mem_rootSet]
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
α : E
p : F[X]
⊢ IsSplittingField F E p ↔ Splits (algebraMap F E) p ∧ adjoin F (p.rootSet E) = ⊤
state_after: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
α : E
p : F[X]
⊢ IsSplittingField F E p ↔ Splits (algebraMap F E) p ∧ Algebra.adjoin F (p.rootSet E) = ⊤.toSubalgebra

tactic: exact ⟨fun ⟨spl, adj⟩ ↦ ⟨spl, adj⟩, fun ⟨spl, adj⟩ ↦ ⟨spl, adj⟩⟩
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
α : E
p : F[X]
⊢ IsSplittingField F E p ↔ Splits (algebraMap F E) p ∧ Algebra.adjoin F (p.rootSet E) = ⊤.toSubalgebra
state_after: no goals
Theorem: Ideal.add_eq_one_iff
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: rw [one_eq_top, eq_top_iff_one, add_eq_sup, Submodule.mem_sup]
state_before: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
⊢ I + J = 1 ↔ ∃ i ∈ I, ∃ j ∈ J, i + j = 1
state_after: no goals
Theorem: Set.iUnion_accumulate
File: Mathlib/Data/Set/Accumulate.lean

tactic: apply Subset.antisymm
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s : α → Set β
t : α → Set γ
inst✝ : Preorder α
⊢ ⋃ x, Accumulate s x = ⋃ x, s x
state_after: case h₁
α : Type u_1
β : Type u_2
γ : Type u_3
s : α → Set β
t : α → Set γ
inst✝ : Preorder α
⊢ ⋃ x, Accumulate s x ⊆ ⋃ x, s x

case h₂
α : Type u_1
β : Type u_2
γ : Type u_3
s : α → Set β
t : α → Set γ
inst✝ : Preorder α
⊢ ⋃ x, s x ⊆ ⋃ x, Accumulate s x

tactic: simp only [subset_def, mem_iUnion, exists_imp, mem_accumulate]
state_before: case h₁
α : Type u_1
β : Type u_2
γ : Type u_3
s : α → Set β
t : α → Set γ
inst✝ : Preorder α
⊢ ⋃ x, Accumulate s x ⊆ ⋃ x, s x
state_after: case h₁
α : Type u_1
β : Type u_2
γ : Type u_3
s : α → Set β
t : α → Set γ
inst✝ : Preorder α
⊢ ∀ (x : β) (x_1 x_2 : α), x_2 ≤ x_1 ∧ x ∈ s x_2 → ∃ i, x ∈ s i

tactic: intro z x x' ⟨_, hz⟩
state_before: case h₁
α : Type u_1
β : Type u_2
γ : Type u_3
s : α → Set β
t : α → Set γ
inst✝ : Preorder α
⊢ ∀ (x : β) (x_1 x_2 : α), x_2 ≤ x_1 ∧ x ∈ s x_2 → ∃ i, x ∈ s i
state_after: case h₁
α : Type u_1
β : Type u_2
γ : Type u_3
s : α → Set β
t : α → Set γ
inst✝ : Preorder α
z : β
x x' : α
left✝ : x' ≤ x
hz : z ∈ s x'
⊢ ∃ i, z ∈ s i

tactic: exact ⟨x', hz⟩
state_before: case h₁
α : Type u_1
β : Type u_2
γ : Type u_3
s : α → Set β
t : α → Set γ
inst✝ : Preorder α
z : β
x x' : α
left✝ : x' ≤ x
hz : z ∈ s x'
⊢ ∃ i, z ∈ s i
state_after: no goals

tactic: exact iUnion_mono fun i => subset_accumulate
state_before: case h₂
α : Type u_1
β : Type u_2
γ : Type u_3
s : α → Set β
t : α → Set γ
inst✝ : Preorder α
⊢ ⋃ x, s x ⊆ ⋃ x, Accumulate s x
state_after: no goals
Theorem: unitInterval.one_minus_nonneg
File: Mathlib/Topology/UnitInterval.lean

tactic: simpa using x.2.2
state_before: x : ↑I
⊢ 0 ≤ 1 - ↑x
state_after: no goals
Theorem: Polynomial.as_sum_range_C_mul_X_pow
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: simp only [C_mul_X_pow_eq_monomial]
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
⊢ ∑ i ∈ range (p.natDegree + 1), (monomial i) (p.coeff i) = ∑ i ∈ range (p.natDegree + 1), C (p.coeff i) * X ^ i
state_after: no goals
Theorem: LinearMap.equivariantProjection_apply
File: Mathlib/RepresentationTheory/Maschke.lean

tactic: simp only [equivariantProjection, smul_apply, sumOfConjugatesEquivariant_apply]
state_before: k : Type u
inst✝¹¹ : CommRing k
G : Type u
inst✝¹⁰ : Group G
V : Type v
inst✝⁹ : AddCommGroup V
inst✝⁸ : Module k V
inst✝⁷ : Module (MonoidAlgebra k G) V
inst✝⁶ : IsScalarTower k (MonoidAlgebra k G) V
W : Type w
inst✝⁵ : AddCommGroup W
inst✝⁴ : Module k W
inst✝³ : Module (MonoidAlgebra k G) W
inst✝² : IsScalarTower k (MonoidAlgebra k G) W
π : W →ₗ[k] V
i : V →ₗ[MonoidAlgebra k G] W
h : ∀ (v : V), π (i v) = v
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
v : W
⊢ (equivariantProjection G π) v = ⅟↑(Fintype.card G) • ∑ g : G, (π.conjugate g) v
state_after: no goals