1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: exists_linearIndependent_snoc_of_lt_rank
File: Mathlib/LinearAlgebra/Dimension/RankNullity.lean

tactic: simp only [Fin.snoc_eq_cons_rotate]
state_before: R : Type u_1
M M₁ M₂ M₃ : Type u
M' : Type v
inst✝¹² : Ring R
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup M₁
inst✝⁹ : AddCommGroup M₂
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : AddCommGroup M'
inst✝⁶ : Module R M
inst✝⁵ : Module R M₁
inst✝⁴ : Module R M₂
inst✝³ : Module R M₃
inst✝² : Module R M'
inst✝¹ : HasRankNullity.{u, u_1} R
inst✝ : StrongRankCondition R
n : ℕ
v : Fin n → M
hv : LinearIndependent R v
h : ↑n < Module.rank R M
⊢ ∃ x, LinearIndependent R (Fin.snoc v x)
state_after: R : Type u_1
M M₁ M₂ M₃ : Type u
M' : Type v
inst✝¹² : Ring R
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup M₁
inst✝⁹ : AddCommGroup M₂
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : AddCommGroup M'
inst✝⁶ : Module R M
inst✝⁵ : Module R M₁
inst✝⁴ : Module R M₂
inst✝³ : Module R M₃
inst✝² : Module R M'
inst✝¹ : HasRankNullity.{u, u_1} R
inst✝ : StrongRankCondition R
n : ℕ
v : Fin n → M
hv : LinearIndependent R v
h : ↑n < Module.rank R M
⊢ ∃ x, LinearIndependent R fun i => Fin.cons x v ((finRotate (n + 1)) i)

tactic: have ⟨x, hx⟩ := exists_linearIndependent_cons_of_lt_rank hv h
state_before: R : Type u_1
M M₁ M₂ M₃ : Type u
M' : Type v
inst✝¹² : Ring R
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup M₁
inst✝⁹ : AddCommGroup M₂
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : AddCommGroup M'
inst✝⁶ : Module R M
inst✝⁵ : Module R M₁
inst✝⁴ : Module R M₂
inst✝³ : Module R M₃
inst✝² : Module R M'
inst✝¹ : HasRankNullity.{u, u_1} R
inst✝ : StrongRankCondition R
n : ℕ
v : Fin n → M
hv : LinearIndependent R v
h : ↑n < Module.rank R M
⊢ ∃ x, LinearIndependent R fun i => Fin.cons x v ((finRotate (n + 1)) i)
state_after: R : Type u_1
M M₁ M₂ M₃ : Type u
M' : Type v
inst✝¹² : Ring R
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup M₁
inst✝⁹ : AddCommGroup M₂
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : AddCommGroup M'
inst✝⁶ : Module R M
inst✝⁵ : Module R M₁
inst✝⁴ : Module R M₂
inst✝³ : Module R M₃
inst✝² : Module R M'
inst✝¹ : HasRankNullity.{u, u_1} R
inst✝ : StrongRankCondition R
n : ℕ
v : Fin n → M
hv : LinearIndependent R v
h : ↑n < Module.rank R M
x : M
hx : LinearIndependent R (Fin.cons x v)
⊢ ∃ x, LinearIndependent R fun i => Fin.cons x v ((finRotate (n + 1)) i)

tactic: exact ⟨x, hx.comp _ (finRotate _).injective⟩
state_before: R : Type u_1
M M₁ M₂ M₃ : Type u
M' : Type v
inst✝¹² : Ring R
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : AddCommGroup M₁
inst✝⁹ : AddCommGroup M₂
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : AddCommGroup M'
inst✝⁶ : Module R M
inst✝⁵ : Module R M₁
inst✝⁴ : Module R M₂
inst✝³ : Module R M₃
inst✝² : Module R M'
inst✝¹ : HasRankNullity.{u, u_1} R
inst✝ : StrongRankCondition R
n : ℕ
v : Fin n → M
hv : LinearIndependent R v
h : ↑n < Module.rank R M
x : M
hx : LinearIndependent R (Fin.cons x v)
⊢ ∃ x, LinearIndependent R fun i => Fin.cons x v ((finRotate (n + 1)) i)
state_after: no goals
Theorem: preStoneCech_hom_ext
File: Mathlib/Topology/StoneCech.lean

tactic: apply Continuous.ext_on denseRange_preStoneCechUnit h₁ h₂
state_before: α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
g₁ g₂ : PreStoneCech α → β
h₁ : Continuous g₁
h₂ : Continuous g₂
h : g₁ ∘ preStoneCechUnit = g₂ ∘ preStoneCechUnit
⊢ g₁ = g₂
state_after: α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
g₁ g₂ : PreStoneCech α → β
h₁ : Continuous g₁
h₂ : Continuous g₂
h : g₁ ∘ preStoneCechUnit = g₂ ∘ preStoneCechUnit
⊢ EqOn g₁ g₂ (range preStoneCechUnit)

tactic: rintro x ⟨x, rfl⟩
state_before: α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
g₁ g₂ : PreStoneCech α → β
h₁ : Continuous g₁
h₂ : Continuous g₂
h : g₁ ∘ preStoneCechUnit = g₂ ∘ preStoneCechUnit
⊢ EqOn g₁ g₂ (range preStoneCechUnit)
state_after: case intro
α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
g₁ g₂ : PreStoneCech α → β
h₁ : Continuous g₁
h₂ : Continuous g₂
h : g₁ ∘ preStoneCechUnit = g₂ ∘ preStoneCechUnit
x : α
⊢ g₁ (preStoneCechUnit x) = g₂ (preStoneCechUnit x)

tactic: apply congr_fun h x
state_before: case intro
α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
g₁ g₂ : PreStoneCech α → β
h₁ : Continuous g₁
h₂ : Continuous g₂
h : g₁ ∘ preStoneCechUnit = g₂ ∘ preStoneCechUnit
x : α
⊢ g₁ (preStoneCechUnit x) = g₂ (preStoneCechUnit x)
state_after: no goals
Theorem: HahnSeries.orderTop_le_of_coeff_ne_zero
File: Mathlib/RingTheory/HahnSeries/Basic.lean

tactic: rw [orderTop_of_ne (ne_zero_of_coeff_ne_zero h), WithTop.coe_le_coe]
state_before: Γ✝ : Type u_1
R : Type u_2
inst✝² : PartialOrder Γ✝
inst✝¹ : Zero R
a b : Γ✝
r : R
Γ : Type u_3
inst✝ : LinearOrder Γ
x : HahnSeries Γ R
g : Γ
h : x.coeff g ≠ 0
⊢ x.orderTop ≤ ↑g
state_after: Γ✝ : Type u_1
R : Type u_2
inst✝² : PartialOrder Γ✝
inst✝¹ : Zero R
a b : Γ✝
r : R
Γ : Type u_3
inst✝ : LinearOrder Γ
x : HahnSeries Γ R
g : Γ
h : x.coeff g ≠ 0
⊢ ⋯.min ⋯ ≤ g

tactic: exact Set.IsWF.min_le _ _ ((mem_support _ _).2 h)
state_before: Γ✝ : Type u_1
R : Type u_2
inst✝² : PartialOrder Γ✝
inst✝¹ : Zero R
a b : Γ✝
r : R
Γ : Type u_3
inst✝ : LinearOrder Γ
x : HahnSeries Γ R
g : Γ
h : x.coeff g ≠ 0
⊢ ⋯.min ⋯ ≤ g
state_after: no goals
Theorem: Int.ne_zero_of_gcd
File: Mathlib/Data/Int/GCD.lean

tactic: contrapose! hc
state_before: x y : ℤ
hc : x.gcd y ≠ 0
⊢ x ≠ 0 ∨ y ≠ 0
state_after: x y : ℤ
hc : x = 0 ∧ y = 0
⊢ x.gcd y = 0

tactic: rw [hc.left, hc.right, gcd_zero_right, natAbs_zero]
state_before: x y : ℤ
hc : x = 0 ∧ y = 0
⊢ x.gcd y = 0
state_after: no goals
Theorem: Fintype.not_linearIndependent_iff
File: Mathlib/LinearAlgebra/LinearIndependent.lean

tactic: simpa using not_iff_not.2 Fintype.linearIndependent_iff
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Fintype ι
⊢ ¬LinearIndependent R v ↔ ∃ g, ∑ i : ι, g i • v i = 0 ∧ ∃ i, g i ≠ 0
state_after: no goals
Theorem: Finset.prod_Ico_id_eq_factorial
File: Mathlib/Algebra/BigOperators/Intervals.lean

tactic: rw [prod_Ico_succ_top <| Nat.succ_le_succ <| Nat.zero_le n, Nat.factorial_succ,
  prod_Ico_id_eq_factorial n, Nat.succ_eq_add_one, mul_comm]
state_before: α : Type u_1
M : Type u_2
inst✝ : CommMonoid M
s₂ s₁ s : Finset α
a : α
g f : α → M
n : ℕ
⊢ ∏ x ∈ Ico 1 (n + 1 + 1), x = (n + 1)!
state_after: no goals
Theorem: LaurentPolynomial.T_pow
File: Mathlib/Algebra/Polynomial/Laurent.lean

tactic: rw [T, T, single_pow n, one_pow, nsmul_eq_mul]
state_before: R : Type u_1
inst✝ : Semiring R
m : ℤ
n : ℕ
⊢ T m ^ n = T (↑n * m)
state_after: no goals
Theorem: Set.range_extend
File: Mathlib/Data/Set/Function.lean

tactic: refine (range_extend_subset _ _ _).antisymm ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
f : α → β
hf : Injective f
g : α → γ
g' : β → γ
⊢ range (extend f g g') = range g ∪ g' '' (range f)ᶜ
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
f : α → β
hf : Injective f
g : α → γ
g' : β → γ
⊢ range g ∪ g' '' (range f)ᶜ ⊆ range (extend f g g')

tactic: rintro z (⟨x, rfl⟩ | ⟨y, hy, rfl⟩)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
f : α → β
hf : Injective f
g : α → γ
g' : β → γ
⊢ range g ∪ g' '' (range f)ᶜ ⊆ range (extend f g g')
state_after: case inl.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
f : α → β
hf : Injective f
g : α → γ
g' : β → γ
x : α
⊢ g x ∈ range (extend f g g')

case inr.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
f : α → β
hf : Injective f
g : α → γ
g' : β → γ
y : β
hy : y ∈ (range f)ᶜ
⊢ g' y ∈ range (extend f g g')

tactic: exacts [⟨f x, hf.extend_apply _ _ _⟩, ⟨y, extend_apply' _ _ _ hy⟩]
state_before: case inl.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
f : α → β
hf : Injective f
g : α → γ
g' : β → γ
x : α
⊢ g x ∈ range (extend f g g')

case inr.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
f : α → β
hf : Injective f
g : α → γ
g' : β → γ
y : β
hy : y ∈ (range f)ᶜ
⊢ g' y ∈ range (extend f g g')
state_after: no goals
Theorem: Nat.gcd_self_sub_left
File: Mathlib/Data/Nat/GCD/Basic.lean

tactic: have := Nat.sub_add_cancel h
state_before: m n : ℕ
h : m ≤ n
⊢ (n - m).gcd n = m.gcd n
state_after: m n : ℕ
h : m ≤ n
this : n - m + m = n
⊢ (n - m).gcd n = m.gcd n

tactic: rw [gcd_comm m n, ← this, gcd_add_self_left (n - m) m]
state_before: m n : ℕ
h : m ≤ n
this : n - m + m = n
⊢ (n - m).gcd n = m.gcd n
state_after: m n : ℕ
h : m ≤ n
this : n - m + m = n
⊢ (n - m + m - m).gcd (n - m + m) = (n - m).gcd m

tactic: have : gcd (n - m) n = gcd (n - m) m := by
  nth_rw 2 [← Nat.add_sub_cancel' h]
  rw [gcd_add_self_right, gcd_comm]
state_before: m n : ℕ
h : m ≤ n
this : n - m + m = n
⊢ (n - m + m - m).gcd (n - m + m) = (n - m).gcd m
state_after: m n : ℕ
h : m ≤ n
this✝ : n - m + m = n
this : (n - m).gcd n = (n - m).gcd m
⊢ (n - m + m - m).gcd (n - m + m) = (n - m).gcd m

tactic: convert this
state_before: m n : ℕ
h : m ≤ n
this✝ : n - m + m = n
this : (n - m).gcd n = (n - m).gcd m
⊢ (n - m + m - m).gcd (n - m + m) = (n - m).gcd m
state_after: no goals

tactic: nth_rw 2 [← Nat.add_sub_cancel' h]
state_before: m n : ℕ
h : m ≤ n
this : n - m + m = n
⊢ (n - m).gcd n = (n - m).gcd m
state_after: m n : ℕ
h : m ≤ n
this : n - m + m = n
⊢ (n - m).gcd (m + (n - m)) = (n - m).gcd m

tactic: rw [gcd_add_self_right, gcd_comm]
state_before: m n : ℕ
h : m ≤ n
this : n - m + m = n
⊢ (n - m).gcd (m + (n - m)) = (n - m).gcd m
state_after: no goals
Theorem: map_zpow'
File: Mathlib/Algebra/Group/Hom/Defs.lean

tactic: rw [zpow_natCast, map_pow, zpow_natCast]
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✝⁶ : MulOneClass M
inst✝⁵ : MulOneClass N
inst✝⁴ : FunLike F M N
inst✝³ : FunLike F G H
inst✝² : DivInvMonoid G
inst✝¹ : DivInvMonoid H
inst✝ : MonoidHomClass F G H
f : F
hf : ∀ (x : G), f x⁻¹ = (f x)⁻¹
a : G
n : ℕ
⊢ f (a ^ ↑n) = f a ^ ↑n
state_after: no goals

tactic: rw [zpow_negSucc, hf, map_pow, ← zpow_negSucc]
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✝⁶ : MulOneClass M
inst✝⁵ : MulOneClass N
inst✝⁴ : FunLike F M N
inst✝³ : FunLike F G H
inst✝² : DivInvMonoid G
inst✝¹ : DivInvMonoid H
inst✝ : MonoidHomClass F G H
f : F
hf : ∀ (x : G), f x⁻¹ = (f x)⁻¹
a : G
n : ℕ
⊢ f (a ^ Int.negSucc n) = f a ^ Int.negSucc n
state_after: no goals
Theorem: groupCohomology.mem_oneCocycles_def
File: Mathlib/RepresentationTheory/GroupCohomology/LowDegree.lean

tactic: rw [Function.funext_iff]
state_before: k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A : Rep k G
f : G → CoeSort.coe A
⊢ (dOne A) f = 0 ↔ ∀ (g h : G), (A.ρ g) (f h) - f (g * h) + f g = 0
state_after: k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A : Rep k G
f : G → CoeSort.coe A
⊢ (∀ (a : G × G), (dOne A) f a = 0 a) ↔ ∀ (g h : G), (A.ρ g) (f h) - f (g * h) + f g = 0

tactic: simp only [dOne_apply, Pi.zero_apply, Prod.forall]
state_before: k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A : Rep k G
f : G → CoeSort.coe A
⊢ (∀ (a : G × G), (dOne A) f a = 0 a) ↔ ∀ (g h : G), (A.ρ g) (f h) - f (g * h) + f g = 0
state_after: no goals
Theorem: Finset.mulIndicator_biUnion_apply
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: rw [mulIndicator_biUnion s t h]
state_before: ι : Type u_1
κ✝¹ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
κ✝ : Type u_6
κ : Type u_7
s : Finset ι
t : ι → Set κ
f : κ → β
h : (↑s).PairwiseDisjoint t
x : κ
⊢ (⋃ i ∈ s, t i).mulIndicator f x = ∏ i ∈ s, (t i).mulIndicator f x
state_after: no goals
Theorem: Set.Finite.exists_lt_map_eq_of_forall_mem
File: Mathlib/Data/Set/Finite.lean

tactic: rw [← mapsTo_univ_iff] at hf
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s t✝ : Set α
inst✝¹ : LinearOrder α
inst✝ : Infinite α
t : Set β
f : α → β
hf : ∀ (a : α), f a ∈ t
ht : t.Finite
⊢ ∃ a b, a < b ∧ f a = f b
state_after: α : Type u
β : Type v
ι : Sort w
γ : Type x
s t✝ : Set α
inst✝¹ : LinearOrder α
inst✝ : Infinite α
t : Set β
f : α → β
hf : MapsTo f univ t
ht : t.Finite
⊢ ∃ a b, a < b ∧ f a = f b

tactic: obtain ⟨a, -, b, -, h⟩ := infinite_univ.exists_lt_map_eq_of_mapsTo hf ht
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s t✝ : Set α
inst✝¹ : LinearOrder α
inst✝ : Infinite α
t : Set β
f : α → β
hf : MapsTo f univ t
ht : t.Finite
⊢ ∃ a b, a < b ∧ f a = f b
state_after: case intro.intro.intro.intro
α : Type u
β : Type v
ι : Sort w
γ : Type x
s t✝ : Set α
inst✝¹ : LinearOrder α
inst✝ : Infinite α
t : Set β
f : α → β
hf : MapsTo f univ t
ht : t.Finite
a b : α
h : a < b ∧ f a = f b
⊢ ∃ a b, a < b ∧ f a = f b

tactic: exact ⟨a, b, h⟩
state_before: case intro.intro.intro.intro
α : Type u
β : Type v
ι : Sort w
γ : Type x
s t✝ : Set α
inst✝¹ : LinearOrder α
inst✝ : Infinite α
t : Set β
f : α → β
hf : MapsTo f univ t
ht : t.Finite
a b : α
h : a < b ∧ f a = f b
⊢ ∃ a b, a < b ∧ f a = f b
state_after: no goals
Theorem: SchwartzMap.integrable_pow_neg_integrablePower
File: Mathlib/Analysis/Distribution/SchwartzSpace.lean

tactic: simp [Measure.integrablePower, h]
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace ℝ F
inst✝⁵ : NormedAddCommGroup D
inst✝⁴ : NormedSpace ℝ D
inst✝³ : MeasurableSpace D
inst✝² : BorelSpace D
inst✝¹ : SecondCountableTopology D
inst✝ : FiniteDimensional ℝ D
μ : Measure D
h : μ.HasTemperateGrowth
⊢ Integrable (fun x => (1 + ‖x‖) ^ (-↑μ.integrablePower)) μ
state_after: 𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace ℝ F
inst✝⁵ : NormedAddCommGroup D
inst✝⁴ : NormedSpace ℝ D
inst✝³ : MeasurableSpace D
inst✝² : BorelSpace D
inst✝¹ : SecondCountableTopology D
inst✝ : FiniteDimensional ℝ D
μ : Measure D
h : μ.HasTemperateGrowth
⊢ Integrable (fun x => (1 + ‖x‖) ^ (-↑⋯.choose)) μ

tactic: exact h.exists_integrable.choose_spec
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace ℝ F
inst✝⁵ : NormedAddCommGroup D
inst✝⁴ : NormedSpace ℝ D
inst✝³ : MeasurableSpace D
inst✝² : BorelSpace D
inst✝¹ : SecondCountableTopology D
inst✝ : FiniteDimensional ℝ D
μ : Measure D
h : μ.HasTemperateGrowth
⊢ Integrable (fun x => (1 + ‖x‖) ^ (-↑⋯.choose)) μ
state_after: no goals
Theorem: ProbabilityTheory.kernel.compProd_of_not_isSFiniteKernel_left
File: Mathlib/Probability/Kernel/Composition.lean

tactic: rw [compProd, dif_neg]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
η : ↥(kernel (α × β) γ)
h : ¬IsSFiniteKernel κ
⊢ κ ⊗ₖ η = 0
state_after: case hnc
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
η : ↥(kernel (α × β) γ)
h : ¬IsSFiniteKernel κ
⊢ ¬(IsSFiniteKernel κ ∧ IsSFiniteKernel η)

tactic: simp [h]
state_before: case hnc
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
η : ↥(kernel (α × β) γ)
h : ¬IsSFiniteKernel κ
⊢ ¬(IsSFiniteKernel κ ∧ IsSFiniteKernel η)
state_after: no goals
Theorem: Finset.sup_sdiff_left
File: Mathlib/Data/Finset/Lattice.lean

tactic: induction s using Finset.cons_induction with
| empty => rw [sup_empty, inf_empty, sdiff_top]
| cons _ _ _ h => rw [sup_cons, inf_cons, h, sdiff_inf]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : BooleanAlgebra α
s✝ s : Finset ι
f : ι → α
a : α
⊢ (s.sup fun b => a \ f b) = a \ s.inf f
state_after: no goals

tactic: rw [sup_empty, inf_empty, sdiff_top]
state_before: case empty
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : BooleanAlgebra α
s : Finset ι
f : ι → α
a : α
⊢ (∅.sup fun b => a \ f b) = a \ ∅.inf f
state_after: no goals

tactic: rw [sup_cons, inf_cons, h, sdiff_inf]
state_before: case cons
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : BooleanAlgebra α
s : Finset ι
f : ι → α
a : α
a✝ : ι
s✝ : Finset ι
h✝ : a✝ ∉ s✝
h : (s✝.sup fun b => a \ f b) = a \ s✝.inf f
⊢ ((cons a✝ s✝ h✝).sup fun b => a \ f b) = a \ (cons a✝ s✝ h✝).inf f
state_after: no goals
Theorem: Finset.card_eq_sum_ones
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: simp
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f g : α → β
s : Finset α
⊢ s.card = ∑ x ∈ s, 1
state_after: no goals
Theorem: WeierstrassCurve.Projective.nonsingular_of_equiv
File: Mathlib/AlgebraicGeometry/EllipticCurve/Projective.lean

tactic: rcases h with ⟨u, rfl⟩
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P Q : Fin 3 → R
h : P ≈ Q
⊢ W.Nonsingular P ↔ W.Nonsingular Q
state_after: case intro
R : Type u
inst✝ : CommRing R
W : Projective R
Q : Fin 3 → R
u : Rˣ
⊢ W.Nonsingular ((fun m => m • Q) u) ↔ W.Nonsingular Q

tactic: exact W.nonsingular_smul_iff Q u
state_before: case intro
R : Type u
inst✝ : CommRing R
W : Projective R
Q : Fin 3 → R
u : Rˣ
⊢ W.Nonsingular ((fun m => m • Q) u) ↔ W.Nonsingular Q
state_after: no goals
Theorem: LieAlgebra.Orthogonal.pb_inv
File: Mathlib/Algebra/Lie/Classical.lean

tactic: rw [PB, Matrix.fromBlocks_multiply, mul_invOf_self]
state_before: n : Type u_1
p : Type u_2
q : Type u_3
l : Type u_4
R : Type u₂
inst✝⁸ : DecidableEq n
inst✝⁷ : DecidableEq p
inst✝⁶ : DecidableEq q
inst✝⁵ : DecidableEq l
inst✝⁴ : CommRing R
inst✝³ : Fintype p
inst✝² : Fintype q
inst✝¹ : Fintype l
inst✝ : Invertible 2
⊢ PB l R * fromBlocks 1 0 0 ⅟(PD l R) = 1
state_after: n : Type u_1
p : Type u_2
q : Type u_3
l : Type u_4
R : Type u₂
inst✝⁸ : DecidableEq n
inst✝⁷ : DecidableEq p
inst✝⁶ : DecidableEq q
inst✝⁵ : DecidableEq l
inst✝⁴ : CommRing R
inst✝³ : Fintype p
inst✝² : Fintype q
inst✝¹ : Fintype l
inst✝ : Invertible 2
⊢ fromBlocks (1 * 1 + 0 * 0) (1 * 0 + 0 * ⅟(PD l R)) (0 * 1 + PD l R * 0) (0 * 0 + 1) = 1

tactic: simp only [Matrix.mul_zero, Matrix.mul_one, Matrix.zero_mul, zero_add, add_zero,
  Matrix.fromBlocks_one]
state_before: n : Type u_1
p : Type u_2
q : Type u_3
l : Type u_4
R : Type u₂
inst✝⁸ : DecidableEq n
inst✝⁷ : DecidableEq p
inst✝⁶ : DecidableEq q
inst✝⁵ : DecidableEq l
inst✝⁴ : CommRing R
inst✝³ : Fintype p
inst✝² : Fintype q
inst✝¹ : Fintype l
inst✝ : Invertible 2
⊢ fromBlocks (1 * 1 + 0 * 0) (1 * 0 + 0 * ⅟(PD l R)) (0 * 1 + PD l R * 0) (0 * 0 + 1) = 1
state_after: no goals
Theorem: Sym.erase_mk
File: Mathlib/Data/Sym/Basic.lean

tactic: rw [Multiset.card_erase_of_mem h, hc]
state_before: α : Type u_1
β : Type u_2
n n' m✝ : ℕ
s : Sym α n
a✝ b : α
inst✝ : DecidableEq α
m : Multiset α
hc : Multiset.card m = n + 1
a : α
h : a ∈ m
⊢ Multiset.card (m.erase a) = n
state_after: α : Type u_1
β : Type u_2
n n' m✝ : ℕ
s : Sym α n
a✝ b : α
inst✝ : DecidableEq α
m : Multiset α
hc : Multiset.card m = n + 1
a : α
h : a ∈ m
⊢ (n + 1).pred = n

tactic: rfl
state_before: α : Type u_1
β : Type u_2
n n' m✝ : ℕ
s : Sym α n
a✝ b : α
inst✝ : DecidableEq α
m : Multiset α
hc : Multiset.card m = n + 1
a : α
h : a ∈ m
⊢ (n + 1).pred = n
state_after: no goals
Theorem: Finset.forall_mem_not_eq'
File: Mathlib/Data/Finset/Basic.lean

tactic: aesop
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s : Finset α
a : α
⊢ (∀ b ∈ s, ¬b = a) ↔ a ∉ s
state_after: no goals
Theorem: Int.natAbs_abs
File: Mathlib/Algebra/Order/Group/Int.lean

tactic: rw [abs_eq_natAbs]
state_before: a : ℤ
⊢ |a|.natAbs = a.natAbs
state_after: a : ℤ
⊢ (↑a.natAbs).natAbs = a.natAbs

tactic: rfl
state_before: a : ℤ
⊢ (↑a.natAbs).natAbs = a.natAbs
state_after: no goals
Theorem: Group.exists_list_of_mem_closure
File: Mathlib/Deprecated/Subgroup.lean

tactic: rw [inv_inv]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a✝ a₁ a₂ b c : G
inst✝ : Group G
s✝ s : Set G
a : G
h : a ∈ closure s
x✝² : G
x✝¹ : InClosure s x✝²
x✝ : ∃ l, (∀ x ∈ l, x ∈ s ∨ x⁻¹ ∈ s) ∧ l.prod = x✝²
L : List G
HL1 : ∀ x ∈ L, x ∈ s ∨ x⁻¹ ∈ s
HL2 : L.prod = x✝²
x : G
hx : x ∈ List.map Inv.inv L.reverse
y : G
hy1 : y ∈ L.reverse
hy2 : y⁻¹ = x
⊢ y ∈ s → y⁻¹⁻¹ ∈ s
state_after: G : Type u_1
H : Type u_2
A : Type u_3
a✝ a₁ a₂ b c : G
inst✝ : Group G
s✝ s : Set G
a : G
h : a ∈ closure s
x✝² : G
x✝¹ : InClosure s x✝²
x✝ : ∃ l, (∀ x ∈ l, x ∈ s ∨ x⁻¹ ∈ s) ∧ l.prod = x✝²
L : List G
HL1 : ∀ x ∈ L, x ∈ s ∨ x⁻¹ ∈ s
HL2 : L.prod = x✝²
x : G
hx : x ∈ List.map Inv.inv L.reverse
y : G
hy1 : y ∈ L.reverse
hy2 : y⁻¹ = x
⊢ y ∈ s → y ∈ s

tactic: exact id
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a✝ a₁ a₂ b c : G
inst✝ : Group G
s✝ s : Set G
a : G
h : a ∈ closure s
x✝² : G
x✝¹ : InClosure s x✝²
x✝ : ∃ l, (∀ x ∈ l, x ∈ s ∨ x⁻¹ ∈ s) ∧ l.prod = x✝²
L : List G
HL1 : ∀ x ∈ L, x ∈ s ∨ x⁻¹ ∈ s
HL2 : L.prod = x✝²
x : G
hx : x ∈ List.map Inv.inv L.reverse
y : G
hy1 : y ∈ L.reverse
hy2 : y⁻¹ = x
⊢ y ∈ s → y ∈ s
state_after: no goals

tactic: rw [List.reverse_cons, List.map_append, List.prod_append, ih, List.map_singleton,
  List.prod_cons, List.prod_nil, mul_one, List.prod_cons, mul_inv_rev]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a✝ a₁ a₂ b c : G
inst✝ : Group G
s✝ s : Set G
a : G
h : a ∈ closure s
x : G
x✝¹ : InClosure s x
x✝ : ∃ l, (∀ x ∈ l, x ∈ s ∨ x⁻¹ ∈ s) ∧ l.prod = x
L : List G
HL1 : ∀ x ∈ L, x ∈ s ∨ x⁻¹ ∈ s
HL2 : L.prod = x
hd : G
tl : List G
ih : (List.map Inv.inv tl.reverse).prod = tl.prod⁻¹
⊢ (List.map Inv.inv (hd :: tl).reverse).prod = (hd :: tl).prod⁻¹
state_after: no goals

tactic: rw [List.prod_append, HL2, HL4]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a✝ a₁ a₂ b c : G
inst✝ : Group G
s✝ s : Set G
a : G
h : a ∈ closure s
x y : G
x✝³ : InClosure s x
x✝² : InClosure s y
x✝¹ : ∃ l, (∀ x ∈ l, x ∈ s ∨ x⁻¹ ∈ s) ∧ l.prod = x
x✝ : ∃ l, (∀ x ∈ l, x ∈ s ∨ x⁻¹ ∈ s) ∧ l.prod = y
L1 : List G
HL1 : ∀ x ∈ L1, x ∈ s ∨ x⁻¹ ∈ s
HL2 : L1.prod = x
L2 : List G
HL3 : ∀ x ∈ L2, x ∈ s ∨ x⁻¹ ∈ s
HL4 : L2.prod = y
⊢ (L1 ++ L2).prod = x * y
state_after: no goals
Theorem: Cardinal.mul_ciSup
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: rw [mul_comm, Cardinal.ciSup_mul f]
state_before: ι : Type u
ι' : Type w
f : ι → Cardinal.{v}
c : Cardinal.{v}
⊢ c * ⨆ i, f i = ⨆ i, c * f i
state_after: ι : Type u
ι' : Type w
f : ι → Cardinal.{v}
c : Cardinal.{v}
⊢ ⨆ i, f i * c = ⨆ i, c * f i

tactic: simp_rw [mul_comm]
state_before: ι : Type u
ι' : Type w
f : ι → Cardinal.{v}
c : Cardinal.{v}
⊢ ⨆ i, f i * c = ⨆ i, c * f i
state_after: no goals
Theorem: Real.exp_add
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [exp_add, exp]
state_before: x y : ℝ
⊢ rexp (x + y) = rexp x * rexp y
state_after: no goals