1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Submodule.ideal_span_singleton_smul
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: have : span R (⋃ (t : M) (_ : t ∈ N), {r • t}) = r • N := by
  convert span_eq (r • N)
  exact (Set.image_eq_iUnion _ (N : Set M)).symm
state_before: R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I J : Ideal R
N✝ P : Submodule R M
S : Set R
T : Set M
r : R
N : Submodule R M
⊢ Ideal.span {r} • N = r • N
state_after: R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I J : Ideal R
N✝ P : Submodule R M
S : Set R
T : Set M
r : R
N : Submodule R M
this : span R (⋃ t ∈ N, {r • t}) = r • N
⊢ Ideal.span {r} • N = r • N

tactic: conv_lhs => rw [← span_eq N, span_smul_span]
state_before: R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I J : Ideal R
N✝ P : Submodule R M
S : Set R
T : Set M
r : R
N : Submodule R M
this : span R (⋃ t ∈ N, {r • t}) = r • N
⊢ Ideal.span {r} • N = r • N
state_after: R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I J : Ideal R
N✝ P : Submodule R M
S : Set R
T : Set M
r : R
N : Submodule R M
this : span R (⋃ t ∈ N, {r • t}) = r • N
⊢ span R (⋃ s ∈ {r}, ⋃ t ∈ ↑N, {s • t}) = r • N

tactic: simpa
state_before: R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I J : Ideal R
N✝ P : Submodule R M
S : Set R
T : Set M
r : R
N : Submodule R M
this : span R (⋃ t ∈ N, {r • t}) = r • N
⊢ span R (⋃ s ∈ {r}, ⋃ t ∈ ↑N, {s • t}) = r • N
state_after: no goals

tactic: convert span_eq (r • N)
state_before: R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I J : Ideal R
N✝ P : Submodule R M
S : Set R
T : Set M
r : R
N : Submodule R M
⊢ span R (⋃ t ∈ N, {r • t}) = r • N
state_after: case h.e'_2.h.e'_6
R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I J : Ideal R
N✝ P : Submodule R M
S : Set R
T : Set M
r : R
N : Submodule R M
⊢ ⋃ t ∈ N, {r • t} = ↑(r • N)

tactic: exact (Set.image_eq_iUnion _ (N : Set M)).symm
state_before: case h.e'_2.h.e'_6
R : Type u
M : Type v
M' : Type u_1
F : Type u_2
G : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
I J : Ideal R
N✝ P : Submodule R M
S : Set R
T : Set M
r : R
N : Submodule R M
⊢ ⋃ t ∈ N, {r • t} = ↑(r • N)
state_after: no goals
Theorem: Associates.finset_prod_mk
File: Mathlib/Algebra/BigOperators/Associated.lean

tactic: have : (fun i => Associates.mk (f i)) = Associates.mk ∘ f :=
  funext fun x => Function.comp_apply
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoid α
p : Finset β
f : β → α
⊢ ∏ i ∈ p, Associates.mk (f i) = Associates.mk (∏ i ∈ p, f i)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoid α
p : Finset β
f : β → α
this : (fun i => Associates.mk (f i)) = Associates.mk ∘ f
⊢ ∏ i ∈ p, Associates.mk (f i) = Associates.mk (∏ i ∈ p, f i)

tactic: rw [Finset.prod_eq_multiset_prod, this, ← Multiset.map_map, prod_mk,
  ← Finset.prod_eq_multiset_prod]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoid α
p : Finset β
f : β → α
this : (fun i => Associates.mk (f i)) = Associates.mk ∘ f
⊢ ∏ i ∈ p, Associates.mk (f i) = Associates.mk (∏ i ∈ p, f i)
state_after: no goals
Theorem: Fin.mul_one'
File: Mathlib/Data/Fin/Basic.lean

tactic: cases' n with n
state_before: n m : ℕ
inst✝ : NeZero n
k : Fin n
⊢ k * 1 = k
state_after: case zero
m : ℕ
inst✝ : NeZero 0
k : Fin 0
⊢ k * 1 = k

case succ
m n : ℕ
inst✝ : NeZero (n + 1)
k : Fin (n + 1)
⊢ k * 1 = k

tactic: cases n
state_before: case succ
m n : ℕ
inst✝ : NeZero (n + 1)
k : Fin (n + 1)
⊢ k * 1 = k
state_after: case succ.zero
m : ℕ
inst✝ : NeZero (0 + 1)
k : Fin (0 + 1)
⊢ k * 1 = k

case succ.succ
m n✝ : ℕ
inst✝ : NeZero (n✝ + 1 + 1)
k : Fin (n✝ + 1 + 1)
⊢ k * 1 = k

tactic: simp [ext_iff, mul_def, mod_eq_of_lt (is_lt k)]
state_before: case succ.succ
m n✝ : ℕ
inst✝ : NeZero (n✝ + 1 + 1)
k : Fin (n✝ + 1 + 1)
⊢ k * 1 = k
state_after: no goals

tactic: simp [eq_iff_true_of_subsingleton]
state_before: case zero
m : ℕ
inst✝ : NeZero 0
k : Fin 0
⊢ k * 1 = k
state_after: no goals

tactic: simp [fin_one_eq_zero]
state_before: case succ.zero
m : ℕ
inst✝ : NeZero (0 + 1)
k : Fin (0 + 1)
⊢ k * 1 = k
state_after: no goals
Theorem: Finsupp.mul_sum
File: Mathlib/Algebra/BigOperators/Finsupp.lean

tactic: simp only [Finsupp.sum, Finset.mul_sum]
state_before: α : Type u_1
ι : Type u_2
γ : Type u_3
A : Type u_4
B : Type u_5
C : Type u_6
inst✝⁴ : AddCommMonoid A
inst✝³ : AddCommMonoid B
inst✝² : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s✝ : Finset α
f✝ : α → ι →₀ A
i : ι
g : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type u_7
M : Type u_8
M' : Type u_9
N : Type u_10
P : Type u_11
G : Type u_12
H : Type u_13
R : Type u_14
S : Type u_15
inst✝¹ : NonUnitalNonAssocSemiring R
inst✝ : NonUnitalNonAssocSemiring S
b : S
s : α →₀ R
f : α → R → S
⊢ b * s.sum f = s.sum fun a c => b * f a c
state_after: no goals
Theorem: Mathlib.Meta.NormNum.isNat_eq_false
File: Mathlib/Tactic/NormNum/Eq.lean

tactic: simp
state_before: α : Type u_1
inst✝¹ : AddMonoidWithOne α
inst✝ : CharZero α
n✝¹ n✝ : ℕ
h : n✝¹.beq n✝ = false
⊢ ¬↑n✝¹ = ↑n✝
state_after: α : Type u_1
inst✝¹ : AddMonoidWithOne α
inst✝ : CharZero α
n✝¹ n✝ : ℕ
h : n✝¹.beq n✝ = false
⊢ ¬n✝¹ = n✝

tactic: exact Nat.ne_of_beq_eq_false h
state_before: α : Type u_1
inst✝¹ : AddMonoidWithOne α
inst✝ : CharZero α
n✝¹ n✝ : ℕ
h : n✝¹.beq n✝ = false
⊢ ¬n✝¹ = n✝
state_after: no goals
Theorem: HomotopyCategory.quotient_inverts_homotopyEquivalences
File: Mathlib/Algebra/Homology/HomotopyCategory.lean

tactic: rintro K L _ ⟨e, rfl⟩
state_before: R : Type u_1
inst✝² : Semiring R
ι : Type u_2
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
⊢ (homotopyEquivalences V c).IsInvertedBy (quotient V c)
state_after: case intro
R : Type u_1
inst✝² : Semiring R
ι : Type u_2
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
K L : HomologicalComplex V c
e : HomotopyEquiv K L
⊢ IsIso ((quotient V c).map e.hom)

tactic: change IsIso (isoOfHomotopyEquiv e).hom
state_before: case intro
R : Type u_1
inst✝² : Semiring R
ι : Type u_2
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
K L : HomologicalComplex V c
e : HomotopyEquiv K L
⊢ IsIso ((quotient V c).map e.hom)
state_after: case intro
R : Type u_1
inst✝² : Semiring R
ι : Type u_2
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
K L : HomologicalComplex V c
e : HomotopyEquiv K L
⊢ IsIso (isoOfHomotopyEquiv e).hom

tactic: infer_instance
state_before: case intro
R : Type u_1
inst✝² : Semiring R
ι : Type u_2
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
K L : HomologicalComplex V c
e : HomotopyEquiv K L
⊢ IsIso (isoOfHomotopyEquiv e).hom
state_after: no goals
Theorem: CategoryTheory.Iso.comp_inv_eq
File: Mathlib/CategoryTheory/Iso.lean

tactic: simp [H.symm]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y Z : C
α : X ≅ Y
f : Z ⟶ Y
g : Z ⟶ X
H : f ≫ α.inv = g
⊢ f = g ≫ α.hom
state_after: no goals

tactic: simp [H]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y Z : C
α : X ≅ Y
f : Z ⟶ Y
g : Z ⟶ X
H : f = g ≫ α.hom
⊢ f ≫ α.inv = g
state_after: no goals
Theorem: Set.one_lt_ncard_iff
File: Mathlib/Data/Set/Card.lean

tactic: rw [one_lt_ncard hs]
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
hs : autoParam s.Finite _auto✝
⊢ 1 < s.ncard ↔ ∃ a b, a ∈ s ∧ b ∈ s ∧ a ≠ b
state_after: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
hs : autoParam s.Finite _auto✝
⊢ (∃ a ∈ s, ∃ b ∈ s, a ≠ b) ↔ ∃ a b, a ∈ s ∧ b ∈ s ∧ a ≠ b

tactic: simp only [exists_prop, exists_and_left]
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
hs : autoParam s.Finite _auto✝
⊢ (∃ a ∈ s, ∃ b ∈ s, a ≠ b) ↔ ∃ a b, a ∈ s ∧ b ∈ s ∧ a ≠ b
state_after: no goals
Theorem: FirstOrder.Language.distinctConstantsTheory_mono
File: Mathlib/ModelTheory/Syntax.lean

tactic: unfold distinctConstantsTheory
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
s t : Set α
h : s ⊆ t
⊢ L.distinctConstantsTheory s ⊆ L.distinctConstantsTheory t
state_after: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
s t : Set α
h : s ⊆ t
⊢ (fun ab => ((L.con ab.1).term.equal (L.con ab.2).term).not) '' (s ×ˢ s ∩ (diagonal α)ᶜ) ⊆
    (fun ab => ((L.con ab.1).term.equal (L.con ab.2).term).not) '' (t ×ˢ t ∩ (diagonal α)ᶜ)

tactic: gcongr
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
s t : Set α
h : s ⊆ t
⊢ (fun ab => ((L.con ab.1).term.equal (L.con ab.2).term).not) '' (s ×ˢ s ∩ (diagonal α)ᶜ) ⊆
    (fun ab => ((L.con ab.1).term.equal (L.con ab.2).term).not) '' (t ×ˢ t ∩ (diagonal α)ᶜ)
state_after: no goals
Theorem: AffineSubspace.sOppSide_vadd_right_iff
File: Mathlib/Analysis/Convex/Side.lean

tactic: rw [sOppSide_comm, sOppSide_vadd_left_iff hv, sOppSide_comm]
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : StrictOrderedCommRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y : P
v : V
hv : v ∈ s.direction
⊢ s.SOppSide x (v +ᵥ y) ↔ s.SOppSide x y
state_after: no goals
Theorem: Real.map_volume_mul_left
File: Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean

tactic: conv_rhs =>
  rw [← Real.smul_map_volume_mul_left h, smul_smul, ← ENNReal.ofReal_mul (abs_nonneg _), ←
    abs_mul, inv_mul_cancel h, abs_one, ENNReal.ofReal_one, one_smul]
state_before: ι : Type u_1
inst✝ : Fintype ι
a : ℝ
h : a ≠ 0
⊢ Measure.map (fun x => a * x) volume = ofReal |a⁻¹| • volume
state_after: no goals
Theorem: HasDerivAtFilter.neg
File: Mathlib/Analysis/Calculus/Deriv/Add.lean

tactic: simpa using h.neg.hasDerivAtFilter
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
h : HasDerivAtFilter f f' x L
⊢ HasDerivAtFilter (fun x => -f x) (-f') x L
state_after: no goals
Theorem: List.foldl_eq_foldr
File: Mathlib/Data/List/Basic.lean

tactic: simp only [foldr_cons, foldl_eq_of_comm_of_assoc hcomm hassoc]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f : α → α → α
hcomm : Commutative f
hassoc : Associative f
a b : α
l : List α
⊢ foldl f a (b :: l) = foldr f a (b :: l)
state_after: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f : α → α → α
hcomm : Commutative f
hassoc : Associative f
a b : α
l : List α
⊢ f b (foldl f a l) = f b (foldr f a l)

tactic: rw [foldl_eq_foldr a l]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f : α → α → α
hcomm : Commutative f
hassoc : Associative f
a b : α
l : List α
⊢ f b (foldl f a l) = f b (foldr f a l)
state_after: no goals
Theorem: Finsupp.lapply_comp_lsingle_same
File: Mathlib/LinearAlgebra/Finsupp.lean

tactic: ext
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
a : α
⊢ lapply a ∘ₗ lsingle a = LinearMap.id
state_after: case h
α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
a : α
x✝ : M
⊢ (lapply a ∘ₗ lsingle a) x✝ = LinearMap.id x✝

tactic: simp
state_before: case h
α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁷ : Semiring R
inst✝⁶ : Semiring S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
a : α
x✝ : M
⊢ (lapply a ∘ₗ lsingle a) x✝ = LinearMap.id x✝
state_after: no goals
Theorem: Set.PairwiseDisjoint.exists_mem_filter_basis
File: Mathlib/Order/Filter/Bases.lean

tactic: rcases hd.exists_mem_filter hS with ⟨t, htl, hd⟩
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' : ι'
I : Type u_6
l : I → Filter α
ι : I → Sort u_7
p : (i : I) → ι i → Prop
s : (i : I) → ι i → Set α
S : Set I
hd : S.PairwiseDisjoint l
hS : S.Finite
h : ∀ (i : I), (l i).HasBasis (p i) (s i)
⊢ ∃ ind, (∀ (i : I), p i (ind i)) ∧ S.PairwiseDisjoint fun i => s i (ind i)
state_after: case intro.intro
α : 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' : ι'
I : Type u_6
l : I → Filter α
ι : I → Sort u_7
p : (i : I) → ι i → Prop
s : (i : I) → ι i → Set α
S : Set I
hd✝ : S.PairwiseDisjoint l
hS : S.Finite
h : ∀ (i : I), (l i).HasBasis (p i) (s i)
t : I → Set α
htl : ∀ (i : I), t i ∈ l i
hd : S.PairwiseDisjoint t
⊢ ∃ ind, (∀ (i : I), p i (ind i)) ∧ S.PairwiseDisjoint fun i => s i (ind i)

tactic: choose ind hp ht using fun i => (h i).mem_iff.1 (htl i)
state_before: case intro.intro
α : 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' : ι'
I : Type u_6
l : I → Filter α
ι : I → Sort u_7
p : (i : I) → ι i → Prop
s : (i : I) → ι i → Set α
S : Set I
hd✝ : S.PairwiseDisjoint l
hS : S.Finite
h : ∀ (i : I), (l i).HasBasis (p i) (s i)
t : I → Set α
htl : ∀ (i : I), t i ∈ l i
hd : S.PairwiseDisjoint t
⊢ ∃ ind, (∀ (i : I), p i (ind i)) ∧ S.PairwiseDisjoint fun i => s i (ind i)
state_after: case intro.intro
α : 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' : ι'
I : Type u_6
l : I → Filter α
ι : I → Sort u_7
p : (i : I) → ι i → Prop
s : (i : I) → ι i → Set α
S : Set I
hd✝ : S.PairwiseDisjoint l
hS : S.Finite
h : ∀ (i : I), (l i).HasBasis (p i) (s i)
t : I → Set α
htl : ∀ (i : I), t i ∈ l i
hd : S.PairwiseDisjoint t
ind : (i : I) → ι i
hp : ∀ (i : I), p i (ind i)
ht : ∀ (i : I), s i (ind i) ⊆ t i
⊢ ∃ ind, (∀ (i : I), p i (ind i)) ∧ S.PairwiseDisjoint fun i => s i (ind i)

tactic: exact ⟨ind, hp, hd.mono ht⟩
state_before: case intro.intro
α : 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' : ι'
I : Type u_6
l : I → Filter α
ι : I → Sort u_7
p : (i : I) → ι i → Prop
s : (i : I) → ι i → Set α
S : Set I
hd✝ : S.PairwiseDisjoint l
hS : S.Finite
h : ∀ (i : I), (l i).HasBasis (p i) (s i)
t : I → Set α
htl : ∀ (i : I), t i ∈ l i
hd : S.PairwiseDisjoint t
ind : (i : I) → ι i
hp : ∀ (i : I), p i (ind i)
ht : ∀ (i : I), s i (ind i) ⊆ t i
⊢ ∃ ind, (∀ (i : I), p i (ind i)) ∧ S.PairwiseDisjoint fun i => s i (ind i)
state_after: no goals
Theorem: Finset.sup_image₂_le
File: Mathlib/Data/Finset/NAry.lean

tactic: rw [Finset.sup_le_iff, forall_image₂_iff]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
inst✝⁹ : DecidableEq α'
inst✝⁸ : DecidableEq β'
inst✝⁷ : DecidableEq γ
inst✝⁶ : DecidableEq γ'
inst✝⁵ : DecidableEq δ
inst✝⁴ : DecidableEq δ'
inst✝³ : DecidableEq ε
inst✝² : DecidableEq ε'
f f' : α → β → γ
g✝ g' : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a✝ a' : α
b b' : β
c : γ
inst✝¹ : SemilatticeSup δ
inst✝ : OrderBot δ
g : γ → δ
a : δ
⊢ (image₂ f s t).sup g ≤ a ↔ ∀ x ∈ s, ∀ y ∈ t, g (f x y) ≤ a
state_after: no goals
Theorem: ContinuousLinearMap.coe_sum'
File: Mathlib/Topology/Algebra/Module/Basic.lean

tactic: simp only [← coe_coe, coe_sum, LinearMap.coeFn_sum]
state_before: R₁ : Type u_1
R₂ : Type u_2
R₃ : Type u_3
inst✝¹⁷ : Semiring R₁
inst✝¹⁶ : Semiring R₂
inst✝¹⁵ : Semiring R₃
σ₁₂ : R₁ →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R₁ →+* R₃
M₁ : Type u_4
inst✝¹⁴ : TopologicalSpace M₁
inst✝¹³ : AddCommMonoid M₁
M'₁ : Type u_5
inst✝¹² : TopologicalSpace M'₁
inst✝¹¹ : AddCommMonoid M'₁
M₂ : Type u_6
inst✝¹⁰ : TopologicalSpace M₂
inst✝⁹ : AddCommMonoid M₂
M₃ : Type u_7
inst✝⁸ : TopologicalSpace M₃
inst✝⁷ : AddCommMonoid M₃
M₄ : Type u_8
inst✝⁶ : TopologicalSpace M₄
inst✝⁵ : AddCommMonoid M₄
inst✝⁴ : Module R₁ M₁
inst✝³ : Module R₁ M'₁
inst✝² : Module R₂ M₂
inst✝¹ : Module R₃ M₃
inst✝ : ContinuousAdd M₂
ι : Type u_9
t : Finset ι
f : ι → M₁ →SL[σ₁₂] M₂
⊢ ⇑(∑ d ∈ t, f d) = ∑ d ∈ t, ⇑(f d)
state_after: no goals
Theorem: Matroid.freeOn_dual_eq
File: Mathlib/Data/Matroid/Constructions.lean

tactic: rw [freeOn, dual_dual]
state_before: α : Type u_1
M : Matroid α
E B I X R J : Set α
⊢ (freeOn E)✶ = loopyOn E
state_after: no goals
Theorem: Units.continuousOn_inv₀_spectrum
File: Mathlib/Topology/ContinuousFunction/FunctionalCalculus.lean

tactic: simpa only [Set.subset_compl_singleton_iff] using spectrum.zero_not_mem R a.isUnit
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹¹ : Semifield R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : HasContinuousInv₀ R
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra R A
inst✝¹ : ContinuousFunctionalCalculus R p
f : R → R
a✝ : A
inst✝ : UniqueContinuousFunctionalCalculus R A
a : Aˣ
⊢ spectrum R ↑a ⊆ {0}ᶜ
state_after: no goals
Theorem: ONote.exists_lt_mul_omega'
File: Mathlib/SetTheory/Ordinal/Notation.lean

tactic: obtain ⟨i, hi, h'⟩ := (lt_mul_of_limit omega_isLimit).1 h
state_before: o a : Ordinal.{u_1}
h : a < o * ω
⊢ ∃ i, a < o * ↑i + o
state_after: case intro.intro
o a : Ordinal.{u_1}
h : a < o * ω
i : Ordinal.{u_1}
hi : i < ω
h' : a < o * i
⊢ ∃ i, a < o * ↑i + o

tactic: obtain ⟨i, rfl⟩ := lt_omega.1 hi
state_before: case intro.intro
o a : Ordinal.{u_1}
h : a < o * ω
i : Ordinal.{u_1}
hi : i < ω
h' : a < o * i
⊢ ∃ i, a < o * ↑i + o
state_after: case intro.intro.intro
o a : Ordinal.{u_1}
h : a < o * ω
i : ℕ
hi : ↑i < ω
h' : a < o * ↑i
⊢ ∃ i, a < o * ↑i + o

tactic: exact ⟨i, h'.trans_le (le_add_right _ _)⟩
state_before: case intro.intro.intro
o a : Ordinal.{u_1}
h : a < o * ω
i : ℕ
hi : ↑i < ω
h' : a < o * ↑i
⊢ ∃ i, a < o * ↑i + o
state_after: no goals
Theorem: Ideal.span_singleton_mul_right_unit
File: Mathlib/RingTheory/Ideal/Basic.lean

tactic: rw [mul_comm, span_singleton_mul_left_unit h2]
state_before: α : Type u
β : Type v
a✝ b : α
inst✝ : CommSemiring α
I : Ideal α
a : α
h2 : IsUnit a
x : α
⊢ span {x * a} = span {x}
state_after: no goals
Theorem: Bool.decide_iff
File: Mathlib/Init/Data/Bool/Lemmas.lean

tactic: simp
state_before: p : Prop
d : Decidable p
⊢ decide p = true ↔ p
state_after: no goals
Theorem: PNat.XgcdType.v_eq_succ_vp
File: Mathlib/Data/PNat/Xgcd.lean

tactic: ext <;> dsimp [v, vp, w, z, a, b, succ₂] <;> ring_nf
state_before: u : XgcdType
⊢ u.v = succ₂ u.vp
state_after: no goals
Theorem: Turing.ToPartrec.Code.head_eval
File: Mathlib/Computability/TMToPartrec.lean

tactic: simp [head]
state_before: v : List ℕ
⊢ head.eval v = pure [v.headI]
state_after: no goals
Theorem: AdicCompletion.map_ext
File: Mathlib/RingTheory/AdicCompletion/Functoriality.lean

tactic: ext x
state_before: R : Type u_1
inst✝⁸ : CommRing R
I : Ideal R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
N : Type u_3
inst✝⁵ : AddCommGroup N
inst✝⁴ : Module R N
P : Type u_4
inst✝³ : AddCommGroup P
inst✝² : Module R P
T : Type u_5
inst✝¹ : AddCommGroup T
inst✝ : Module (AdicCompletion I R) T
f g : AdicCompletion I M → N
h : ∀ (a : AdicCauchySequence I M), f ((mk I M) a) = g ((mk I M) a)
⊢ f = g
state_after: case h
R : Type u_1
inst✝⁸ : CommRing R
I : Ideal R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
N : Type u_3
inst✝⁵ : AddCommGroup N
inst✝⁴ : Module R N
P : Type u_4
inst✝³ : AddCommGroup P
inst✝² : Module R P
T : Type u_5
inst✝¹ : AddCommGroup T
inst✝ : Module (AdicCompletion I R) T
f g : AdicCompletion I M → N
h : ∀ (a : AdicCauchySequence I M), f ((mk I M) a) = g ((mk I M) a)
x : AdicCompletion I M
⊢ f x = g x

tactic: apply induction_on I M x (fun a ↦ h a)
state_before: case h
R : Type u_1
inst✝⁸ : CommRing R
I : Ideal R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
N : Type u_3
inst✝⁵ : AddCommGroup N
inst✝⁴ : Module R N
P : Type u_4
inst✝³ : AddCommGroup P
inst✝² : Module R P
T : Type u_5
inst✝¹ : AddCommGroup T
inst✝ : Module (AdicCompletion I R) T
f g : AdicCompletion I M → N
h : ∀ (a : AdicCauchySequence I M), f ((mk I M) a) = g ((mk I M) a)
x : AdicCompletion I M
⊢ f x = g x
state_after: no goals
Theorem: Basis.repr_support_subset_of_mem_span
File: Mathlib/LinearAlgebra/Basis.lean

tactic: rcases (Finsupp.mem_span_image_iff_total _).1 hm with ⟨l, hl, rfl⟩
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i : ι
c : R
x : M
s : Set ι
m : M
hm : m ∈ span R (⇑b '' s)
⊢ ↑(b.repr m).support ⊆ s
state_after: case intro.intro
ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i : ι
c : R
x : M
s : Set ι
l : ι →₀ R
hl : l ∈ Finsupp.supported R R s
hm : (Finsupp.total ι M R ⇑b) l ∈ span R (⇑b '' s)
⊢ ↑(b.repr ((Finsupp.total ι M R ⇑b) l)).support ⊆ s

tactic: rwa [repr_total, ← Finsupp.mem_supported R l]
state_before: case intro.intro
ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i : ι
c : R
x : M
s : Set ι
l : ι →₀ R
hl : l ∈ Finsupp.supported R R s
hm : (Finsupp.total ι M R ⇑b) l ∈ span R (⇑b '' s)
⊢ ↑(b.repr ((Finsupp.total ι M R ⇑b) l)).support ⊆ s
state_after: no goals
Theorem: Real.tan_neg_of_neg_of_pi_div_two_lt
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: linarith
state_before: x : ℝ
hx0 : x < 0
hpx : -(π / 2) < x
⊢ 0 < -x
state_after: no goals

tactic: linarith [pi_pos]
state_before: x : ℝ
hx0 : x < 0
hpx : -(π / 2) < x
⊢ -x < π / 2
state_after: no goals
Theorem: Part.sdiff_get_eq
File: Mathlib/Data/Part.lean

tactic: simp [sdiff_def]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : SDiff α
a b : Part α
hab : (a \ b).Dom
⊢ (a \ b).get hab = a.get ⋯ \ b.get ⋯
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : SDiff α
a b : Part α
hab : (a \ b).Dom
⊢ (a.bind fun y => map (fun x => y \ x) b).get ⋯ = a.get ⋯ \ b.get ⋯

tactic: aesop
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : SDiff α
a b : Part α
hab : (a \ b).Dom
⊢ (a.bind fun y => map (fun x => y \ x) b).get ⋯ = a.get ⋯ \ b.get ⋯
state_after: no goals