1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: nhds_basis_closed_balanced
File: Mathlib/Analysis/LocallyConvex/BalancedCoreHull.lean

tactic: refine
  (closed_nhds_basis 0).to_hasBasis (fun s hs => ?_) fun s hs => ⟨s, ⟨hs.1, hs.2.1⟩, rfl.subset⟩
state_before: 𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕜 E
U : Set E
inst✝ : RegularSpace E
⊢ (𝓝 0).HasBasis (fun s => s ∈ 𝓝 0 ∧ IsClosed s ∧ Balanced 𝕜 s) id
state_after: 𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕜 E
U : Set E
inst✝ : RegularSpace E
s : Set E
hs : s ∈ 𝓝 0 ∧ IsClosed s
⊢ ∃ i', (i' ∈ 𝓝 0 ∧ IsClosed i' ∧ Balanced 𝕜 i') ∧ id i' ⊆ id s

tactic: refine ⟨balancedCore 𝕜 s, ⟨balancedCore_mem_nhds_zero hs.1, ?_⟩, balancedCore_subset s⟩
state_before: 𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕜 E
U : Set E
inst✝ : RegularSpace E
s : Set E
hs : s ∈ 𝓝 0 ∧ IsClosed s
⊢ ∃ i', (i' ∈ 𝓝 0 ∧ IsClosed i' ∧ Balanced 𝕜 i') ∧ id i' ⊆ id s
state_after: 𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕜 E
U : Set E
inst✝ : RegularSpace E
s : Set E
hs : s ∈ 𝓝 0 ∧ IsClosed s
⊢ IsClosed (balancedCore 𝕜 s) ∧ Balanced 𝕜 (balancedCore 𝕜 s)

tactic: exact ⟨hs.2.balancedCore, balancedCore_balanced s⟩
state_before: 𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : TopologicalSpace E
inst✝¹ : ContinuousSMul 𝕜 E
U : Set E
inst✝ : RegularSpace E
s : Set E
hs : s ∈ 𝓝 0 ∧ IsClosed s
⊢ IsClosed (balancedCore 𝕜 s) ∧ Balanced 𝕜 (balancedCore 𝕜 s)
state_after: no goals
Theorem: Real.sign_eq_zero_iff
File: Mathlib/Data/Real/Sign.lean

tactic: refine ⟨fun h => ?_, fun h => h.symm ▸ sign_zero⟩
state_before: r : ℝ
⊢ r.sign = 0 ↔ r = 0
state_after: r : ℝ
h : r.sign = 0
⊢ r = 0

tactic: obtain hn | rfl | hp := lt_trichotomy r (0 : ℝ)
state_before: r : ℝ
h : r.sign = 0
⊢ r = 0
state_after: case inl
r : ℝ
h : r.sign = 0
hn : r < 0
⊢ r = 0

case inr.inl
h : sign 0 = 0
⊢ 0 = 0

case inr.inr
r : ℝ
h : r.sign = 0
hp : 0 < r
⊢ r = 0

tactic: rw [sign_of_neg hn, neg_eq_zero] at h
state_before: case inl
r : ℝ
h : r.sign = 0
hn : r < 0
⊢ r = 0
state_after: case inl
r : ℝ
h : 1 = 0
hn : r < 0
⊢ r = 0

tactic: exact (one_ne_zero h).elim
state_before: case inl
r : ℝ
h : 1 = 0
hn : r < 0
⊢ r = 0
state_after: no goals

tactic: rfl
state_before: case inr.inl
h : sign 0 = 0
⊢ 0 = 0
state_after: no goals

tactic: rw [sign_of_pos hp] at h
state_before: case inr.inr
r : ℝ
h : r.sign = 0
hp : 0 < r
⊢ r = 0
state_after: case inr.inr
r : ℝ
h : 1 = 0
hp : 0 < r
⊢ r = 0

tactic: exact (one_ne_zero h).elim
state_before: case inr.inr
r : ℝ
h : 1 = 0
hp : 0 < r
⊢ r = 0
state_after: no goals
Theorem: MvPolynomial.eval_indicator_apply_eq_one
File: Mathlib/FieldTheory/Finite/Polynomial.lean

tactic: nontriviality
state_before: K : Type u_1
σ : Type u_2
inst✝² : Fintype K
inst✝¹ : Fintype σ
inst✝ : CommRing K
a : σ → K
⊢ (eval a) (indicator a) = 1
state_after: K : Type u_1
σ : Type u_2
inst✝² : Fintype K
inst✝¹ : Fintype σ
inst✝ : CommRing K
a : σ → K
a✝ : Nontrivial K
⊢ (eval a) (indicator a) = 1

tactic: have : 0 < Fintype.card K - 1 := tsub_pos_of_lt Fintype.one_lt_card
state_before: K : Type u_1
σ : Type u_2
inst✝² : Fintype K
inst✝¹ : Fintype σ
inst✝ : CommRing K
a : σ → K
a✝ : Nontrivial K
⊢ (eval a) (indicator a) = 1
state_after: K : Type u_1
σ : Type u_2
inst✝² : Fintype K
inst✝¹ : Fintype σ
inst✝ : CommRing K
a : σ → K
a✝ : Nontrivial K
this : 0 < Fintype.card K - 1
⊢ (eval a) (indicator a) = 1

tactic: simp only [indicator, map_prod, map_sub, map_one, map_pow, eval_X, eval_C, sub_self,
  zero_pow this.ne', sub_zero, Finset.prod_const_one]
state_before: K : Type u_1
σ : Type u_2
inst✝² : Fintype K
inst✝¹ : Fintype σ
inst✝ : CommRing K
a : σ → K
a✝ : Nontrivial K
this : 0 < Fintype.card K - 1
⊢ (eval a) (indicator a) = 1
state_after: no goals
Theorem: MeasureTheory.lintegral_nnnorm_neg
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: simp only [Pi.neg_apply, nnnorm_neg]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → β
⊢ ∫⁻ (a : α), ↑‖(-f) a‖₊ ∂μ = ∫⁻ (a : α), ↑‖f a‖₊ ∂μ
state_after: no goals
Theorem: StarSubalgebra.toSubalgebra_injective
File: Mathlib/Algebra/Star/Subalgebra.lean

tactic: rw [← mem_toSubalgebra, ← mem_toSubalgebra, h]
state_before: F : Type u_1
R : Type u_2
A : Type u_3
B : Type u_4
C : Type u_5
inst✝¹³ : CommSemiring R
inst✝¹² : StarRing R
inst✝¹¹ : Semiring A
inst✝¹⁰ : StarRing A
inst✝⁹ : Algebra R A
inst✝⁸ : StarModule R A
inst✝⁷ : Semiring B
inst✝⁶ : StarRing B
inst✝⁵ : Algebra R B
inst✝⁴ : StarModule R B
inst✝³ : Semiring C
inst✝² : StarRing C
inst✝¹ : Algebra R C
inst✝ : StarModule R C
S T : StarSubalgebra R A
h : S.toSubalgebra = T.toSubalgebra
x : A
⊢ x ∈ S ↔ x ∈ T
state_after: no goals
Theorem: Set.enumerateCountable_mem
File: Mathlib/Data/Set/Countable.lean

tactic: conv_rhs => rw [← range_enumerateCountable_of_mem h h_mem]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
h : s.Countable
default : α
h_mem : default ∈ s
n : ℕ
⊢ enumerateCountable h default n ∈ s
state_after: α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
h : s.Countable
default : α
h_mem : default ∈ s
n : ℕ
⊢ enumerateCountable h default n ∈ range (enumerateCountable h default)

tactic: exact mem_range_self n
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
s : Set α
h : s.Countable
default : α
h_mem : default ∈ s
n : ℕ
⊢ enumerateCountable h default n ∈ range (enumerateCountable h default)
state_after: no goals
Theorem: Subgroup.le_normalizer_comap
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: simp only [mem_normalizer_iff, mem_comap]
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
H K : Subgroup G
N : Type u_5
inst✝ : Group N
f : N →* G
x : N
⊢ x ∈ comap f H.normalizer → x ∈ (comap f H).normalizer
state_after: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
H K : Subgroup G
N : Type u_5
inst✝ : Group N
f : N →* G
x : N
⊢ (∀ (h : G), h ∈ H ↔ f x * h * (f x)⁻¹ ∈ H) → ∀ (h : N), f h ∈ H ↔ f (x * h * x⁻¹) ∈ H

tactic: intro h n
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
H K : Subgroup G
N : Type u_5
inst✝ : Group N
f : N →* G
x : N
⊢ (∀ (h : G), h ∈ H ↔ f x * h * (f x)⁻¹ ∈ H) → ∀ (h : N), f h ∈ H ↔ f (x * h * x⁻¹) ∈ H
state_after: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
H K : Subgroup G
N : Type u_5
inst✝ : Group N
f : N →* G
x : N
h : ∀ (h : G), h ∈ H ↔ f x * h * (f x)⁻¹ ∈ H
n : N
⊢ f n ∈ H ↔ f (x * n * x⁻¹) ∈ H

tactic: simp [h (f n)]
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
H K : Subgroup G
N : Type u_5
inst✝ : Group N
f : N →* G
x : N
h : ∀ (h : G), h ∈ H ↔ f x * h * (f x)⁻¹ ∈ H
n : N
⊢ f n ∈ H ↔ f (x * n * x⁻¹) ∈ H
state_after: no goals
Theorem: Equiv.Perm.apply_mem_support
File: Mathlib/GroupTheory/Perm/Support.lean

tactic: rw [mem_support, mem_support, Ne, Ne, apply_eq_iff_eq]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
x : α
⊢ f x ∈ f.support ↔ x ∈ f.support
state_after: no goals
Theorem: Matrix.reindexLinearEquiv_comp
File: Mathlib/LinearAlgebra/Matrix/Reindex.lean

tactic: rw [← reindexLinearEquiv_trans]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
l' : Type u_5
m' : Type u_6
n' : Type u_7
o' : Type u_8
m'' : Type u_9
n'' : Type u_10
R : Type u_11
A : Type u_12
inst✝² : Semiring R
inst✝¹ : AddCommMonoid A
inst✝ : Module R A
e₁ : m ≃ m'
e₂ : n ≃ n'
e₁' : m' ≃ m''
e₂' : n' ≃ n''
⊢ ⇑(reindexLinearEquiv R A e₁' e₂') ∘ ⇑(reindexLinearEquiv R A e₁ e₂) =
    ⇑(reindexLinearEquiv R A (e₁.trans e₁') (e₂.trans e₂'))
state_after: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
l' : Type u_5
m' : Type u_6
n' : Type u_7
o' : Type u_8
m'' : Type u_9
n'' : Type u_10
R : Type u_11
A : Type u_12
inst✝² : Semiring R
inst✝¹ : AddCommMonoid A
inst✝ : Module R A
e₁ : m ≃ m'
e₂ : n ≃ n'
e₁' : m' ≃ m''
e₂' : n' ≃ n''
⊢ ⇑(reindexLinearEquiv R A e₁' e₂') ∘ ⇑(reindexLinearEquiv R A e₁ e₂) =
    ⇑(reindexLinearEquiv R A e₁ e₂ ≪≫ₗ reindexLinearEquiv R A e₁' e₂')

tactic: rfl
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
l' : Type u_5
m' : Type u_6
n' : Type u_7
o' : Type u_8
m'' : Type u_9
n'' : Type u_10
R : Type u_11
A : Type u_12
inst✝² : Semiring R
inst✝¹ : AddCommMonoid A
inst✝ : Module R A
e₁ : m ≃ m'
e₂ : n ≃ n'
e₁' : m' ≃ m''
e₂' : n' ≃ n''
⊢ ⇑(reindexLinearEquiv R A e₁' e₂') ∘ ⇑(reindexLinearEquiv R A e₁ e₂) =
    ⇑(reindexLinearEquiv R A e₁ e₂ ≪≫ₗ reindexLinearEquiv R A e₁' e₂')
state_after: no goals
Theorem: Matrix.IsSymm.fromBlocks
File: Mathlib/LinearAlgebra/Matrix/Symmetric.lean

tactic: have hCB : Cᵀ = B := by
  rw [← hBC]
  simp
state_before: α : Type u_1
β : Type u_2
n : Type u_3
m : Type u_4
R : Type u_5
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
hA : A.IsSymm
hBC : Bᵀ = C
hD : D.IsSymm
⊢ (Matrix.fromBlocks A B C D).IsSymm
state_after: α : Type u_1
β : Type u_2
n : Type u_3
m : Type u_4
R : Type u_5
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
hA : A.IsSymm
hBC : Bᵀ = C
hD : D.IsSymm
hCB : Cᵀ = B
⊢ (Matrix.fromBlocks A B C D).IsSymm

tactic: unfold Matrix.IsSymm
state_before: α : Type u_1
β : Type u_2
n : Type u_3
m : Type u_4
R : Type u_5
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
hA : A.IsSymm
hBC : Bᵀ = C
hD : D.IsSymm
hCB : Cᵀ = B
⊢ (Matrix.fromBlocks A B C D).IsSymm
state_after: α : Type u_1
β : Type u_2
n : Type u_3
m : Type u_4
R : Type u_5
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
hA : A.IsSymm
hBC : Bᵀ = C
hD : D.IsSymm
hCB : Cᵀ = B
⊢ (Matrix.fromBlocks A B C D)ᵀ = Matrix.fromBlocks A B C D

tactic: rw [fromBlocks_transpose, hA, hCB, hBC, hD]
state_before: α : Type u_1
β : Type u_2
n : Type u_3
m : Type u_4
R : Type u_5
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
hA : A.IsSymm
hBC : Bᵀ = C
hD : D.IsSymm
hCB : Cᵀ = B
⊢ (Matrix.fromBlocks A B C D)ᵀ = Matrix.fromBlocks A B C D
state_after: no goals

tactic: rw [← hBC]
state_before: α : Type u_1
β : Type u_2
n : Type u_3
m : Type u_4
R : Type u_5
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
hA : A.IsSymm
hBC : Bᵀ = C
hD : D.IsSymm
⊢ Cᵀ = B
state_after: α : Type u_1
β : Type u_2
n : Type u_3
m : Type u_4
R : Type u_5
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
hA : A.IsSymm
hBC : Bᵀ = C
hD : D.IsSymm
⊢ Bᵀᵀ = B

tactic: simp
state_before: α : Type u_1
β : Type u_2
n : Type u_3
m : Type u_4
R : Type u_5
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
hA : A.IsSymm
hBC : Bᵀ = C
hD : D.IsSymm
⊢ Bᵀᵀ = B
state_after: no goals
Theorem: BoundedContinuousFunction.exists_forall_mem_restrict_eq_of_closed
File: Mathlib/Topology/TietzeExtension.lean

tactic: rcases exists_extension_forall_mem_of_closedEmbedding f hf hne
    (closedEmbedding_subtype_val hs) with
  ⟨g, hg, hgf⟩
state_before: X : Type u_1
Y : Type u_2
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : NormalSpace Y
s : Set Y
f : ↑s →ᵇ ℝ
hs : IsClosed s
t : Set ℝ
inst✝ : t.OrdConnected
hf : ∀ (x : ↑s), f x ∈ t
hne : t.Nonempty
⊢ ∃ g, (∀ (y : Y), g y ∈ t) ∧ g.restrict s = f
state_after: case intro.intro
X : Type u_1
Y : Type u_2
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : NormalSpace Y
s : Set Y
f : ↑s →ᵇ ℝ
hs : IsClosed s
t : Set ℝ
inst✝ : t.OrdConnected
hf : ∀ (x : ↑s), f x ∈ t
hne : t.Nonempty
g : Y →ᵇ ℝ
hg : ∀ (y : Y), g y ∈ t
hgf : ⇑g ∘ Subtype.val = ⇑f
⊢ ∃ g, (∀ (y : Y), g y ∈ t) ∧ g.restrict s = f

tactic: exact ⟨g, hg, DFunLike.coe_injective hgf⟩
state_before: case intro.intro
X : Type u_1
Y : Type u_2
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : NormalSpace Y
s : Set Y
f : ↑s →ᵇ ℝ
hs : IsClosed s
t : Set ℝ
inst✝ : t.OrdConnected
hf : ∀ (x : ↑s), f x ∈ t
hne : t.Nonempty
g : Y →ᵇ ℝ
hg : ∀ (y : Y), g y ∈ t
hgf : ⇑g ∘ Subtype.val = ⇑f
⊢ ∃ g, (∀ (y : Y), g y ∈ t) ∧ g.restrict s = f
state_after: no goals
Theorem: MultilinearMap.sum_apply
File: Mathlib/LinearAlgebra/Multilinear/Basic.lean

tactic: simp
state_before: R : Type uR
S : Type uS
ι : Type uι
n : ℕ
M : Fin n.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝¹⁰ : Semiring R
inst✝⁹ : (i : Fin n.succ) → AddCommMonoid (M i)
inst✝⁸ : (i : ι) → AddCommMonoid (M₁ i)
inst✝⁷ : AddCommMonoid M₂
inst✝⁶ : AddCommMonoid M₃
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : (i : Fin n.succ) → Module R (M i)
inst✝³ : (i : ι) → Module R (M₁ i)
inst✝² : Module R M₂
inst✝¹ : Module R M₃
inst✝ : Module R M'
f✝ f' : MultilinearMap R M₁ M₂
α : Type u_1
f : α → MultilinearMap R M₁ M₂
m : (i : ι) → M₁ i
s : Finset α
⊢ (∑ a ∈ s, f a) m = ∑ a ∈ s, (f a) m
state_after: no goals
Theorem: Equiv.Perm.card_support_ne_one
File: Mathlib/GroupTheory/Perm/Support.lean

tactic: by_cases h : f = 1
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
⊢ f.support.card ≠ 1
state_after: case pos
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
h : f = 1
⊢ f.support.card ≠ 1

case neg
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
h : ¬f = 1
⊢ f.support.card ≠ 1

tactic: exact ne_of_eq_of_ne (card_support_eq_zero.mpr h) zero_ne_one
state_before: case pos
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
h : f = 1
⊢ f.support.card ≠ 1
state_after: no goals

tactic: exact ne_of_gt (one_lt_card_support_of_ne_one h)
state_before: case neg
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
h : ¬f = 1
⊢ f.support.card ≠ 1
state_after: no goals
Theorem: String.Iterator.ValidFor.remainingBytes
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

tactic: simp [Iterator.remainingBytes, Nat.add_sub_cancel_left]
state_before: l r : List Char
⊢ { s := { data := l.reverseAux r }, i := { byteIdx := utf8Len l } }.remainingBytes = utf8Len r
state_after: no goals
Theorem: CoxeterSystem.not_isLeftDescent_iff
File: Mathlib/GroupTheory/Coxeter/Length.lean

tactic: unfold IsLeftDescent
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ ¬cs.IsLeftDescent w i ↔ cs.length (cs.simple i * w) = cs.length w + 1
state_after: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ ¬cs.length (cs.simple i * w) < cs.length w ↔ cs.length (cs.simple i * w) = cs.length w + 1

tactic: constructor
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ ¬cs.length (cs.simple i * w) < cs.length w ↔ cs.length (cs.simple i * w) = cs.length w + 1
state_after: case mp
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ ¬cs.length (cs.simple i * w) < cs.length w → cs.length (cs.simple i * w) = cs.length w + 1

case mpr
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ cs.length (cs.simple i * w) = cs.length w + 1 → ¬cs.length (cs.simple i * w) < cs.length w

tactic: intro _
state_before: case mp
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ ¬cs.length (cs.simple i * w) < cs.length w → cs.length (cs.simple i * w) = cs.length w + 1
state_after: case mp
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
a✝ : ¬cs.length (cs.simple i * w) < cs.length w
⊢ cs.length (cs.simple i * w) = cs.length w + 1

tactic: exact (cs.length_simple_mul w i).resolve_right (by linarith)
state_before: case mp
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
a✝ : ¬cs.length (cs.simple i * w) < cs.length w
⊢ cs.length (cs.simple i * w) = cs.length w + 1
state_after: no goals

tactic: linarith
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
a✝ : ¬cs.length (cs.simple i * w) < cs.length w
⊢ ¬cs.length (cs.simple i * w) + 1 = cs.length w
state_after: no goals

tactic: intro _
state_before: case mpr
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ cs.length (cs.simple i * w) = cs.length w + 1 → ¬cs.length (cs.simple i * w) < cs.length w
state_after: case mpr
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
a✝ : cs.length (cs.simple i * w) = cs.length w + 1
⊢ ¬cs.length (cs.simple i * w) < cs.length w

tactic: linarith
state_before: case mpr
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
a✝ : cs.length (cs.simple i * w) = cs.length w + 1
⊢ ¬cs.length (cs.simple i * w) < cs.length w
state_after: no goals
Theorem: AddCircle.toCircle_add
File: Mathlib/Analysis/SpecialFunctions/Complex/Circle.lean

tactic: induction x using QuotientAddGroup.induction_on'
state_before: T : ℝ
x y : AddCircle T
⊢ (x + y).toCircle = x.toCircle * y.toCircle
state_after: case H
T : ℝ
y : AddCircle T
z✝ : ℝ
⊢ (↑z✝ + y).toCircle = toCircle ↑z✝ * y.toCircle

tactic: induction y using QuotientAddGroup.induction_on'
state_before: case H
T : ℝ
y : AddCircle T
z✝ : ℝ
⊢ (↑z✝ + y).toCircle = toCircle ↑z✝ * y.toCircle
state_after: case H.H
T z✝¹ z✝ : ℝ
⊢ (↑z✝¹ + ↑z✝).toCircle = toCircle ↑z✝¹ * toCircle ↑z✝

tactic: simp_rw [← coe_add, toCircle_apply_mk, mul_add, expMapCircle_add]
state_before: case H.H
T z✝¹ z✝ : ℝ
⊢ (↑z✝¹ + ↑z✝).toCircle = toCircle ↑z✝¹ * toCircle ↑z✝
state_after: no goals
Theorem: LinearMap.range_domRestrict_le_range
File: Mathlib/Algebra/Module/Submodule/Range.lean

tactic: rintro x ⟨⟨y, hy⟩, rfl⟩
state_before: R : Type u_1
R₂ : Type u_2
R₃ : Type u_3
K : Type u_4
K₂ : Type u_5
M : Type u_6
M₂ : Type u_7
M₃ : Type u_8
V : Type u_9
V₂ : Type u_10
inst✝¹³ : Semiring R
inst✝¹² : Semiring R₂
inst✝¹¹ : Semiring R₃
inst✝¹⁰ : AddCommMonoid M
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : AddCommMonoid M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝⁷ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝⁶ : Module R M
inst✝⁵ : Module R₂ M₂
inst✝⁴ : Module R₃ M₃
σ₂₁ : R₂ →+* R
τ₁₂ : R →+* R₂
τ₂₃ : R₂ →+* R₃
τ₁₃ : R →+* R₃
inst✝³ : RingHomCompTriple τ₁₂ τ₂₃ τ₁₃
F : Type u_11
inst✝² : FunLike F M M₂
inst✝¹ : SemilinearMapClass F τ₁₂ M M₂
inst✝ : RingHomSurjective τ₁₂
f : M →ₛₗ[τ₁₂] M₂
S : Submodule R M
⊢ range (f.domRestrict S) ≤ range f
state_after: case intro.mk
R : Type u_1
R₂ : Type u_2
R₃ : Type u_3
K : Type u_4
K₂ : Type u_5
M : Type u_6
M₂ : Type u_7
M₃ : Type u_8
V : Type u_9
V₂ : Type u_10
inst✝¹³ : Semiring R
inst✝¹² : Semiring R₂
inst✝¹¹ : Semiring R₃
inst✝¹⁰ : AddCommMonoid M
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : AddCommMonoid M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝⁷ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝⁶ : Module R M
inst✝⁵ : Module R₂ M₂
inst✝⁴ : Module R₃ M₃
σ₂₁ : R₂ →+* R
τ₁₂ : R →+* R₂
τ₂₃ : R₂ →+* R₃
τ₁₃ : R →+* R₃
inst✝³ : RingHomCompTriple τ₁₂ τ₂₃ τ₁₃
F : Type u_11
inst✝² : FunLike F M M₂
inst✝¹ : SemilinearMapClass F τ₁₂ M M₂
inst✝ : RingHomSurjective τ₁₂
f : M →ₛₗ[τ₁₂] M₂
S : Submodule R M
y : M
hy : y ∈ S
⊢ (f.domRestrict S) ⟨y, hy⟩ ∈ range f

tactic: exact LinearMap.mem_range_self f y
state_before: case intro.mk
R : Type u_1
R₂ : Type u_2
R₃ : Type u_3
K : Type u_4
K₂ : Type u_5
M : Type u_6
M₂ : Type u_7
M₃ : Type u_8
V : Type u_9
V₂ : Type u_10
inst✝¹³ : Semiring R
inst✝¹² : Semiring R₂
inst✝¹¹ : Semiring R₃
inst✝¹⁰ : AddCommMonoid M
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : AddCommMonoid M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝⁷ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝⁶ : Module R M
inst✝⁵ : Module R₂ M₂
inst✝⁴ : Module R₃ M₃
σ₂₁ : R₂ →+* R
τ₁₂ : R →+* R₂
τ₂₃ : R₂ →+* R₃
τ₁₃ : R →+* R₃
inst✝³ : RingHomCompTriple τ₁₂ τ₂₃ τ₁₃
F : Type u_11
inst✝² : FunLike F M M₂
inst✝¹ : SemilinearMapClass F τ₁₂ M M₂
inst✝ : RingHomSurjective τ₁₂
f : M →ₛₗ[τ₁₂] M₂
S : Submodule R M
y : M
hy : y ∈ S
⊢ (f.domRestrict S) ⟨y, hy⟩ ∈ range f
state_after: no goals
Theorem: MellinConvergent.div_const
File: Mathlib/Analysis/MellinTransform.lean

tactic: simpa only [MellinConvergent, smul_eq_mul, ← mul_div_assoc] using hf.div_const a
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f : ℝ → ℂ
s : ℂ
hf : MellinConvergent f s
a : ℂ
⊢ MellinConvergent (fun t => f t / a) s
state_after: no goals
Theorem: PiTensorProduct.lifts_add
File: Mathlib/LinearAlgebra/PiTensorProduct.lean

tactic: simp only [lifts, Set.mem_setOf_eq, AddCon.coe_add]
state_before: ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝⁷ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝⁶ : (i : ι) → AddCommMonoid (s i)
inst✝⁵ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
E : Type u_9
inst✝² : AddCommMonoid E
inst✝¹ : Module R E
F : Type u_10
inst✝ : AddCommMonoid F
x y : ⨂[R] (i : ι), s i
p q : FreeAddMonoid (R × ((i : ι) → s i))
hp : p ∈ x.lifts
hq : q ∈ y.lifts
⊢ p + q ∈ (x + y).lifts
state_after: ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝⁷ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝⁶ : (i : ι) → AddCommMonoid (s i)
inst✝⁵ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
E : Type u_9
inst✝² : AddCommMonoid E
inst✝¹ : Module R E
F : Type u_10
inst✝ : AddCommMonoid F
x y : ⨂[R] (i : ι), s i
p q : FreeAddMonoid (R × ((i : ι) → s i))
hp : p ∈ x.lifts
hq : q ∈ y.lifts
⊢ ↑p + ↑q = x + y

tactic: rw [hp, hq]
state_before: ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝⁷ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝⁶ : (i : ι) → AddCommMonoid (s i)
inst✝⁵ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
E : Type u_9
inst✝² : AddCommMonoid E
inst✝¹ : Module R E
F : Type u_10
inst✝ : AddCommMonoid F
x y : ⨂[R] (i : ι), s i
p q : FreeAddMonoid (R × ((i : ι) → s i))
hp : p ∈ x.lifts
hq : q ∈ y.lifts
⊢ ↑p + ↑q = x + y
state_after: no goals
Theorem: MeasureTheory.integrable_of_summable_norm_restrict
File: Mathlib/MeasureTheory/Integral/SetIntegral.lean

tactic: simpa only [hs, integrableOn_univ] using integrableOn_iUnion_of_summable_norm_restrict hf
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝⁶ : MeasurableSpace X
ι : Type u_5
inst✝⁵ : Countable ι
μ : Measure X
inst✝⁴ : NormedAddCommGroup E
inst✝³ : TopologicalSpace X
inst✝² : BorelSpace X
inst✝¹ : MetrizableSpace X
inst✝ : IsLocallyFiniteMeasure μ
f : C(X, E)
s : ι → Compacts X
hf : Summable fun i => ‖ContinuousMap.restrict (↑(s i)) f‖ * (μ ↑(s i)).toReal
hs : ⋃ i, ↑(s i) = univ
⊢ Integrable (⇑f) μ
state_after: no goals
Theorem: toIcoMod_sub_self
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: rw [toIcoMod, sub_sub_cancel_left, neg_smul]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ toIcoMod hp a b - b = -toIcoDiv hp a b • p
state_after: no goals
Theorem: Nat.preimage_Ici
File: Mathlib/Algebra/Order/Floor.lean

tactic: ext
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a✝ : α
n : ℕ
a : α
⊢ Nat.cast ⁻¹' Ici a = Ici ⌈a⌉₊
state_after: case h
F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a✝ : α
n : ℕ
a : α
x✝ : ℕ
⊢ x✝ ∈ Nat.cast ⁻¹' Ici a ↔ x✝ ∈ Ici ⌈a⌉₊

tactic: simp [ceil_le]
state_before: case h
F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a✝ : α
n : ℕ
a : α
x✝ : ℕ
⊢ x✝ ∈ Nat.cast ⁻¹' Ici a ↔ x✝ ∈ Ici ⌈a⌉₊
state_after: no goals