1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: riemannZeta_eulerProduct
File: Mathlib/NumberTheory/EulerProduct/DirichletLSeries.lean

tactic: rw [← tsum_riemannZetaSummand hs]
state_before: s : ℂ
hs : 1 < s.re
⊢ Tendsto (fun n => ∏ p ∈ n.primesBelow, (1 - ↑p ^ (-s))⁻¹) atTop (𝓝 (riemannZeta s))
state_after: s : ℂ
hs : 1 < s.re
⊢ Tendsto (fun n => ∏ p ∈ n.primesBelow, (1 - ↑p ^ (-s))⁻¹) atTop (𝓝 (∑' (n : ℕ), (riemannZetaSummandHom ⋯) n))

tactic: apply eulerProduct_completely_multiplicative <| summable_riemannZetaSummand hs
state_before: s : ℂ
hs : 1 < s.re
⊢ Tendsto (fun n => ∏ p ∈ n.primesBelow, (1 - ↑p ^ (-s))⁻¹) atTop (𝓝 (∑' (n : ℕ), (riemannZetaSummandHom ⋯) n))
state_after: no goals
Theorem: dist_pointReflection_right
File: Mathlib/Analysis/NormedSpace/AddTorsor.lean

tactic: simp [dist_eq_norm_vsub V, Equiv.pointReflection_vsub_right (G := V),
  nsmul_eq_smul_cast 𝕜, norm_smul]
state_before: α : Type u_1
V : Type u_2
P : Type u_3
W : Type u_4
Q : Type u_5
inst✝⁸ : SeminormedAddCommGroup V
inst✝⁷ : PseudoMetricSpace P
inst✝⁶ : NormedAddTorsor V P
inst✝⁵ : NormedAddCommGroup W
inst✝⁴ : MetricSpace Q
inst✝³ : NormedAddTorsor W Q
𝕜 : Type u_6
inst✝² : NormedField 𝕜
inst✝¹ : NormedSpace 𝕜 V
inst✝ : NormedSpace 𝕜 W
p q : P
⊢ dist ((Equiv.pointReflection p) q) q = ‖2‖ * dist p q
state_after: no goals
Theorem: Real.sign_apply_eq
File: Mathlib/Data/Real/Sign.lean

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

case inr.inl

⊢ sign 0 = -1 ∨ sign 0 = 0 ∨ sign 0 = 1

case inr.inr
r : ℝ
hp : 0 < r
⊢ r.sign = -1 ∨ r.sign = 0 ∨ r.sign = 1

tactic: exact Or.inl <| sign_of_neg hn
state_before: case inl
r : ℝ
hn : r < 0
⊢ r.sign = -1 ∨ r.sign = 0 ∨ r.sign = 1
state_after: no goals

tactic: exact Or.inr <| Or.inl <| sign_zero
state_before: case inr.inl

⊢ sign 0 = -1 ∨ sign 0 = 0 ∨ sign 0 = 1
state_after: no goals

tactic: exact Or.inr <| Or.inr <| sign_of_pos hp
state_before: case inr.inr
r : ℝ
hp : 0 < r
⊢ r.sign = -1 ∨ r.sign = 0 ∨ r.sign = 1
state_after: no goals
Theorem: Nonneg.toNonneg_le
File: Mathlib/Algebra/Order/Nonneg/Ring.lean

tactic: cases' b with b hb
state_before: α : Type u_1
inst✝¹ : Zero α
inst✝ : LinearOrder α
a : α
b : { x // 0 ≤ x }
⊢ toNonneg a ≤ b ↔ a ≤ ↑b
state_after: case mk
α : Type u_1
inst✝¹ : Zero α
inst✝ : LinearOrder α
a b : α
hb : 0 ≤ b
⊢ toNonneg a ≤ ⟨b, hb⟩ ↔ a ≤ ↑⟨b, hb⟩

tactic: simp [toNonneg, hb]
state_before: case mk
α : Type u_1
inst✝¹ : Zero α
inst✝ : LinearOrder α
a b : α
hb : 0 ≤ b
⊢ toNonneg a ≤ ⟨b, hb⟩ ↔ a ≤ ↑⟨b, hb⟩
state_after: no goals
Theorem: Complex.arg_eq_pi_iff
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

tactic: by_cases h₀ : z = 0
state_before: a x z✝ z : ℂ
⊢ z.arg = π ↔ z.re < 0 ∧ z.im = 0
state_after: case pos
a x z✝ z : ℂ
h₀ : z = 0
⊢ z.arg = π ↔ z.re < 0 ∧ z.im = 0

case neg
a x z✝ z : ℂ
h₀ : ¬z = 0
⊢ z.arg = π ↔ z.re < 0 ∧ z.im = 0

tactic: constructor
state_before: case neg
a x z✝ z : ℂ
h₀ : ¬z = 0
⊢ z.arg = π ↔ z.re < 0 ∧ z.im = 0
state_after: case neg.mp
a x z✝ z : ℂ
h₀ : ¬z = 0
⊢ z.arg = π → z.re < 0 ∧ z.im = 0

case neg.mpr
a x z✝ z : ℂ
h₀ : ¬z = 0
⊢ z.re < 0 ∧ z.im = 0 → z.arg = π

tactic: simp [h₀, lt_irrefl, Real.pi_ne_zero.symm]
state_before: case pos
a x z✝ z : ℂ
h₀ : z = 0
⊢ z.arg = π ↔ z.re < 0 ∧ z.im = 0
state_after: no goals

tactic: intro h
state_before: case neg.mp
a x z✝ z : ℂ
h₀ : ¬z = 0
⊢ z.arg = π → z.re < 0 ∧ z.im = 0
state_after: case neg.mp
a x z✝ z : ℂ
h₀ : ¬z = 0
h : z.arg = π
⊢ z.re < 0 ∧ z.im = 0

tactic: rw [← abs_mul_cos_add_sin_mul_I z, h]
state_before: case neg.mp
a x z✝ z : ℂ
h₀ : ¬z = 0
h : z.arg = π
⊢ z.re < 0 ∧ z.im = 0
state_after: case neg.mp
a x z✝ z : ℂ
h₀ : ¬z = 0
h : z.arg = π
⊢ (↑(abs z) * (cos ↑π + sin ↑π * I)).re < 0 ∧ (↑(abs z) * (cos ↑π + sin ↑π * I)).im = 0

tactic: simp [h₀]
state_before: case neg.mp
a x z✝ z : ℂ
h₀ : ¬z = 0
h : z.arg = π
⊢ (↑(abs z) * (cos ↑π + sin ↑π * I)).re < 0 ∧ (↑(abs z) * (cos ↑π + sin ↑π * I)).im = 0
state_after: no goals

tactic: cases' z with x y
state_before: case neg.mpr
a x z✝ z : ℂ
h₀ : ¬z = 0
⊢ z.re < 0 ∧ z.im = 0 → z.arg = π
state_after: case neg.mpr.mk
a x✝ z : ℂ
x y : ℝ
h₀ : ¬{ re := x, im := y } = 0
⊢ { re := x, im := y }.re < 0 ∧ { re := x, im := y }.im = 0 → { re := x, im := y }.arg = π

tactic: rintro ⟨h : x < 0, rfl : y = 0⟩
state_before: case neg.mpr.mk
a x✝ z : ℂ
x y : ℝ
h₀ : ¬{ re := x, im := y } = 0
⊢ { re := x, im := y }.re < 0 ∧ { re := x, im := y }.im = 0 → { re := x, im := y }.arg = π
state_after: case neg.mpr.mk.intro
a x✝ z : ℂ
x : ℝ
h : x < 0
h₀ : ¬{ re := x, im := 0 } = 0
⊢ { re := x, im := 0 }.arg = π

tactic: rw [← arg_neg_one, ← arg_real_mul (-1) (neg_pos.2 h)]
state_before: case neg.mpr.mk.intro
a x✝ z : ℂ
x : ℝ
h : x < 0
h₀ : ¬{ re := x, im := 0 } = 0
⊢ { re := x, im := 0 }.arg = π
state_after: case neg.mpr.mk.intro
a x✝ z : ℂ
x : ℝ
h : x < 0
h₀ : ¬{ re := x, im := 0 } = 0
⊢ { re := x, im := 0 }.arg = (↑(-x) * -1).arg

tactic: simp [← ofReal_def]
state_before: case neg.mpr.mk.intro
a x✝ z : ℂ
x : ℝ
h : x < 0
h₀ : ¬{ re := x, im := 0 } = 0
⊢ { re := x, im := 0 }.arg = (↑(-x) * -1).arg
state_after: no goals
Theorem: MeasureTheory.SimpleFunc.measurableSet_support
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

tactic: rw [f.support_eq]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
inst✝² : Zero β
inst✝¹ : Zero γ
μ : Measure α
f✝ : α →ₛ β
inst✝ : MeasurableSpace α
f : α →ₛ β
⊢ MeasurableSet (support ↑f)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
inst✝² : Zero β
inst✝¹ : Zero γ
μ : Measure α
f✝ : α →ₛ β
inst✝ : MeasurableSpace α
f : α →ₛ β
⊢ MeasurableSet (⋃ y ∈ filter (fun y => y ≠ 0) f.range, ↑f ⁻¹' {y})

tactic: exact Finset.measurableSet_biUnion _ fun y _ => measurableSet_fiber _ _
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
inst✝² : Zero β
inst✝¹ : Zero γ
μ : Measure α
f✝ : α →ₛ β
inst✝ : MeasurableSpace α
f : α →ₛ β
⊢ MeasurableSet (⋃ y ∈ filter (fun y => y ≠ 0) f.range, ↑f ⁻¹' {y})
state_after: no goals
Theorem: multiplicity.Int.pow_add_pow
File: Mathlib/NumberTheory/Multiplicity.lean

tactic: rw [← sub_neg_eq_add] at hxy
state_before: R : Type u_1
n✝ : ℕ
inst✝ : CommRing R
a b x✝ y✝ : R
p : ℕ
hp : Nat.Prime p
hp1 : Odd p
x y : ℤ
hxy : ↑p ∣ x + y
hx : ¬↑p ∣ x
n : ℕ
hn : Odd n
⊢ multiplicity (↑p) (x ^ n + y ^ n) = multiplicity (↑p) (x + y) + multiplicity p n
state_after: R : Type u_1
n✝ : ℕ
inst✝ : CommRing R
a b x✝ y✝ : R
p : ℕ
hp : Nat.Prime p
hp1 : Odd p
x y : ℤ
hxy : ↑p ∣ x - -y
hx : ¬↑p ∣ x
n : ℕ
hn : Odd n
⊢ multiplicity (↑p) (x ^ n + y ^ n) = multiplicity (↑p) (x + y) + multiplicity p n

tactic: rw [← sub_neg_eq_add, ← sub_neg_eq_add, ← Odd.neg_pow hn]
state_before: R : Type u_1
n✝ : ℕ
inst✝ : CommRing R
a b x✝ y✝ : R
p : ℕ
hp : Nat.Prime p
hp1 : Odd p
x y : ℤ
hxy : ↑p ∣ x - -y
hx : ¬↑p ∣ x
n : ℕ
hn : Odd n
⊢ multiplicity (↑p) (x ^ n + y ^ n) = multiplicity (↑p) (x + y) + multiplicity p n
state_after: R : Type u_1
n✝ : ℕ
inst✝ : CommRing R
a b x✝ y✝ : R
p : ℕ
hp : Nat.Prime p
hp1 : Odd p
x y : ℤ
hxy : ↑p ∣ x - -y
hx : ¬↑p ∣ x
n : ℕ
hn : Odd n
⊢ multiplicity (↑p) (x ^ n - (-y) ^ n) = multiplicity (↑p) (x - -y) + multiplicity p n

tactic: exact Int.pow_sub_pow hp hp1 hxy hx n
state_before: R : Type u_1
n✝ : ℕ
inst✝ : CommRing R
a b x✝ y✝ : R
p : ℕ
hp : Nat.Prime p
hp1 : Odd p
x y : ℤ
hxy : ↑p ∣ x - -y
hx : ¬↑p ∣ x
n : ℕ
hn : Odd n
⊢ multiplicity (↑p) (x ^ n - (-y) ^ n) = multiplicity (↑p) (x - -y) + multiplicity p n
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.whiskerLeft_hom_inv'
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: rw [← whiskerLeft_comp, IsIso.hom_inv_id, whiskerLeft_id]
state_before: C : Type u
𝒞 : Category.{v, u} C
inst✝¹ : MonoidalCategory C
X Y Z : C
f : Y ⟶ Z
inst✝ : IsIso f
⊢ X ◁ f ≫ X ◁ inv f = 𝟙 (X ⊗ Y)
state_after: no goals
Theorem: groupCohomology.groupCohomologyπ_comp_isoH0_hom
File: Mathlib/RepresentationTheory/GroupCohomology/LowDegree.lean

tactic: simp [isoH0]
state_before: k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A : Rep k G
⊢ groupCohomologyπ A 0 ≫ (isoH0 A).hom = (isoZeroCocycles A).hom
state_after: no goals
Theorem: NonUnitalSubring.coe_sSup_of_directedOn
File: Mathlib/RingTheory/NonUnitalSubring/Basic.lean

tactic: simp [mem_sSup_of_directedOn Sne hS]
state_before: F : Type w
R : Type u
S✝ : Type v
T : Type u_1
inst✝⁴ : NonUnitalNonAssocRing R
inst✝³ : NonUnitalNonAssocRing S✝
inst✝² : NonUnitalNonAssocRing T
inst✝¹ : FunLike F R S✝
inst✝ : NonUnitalRingHomClass F R S✝
g : S✝ →ₙ+* T
f : R →ₙ+* S✝
S : Set (NonUnitalSubring R)
Sne : S.Nonempty
hS : DirectedOn (fun x x_1 => x ≤ x_1) S
x : R
⊢ x ∈ ↑(sSup S) ↔ x ∈ ⋃ s ∈ S, ↑s
state_after: no goals
Theorem: Module.End.mapsTo_iSup_genEigenspace_of_comm
File: Mathlib/LinearAlgebra/Eigenspace/Basic.lean

tactic: simp only [MapsTo, Submodule.coe_iSup_of_chain, mem_iUnion, SetLike.mem_coe]
state_before: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f g : End R M
h : Commute f g
μ : R
⊢ MapsTo ⇑g ↑(⨆ k, (f.genEigenspace μ) k) ↑(⨆ k, (f.genEigenspace μ) k)
state_after: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f g : End R M
h : Commute f g
μ : R
⊢ ∀ ⦃x : M⦄, (∃ i, x ∈ (f.genEigenspace μ) i) → ∃ i, g x ∈ (f.genEigenspace μ) i

tactic: rintro x ⟨k, hk⟩
state_before: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f g : End R M
h : Commute f g
μ : R
⊢ ∀ ⦃x : M⦄, (∃ i, x ∈ (f.genEigenspace μ) i) → ∃ i, g x ∈ (f.genEigenspace μ) i
state_after: case intro
K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f g : End R M
h : Commute f g
μ : R
x : M
k : ℕ
hk : x ∈ (f.genEigenspace μ) k
⊢ ∃ i, g x ∈ (f.genEigenspace μ) i

tactic: exact ⟨k, f.mapsTo_genEigenspace_of_comm h μ k hk⟩
state_before: case intro
K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f g : End R M
h : Commute f g
μ : R
x : M
k : ℕ
hk : x ∈ (f.genEigenspace μ) k
⊢ ∃ i, g x ∈ (f.genEigenspace μ) i
state_after: no goals
Theorem: Set.image_eq
File: Mathlib/Data/Rel.lean

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β
s : Set α
⊢ f '' s = (Function.graph f).image s
state_after: no goals
Theorem: Polynomial.leadingCoeff_eq_zero_iff_deg_eq_bot
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: rw [leadingCoeff_eq_zero, degree_eq_bot]
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
⊢ p.leadingCoeff = 0 ↔ p.degree = ⊥
state_after: no goals
Theorem: ZMod.natAbs_mod_two
File: Mathlib/Data/ZMod/Basic.lean

tactic: cases a
state_before: a : ℤ
⊢ ↑a.natAbs = ↑a
state_after: case ofNat
a✝ : ℕ
⊢ ↑(Int.ofNat a✝).natAbs = ↑(Int.ofNat a✝)

case negSucc
a✝ : ℕ
⊢ ↑(Int.negSucc a✝).natAbs = ↑(Int.negSucc a✝)

tactic: simp only [Int.natAbs_ofNat, Int.cast_natCast, Int.ofNat_eq_coe]
state_before: case ofNat
a✝ : ℕ
⊢ ↑(Int.ofNat a✝).natAbs = ↑(Int.ofNat a✝)
state_after: no goals

tactic: simp only [neg_eq_self_mod_two, Nat.cast_succ, Int.natAbs, Int.cast_negSucc]
state_before: case negSucc
a✝ : ℕ
⊢ ↑(Int.negSucc a✝).natAbs = ↑(Int.negSucc a✝)
state_after: no goals
Theorem: Finset.card_insert_eq_ite
File: Mathlib/Data/Finset/Card.lean

tactic: by_cases h : a ∈ s
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t : Finset α
a b : α
inst✝ : DecidableEq α
⊢ (insert a s).card = if a ∈ s then s.card else s.card + 1
state_after: case pos
α : Type u_1
β : Type u_2
R : Type u_3
s t : Finset α
a b : α
inst✝ : DecidableEq α
h : a ∈ s
⊢ (insert a s).card = if a ∈ s then s.card else s.card + 1

case neg
α : Type u_1
β : Type u_2
R : Type u_3
s t : Finset α
a b : α
inst✝ : DecidableEq α
h : a ∉ s
⊢ (insert a s).card = if a ∈ s then s.card else s.card + 1

tactic: rw [card_insert_of_mem h, if_pos h]
state_before: case pos
α : Type u_1
β : Type u_2
R : Type u_3
s t : Finset α
a b : α
inst✝ : DecidableEq α
h : a ∈ s
⊢ (insert a s).card = if a ∈ s then s.card else s.card + 1
state_after: no goals

tactic: rw [card_insert_of_not_mem h, if_neg h]
state_before: case neg
α : Type u_1
β : Type u_2
R : Type u_3
s t : Finset α
a b : α
inst✝ : DecidableEq α
h : a ∉ s
⊢ (insert a s).card = if a ∈ s then s.card else s.card + 1
state_after: no goals
Theorem: IndepMatroid.ofFinset_indep'
File: Mathlib/Data/Matroid/IndepAxioms.lean

tactic: simp only [IndepMatroid.ofFinset, ofFinitary_indep]
state_before: α : Type u_1
I✝ B X : Set α
inst✝ : DecidableEq α
E : Set α
Indep : Finset α → Prop
indep_empty : Indep ∅
indep_subset : ∀ ⦃I J : Finset α⦄, Indep J → I ⊆ J → Indep I
indep_aug : ∀ ⦃I J : Finset α⦄, Indep I → Indep J → I.card < J.card → ∃ e ∈ J, e ∉ I ∧ Indep (insert e I)
subset_ground : ∀ ⦃I : Finset α⦄, Indep I → ↑I ⊆ E
I : Set α
⊢ (IndepMatroid.ofFinset E Indep indep_empty indep_subset indep_aug subset_ground).Indep I ↔
    ∀ (J : Finset α), ↑J ⊆ I → Indep J
state_after: no goals
Theorem: uniformEquicontinuous_iff_range
File: Mathlib/Topology/UniformSpace/Equicontinuity.lean

tactic: rw [← comp_rangeSplitting F]
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 : ι → β → α
h : UniformEquicontinuous F
⊢ UniformEquicontinuous Subtype.val
state_after: ι : 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 : ι → β → α
h : UniformEquicontinuous F
⊢ UniformEquicontinuous (F ∘ rangeSplitting F)

tactic: exact h.comp _
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 : ι → β → α
h : UniformEquicontinuous F
⊢ UniformEquicontinuous (F ∘ rangeSplitting F)
state_after: no goals
Theorem: Setoid.IsPartition.sUnion_eq_univ
File: Mathlib/Data/Setoid/Partition.lean

tactic: simp only [exists_unique_iff_exists] at ht
state_before: α : Type u_1
c : Set (Set α)
hc : IsPartition c
x : α
t : Set α
ht : (fun b => b ∈ c ∧ x ∈ b) t ∧ ∀ (y : Set α), (fun b => b ∈ c ∧ x ∈ b) y → y = t
⊢ t ∈ c ∧ x ∈ t
state_after: α : Type u_1
c : Set (Set α)
hc : IsPartition c
x : α
t : Set α
ht : (t ∈ c ∧ x ∈ t) ∧ ∀ (y : Set α), y ∈ c ∧ x ∈ y → y = t
⊢ t ∈ c ∧ x ∈ t

tactic: tauto
state_before: α : Type u_1
c : Set (Set α)
hc : IsPartition c
x : α
t : Set α
ht : (t ∈ c ∧ x ∈ t) ∧ ∀ (y : Set α), y ∈ c ∧ x ∈ y → y = t
⊢ t ∈ c ∧ x ∈ t
state_after: no goals
Theorem: iSup_option_elim
File: Mathlib/Order/CompleteLattice.lean

tactic: simp [iSup_option]
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f✝ g s t : ι → α
a✝ b a : α
f : β → α
⊢ ⨆ o, o.elim a f = a ⊔ ⨆ b, f b
state_after: no goals
Theorem: MeasureTheory.OuterMeasure.isCaratheodory_empty
File: Mathlib/MeasureTheory/OuterMeasure/Caratheodory.lean

tactic: simp [IsCaratheodory, m.empty, diff_empty]
state_before: α : Type u
m : OuterMeasure α
s s₁ s₂ : Set α
⊢ m.IsCaratheodory ∅
state_after: no goals
Theorem: Matroid.uniqueBaseOn_base_iff
File: Mathlib/Data/Matroid/Constructions.lean

tactic: rw [uniqueBaseOn, base_restrict_iff', freeOn_basis'_iff, inter_eq_self_of_subset_right hIE]
state_before: α : Type u_1
M : Matroid α
E B I X R J : Set α
hIE : I ⊆ E
⊢ (uniqueBaseOn I E).Base B ↔ B = I
state_after: no goals
Theorem: Matrix.StdBasisMatrix.apply_of_ne
File: Mathlib/Data/Matrix/Basis.lean

tactic: simp only [stdBasisMatrix, and_imp, ite_eq_right_iff]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : Semiring α
i : m
j : n
c : α
i' : m
j' : n
h : ¬(i = i' ∧ j = j')
⊢ stdBasisMatrix i j c i' j' = 0
state_after: l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : Semiring α
i : m
j : n
c : α
i' : m
j' : n
h : ¬(i = i' ∧ j = j')
⊢ i = i' → j = j' → c = 0

tactic: tauto
state_before: l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : Semiring α
i : m
j : n
c : α
i' : m
j' : n
h : ¬(i = i' ∧ j = j')
⊢ i = i' → j = j' → c = 0
state_after: no goals
Theorem: Num.cast_lt
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [← cast_to_nat m, ← cast_to_nat n, Nat.cast_lt (α := α), lt_to_nat]
state_before: α : Type u_1
inst✝ : LinearOrderedSemiring α
m n : Num
⊢ ↑m < ↑n ↔ m < n
state_after: no goals
Theorem: Real.ofCauchy_sup
File: Mathlib/Data/Real/Basic.lean

tactic: rw [sup_def]
state_before: x y : ℝ
a b : CauSeq ℚ abs
⊢ { cauchy := ⟦a ⊔ b⟧ } = Real.sup { cauchy := ⟦a⟧ } { cauchy := ⟦b⟧ }
state_after: x y : ℝ
a b : CauSeq ℚ abs
⊢ { cauchy := ⟦a ⊔ b⟧ } =
    match { cauchy := ⟦a⟧ }, { cauchy := ⟦b⟧ } with
    | { cauchy := x }, { cauchy := y } => { cauchy := Quotient.map₂ (fun x x_1 => x ⊔ x_1) ⋯ x y }

tactic: rfl
state_before: x y : ℝ
a b : CauSeq ℚ abs
⊢ { cauchy := ⟦a ⊔ b⟧ } =
    match { cauchy := ⟦a⟧ }, { cauchy := ⟦b⟧ } with
    | { cauchy := x }, { cauchy := y } => { cauchy := Quotient.map₂ (fun x x_1 => x ⊔ x_1) ⋯ x y }
state_after: no goals
Theorem: CategoryTheory.Subgroupoid.disconnect_isTotallyDisconnected
File: Mathlib/CategoryTheory/Groupoid/Subgroupoid.lean

tactic: rw [isTotallyDisconnected_iff]
state_before: C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
⊢ S.disconnect.IsTotallyDisconnected
state_after: C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
⊢ ∀ (c d : C), (S.disconnect.arrows c d).Nonempty → c = d

tactic: exact fun c d ⟨_, h, _⟩ => h
state_before: C : Type u
inst✝ : Groupoid C
S : Subgroupoid C
⊢ ∀ (c d : C), (S.disconnect.arrows c d).Nonempty → c = d
state_after: no goals
Theorem: BoxIntegral.Box.mapsTo_insertNth_face
File: Mathlib/Analysis/BoxIntegral/Box/Basic.lean

tactic: intro y hy
state_before: ι : Type u_1
I✝ J : Box ι
x✝ y : ι → ℝ
n : ℕ
I : Box (Fin (n + 1))
i : Fin (n + 1)
x : ℝ
hx : x ∈ Ioc (I.lower i) (I.upper i)
⊢ MapsTo (i.insertNth x) ↑(I.face i) ↑I
state_after: ι : Type u_1
I✝ J : Box ι
x✝ y✝ : ι → ℝ
n : ℕ
I : Box (Fin (n + 1))
i : Fin (n + 1)
x : ℝ
hx : x ∈ Ioc (I.lower i) (I.upper i)
y : Fin n → ℝ
hy : y ∈ ↑(I.face i)
⊢ i.insertNth x y ∈ ↑I

tactic: simp_rw [mem_coe, mem_def, i.forall_iff_succAbove, Fin.insertNth_apply_same,
  Fin.insertNth_apply_succAbove]
state_before: ι : Type u_1
I✝ J : Box ι
x✝ y✝ : ι → ℝ
n : ℕ
I : Box (Fin (n + 1))
i : Fin (n + 1)
x : ℝ
hx : x ∈ Ioc (I.lower i) (I.upper i)
y : Fin n → ℝ
hy : y ∈ ↑(I.face i)
⊢ i.insertNth x y ∈ ↑I
state_after: ι : Type u_1
I✝ J : Box ι
x✝ y✝ : ι → ℝ
n : ℕ
I : Box (Fin (n + 1))
i : Fin (n + 1)
x : ℝ
hx : x ∈ Ioc (I.lower i) (I.upper i)
y : Fin n → ℝ
hy : y ∈ ↑(I.face i)
⊢ x ∈ Ioc (I.lower i) (I.upper i) ∧ ∀ (j : Fin n), y j ∈ Ioc (I.lower (i.succAbove j)) (I.upper (i.succAbove j))

tactic: exact ⟨hx, hy⟩
state_before: ι : Type u_1
I✝ J : Box ι
x✝ y✝ : ι → ℝ
n : ℕ
I : Box (Fin (n + 1))
i : Fin (n + 1)
x : ℝ
hx : x ∈ Ioc (I.lower i) (I.upper i)
y : Fin n → ℝ
hy : y ∈ ↑(I.face i)
⊢ x ∈ Ioc (I.lower i) (I.upper i) ∧ ∀ (j : Fin n), y j ∈ Ioc (I.lower (i.succAbove j)) (I.upper (i.succAbove j))
state_after: no goals
Theorem: Set.Subsingleton.equitableOn
File: Mathlib/Data/Set/Equitable.lean

tactic: rw [hs hi hj]
state_before: α : Type u_1
β : Type u_2
inst✝ : OrderedSemiring β
s : Set α
hs : s.Subsingleton
f : α → β
i j : α
hi : i ∈ s
hj : j ∈ s
⊢ f i ≤ f j + 1
state_after: α : Type u_1
β : Type u_2
inst✝ : OrderedSemiring β
s : Set α
hs : s.Subsingleton
f : α → β
i j : α
hi : i ∈ s
hj : j ∈ s
⊢ f j ≤ f j + 1

tactic: exact le_add_of_nonneg_right zero_le_one
state_before: α : Type u_1
β : Type u_2
inst✝ : OrderedSemiring β
s : Set α
hs : s.Subsingleton
f : α → β
i j : α
hi : i ∈ s
hj : j ∈ s
⊢ f j ≤ f j + 1
state_after: no goals
Theorem: univ_eq_singleton_of_card_one
File: Mathlib/Data/Fintype/Card.lean

tactic: symm
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
inst✝ : Fintype α
x : α
h : Fintype.card α = 1
⊢ univ = {x}
state_after: α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
inst✝ : Fintype α
x : α
h : Fintype.card α = 1
⊢ {x} = univ

tactic: apply eq_of_subset_of_card_le (subset_univ {x})
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
inst✝ : Fintype α
x : α
h : Fintype.card α = 1
⊢ {x} = univ
state_after: α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
inst✝ : Fintype α
x : α
h : Fintype.card α = 1
⊢ univ.card ≤ {x}.card

tactic: apply le_of_eq
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
inst✝ : Fintype α
x : α
h : Fintype.card α = 1
⊢ univ.card ≤ {x}.card
state_after: case a
α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
inst✝ : Fintype α
x : α
h : Fintype.card α = 1
⊢ univ.card = {x}.card

tactic: simp [h, Finset.card_univ]
state_before: case a
α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
inst✝ : Fintype α
x : α
h : Fintype.card α = 1
⊢ univ.card = {x}.card
state_after: no goals
Theorem: Pi.lt_def
File: Mathlib/Order/Basic.lean

tactic: simp (config := { contextual := true }) [lt_iff_le_not_le, Pi.le_def]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : (i : ι) → Preorder (π i)
x y : (i : ι) → π i
⊢ x < y ↔ x ≤ y ∧ ∃ i, x i < y i
state_after: no goals
Theorem: pullback_nonzero
File: Mathlib/Algebra/GroupWithZero/NeZero.lean

tactic: rw [zero, one]
state_before: M₀ : Type u_1
M₀' : Type u_2
inst✝³ : MulZeroOneClass M₀
inst✝² : Nontrivial M₀
inst✝¹ : Zero M₀'
inst✝ : One M₀'
f : M₀' → M₀
zero : f 0 = 0
one : f 1 = 1
⊢ ¬f 0 = f 1
state_after: M₀ : Type u_1
M₀' : Type u_2
inst✝³ : MulZeroOneClass M₀
inst✝² : Nontrivial M₀
inst✝¹ : Zero M₀'
inst✝ : One M₀'
f : M₀' → M₀
zero : f 0 = 0
one : f 1 = 1
⊢ ¬0 = 1

tactic: exact zero_ne_one
state_before: M₀ : Type u_1
M₀' : Type u_2
inst✝³ : MulZeroOneClass M₀
inst✝² : Nontrivial M₀
inst✝¹ : Zero M₀'
inst✝ : One M₀'
f : M₀' → M₀
zero : f 0 = 0
one : f 1 = 1
⊢ ¬0 = 1
state_after: no goals
Theorem: le_iff_exists_sup
File: Mathlib/Order/Lattice.lean

tactic: constructor
state_before: α : Type u
β : Type v
inst✝ : SemilatticeSup α
a b c d : α
⊢ a ≤ b ↔ ∃ c, b = a ⊔ c
state_after: case mp
α : Type u
β : Type v
inst✝ : SemilatticeSup α
a b c d : α
⊢ a ≤ b → ∃ c, b = a ⊔ c

case mpr
α : Type u
β : Type v
inst✝ : SemilatticeSup α
a b c d : α
⊢ (∃ c, b = a ⊔ c) → a ≤ b

tactic: intro h
state_before: case mp
α : Type u
β : Type v
inst✝ : SemilatticeSup α
a b c d : α
⊢ a ≤ b → ∃ c, b = a ⊔ c
state_after: case mp
α : Type u
β : Type v
inst✝ : SemilatticeSup α
a b c d : α
h : a ≤ b
⊢ ∃ c, b = a ⊔ c

tactic: exact ⟨b, (sup_eq_right.mpr h).symm⟩
state_before: case mp
α : Type u
β : Type v
inst✝ : SemilatticeSup α
a b c d : α
h : a ≤ b
⊢ ∃ c, b = a ⊔ c
state_after: no goals

tactic: rintro ⟨c, rfl : _ = _ ⊔ _⟩
state_before: case mpr
α : Type u
β : Type v
inst✝ : SemilatticeSup α
a b c d : α
⊢ (∃ c, b = a ⊔ c) → a ≤ b
state_after: case mpr.intro
α : Type u
β : Type v
inst✝ : SemilatticeSup α
a c✝ d c : α
⊢ a ≤ a ⊔ c

tactic: exact le_sup_left
state_before: case mpr.intro
α : Type u
β : Type v
inst✝ : SemilatticeSup α
a c✝ d c : α
⊢ a ≤ a ⊔ c
state_after: no goals