1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Real.log_abs
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: by_cases h : x = 0
state_before: x✝ y x : ℝ
⊢ log |x| = log x
state_after: case pos
x✝ y x : ℝ
h : x = 0
⊢ log |x| = log x

case neg
x✝ y x : ℝ
h : ¬x = 0
⊢ log |x| = log x

tactic: simp [h]
state_before: case pos
x✝ y x : ℝ
h : x = 0
⊢ log |x| = log x
state_after: no goals

tactic: rw [← exp_eq_exp, exp_log_eq_abs h, exp_log_eq_abs (abs_pos.2 h).ne', abs_abs]
state_before: case neg
x✝ y x : ℝ
h : ¬x = 0
⊢ log |x| = log x
state_after: no goals
Theorem: Int.exists_unique_equiv
File: Mathlib/Data/Int/ModEq.lean

tactic: have : a % b < |b| := emod_lt _ (ne_of_gt hb)
state_before: m n a✝ b✝ c d a b : ℤ
hb : 0 < b
⊢ a % b < b
state_after: m n a✝ b✝ c d a b : ℤ
hb : 0 < b
this : a % b < |b|
⊢ a % b < b

tactic: rwa [abs_of_pos hb] at this
state_before: m n a✝ b✝ c d a b : ℤ
hb : 0 < b
this : a % b < |b|
⊢ a % b < b
state_after: no goals

tactic: simp [ModEq]
state_before: m n a✝ b✝ c d a b : ℤ
hb : 0 < b
⊢ a % b ≡ a [ZMOD b]
state_after: no goals
Theorem: Real.eulerMascheroniSeq_lt_eulerMascheroniSeq'
File: Mathlib/NumberTheory/Harmonic/EulerMascheroni.lean

tactic: apply (strictMono_eulerMascheroniSeq.monotone (le_max_left m n)).trans_lt
state_before: m n : ℕ
this : ∀ (r : ℕ), eulerMascheroniSeq r < eulerMascheroniSeq' r
⊢ eulerMascheroniSeq m < eulerMascheroniSeq' n
state_after: m n : ℕ
this : ∀ (r : ℕ), eulerMascheroniSeq r < eulerMascheroniSeq' r
⊢ eulerMascheroniSeq (max m n) < eulerMascheroniSeq' n

tactic: exact (this _).trans_le (strictAnti_eulerMascheroniSeq'.antitone (le_max_right m n))
state_before: m n : ℕ
this : ∀ (r : ℕ), eulerMascheroniSeq r < eulerMascheroniSeq' r
⊢ eulerMascheroniSeq (max m n) < eulerMascheroniSeq' n
state_after: no goals

tactic: rcases eq_zero_or_pos r with rfl | hr
state_before: m n r : ℕ
⊢ eulerMascheroniSeq r < eulerMascheroniSeq' r
state_after: case inl
m n : ℕ
⊢ eulerMascheroniSeq 0 < eulerMascheroniSeq' 0

case inr
m n r : ℕ
hr : 0 < r
⊢ eulerMascheroniSeq r < eulerMascheroniSeq' r

tactic: simp only [eulerMascheroniSeq, eulerMascheroniSeq', hr.ne', if_false]
state_before: case inr
m n r : ℕ
hr : 0 < r
⊢ eulerMascheroniSeq r < eulerMascheroniSeq' r
state_after: case inr
m n r : ℕ
hr : 0 < r
⊢ ↑(harmonic r) - log (↑r + 1) < ↑(harmonic r) - log ↑r

tactic: gcongr
state_before: case inr
m n r : ℕ
hr : 0 < r
⊢ ↑(harmonic r) - log (↑r + 1) < ↑(harmonic r) - log ↑r
state_after: case inr.h.h
m n r : ℕ
hr : 0 < r
⊢ ↑r < ↑r + 1

tactic: linarith
state_before: case inr.h.h
m n r : ℕ
hr : 0 < r
⊢ ↑r < ↑r + 1
state_after: no goals

tactic: simp [eulerMascheroniSeq, eulerMascheroniSeq']
state_before: case inl
m n : ℕ
⊢ eulerMascheroniSeq 0 < eulerMascheroniSeq' 0
state_after: no goals
Theorem: TensorProduct.finsuppLeft_smul'
File: Mathlib/LinearAlgebra/DirectSum/Finsupp.lean

tactic: induction t with
| zero => simp
| add x y hx hy => simp [hx, hy]
| tmul p n => ext; simp [smul_tmul', finsuppLeft_apply_tmul_apply]
state_before: R : Type u_1
inst✝⁹ : CommSemiring R
M : Type u_2
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
N : Type u_3
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R N
ι : Type u_4
inst✝⁴ : DecidableEq ι
S : Type u_5
inst✝³ : CommSemiring S
inst✝² : Algebra R S
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
s : S
t : (ι →₀ M) ⊗[R] N
⊢ (finsuppLeft R M N ι) (s • t) = s • (finsuppLeft R M N ι) t
state_after: no goals

tactic: simp
state_before: case zero
R : Type u_1
inst✝⁹ : CommSemiring R
M : Type u_2
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
N : Type u_3
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R N
ι : Type u_4
inst✝⁴ : DecidableEq ι
S : Type u_5
inst✝³ : CommSemiring S
inst✝² : Algebra R S
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
s : S
⊢ (finsuppLeft R M N ι) (s • 0) = s • (finsuppLeft R M N ι) 0
state_after: no goals

tactic: simp [hx, hy]
state_before: case add
R : Type u_1
inst✝⁹ : CommSemiring R
M : Type u_2
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
N : Type u_3
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R N
ι : Type u_4
inst✝⁴ : DecidableEq ι
S : Type u_5
inst✝³ : CommSemiring S
inst✝² : Algebra R S
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
s : S
x y : (ι →₀ M) ⊗[R] N
hx : (finsuppLeft R M N ι) (s • x) = s • (finsuppLeft R M N ι) x
hy : (finsuppLeft R M N ι) (s • y) = s • (finsuppLeft R M N ι) y
⊢ (finsuppLeft R M N ι) (s • (x + y)) = s • (finsuppLeft R M N ι) (x + y)
state_after: no goals

tactic: ext
state_before: case tmul
R : Type u_1
inst✝⁹ : CommSemiring R
M : Type u_2
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
N : Type u_3
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R N
ι : Type u_4
inst✝⁴ : DecidableEq ι
S : Type u_5
inst✝³ : CommSemiring S
inst✝² : Algebra R S
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
s : S
p : ι →₀ M
n : N
⊢ (finsuppLeft R M N ι) (s • p ⊗ₜ[R] n) = s • (finsuppLeft R M N ι) (p ⊗ₜ[R] n)
state_after: case tmul.h
R : Type u_1
inst✝⁹ : CommSemiring R
M : Type u_2
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
N : Type u_3
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R N
ι : Type u_4
inst✝⁴ : DecidableEq ι
S : Type u_5
inst✝³ : CommSemiring S
inst✝² : Algebra R S
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
s : S
p : ι →₀ M
n : N
a✝ : ι
⊢ ((finsuppLeft R M N ι) (s • p ⊗ₜ[R] n)) a✝ = (s • (finsuppLeft R M N ι) (p ⊗ₜ[R] n)) a✝

tactic: simp [smul_tmul', finsuppLeft_apply_tmul_apply]
state_before: case tmul.h
R : Type u_1
inst✝⁹ : CommSemiring R
M : Type u_2
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
N : Type u_3
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R N
ι : Type u_4
inst✝⁴ : DecidableEq ι
S : Type u_5
inst✝³ : CommSemiring S
inst✝² : Algebra R S
inst✝¹ : Module S M
inst✝ : IsScalarTower R S M
s : S
p : ι →₀ M
n : N
a✝ : ι
⊢ ((finsuppLeft R M N ι) (s • p ⊗ₜ[R] n)) a✝ = (s • (finsuppLeft R M N ι) (p ⊗ₜ[R] n)) a✝
state_after: no goals
Theorem: MvPolynomial.degrees_zero
File: Mathlib/Algebra/MvPolynomial/Degrees.lean

tactic: rw [← C_0]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
⊢ degrees 0 = 0
state_after: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
⊢ (C 0).degrees = 0

tactic: exact degrees_C 0
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
⊢ (C 0).degrees = 0
state_after: no goals
Theorem: List.tendsto_cons_iff
File: Mathlib/Topology/List.lean

tactic: rw [this, Filter.tendsto_map'_iff]
state_before: α : Type u_1
β✝ : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
β : Type u_3
f : List α → β
b : Filter β
a : α
l : List α
this : 𝓝 (a :: l) = Filter.map (fun p => p.1 :: p.2) (𝓝 a ×ˢ 𝓝 l)
⊢ Tendsto f (𝓝 (a :: l)) b ↔ Tendsto (fun p => f (p.1 :: p.2)) (𝓝 a ×ˢ 𝓝 l) b
state_after: α : Type u_1
β✝ : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
β : Type u_3
f : List α → β
b : Filter β
a : α
l : List α
this : 𝓝 (a :: l) = Filter.map (fun p => p.1 :: p.2) (𝓝 a ×ˢ 𝓝 l)
⊢ Tendsto (f ∘ fun p => p.1 :: p.2) (𝓝 a ×ˢ 𝓝 l) b ↔ Tendsto (fun p => f (p.1 :: p.2)) (𝓝 a ×ˢ 𝓝 l) b

tactic: rfl
state_before: α : Type u_1
β✝ : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
β : Type u_3
f : List α → β
b : Filter β
a : α
l : List α
this : 𝓝 (a :: l) = Filter.map (fun p => p.1 :: p.2) (𝓝 a ×ˢ 𝓝 l)
⊢ Tendsto (f ∘ fun p => p.1 :: p.2) (𝓝 a ×ˢ 𝓝 l) b ↔ Tendsto (fun p => f (p.1 :: p.2)) (𝓝 a ×ˢ 𝓝 l) b
state_after: no goals

tactic: simp only [nhds_cons, Filter.prod_eq, (Filter.map_def _ _).symm,
  (Filter.seq_eq_filter_seq _ _).symm]
state_before: α : Type u_1
β✝ : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
β : Type u_3
f : List α → β
b : Filter β
a : α
l : List α
⊢ 𝓝 (a :: l) = Filter.map (fun p => p.1 :: p.2) (𝓝 a ×ˢ 𝓝 l)
state_after: α : Type u_1
β✝ : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β✝
β : Type u_3
f : List α → β
b : Filter β
a : α
l : List α
⊢ (Seq.seq (cons <$> 𝓝 a) fun x => 𝓝 l) = (fun p => p.1 :: p.2) <$> Seq.seq (Prod.mk <$> 𝓝 a) fun x => 𝓝 l
Theorem: Multiset.mem_powersetAux
File: Mathlib/Data/Multiset/Powerset.lean

tactic: simp [powersetAux_eq_map_coe, Subperm, and_comm]
state_before: α : Type u_1
l : List α
s : Multiset α
⊢ ∀ (a : List α), ⟦a⟧ ∈ powersetAux l ↔ ⟦a⟧ ≤ ↑l
state_after: no goals
Theorem: Set.mem_maximals_iff_forall_insert
File: Mathlib/Order/Minimal.lean

tactic: simp only [mem_maximals_iff, mem_setOf_eq, and_congr_right_iff]
state_before: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a b : α
P : Set α → Prop
hP : ∀ ⦃s t : Set α⦄, P t → s ⊆ t → P s
⊢ s ∈ maximals (fun x x_1 => x ⊆ x_1) {t | P t} ↔ P s ∧ ∀ x ∉ s, ¬P (insert x s)
state_after: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a b : α
P : Set α → Prop
hP : ∀ ⦃s t : Set α⦄, P t → s ⊆ t → P s
⊢ P s → ((∀ ⦃y : Set α⦄, P y → s ⊆ y → s = y) ↔ ∀ x ∉ s, ¬P (insert x s))

tactic: refine fun _ ↦ ⟨fun h x hx hxs ↦ hx ?_, fun h t ht hst ↦ hst.antisymm fun x hxt ↦ ?_⟩
state_before: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a b : α
P : Set α → Prop
hP : ∀ ⦃s t : Set α⦄, P t → s ⊆ t → P s
⊢ P s → ((∀ ⦃y : Set α⦄, P y → s ⊆ y → s = y) ↔ ∀ x ∉ s, ¬P (insert x s))
state_after: case refine_1
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a b : α
P : Set α → Prop
hP : ∀ ⦃s t : Set α⦄, P t → s ⊆ t → P s
x✝ : P s
h : ∀ ⦃y : Set α⦄, P y → s ⊆ y → s = y
x : α
hx : x ∉ s
hxs : P (insert x s)
⊢ x ∈ s

case refine_2
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t✝ : Set α
a b : α
P : Set α → Prop
hP : ∀ ⦃s t : Set α⦄, P t → s ⊆ t → P s
x✝ : P s
h : ∀ x ∉ s, ¬P (insert x s)
t : Set α
ht : P t
hst : s ⊆ t
x : α
hxt : x ∈ t
⊢ x ∈ s

tactic: exact by_contra fun hxs ↦ h x hxs (hP ht (insert_subset hxt hst))
state_before: case refine_2
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t✝ : Set α
a b : α
P : Set α → Prop
hP : ∀ ⦃s t : Set α⦄, P t → s ⊆ t → P s
x✝ : P s
h : ∀ x ∉ s, ¬P (insert x s)
t : Set α
ht : P t
hst : s ⊆ t
x : α
hxt : x ∈ t
⊢ x ∈ s
state_after: no goals

tactic: rw [h hxs (subset_insert _ _)]
state_before: case refine_1
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a b : α
P : Set α → Prop
hP : ∀ ⦃s t : Set α⦄, P t → s ⊆ t → P s
x✝ : P s
h : ∀ ⦃y : Set α⦄, P y → s ⊆ y → s = y
x : α
hx : x ∉ s
hxs : P (insert x s)
⊢ x ∈ s
state_after: case refine_1
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a b : α
P : Set α → Prop
hP : ∀ ⦃s t : Set α⦄, P t → s ⊆ t → P s
x✝ : P s
h : ∀ ⦃y : Set α⦄, P y → s ⊆ y → s = y
x : α
hx : x ∉ s
hxs : P (insert x s)
⊢ x ∈ insert x s

tactic: apply mem_insert
state_before: case refine_1
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a b : α
P : Set α → Prop
hP : ∀ ⦃s t : Set α⦄, P t → s ⊆ t → P s
x✝ : P s
h : ∀ ⦃y : Set α⦄, P y → s ⊆ y → s = y
x : α
hx : x ∉ s
hxs : P (insert x s)
⊢ x ∈ insert x s
state_after: no goals
Theorem: Finset.weightedVSub_empty
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: simp [weightedVSub_apply]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
w : ι → k
p : ι → P
⊢ (∅.weightedVSub p) w = 0
state_after: no goals
Theorem: Ideal.hasBasis_nhds_adic
File: Mathlib/Topology/Algebra/Nonarchimedean/AdicTopology.lean

tactic: letI := I.adicTopology
state_before: R : Type u_1
inst✝ : CommRing R
I : Ideal R
x : R
⊢ (𝓝 x).HasBasis (fun _n => True) fun n => (fun y => x + y) '' ↑(I ^ n)
state_after: R : Type u_1
inst✝ : CommRing R
I : Ideal R
x : R
this : TopologicalSpace R := I.adicTopology
⊢ (𝓝 x).HasBasis (fun _n => True) fun n => (fun y => x + y) '' ↑(I ^ n)

tactic: have := I.hasBasis_nhds_zero_adic.map fun y => x + y
state_before: R : Type u_1
inst✝ : CommRing R
I : Ideal R
x : R
this : TopologicalSpace R := I.adicTopology
⊢ (𝓝 x).HasBasis (fun _n => True) fun n => (fun y => x + y) '' ↑(I ^ n)
state_after: R : Type u_1
inst✝ : CommRing R
I : Ideal R
x : R
this✝ : TopologicalSpace R := I.adicTopology
this : (Filter.map (fun y => x + y) (𝓝 0)).HasBasis (fun _n => True) fun i => (fun y => x + y) '' ↑(I ^ i)
⊢ (𝓝 x).HasBasis (fun _n => True) fun n => (fun y => x + y) '' ↑(I ^ n)

tactic: rwa [map_add_left_nhds_zero x] at this
state_before: R : Type u_1
inst✝ : CommRing R
I : Ideal R
x : R
this✝ : TopologicalSpace R := I.adicTopology
this : (Filter.map (fun y => x + y) (𝓝 0)).HasBasis (fun _n => True) fun i => (fun y => x + y) '' ↑(I ^ i)
⊢ (𝓝 x).HasBasis (fun _n => True) fun n => (fun y => x + y) '' ↑(I ^ n)
state_after: no goals
Theorem: Set.strictMonoOn_projIic
File: Mathlib/Order/Interval/Set/ProjIcc.lean

tactic: simpa only [projIic_of_mem, hx, hy]
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a b : α
h : a ≤ b
x✝ x : α
hx : x ∈ Iic b
y : α
hy : y ∈ Iic b
hxy : x < y
⊢ projIic b x < projIic b y
state_after: no goals
Theorem: Polynomial.not_isUnit_X_sub_C
File: Mathlib/Algebra/Polynomial/AlgebraMap.lean

tactic: erw [← eval_mul_X_sub_C, hgf, eval_one]
state_before: R : Type u
S : Type v
T : Type w
A : Type z
A' : Type u_1
B : Type u_2
a b : R
n : ℕ
inst✝¹ : Ring R
inst✝ : Nontrivial R
r : R
x✝ : IsUnit (X - C r)
g : R[X]
_hfg : (X - C r) * g = 1
hgf : g * (X - C r) = 1
⊢ 0 = 1
state_after: no goals
Theorem: Quaternion.normSq_smul
File: Mathlib/Algebra/Quaternion.lean

tactic: simp only [normSq_def', smul_re, smul_imI, smul_imJ, smul_imK, mul_pow, mul_add, smul_eq_mul]
state_before: S : Type u_1
T : Type u_2
R : Type u_3
inst✝ : CommRing R
r✝ x y z : R
a b c : ℍ[R]
r : R
q : ℍ[R]
⊢ normSq (r • q) = r ^ 2 * normSq q
state_after: no goals
Theorem: mul_div_cancel_of_imp'
File: Mathlib/Algebra/GroupWithZero/Units/Basic.lean

tactic: rw [mul_comm, div_mul_cancel_of_imp h]
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝¹ : MonoidWithZero M₀
inst✝ : CommGroupWithZero G₀
a b c d : G₀
h : b = 0 → a = 0
⊢ b * (a / b) = a
state_after: no goals
Theorem: FirstOrder.Language.Substructure.closure_induction'
File: Mathlib/ModelTheory/Substructures.lean

tactic: refine Exists.elim ?_ fun (hx : x ∈ closure L s) (hc : p x hx) => hc
state_before: 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
S : L.Substructure M
s✝ s : Set M
p : (x : M) → x ∈ (closure L).toFun s → Prop
Hs : ∀ (x : M) (h : x ∈ s), p x ⋯
Hfun : ∀ {n : ℕ} (f : L.Functions n), ClosedUnder f {x | ∃ (hx : x ∈ (closure L).toFun s), p x hx}
x : M
hx : x ∈ (closure L).toFun s
⊢ p x hx
state_after: 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
S : L.Substructure M
s✝ s : Set M
p : (x : M) → x ∈ (closure L).toFun s → Prop
Hs : ∀ (x : M) (h : x ∈ s), p x ⋯
Hfun : ∀ {n : ℕ} (f : L.Functions n), ClosedUnder f {x | ∃ (hx : x ∈ (closure L).toFun s), p x hx}
x : M
hx : x ∈ (closure L).toFun s
⊢ ∃ (x_1 : x ∈ (closure L).toFun s), p x x_1

tactic: exact closure_induction hx (fun x hx => ⟨subset_closure hx, Hs x hx⟩) @Hfun
state_before: 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
S : L.Substructure M
s✝ s : Set M
p : (x : M) → x ∈ (closure L).toFun s → Prop
Hs : ∀ (x : M) (h : x ∈ s), p x ⋯
Hfun : ∀ {n : ℕ} (f : L.Functions n), ClosedUnder f {x | ∃ (hx : x ∈ (closure L).toFun s), p x hx}
x : M
hx : x ∈ (closure L).toFun s
⊢ ∃ (x_1 : x ∈ (closure L).toFun s), p x x_1
state_after: no goals
Theorem: SimpleGraph.Path.not_mem_edges_of_loop
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: simp [p.loop_eq]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v : V
e : Sym2 V
p : G.Path v v
⊢ e ∉ (↑p).edges
state_after: no goals
Theorem: Prime.not_dvd_finset_prod
File: Mathlib/Algebra/BigOperators/Associated.lean

tactic: exact mt (Prime.dvd_finset_prod_iff pp _).1 <| not_exists.2 fun a => not_and.2 (hS a)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
M : Type u_5
inst✝ : CommMonoidWithZero M
S : Finset α
p : M
pp : Prime p
g : α → M
hS : ∀ a ∈ S, ¬p ∣ g a
⊢ ¬p ∣ S.prod g
state_after: no goals
Theorem: pow_le_one_iff_of_nonneg
File: Mathlib/Algebra/Order/Ring/Basic.lean

tactic: simpa only [one_pow] using pow_le_pow_iff_left ha zero_le_one hn
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : LinearOrderedSemiring R
a b : R
m n : ℕ
ha : 0 ≤ a
hn : n ≠ 0
⊢ a ^ n ≤ 1 ↔ a ≤ 1
state_after: no goals
Theorem: Uniform.continuousOn_iff'_right
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: simp [ContinuousOn, continuousWithinAt_iff'_right]
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝¹ : UniformSpace α
inst✝ : TopologicalSpace β
f : β → α
s : Set β
⊢ ContinuousOn f s ↔ ∀ b ∈ s, Tendsto (fun x => (f b, f x)) (𝓝[s] b) (𝓤 α)
state_after: no goals
Theorem: exists_closed_nhds_one_inv_eq_mul_subset
File: Mathlib/Topology/Algebra/Group/Basic.lean

tactic: rcases exists_open_nhds_one_mul_subset hU with ⟨V, V_open, V_mem, hV⟩
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
U : Set G
hU : U ∈ 𝓝 1
⊢ ∃ V ∈ 𝓝 1, IsClosed V ∧ V⁻¹ = V ∧ V * V ⊆ U
state_after: case intro.intro.intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
U : Set G
hU : U ∈ 𝓝 1
V : Set G
V_open : IsOpen V
V_mem : 1 ∈ V
hV : V * V ⊆ U
⊢ ∃ V ∈ 𝓝 1, IsClosed V ∧ V⁻¹ = V ∧ V * V ⊆ U

tactic: rcases exists_mem_nhds_isClosed_subset (V_open.mem_nhds V_mem) with ⟨W, W_mem, W_closed, hW⟩
state_before: case intro.intro.intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
U : Set G
hU : U ∈ 𝓝 1
V : Set G
V_open : IsOpen V
V_mem : 1 ∈ V
hV : V * V ⊆ U
⊢ ∃ V ∈ 𝓝 1, IsClosed V ∧ V⁻¹ = V ∧ V * V ⊆ U
state_after: case intro.intro.intro.intro.intro.intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
U : Set G
hU : U ∈ 𝓝 1
V : Set G
V_open : IsOpen V
V_mem : 1 ∈ V
hV : V * V ⊆ U
W : Set G
W_mem : W ∈ 𝓝 1
W_closed : IsClosed W
hW : W ⊆ V
⊢ ∃ V ∈ 𝓝 1, IsClosed V ∧ V⁻¹ = V ∧ V * V ⊆ U

tactic: refine ⟨W ∩ W⁻¹, Filter.inter_mem W_mem (inv_mem_nhds_one G W_mem), W_closed.inter W_closed.inv,
  by simp [inter_comm], ?_⟩
state_before: case intro.intro.intro.intro.intro.intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
U : Set G
hU : U ∈ 𝓝 1
V : Set G
V_open : IsOpen V
V_mem : 1 ∈ V
hV : V * V ⊆ U
W : Set G
W_mem : W ∈ 𝓝 1
W_closed : IsClosed W
hW : W ⊆ V
⊢ ∃ V ∈ 𝓝 1, IsClosed V ∧ V⁻¹ = V ∧ V * V ⊆ U
state_after: case intro.intro.intro.intro.intro.intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
U : Set G
hU : U ∈ 𝓝 1
V : Set G
V_open : IsOpen V
V_mem : 1 ∈ V
hV : V * V ⊆ U
W : Set G
W_mem : W ∈ 𝓝 1
W_closed : IsClosed W
hW : W ⊆ V
⊢ W ∩ W⁻¹ * (W ∩ W⁻¹) ⊆ U

tactic: calc
W ∩ W⁻¹ * (W ∩ W⁻¹)
  ⊆ W * W := mul_subset_mul inter_subset_left inter_subset_left
_ ⊆ V * V := mul_subset_mul hW hW
_ ⊆ U := hV
state_before: case intro.intro.intro.intro.intro.intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
U : Set G
hU : U ∈ 𝓝 1
V : Set G
V_open : IsOpen V
V_mem : 1 ∈ V
hV : V * V ⊆ U
W : Set G
W_mem : W ∈ 𝓝 1
W_closed : IsClosed W
hW : W ⊆ V
⊢ W ∩ W⁻¹ * (W ∩ W⁻¹) ⊆ U
state_after: no goals

tactic: simp [inter_comm]
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
U : Set G
hU : U ∈ 𝓝 1
V : Set G
V_open : IsOpen V
V_mem : 1 ∈ V
hV : V * V ⊆ U
W : Set G
W_mem : W ∈ 𝓝 1
W_closed : IsClosed W
hW : W ⊆ V
⊢ (W ∩ W⁻¹)⁻¹ = W ∩ W⁻¹
state_after: no goals
Theorem: Polynomial.disjoint_ker_aeval_of_coprime
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: rw [disjoint_iff_inf_le]
state_before: R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : M →ₗ[R] M
p q : R[X]
hpq : IsCoprime p q
⊢ Disjoint (LinearMap.ker ((aeval f) p)) (LinearMap.ker ((aeval f) q))
state_after: R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : M →ₗ[R] M
p q : R[X]
hpq : IsCoprime p q
⊢ LinearMap.ker ((aeval f) p) ⊓ LinearMap.ker ((aeval f) q) ≤ ⊥

tactic: intro v hv
state_before: R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : M →ₗ[R] M
p q : R[X]
hpq : IsCoprime p q
⊢ LinearMap.ker ((aeval f) p) ⊓ LinearMap.ker ((aeval f) q) ≤ ⊥
state_after: R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : M →ₗ[R] M
p q : R[X]
hpq : IsCoprime p q
v : M
hv : v ∈ LinearMap.ker ((aeval f) p) ⊓ LinearMap.ker ((aeval f) q)
⊢ v ∈ ⊥

tactic: rcases hpq with ⟨p', q', hpq'⟩
state_before: R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : M →ₗ[R] M
p q : R[X]
hpq : IsCoprime p q
v : M
hv : v ∈ LinearMap.ker ((aeval f) p) ⊓ LinearMap.ker ((aeval f) q)
⊢ v ∈ ⊥
state_after: case intro.intro
R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : M →ₗ[R] M
p q : R[X]
v : M
hv : v ∈ LinearMap.ker ((aeval f) p) ⊓ LinearMap.ker ((aeval f) q)
p' q' : R[X]
hpq' : p' * p + q' * q = 1
⊢ v ∈ ⊥

tactic: simpa [LinearMap.mem_ker.1 (Submodule.mem_inf.1 hv).1,
  LinearMap.mem_ker.1 (Submodule.mem_inf.1 hv).2] using
  congr_arg (fun p : R[X] => aeval f p v) hpq'.symm
state_before: case intro.intro
R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : M →ₗ[R] M
p q : R[X]
v : M
hv : v ∈ LinearMap.ker ((aeval f) p) ⊓ LinearMap.ker ((aeval f) q)
p' q' : R[X]
hpq' : p' * p + q' * q = 1
⊢ v ∈ ⊥
state_after: no goals
Theorem: Set.prod_iInter
File: Mathlib/Data/Set/Lattice.lean

tactic: ext x
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set α
t : ι → Set β
hι : Nonempty ι
⊢ s ×ˢ ⋂ i, t i = ⋂ i, s ×ˢ t i
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set α
t : ι → Set β
hι : Nonempty ι
x : α × β
⊢ x ∈ s ×ˢ ⋂ i, t i ↔ x ∈ ⋂ i, s ×ˢ t i

tactic: simp only [mem_prod, mem_iInter]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set α
t : ι → Set β
hι : Nonempty ι
x : α × β
⊢ x ∈ s ×ˢ ⋂ i, t i ↔ x ∈ ⋂ i, s ×ˢ t i
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set α
t : ι → Set β
hι : Nonempty ι
x : α × β
⊢ (x.1 ∈ s ∧ ∀ (i : ι), x.2 ∈ t i) ↔ ∀ (i : ι), x.1 ∈ s ∧ x.2 ∈ t i

tactic: exact ⟨fun h i => ⟨h.1, h.2 i⟩, fun h => ⟨(h hι.some).1, fun i => (h i).2⟩⟩
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set α
t : ι → Set β
hι : Nonempty ι
x : α × β
⊢ (x.1 ∈ s ∧ ∀ (i : ι), x.2 ∈ t i) ↔ ∀ (i : ι), x.1 ∈ s ∧ x.2 ∈ t i
state_after: no goals
Theorem: Sum.not_isLeft
File: .lake/packages/batteries/Batteries/Data/Sum/Lemmas.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
x : α ⊕ β
⊢ ¬x.isLeft = true ↔ x.isRight = true
state_after: no goals
Theorem: Bool.left_le_or
File: Mathlib/Data/Bool/Basic.lean

tactic: decide
state_before: ⊢ ∀ (x y : Bool), x ≤ (x || y)
state_after: no goals