1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: PiTensorProduct.reindex_tprod
File: Mathlib/LinearAlgebra/PiTensorProduct.lean

tactic: dsimp [reindex]
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
e : ι ≃ ι₂
f : (i : ι) → s i
⊢ (reindex R s e) ((tprod R) f) = (tprod R) fun i => f (e.symm i)
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
e : ι ≃ ι₂
f : (i : ι) → s i
⊢ (lift { toFun := ⇑(tprod R) ∘ ⇑(Equiv.piCongrLeft' s e), map_add' := ⋯, map_smul' := ⋯ }) ((tprod R) f) =
    (tprod R) fun i => f (e.symm i)

tactic: exact liftAux_tprod _ f
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
e : ι ≃ ι₂
f : (i : ι) → s i
⊢ (lift { toFun := ⇑(tprod R) ∘ ⇑(Equiv.piCongrLeft' s e), map_add' := ⋯, map_smul' := ⋯ }) ((tprod R) f) =
    (tprod R) fun i => f (e.symm i)
state_after: no goals
Theorem: Nat.lt_of_pow_dvd_right
File: Mathlib/Data/Nat/Defs.lean

tactic: rw [← Nat.pow_lt_pow_iff_right (succ_le_iff.1 ha)]
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
hb : b ≠ 0
ha : 2 ≤ a
h : a ^ n ∣ b
⊢ n < b
state_after: a b c d m n k : ℕ
p q : ℕ → Prop
hb : b ≠ 0
ha : 2 ≤ a
h : a ^ n ∣ b
⊢ a ^ n < a ^ b

tactic: exact Nat.lt_of_le_of_lt (le_of_dvd (Nat.pos_iff_ne_zero.2 hb) h) (lt_pow_self ha _)
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
hb : b ≠ 0
ha : 2 ≤ a
h : a ^ n ∣ b
⊢ a ^ n < a ^ b
state_after: no goals
Theorem: ArithmeticFunction.vonMangoldt_apply_prime
File: Mathlib/NumberTheory/VonMangoldt.lean

tactic: rw [vonMangoldt_apply, Prime.minFac_eq hp, if_pos hp.prime.isPrimePow]
state_before: p : ℕ
hp : Nat.Prime p
⊢ Λ p = Real.log ↑p
state_after: no goals
Theorem: Filter.iSup_principal
File: Mathlib/Order/Filter/Basic.lean

tactic: simp only [mem_iSup, mem_principal, iUnion_subset_iff]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι✝ : Sort x
f g : Filter α
s✝ t : Set α
ι : Sort w
s : ι → Set α
x : Set α
⊢ x ∈ ⨆ x, 𝓟 (s x) ↔ x ∈ 𝓟 (⋃ i, s i)
state_after: no goals
Theorem: Multiset.toFinset_ssubset
File: Mathlib/Data/Finset/Basic.lean

tactic: simp_rw [Finset.ssubset_def, toFinset_subset]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s t : Multiset α
⊢ s.toFinset ⊂ t.toFinset ↔ s ⊂ t
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s t : Multiset α
⊢ s ⊆ t ∧ ¬t ⊆ s ↔ s ⊂ t

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s t : Multiset α
⊢ s ⊆ t ∧ ¬t ⊆ s ↔ s ⊂ t
state_after: no goals
Theorem: OnePoint.isClosed_image_coe
File: Mathlib/Topology/Compactification/OnePoint.lean

tactic: rw [← isOpen_compl_iff, isOpen_compl_image_coe]
state_before: X : Type u_1
inst✝ : TopologicalSpace X
s✝ : Set (OnePoint X)
t s : Set X
⊢ IsClosed (some '' s) ↔ IsClosed s ∧ IsCompact s
state_after: no goals
Theorem: Nat.le_or_le_of_add_eq_add_pred
File: Mathlib/Data/Nat/Defs.lean

tactic: rcases le_or_lt b a with h' | h' <;> [left; right]
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
h : a + c = b + d - 1
⊢ b ≤ a ∨ d ≤ c
state_after: case inl.h
a b c d m n k : ℕ
p q : ℕ → Prop
h : a + c = b + d - 1
h' : b ≤ a
⊢ b ≤ a

case inr.h
a b c d m n k : ℕ
p q : ℕ → Prop
h : a + c = b + d - 1
h' : a < b
⊢ d ≤ c

tactic: exact h'
state_before: case inl.h
a b c d m n k : ℕ
p q : ℕ → Prop
h : a + c = b + d - 1
h' : b ≤ a
⊢ b ≤ a
state_after: no goals

tactic: replace h' := Nat.add_lt_add_right h' c
state_before: case inr.h
a b c d m n k : ℕ
p q : ℕ → Prop
h : a + c = b + d - 1
h' : a < b
⊢ d ≤ c
state_after: case inr.h
a b c d m n k : ℕ
p q : ℕ → Prop
h : a + c = b + d - 1
h' : a + c < b + c
⊢ d ≤ c

tactic: rw [h] at h'
state_before: case inr.h
a b c d m n k : ℕ
p q : ℕ → Prop
h : a + c = b + d - 1
h' : a + c < b + c
⊢ d ≤ c
state_after: case inr.h
a b c d m n k : ℕ
p q : ℕ → Prop
h : a + c = b + d - 1
h' : b + d - 1 < b + c
⊢ d ≤ c

tactic: rcases d.eq_zero_or_pos with hn | hn
state_before: case inr.h
a b c d m n k : ℕ
p q : ℕ → Prop
h : a + c = b + d - 1
h' : b + d - 1 < b + c
⊢ d ≤ c
state_after: case inr.h.inl
a b c d m n k : ℕ
p q : ℕ → Prop
h : a + c = b + d - 1
h' : b + d - 1 < b + c
hn : d = 0
⊢ d ≤ c

case inr.h.inr
a b c d m n k : ℕ
p q : ℕ → Prop
h : a + c = b + d - 1
h' : b + d - 1 < b + c
hn : d > 0
⊢ d ≤ c

tactic: rw [d.add_sub_assoc (Nat.succ_le_of_lt hn), Nat.add_lt_add_iff_left] at h'
state_before: case inr.h.inr
a b c d m n k : ℕ
p q : ℕ → Prop
h : a + c = b + d - 1
h' : b + d - 1 < b + c
hn : d > 0
⊢ d ≤ c
state_after: case inr.h.inr
a b c d m n k : ℕ
p q : ℕ → Prop
h : a + c = b + d - 1
h' : d - succ 0 < c
hn : d > 0
⊢ d ≤ c

tactic: exact Nat.le_of_pred_lt h'
state_before: case inr.h.inr
a b c d m n k : ℕ
p q : ℕ → Prop
h : a + c = b + d - 1
h' : d - succ 0 < c
hn : d > 0
⊢ d ≤ c
state_after: no goals

tactic: rw [hn]
state_before: case inr.h.inl
a b c d m n k : ℕ
p q : ℕ → Prop
h : a + c = b + d - 1
h' : b + d - 1 < b + c
hn : d = 0
⊢ d ≤ c
state_after: case inr.h.inl
a b c d m n k : ℕ
p q : ℕ → Prop
h : a + c = b + d - 1
h' : b + d - 1 < b + c
hn : d = 0
⊢ 0 ≤ c

tactic: exact zero_le c
state_before: case inr.h.inl
a b c d m n k : ℕ
p q : ℕ → Prop
h : a + c = b + d - 1
h' : b + d - 1 < b + c
hn : d = 0
⊢ 0 ≤ c
state_after: no goals
Theorem: equicontinuousAt_iff_pair
File: Mathlib/Topology/UniformSpace/Equicontinuity.lean

tactic: simp_rw [← equicontinuousWithinAt_univ, equicontinuousWithinAt_iff_pair (mem_univ x₀),
  nhdsWithin_univ]
state_before: ι : Type u_1
κ : Type u_2
X : Type u_3
X' : Type u_4
Y : Type u_5
Z : Type u_6
α : Type u_7
α' : Type u_8
β : Type u_9
β' : Type u_10
γ : Type u_11
𝓕 : Type u_12
tX : TopologicalSpace X
tY : TopologicalSpace Y
tZ : TopologicalSpace Z
uα : UniformSpace α
uβ : UniformSpace β
uγ : UniformSpace γ
F : ι → X → α
x₀ : X
⊢ EquicontinuousAt F x₀ ↔ ∀ U ∈ 𝓤 α, ∃ V ∈ 𝓝 x₀, ∀ x ∈ V, ∀ y ∈ V, ∀ (i : ι), (F i x, F i y) ∈ U
state_after: no goals
Theorem: List.map₂Left'_nil_right
File: Mathlib/Data/List/Basic.lean

tactic: cases as <;> rfl
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f : α → Option β → γ
as : List α
⊢ map₂Left' f as [] = (map (fun a => f a none) as, [])
state_after: no goals
Theorem: PMF.toMeasure_injective
File: Mathlib/Probability/ProbabilityMassFunction/Basic.lean

tactic: intro p q h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : MeasurableSpace α
p : PMF α
s t : Set α
inst✝ : MeasurableSingletonClass α
⊢ Function.Injective toMeasure
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : MeasurableSpace α
p✝ : PMF α
s t : Set α
inst✝ : MeasurableSingletonClass α
p q : PMF α
h : p.toMeasure = q.toMeasure
⊢ p = q

tactic: ext x
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : MeasurableSpace α
p✝ : PMF α
s t : Set α
inst✝ : MeasurableSingletonClass α
p q : PMF α
h : p.toMeasure = q.toMeasure
⊢ p = q
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : MeasurableSpace α
p✝ : PMF α
s t : Set α
inst✝ : MeasurableSingletonClass α
p q : PMF α
h : p.toMeasure = q.toMeasure
x : α
⊢ p x = q x

tactic: rw [← p.toMeasure_apply_singleton x <| measurableSet_singleton x,
  ← q.toMeasure_apply_singleton x <| measurableSet_singleton x, h]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : MeasurableSpace α
p✝ : PMF α
s t : Set α
inst✝ : MeasurableSingletonClass α
p q : PMF α
h : p.toMeasure = q.toMeasure
x : α
⊢ p x = q x
state_after: no goals
Theorem: completedRiemannZeta₀_one
File: Mathlib/NumberTheory/Harmonic/ZetaAsymp.lean

tactic: have := completedRiemannZeta_eq 1
state_before: ⊢ completedRiemannZeta₀ 1 = (↑γ - Complex.log (4 * ↑π)) / 2 + 1
state_after: this : completedRiemannZeta 1 = completedRiemannZeta₀ 1 - 1 / 1 - 1 / (1 - 1)
⊢ completedRiemannZeta₀ 1 = (↑γ - Complex.log (4 * ↑π)) / 2 + 1

tactic: rw [sub_self, div_zero, div_one, sub_zero, eq_sub_iff_add_eq] at this
state_before: this : completedRiemannZeta 1 = completedRiemannZeta₀ 1 - 1 / 1 - 1 / (1 - 1)
⊢ completedRiemannZeta₀ 1 = (↑γ - Complex.log (4 * ↑π)) / 2 + 1
state_after: this : completedRiemannZeta 1 + 1 = completedRiemannZeta₀ 1
⊢ completedRiemannZeta₀ 1 = (↑γ - Complex.log (4 * ↑π)) / 2 + 1

tactic: rw [← this, completedRiemannZeta_one]
state_before: this : completedRiemannZeta 1 + 1 = completedRiemannZeta₀ 1
⊢ completedRiemannZeta₀ 1 = (↑γ - Complex.log (4 * ↑π)) / 2 + 1
state_after: no goals
Theorem: ThreeGPFree.smul_set
File: Mathlib/Combinatorics/Additive/AP/Three/Defs.lean

tactic: rintro _ ⟨b, hb, rfl⟩ _ ⟨c, hc, rfl⟩ _ ⟨d, hd, rfl⟩ h
state_before: F : Type u_1
α : Type u_2
β : Type u_3
𝕜 : Type u_4
E : Type u_5
inst✝ : CancelCommMonoid α
s : Set α
a : α
hs : ThreeGPFree s
⊢ ThreeGPFree (a • s)
state_after: case intro.intro.intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
𝕜 : Type u_4
E : Type u_5
inst✝ : CancelCommMonoid α
s : Set α
a : α
hs : ThreeGPFree s
b : α
hb : b ∈ s
c : α
hc : c ∈ s
d : α
hd : d ∈ s
h : (fun x => a • x) b * (fun x => a • x) d = (fun x => a • x) c * (fun x => a • x) c
⊢ (fun x => a • x) b = (fun x => a • x) c

tactic: simpa [mul_mul_mul_comm _ _ a] using h
state_before: F : Type u_1
α : Type u_2
β : Type u_3
𝕜 : Type u_4
E : Type u_5
inst✝ : CancelCommMonoid α
s : Set α
a : α
hs : ThreeGPFree s
b : α
hb : b ∈ s
c : α
hc : c ∈ s
d : α
hd : d ∈ s
h : (fun x => a • x) b * (fun x => a • x) d = (fun x => a • x) c * (fun x => a • x) c
⊢ b * d = c * c
state_after: no goals
Theorem: Ordnode.dual_rotateR
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: rw [← dual_dual (rotateL _ _ _), dual_rotateL, dual_dual, dual_dual]
state_before: α : Type u_1
l : Ordnode α
x : α
r : Ordnode α
⊢ (l.rotateR x r).dual = r.dual.rotateL x l.dual
state_after: no goals
Theorem: isCoatomistic_dual_iff_isAtomistic
File: Mathlib/Order/Atoms.lean

tactic: apply h.eq_sInf_coatoms
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : CompleteLattice α
h : IsCoatomistic αᵒᵈ
b : α
⊢ ∃ s, b = sSup s ∧ ∀ a ∈ s, IsAtom a
state_after: no goals

tactic: apply h.eq_sSup_atoms
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝ : CompleteLattice α
h : IsAtomistic α
b : αᵒᵈ
⊢ ∃ s, b = sInf s ∧ ∀ a ∈ s, IsCoatom a
state_after: no goals
Theorem: CochainComplex.mappingCone.lift_f_snd_v
File: Mathlib/Algebra/Homology/HomotopyCategory/MappingCone.lean

tactic: obtain rfl : q = p := by omega
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
K : CochainComplex C ℤ
α : Cocycle K F 1
β : Cochain K G 0
eq : δ 0 1 β + (↑α).comp (Cochain.ofHom φ) ⋯ = 0
p q : ℤ
hpq : p + 0 = q
⊢ (lift φ α β eq).f p ≫ (snd φ).v p q hpq = β.v p q hpq
state_after: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
K : CochainComplex C ℤ
α : Cocycle K F 1
β : Cochain K G 0
eq : δ 0 1 β + (↑α).comp (Cochain.ofHom φ) ⋯ = 0
q : ℤ
hpq : q + 0 = q
⊢ (lift φ α β eq).f q ≫ (snd φ).v q q hpq = β.v q q hpq

tactic: simp [lift]
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
K : CochainComplex C ℤ
α : Cocycle K F 1
β : Cochain K G 0
eq : δ 0 1 β + (↑α).comp (Cochain.ofHom φ) ⋯ = 0
q : ℤ
hpq : q + 0 = q
⊢ (lift φ α β eq).f q ≫ (snd φ).v q q hpq = β.v q q hpq
state_after: no goals

tactic: omega
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
K : CochainComplex C ℤ
α : Cocycle K F 1
β : Cochain K G 0
eq : δ 0 1 β + (↑α).comp (Cochain.ofHom φ) ⋯ = 0
p q : ℤ
hpq : p + 0 = q
⊢ q = p
state_after: no goals
Theorem: Vector.map₂_snoc
File: Mathlib/Data/Vector/Snoc.lean

tactic: induction xs, ys using Vector.inductionOn₂ <;> simp_all
state_before: α : Type u_2
n : ℕ
β : Type u_3
xs : Vector α n
ys : Vector β n
α✝ : Type u_1
f : α → β → α✝
x : α
y : β
⊢ map₂ f (xs.snoc x) (ys.snoc y) = (map₂ f xs ys).snoc (f x y)
state_after: no goals
Theorem: Set.PairwiseDisjoint.image_of_le
File: Mathlib/Data/Set/Pairwise/Basic.lean

tactic: rintro _ ⟨a, ha, rfl⟩ _ ⟨b, hb, rfl⟩ h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
r p q : α → α → Prop
inst✝¹ : PartialOrder α
inst✝ : OrderBot α
s t : Set ι
f g✝ : ι → α
hs : s.PairwiseDisjoint f
g : ι → ι
hg : f ∘ g ≤ f
⊢ (g '' s).PairwiseDisjoint f
state_after: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
r p q : α → α → Prop
inst✝¹ : PartialOrder α
inst✝ : OrderBot α
s t : Set ι
f g✝ : ι → α
hs : s.PairwiseDisjoint f
g : ι → ι
hg : f ∘ g ≤ f
a : ι
ha : a ∈ s
b : ι
hb : b ∈ s
h : g a ≠ g b
⊢ (Disjoint on f) (g a) (g b)

tactic: exact (hs ha hb <| ne_of_apply_ne _ h).mono (hg a) (hg b)
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
r p q : α → α → Prop
inst✝¹ : PartialOrder α
inst✝ : OrderBot α
s t : Set ι
f g✝ : ι → α
hs : s.PairwiseDisjoint f
g : ι → ι
hg : f ∘ g ≤ f
a : ι
ha : a ∈ s
b : ι
hb : b ∈ s
h : g a ≠ g b
⊢ (Disjoint on f) (g a) (g b)
state_after: no goals
Theorem: BoxIntegral.Prepartition.biUnionIndex_le
File: Mathlib/Analysis/BoxIntegral/Partition/Basic.lean

tactic: by_cases hJ : J ∈ π.biUnion πi
state_before: ι : Type u_1
I J✝ J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi✝ πi₁ πi₂ πi : (J : Box ι) → Prepartition J
J : Box ι
⊢ π.biUnionIndex πi J ≤ I
state_after: case pos
ι : Type u_1
I J✝ J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi✝ πi₁ πi₂ πi : (J : Box ι) → Prepartition J
J : Box ι
hJ : J ∈ π.biUnion πi
⊢ π.biUnionIndex πi J ≤ I

case neg
ι : Type u_1
I J✝ J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi✝ πi₁ πi₂ πi : (J : Box ι) → Prepartition J
J : Box ι
hJ : J ∉ π.biUnion πi
⊢ π.biUnionIndex πi J ≤ I

tactic: exact π.le_of_mem (π.biUnionIndex_mem hJ)
state_before: case pos
ι : Type u_1
I J✝ J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi✝ πi₁ πi₂ πi : (J : Box ι) → Prepartition J
J : Box ι
hJ : J ∈ π.biUnion πi
⊢ π.biUnionIndex πi J ≤ I
state_after: no goals

tactic: rw [biUnionIndex, dif_neg hJ]
state_before: case neg
ι : Type u_1
I J✝ J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi✝ πi₁ πi₂ πi : (J : Box ι) → Prepartition J
J : Box ι
hJ : J ∉ π.biUnion πi
⊢ π.biUnionIndex πi J ≤ I
state_after: no goals
Theorem: Finset.disjSups_empty_right
File: Mathlib/Data/Finset/Sups.lean

tactic: simp [disjSups]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq β
inst✝² : SemilatticeSup α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s s₁ s₂ t t₁ t₂ u : Finset α
a b c : α
⊢ s ○ ∅ = ∅
state_after: no goals
Theorem: ite_ne_left_iff
File: Mathlib/Logic/Basic.lean

tactic: rw [exists_prop]
state_before: α : Sort u_1
σ : α → Sort u_2
P Q R : Prop
inst✝¹ : Decidable P
inst✝ : Decidable Q
a b c : α
A : P → α
B : ¬P → α
⊢ (∃ h, a ≠ b) ↔ ¬P ∧ a ≠ b
state_after: no goals
Theorem: mem_nhdsWithin_Iic_iff_exists_mem_Ico_Ioc_subset
File: Mathlib/Topology/Order/LeftRightNhds.lean

tactic: norm_num
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderTopology α
a l' : α
s : Set α
hl' : l' < a
⊢ [s ∈ 𝓝[≤] a, s ∈ 𝓝[Icc l' a] a, s ∈ 𝓝[Ioc l' a] a, ∃ l ∈ Ico l' a, Ioc l a ⊆ s, ∃ l ∈ Iio a, Ioc l a ⊆ s].get? 0 =
    some (s ∈ 𝓝[≤] a)
state_after: no goals

tactic: norm_num
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderTopology α
a l' : α
s : Set α
hl' : l' < a
⊢ [s ∈ 𝓝[≤] a, s ∈ 𝓝[Icc l' a] a, s ∈ 𝓝[Ioc l' a] a, ∃ l ∈ Ico l' a, Ioc l a ⊆ s, ∃ l ∈ Iio a, Ioc l a ⊆ s].get? 3 =
    some (∃ l ∈ Ico l' a, Ioc l a ⊆ s)
state_after: no goals
Theorem: Matrix.mul_conjTranspose_mul_self_eq_zero
File: Mathlib/LinearAlgebra/Matrix/DotProduct.lean

tactic: simpa only [conjTranspose_conjTranspose] using mul_self_mul_conjTranspose_eq_zero Aᴴ _
state_before: m : Type u_1
n : Type u_2
p : Type u_3
R : Type u_4
inst✝⁷ : Fintype m
inst✝⁶ : Fintype n
inst✝⁵ : Fintype p
inst✝⁴ : PartialOrder R
inst✝³ : NonUnitalRing R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : NoZeroDivisors R
A : Matrix m n R
B : Matrix p n R
⊢ B * (Aᴴ * A) = 0 ↔ B * Aᴴ = 0
state_after: no goals
Theorem: CategoryTheory.GrothendieckTopology.OneHypercoverFamily.IsSheafIff.hom_ext
File: Mathlib/CategoryTheory/Sites/IsSheafOneHypercover.lean

tactic: obtain ⟨E, hE, le⟩ := H.exists_oneHypercover S hS
state_before: C : Type u
inst✝² : Category.{v, u} C
J : GrothendieckTopology C
A : Type u'
inst✝¹ : Category.{v', u'} A
H : J.OneHypercoverFamily
inst✝ : H.IsGenerating
P : Cᵒᵖ ⥤ A
hP : ∀ ⦃X : C⦄ (E : J.OneHypercover X), H E → Nonempty (IsLimit (E.multifork P))
X : C
S : Sieve X
hS : S ∈ J.sieves X
T : A
x y : T ⟶ P.obj { unop := X }
h : ∀ ⦃Y : C⦄ (f : Y ⟶ X), S.arrows f → x ≫ P.map f.op = y ≫ P.map f.op
⊢ x = y
state_after: case intro.intro
C : Type u
inst✝² : Category.{v, u} C
J : GrothendieckTopology C
A : Type u'
inst✝¹ : Category.{v', u'} A
H : J.OneHypercoverFamily
inst✝ : H.IsGenerating
P : Cᵒᵖ ⥤ A
hP : ∀ ⦃X : C⦄ (E : J.OneHypercover X), H E → Nonempty (IsLimit (E.multifork P))
X : C
S : Sieve X
hS : S ∈ J.sieves X
T : A
x y : T ⟶ P.obj { unop := X }
h : ∀ ⦃Y : C⦄ (f : Y ⟶ X), S.arrows f → x ≫ P.map f.op = y ≫ P.map f.op
E : J.OneHypercover X
hE : H E
le : E.sieve₀ ≤ S
⊢ x = y

tactic: exact Multifork.IsLimit.hom_ext (hP E hE).some (fun j => h _ (le _ (Sieve.ofArrows_mk _ _ _)))
state_before: case intro.intro
C : Type u
inst✝² : Category.{v, u} C
J : GrothendieckTopology C
A : Type u'
inst✝¹ : Category.{v', u'} A
H : J.OneHypercoverFamily
inst✝ : H.IsGenerating
P : Cᵒᵖ ⥤ A
hP : ∀ ⦃X : C⦄ (E : J.OneHypercover X), H E → Nonempty (IsLimit (E.multifork P))
X : C
S : Sieve X
hS : S ∈ J.sieves X
T : A
x y : T ⟶ P.obj { unop := X }
h : ∀ ⦃Y : C⦄ (f : Y ⟶ X), S.arrows f → x ≫ P.map f.op = y ≫ P.map f.op
E : J.OneHypercover X
hE : H E
le : E.sieve₀ ≤ S
⊢ x = y
state_after: no goals
Theorem: MeasureTheory.tsum_measure_le_measure_univ
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: rw [ENNReal.tsum_eq_iSup_sum]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : ι → Set α
hs : ∀ (i : ι), MeasurableSet (s i)
H : Pairwise (Disjoint on s)
⊢ ∑' (i : ι), μ (s i) ≤ μ univ
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : ι → Set α
hs : ∀ (i : ι), MeasurableSet (s i)
H : Pairwise (Disjoint on s)
⊢ ⨆ s_1, ∑ a ∈ s_1, μ (s a) ≤ μ univ

tactic: exact iSup_le fun s =>
  sum_measure_le_measure_univ (fun i _hi => hs i) fun i _hi j _hj hij => H hij
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : ι → Set α
hs : ∀ (i : ι), MeasurableSet (s i)
H : Pairwise (Disjoint on s)
⊢ ⨆ s_1, ∑ a ∈ s_1, μ (s a) ≤ μ univ
state_after: no goals
Theorem: MeasureTheory.Integrable.norm_toL1_eq_lintegral_norm
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: rw [norm_toL1, lintegral_norm_eq_lintegral_edist]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → β
hf : Integrable f μ
⊢ ‖toL1 f hf‖ = (∫⁻ (a : α), ENNReal.ofReal ‖f a‖ ∂μ).toReal
state_after: no goals
Theorem: LocallyConstant.ofIsClopen_fiber_one
File: Mathlib/Topology/LocallyConstant/Basic.lean

tactic: ext
state_before: X✝ : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : TopologicalSpace X
U : Set X
inst✝ : (x : X) → Decidable (x ∈ U)
hU : IsClopen U
⊢ ⇑(ofIsClopen hU) ⁻¹' {1} = Uᶜ
state_after: case h
X✝ : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : TopologicalSpace X
U : Set X
inst✝ : (x : X) → Decidable (x ∈ U)
hU : IsClopen U
x✝ : X
⊢ x✝ ∈ ⇑(ofIsClopen hU) ⁻¹' {1} ↔ x✝ ∈ Uᶜ

tactic: simp only [ofIsClopen, mem_singleton_iff, coe_mk, Fin.zero_eq_one_iff, mem_preimage,
  ite_eq_right_iff, mem_compl_iff, Nat.succ_succ_ne_one]
state_before: case h
X✝ : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : TopologicalSpace X
U : Set X
inst✝ : (x : X) → Decidable (x ∈ U)
hU : IsClopen U
x✝ : X
⊢ x✝ ∈ ⇑(ofIsClopen hU) ⁻¹' {1} ↔ x✝ ∈ Uᶜ
state_after: no goals
Theorem: Vector.cons_head_tail
File: Mathlib/Data/Vector/Defs.lean

tactic: contradiction
state_before: α : Type u
β : Type v
φ : Type w
n : ℕ
h : [].length = n.succ
⊢ cons (head ⟨[], h⟩) (tail ⟨[], h⟩) = ⟨[], h⟩
state_after: no goals
Theorem: nilpotent_of_surjective
File: Mathlib/GroupTheory/Nilpotent.lean

tactic: rcases h with ⟨n, hn⟩
state_before: G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
G' : Type u_2
inst✝ : Group G'
h : Group.IsNilpotent G
f : G →* G'
hf : Function.Surjective ⇑f
⊢ Group.IsNilpotent G'
state_after: case mk.intro
G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
G' : Type u_2
inst✝ : Group G'
f : G →* G'
hf : Function.Surjective ⇑f
n : ℕ
hn : upperCentralSeries G n = ⊤
⊢ Group.IsNilpotent G'

tactic: use n
state_before: case mk.intro
G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
G' : Type u_2
inst✝ : Group G'
f : G →* G'
hf : Function.Surjective ⇑f
n : ℕ
hn : upperCentralSeries G n = ⊤
⊢ Group.IsNilpotent G'
state_after: case h
G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
G' : Type u_2
inst✝ : Group G'
f : G →* G'
hf : Function.Surjective ⇑f
n : ℕ
hn : upperCentralSeries G n = ⊤
⊢ upperCentralSeries G' n = ⊤

tactic: apply eq_top_iff.mpr
state_before: case h
G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
G' : Type u_2
inst✝ : Group G'
f : G →* G'
hf : Function.Surjective ⇑f
n : ℕ
hn : upperCentralSeries G n = ⊤
⊢ upperCentralSeries G' n = ⊤
state_after: case h
G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
G' : Type u_2
inst✝ : Group G'
f : G →* G'
hf : Function.Surjective ⇑f
n : ℕ
hn : upperCentralSeries G n = ⊤
⊢ ⊤ ≤ upperCentralSeries G' n

tactic: calc
  ⊤ = f.range := symm (f.range_top_of_surjective hf)
  _ = Subgroup.map f ⊤ := MonoidHom.range_eq_map _
  _ = Subgroup.map f (upperCentralSeries G n) := by rw [hn]
  _ ≤ upperCentralSeries G' n := upperCentralSeries.map hf n
state_before: case h
G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
G' : Type u_2
inst✝ : Group G'
f : G →* G'
hf : Function.Surjective ⇑f
n : ℕ
hn : upperCentralSeries G n = ⊤
⊢ ⊤ ≤ upperCentralSeries G' n
state_after: no goals

tactic: rw [hn]
state_before: G : Type u_1
inst✝² : Group G
H : Subgroup G
inst✝¹ : H.Normal
G' : Type u_2
inst✝ : Group G'
f : G →* G'
hf : Function.Surjective ⇑f
n : ℕ
hn : upperCentralSeries G n = ⊤
⊢ Subgroup.map f ⊤ = Subgroup.map f (upperCentralSeries G n)
state_after: no goals
Theorem: Nat.Ico_succ_succ
File: Mathlib/Order/Interval/Finset/Nat.lean

tactic: ext x
state_before: a b c : ℕ
⊢ Ico a.succ b.succ = Ioc a b
state_after: case a
a b c x : ℕ
⊢ x ∈ Ico a.succ b.succ ↔ x ∈ Ioc a b

tactic: rw [mem_Ico, mem_Ioc, succ_le_iff, Nat.lt_succ_iff]
state_before: case a
a b c x : ℕ
⊢ x ∈ Ico a.succ b.succ ↔ x ∈ Ioc a b
state_after: no goals