1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: FirstOrder.Language.BoundedFormula.realize_sup
File: Mathlib/ModelTheory/Semantics.lean

tactic: simp only [realize, Sup.sup, realize_not, eq_iff_iff]
state_before: L : Language
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
α : Type u'
β : Type v'
γ : Type u_3
n l : ℕ
φ ψ : L.BoundedFormula α l
θ : L.BoundedFormula α l.succ
v : α → M
xs : Fin l → M
⊢ (φ ⊔ ψ).Realize v xs ↔ φ.Realize v xs ∨ ψ.Realize v xs
state_after: L : Language
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
α : Type u'
β : Type v'
γ : Type u_3
n l : ℕ
φ ψ : L.BoundedFormula α l
θ : L.BoundedFormula α l.succ
v : α → M
xs : Fin l → M
⊢ (∼φ ⟹ ψ).Realize v xs ↔ φ.Realize v xs ∨ ψ.Realize v xs

tactic: tauto
state_before: L : Language
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
α : Type u'
β : Type v'
γ : Type u_3
n l : ℕ
φ ψ : L.BoundedFormula α l
θ : L.BoundedFormula α l.succ
v : α → M
xs : Fin l → M
⊢ (∼φ ⟹ ψ).Realize v xs ↔ φ.Realize v xs ∨ ψ.Realize v xs
state_after: no goals
Theorem: CategoryTheory.Functor.HasRightDerivedFunctor.mk'
File: Mathlib/CategoryTheory/Functor/Derived/RightDerived.lean

tactic: have := IsRightDerivedFunctor.isLeftKanExtension RF α W
state_before: C : Type u_1
C' : Type ?u.95380
D : Type u_2
D' : Type ?u.95386
H : Type u_3
H' : Type ?u.95392
inst✝⁷ : Category.{u_4, u_1} C
inst✝⁶ : Category.{?u.95400, ?u.95380} C'
inst✝⁵ : Category.{u_5, u_2} D
inst✝⁴ : Category.{?u.95408, ?u.95386} D'
inst✝³ : Category.{u_6, u_3} H
inst✝² : Category.{?u.95416, ?u.95392} H'
RF RF' RF'' : D ⥤ H
F F' F'' : C ⥤ H
e : F ≅ F'
L : C ⥤ D
α : F ⟶ L ⋙ RF
α' : F' ⟶ L ⋙ RF'
α'' : F'' ⟶ L ⋙ RF''
α'₂ : F ⟶ L ⋙ RF'
W : MorphismProperty C
inst✝¹ : L.IsLocalization W
inst✝ : RF.IsRightDerivedFunctor α W
⊢ F.HasRightDerivedFunctor W
state_after: C : Type u_1
C' : Type ?u.95380
D : Type u_2
D' : Type ?u.95386
H : Type u_3
H' : Type ?u.95392
inst✝⁷ : Category.{u_4, u_1} C
inst✝⁶ : Category.{?u.95400, ?u.95380} C'
inst✝⁵ : Category.{u_5, u_2} D
inst✝⁴ : Category.{?u.95408, ?u.95386} D'
inst✝³ : Category.{u_6, u_3} H
inst✝² : Category.{?u.95416, ?u.95392} H'
RF RF' RF'' : D ⥤ H
F F' F'' : C ⥤ H
e : F ≅ F'
L : C ⥤ D
α : F ⟶ L ⋙ RF
α' : F' ⟶ L ⋙ RF'
α'' : F'' ⟶ L ⋙ RF''
α'₂ : F ⟶ L ⋙ RF'
W : MorphismProperty C
inst✝¹ : L.IsLocalization W
inst✝ : RF.IsRightDerivedFunctor α W
this : RF.IsLeftKanExtension α
⊢ F.HasRightDerivedFunctor W

tactic: simpa only [hasRightDerivedFunctor_iff F L W] using HasLeftKanExtension.mk RF α
state_before: C : Type u_1
C' : Type ?u.95380
D : Type u_2
D' : Type ?u.95386
H : Type u_3
H' : Type ?u.95392
inst✝⁷ : Category.{u_4, u_1} C
inst✝⁶ : Category.{?u.95400, ?u.95380} C'
inst✝⁵ : Category.{u_5, u_2} D
inst✝⁴ : Category.{?u.95408, ?u.95386} D'
inst✝³ : Category.{u_6, u_3} H
inst✝² : Category.{?u.95416, ?u.95392} H'
RF RF' RF'' : D ⥤ H
F F' F'' : C ⥤ H
e : F ≅ F'
L : C ⥤ D
α : F ⟶ L ⋙ RF
α' : F' ⟶ L ⋙ RF'
α'' : F'' ⟶ L ⋙ RF''
α'₂ : F ⟶ L ⋙ RF'
W : MorphismProperty C
inst✝¹ : L.IsLocalization W
inst✝ : RF.IsRightDerivedFunctor α W
this : RF.IsLeftKanExtension α
⊢ F.HasRightDerivedFunctor W
state_after: no goals
Theorem: sup_sdiff_distrib
File: Mathlib/Order/Heyting/Basic.lean

tactic: simp_rw [sdiff_le_iff, sup_le_iff, sdiff_le_iff]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedCoheytingAlgebra α
a✝ b✝ c✝ d✝ a b c d : α
⊢ (a ⊔ b) \ c ≤ d ↔ a \ c ⊔ b \ c ≤ d
state_after: no goals
Theorem: CliffordAlgebraDualNumber.ι_mul_ι
File: Mathlib/LinearAlgebra/CliffordAlgebra/Equivs.lean

tactic: rw [← mul_one r₁, ← mul_one r₂, ← smul_eq_mul R, ← smul_eq_mul R, LinearMap.map_smul,
  LinearMap.map_smul, smul_mul_smul, ι_sq_scalar, QuadraticForm.zero_apply, RingHom.map_zero,
  smul_zero]
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r₁ r₂ : R
⊢ (ι 0) r₁ * (ι 0) r₂ = 0
state_after: no goals
Theorem: ContinuousMultilinearMap.mkPiRing_zero
File: Mathlib/Topology/Algebra/Module/Multilinear/Basic.lean

tactic: ext
state_before: R : Type u
ι : Type v
n : ℕ
M✝ : Fin n.succ → Type w
M₁ : ι → Type w₁
M₁' : ι → Type w₁'
M₂ : Type w₂
M₃ : Type w₃
M₄ : Type w₄
M : Type u_1
inst✝⁷ : Fintype ι
inst✝⁶ : CommRing R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : TopologicalSpace R
inst✝² : TopologicalSpace M
inst✝¹ : ContinuousMul R
inst✝ : ContinuousSMul R M
⊢ ContinuousMultilinearMap.mkPiRing R ι 0 = 0
state_after: case H
R : Type u
ι : Type v
n : ℕ
M✝ : Fin n.succ → Type w
M₁ : ι → Type w₁
M₁' : ι → Type w₁'
M₂ : Type w₂
M₃ : Type w₃
M₄ : Type w₄
M : Type u_1
inst✝⁷ : Fintype ι
inst✝⁶ : CommRing R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : TopologicalSpace R
inst✝² : TopologicalSpace M
inst✝¹ : ContinuousMul R
inst✝ : ContinuousSMul R M
x✝ : ι → R
⊢ (ContinuousMultilinearMap.mkPiRing R ι 0) x✝ = 0 x✝

tactic: rw [mkPiRing_apply, smul_zero, ContinuousMultilinearMap.zero_apply]
state_before: case H
R : Type u
ι : Type v
n : ℕ
M✝ : Fin n.succ → Type w
M₁ : ι → Type w₁
M₁' : ι → Type w₁'
M₂ : Type w₂
M₃ : Type w₃
M₄ : Type w₄
M : Type u_1
inst✝⁷ : Fintype ι
inst✝⁶ : CommRing R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : TopologicalSpace R
inst✝² : TopologicalSpace M
inst✝¹ : ContinuousMul R
inst✝ : ContinuousSMul R M
x✝ : ι → R
⊢ (ContinuousMultilinearMap.mkPiRing R ι 0) x✝ = 0 x✝
state_after: no goals
Theorem: PythagoreanTriple.coprime_of_coprime
File: Mathlib/NumberTheory/PythagoreanTriples.lean

tactic: by_contra H
state_before: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
⊢ y.gcd z = 1
state_after: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
H : ¬y.gcd z = 1
⊢ False

tactic: obtain ⟨p, hp, hpy, hpz⟩ := Nat.Prime.not_coprime_iff_dvd.mp H
state_before: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
H : ¬y.gcd z = 1
⊢ False
state_after: case intro.intro.intro
x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
H : ¬y.gcd z = 1
p : ℕ
hp : Nat.Prime p
hpy : p ∣ y.natAbs
hpz : p ∣ z.natAbs
⊢ False

tactic: apply hp.not_dvd_one
state_before: case intro.intro.intro
x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
H : ¬y.gcd z = 1
p : ℕ
hp : Nat.Prime p
hpy : p ∣ y.natAbs
hpz : p ∣ z.natAbs
⊢ False
state_after: case intro.intro.intro
x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
H : ¬y.gcd z = 1
p : ℕ
hp : Nat.Prime p
hpy : p ∣ y.natAbs
hpz : p ∣ z.natAbs
⊢ p ∣ 1

tactic: rw [← hc]
state_before: case intro.intro.intro
x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
H : ¬y.gcd z = 1
p : ℕ
hp : Nat.Prime p
hpy : p ∣ y.natAbs
hpz : p ∣ z.natAbs
⊢ p ∣ 1
state_after: case intro.intro.intro
x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
H : ¬y.gcd z = 1
p : ℕ
hp : Nat.Prime p
hpy : p ∣ y.natAbs
hpz : p ∣ z.natAbs
⊢ p ∣ x.gcd y

tactic: apply Nat.dvd_gcd (Int.Prime.dvd_natAbs_of_coe_dvd_sq hp _ _) hpy
state_before: case intro.intro.intro
x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
H : ¬y.gcd z = 1
p : ℕ
hp : Nat.Prime p
hpy : p ∣ y.natAbs
hpz : p ∣ z.natAbs
⊢ p ∣ x.gcd y
state_after: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
H : ¬y.gcd z = 1
p : ℕ
hp : Nat.Prime p
hpy : p ∣ y.natAbs
hpz : p ∣ z.natAbs
⊢ ↑p ∣ x ^ 2

tactic: rw [sq, eq_sub_of_add_eq h]
state_before: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
H : ¬y.gcd z = 1
p : ℕ
hp : Nat.Prime p
hpy : p ∣ y.natAbs
hpz : p ∣ z.natAbs
⊢ ↑p ∣ x ^ 2
state_after: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
H : ¬y.gcd z = 1
p : ℕ
hp : Nat.Prime p
hpy : p ∣ y.natAbs
hpz : p ∣ z.natAbs
⊢ ↑p ∣ z * z - y * y

tactic: rw [← Int.natCast_dvd] at hpy hpz
state_before: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
H : ¬y.gcd z = 1
p : ℕ
hp : Nat.Prime p
hpy : p ∣ y.natAbs
hpz : p ∣ z.natAbs
⊢ ↑p ∣ z * z - y * y
state_after: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
H : ¬y.gcd z = 1
p : ℕ
hp : Nat.Prime p
hpy : ↑p ∣ y
hpz : ↑p ∣ z
⊢ ↑p ∣ z * z - y * y

tactic: exact dvd_sub (hpz.mul_right _) (hpy.mul_right _)
state_before: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
H : ¬y.gcd z = 1
p : ℕ
hp : Nat.Prime p
hpy : ↑p ∣ y
hpz : ↑p ∣ z
⊢ ↑p ∣ z * z - y * y
state_after: no goals
Theorem: Metric.hasBasis_cobounded_compl_closedBall
File: Mathlib/Topology/MetricSpace/Bounded.lean

tactic: simp
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x : α
s t : Set α
r : ℝ
c : α
x✝ : Set α
⊢ (∃ r, x✝ ⊆ closedBall c r) ↔ ∃ i, True ∧ (closedBall c i)ᶜ ⊆ x✝ᶜ
state_after: no goals
Theorem: Real.rpow_sub_nat
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: simpa using rpow_sub_int hx y n
state_before: x✝ y✝ z : ℝ
n✝ : ℕ
x : ℝ
hx : x ≠ 0
y : ℝ
n : ℕ
⊢ x ^ (y - ↑n) = x ^ y / x ^ n
state_after: no goals
Theorem: sq_le_two_pow_add_one_minus_three
File: Mathlib/Computability/Ackermann.lean

tactic: induction' n with k hk
state_before: n : ℕ
⊢ n ^ 2 ≤ 2 ^ (n + 1) - 3
state_after: case zero

⊢ 0 ^ 2 ≤ 2 ^ (0 + 1) - 3

case succ
k : ℕ
hk : k ^ 2 ≤ 2 ^ (k + 1) - 3
⊢ (k + 1) ^ 2 ≤ 2 ^ (k + 1 + 1) - 3

tactic: norm_num
state_before: case zero

⊢ 0 ^ 2 ≤ 2 ^ (0 + 1) - 3
state_after: no goals

tactic: cases' k with k k
state_before: case succ
k : ℕ
hk : k ^ 2 ≤ 2 ^ (k + 1) - 3
⊢ (k + 1) ^ 2 ≤ 2 ^ (k + 1 + 1) - 3
state_after: case succ.zero
hk : 0 ^ 2 ≤ 2 ^ (0 + 1) - 3
⊢ (0 + 1) ^ 2 ≤ 2 ^ (0 + 1 + 1) - 3

case succ.succ
k : ℕ
hk : (k + 1) ^ 2 ≤ 2 ^ (k + 1 + 1) - 3
⊢ (k + 1 + 1) ^ 2 ≤ 2 ^ (k + 1 + 1 + 1) - 3

tactic: norm_num
state_before: case succ.zero
hk : 0 ^ 2 ≤ 2 ^ (0 + 1) - 3
⊢ (0 + 1) ^ 2 ≤ 2 ^ (0 + 1 + 1) - 3
state_after: no goals

tactic: rw [add_sq, Nat.pow_succ 2, mul_comm _ 2, two_mul (2 ^ _),
    add_tsub_assoc_of_le, add_comm (2 ^ _), add_assoc]
state_before: case succ.succ
k : ℕ
hk : (k + 1) ^ 2 ≤ 2 ^ (k + 1 + 1) - 3
⊢ (k + 1 + 1) ^ 2 ≤ 2 ^ (k + 1 + 1 + 1) - 3
state_after: case succ.succ
k : ℕ
hk : (k + 1) ^ 2 ≤ 2 ^ (k + 1 + 1) - 3
⊢ (k + 1) ^ 2 + (2 * (k + 1) * 1 + 1 ^ 2) ≤ 2 ^ (k + 2) - 3 + 2 ^ (k + 2)

case succ.succ.h
k : ℕ
hk : (k + 1) ^ 2 ≤ 2 ^ (k + 1 + 1) - 3
⊢ 3 ≤ 2 ^ (k + 2)

tactic: apply Nat.add_le_add hk
state_before: case succ.succ
k : ℕ
hk : (k + 1) ^ 2 ≤ 2 ^ (k + 1 + 1) - 3
⊢ (k + 1) ^ 2 + (2 * (k + 1) * 1 + 1 ^ 2) ≤ 2 ^ (k + 2) - 3 + 2 ^ (k + 2)
state_after: case succ.succ
k : ℕ
hk : (k + 1) ^ 2 ≤ 2 ^ (k + 1 + 1) - 3
⊢ 2 * (k + 1) * 1 + 1 ^ 2 ≤ 2 ^ (k + 2)

tactic: norm_num
state_before: case succ.succ
k : ℕ
hk : (k + 1) ^ 2 ≤ 2 ^ (k + 1 + 1) - 3
⊢ 2 * (k + 1) * 1 + 1 ^ 2 ≤ 2 ^ (k + 2)
state_after: case succ.succ
k : ℕ
hk : (k + 1) ^ 2 ≤ 2 ^ (k + 1 + 1) - 3
⊢ 2 * (k + 1) + 1 ≤ 2 ^ (k + 2)

tactic: apply succ_le_of_lt
state_before: case succ.succ
k : ℕ
hk : (k + 1) ^ 2 ≤ 2 ^ (k + 1 + 1) - 3
⊢ 2 * (k + 1) + 1 ≤ 2 ^ (k + 2)
state_after: case succ.succ.h
k : ℕ
hk : (k + 1) ^ 2 ≤ 2 ^ (k + 1 + 1) - 3
⊢ 2 * (k + 1) < 2 ^ (k + 2)

tactic: rw [Nat.pow_succ, mul_comm _ 2, mul_lt_mul_left (zero_lt_two' ℕ)]
state_before: case succ.succ.h
k : ℕ
hk : (k + 1) ^ 2 ≤ 2 ^ (k + 1 + 1) - 3
⊢ 2 * (k + 1) < 2 ^ (k + 2)
state_after: case succ.succ.h
k : ℕ
hk : (k + 1) ^ 2 ≤ 2 ^ (k + 1 + 1) - 3
⊢ k + 1 < 2 ^ (k + 1)

tactic: apply lt_two_pow
state_before: case succ.succ.h
k : ℕ
hk : (k + 1) ^ 2 ≤ 2 ^ (k + 1 + 1) - 3
⊢ k + 1 < 2 ^ (k + 1)
state_after: no goals

tactic: rw [Nat.pow_succ, Nat.pow_succ]
state_before: case succ.succ.h
k : ℕ
hk : (k + 1) ^ 2 ≤ 2 ^ (k + 1 + 1) - 3
⊢ 3 ≤ 2 ^ (k + 2)
state_after: case succ.succ.h
k : ℕ
hk : (k + 1) ^ 2 ≤ 2 ^ (k + 1 + 1) - 3
⊢ 3 ≤ 2 ^ k * 2 * 2

tactic: linarith [one_le_pow k 2 zero_lt_two]
state_before: case succ.succ.h
k : ℕ
hk : (k + 1) ^ 2 ≤ 2 ^ (k + 1 + 1) - 3
⊢ 3 ≤ 2 ^ k * 2 * 2
state_after: no goals
Theorem: Polynomial.natDegree_le_pred
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: obtain _ | n := n
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
hf : p.natDegree ≤ n
hn : p.coeff n = 0
⊢ p.natDegree ≤ n - 1
state_after: case zero
R : Type u
S : Type v
a b c d : R
m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
hf : p.natDegree ≤ 0
hn : p.coeff 0 = 0
⊢ p.natDegree ≤ 0 - 1

case succ
R : Type u
S : Type v
a b c d : R
m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
n : ℕ
hf : p.natDegree ≤ n + 1
hn : p.coeff (n + 1) = 0
⊢ p.natDegree ≤ n + 1 - 1

tactic: exact hf
state_before: case zero
R : Type u
S : Type v
a b c d : R
m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
hf : p.natDegree ≤ 0
hn : p.coeff 0 = 0
⊢ p.natDegree ≤ 0 - 1
state_after: no goals

tactic: refine (Nat.le_succ_iff_eq_or_le.1 hf).resolve_left fun h ↦ ?_
state_before: case succ
R : Type u
S : Type v
a b c d : R
m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
n : ℕ
hf : p.natDegree ≤ n + 1
hn : p.coeff (n + 1) = 0
⊢ p.natDegree ≤ n + 1 - 1
state_after: case succ
R : Type u
S : Type v
a b c d : R
m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
n : ℕ
hf : p.natDegree ≤ n + 1
hn : p.coeff (n + 1) = 0
h : p.natDegree = n.succ
⊢ False

tactic: rw [← Nat.succ_eq_add_one, ← h, coeff_natDegree, leadingCoeff_eq_zero] at hn
state_before: case succ
R : Type u
S : Type v
a b c d : R
m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
n : ℕ
hf : p.natDegree ≤ n + 1
hn : p.coeff (n + 1) = 0
h : p.natDegree = n.succ
⊢ False
state_after: case succ
R : Type u
S : Type v
a b c d : R
m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
n : ℕ
hf : p.natDegree ≤ n + 1
hn : p = 0
h : p.natDegree = n.succ
⊢ False

tactic: aesop
state_before: case succ
R : Type u
S : Type v
a b c d : R
m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
n : ℕ
hf : p.natDegree ≤ n + 1
hn : p = 0
h : p.natDegree = n.succ
⊢ False
state_after: no goals
Theorem: Prod.mk_lt_mk_of_le_of_lt
File: Mathlib/Order/Basic.lean

tactic: simp [lt_iff, *]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝¹ : Preorder α
inst✝ : Preorder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
h₁ : a₁ ≤ a₂
h₂ : b₁ < b₂
⊢ (a₁, b₁) < (a₂, b₂)
state_after: no goals
Theorem: Batteries.HashMap.Imp.WF.empty
File: .lake/packages/batteries/Batteries/Data/HashMap/Basic.lean

tactic: unfold empty
state_before: α : Type u_1
β : Type u_2
n : Nat
inst✝¹ : BEq α
inst✝ : Hashable α
⊢ (Imp.empty n).WF
state_after: α : Type u_1
β : Type u_2
n : Nat
inst✝¹ : BEq α
inst✝ : Hashable α
⊢ (let nbuckets := numBucketsForCapacity n;
    let n_1 := if h : nbuckets = 0 then ⟨8, empty.proof_1⟩ else ⟨nbuckets, ⋯⟩;
    Imp.empty' n_1.val ⋯).WF

tactic: apply empty'
state_before: α : Type u_1
β : Type u_2
n : Nat
inst✝¹ : BEq α
inst✝ : Hashable α
⊢ (let nbuckets := numBucketsForCapacity n;
    let n_1 := if h : nbuckets = 0 then ⟨8, empty.proof_1⟩ else ⟨nbuckets, ⋯⟩;
    Imp.empty' n_1.val ⋯).WF
state_after: no goals
Theorem: ProbabilityTheory.setLIntegral_condDistrib_of_measurableSet
File: Mathlib/Probability/Kernel/CondDistrib.lean

tactic: obtain ⟨t', ht', rfl⟩ := ht
state_before: α : Type u_1
β : Type u_2
Ω : Type u_3
F : Type u_4
inst✝⁴ : MeasurableSpace Ω
inst✝³ : StandardBorelSpace Ω
inst✝² : Nonempty Ω
inst✝¹ : NormedAddCommGroup F
mα : MeasurableSpace α
μ : Measure α
inst✝ : IsFiniteMeasure μ
X : α → β
Y : α → Ω
mβ : MeasurableSpace β
s : Set Ω
t✝ : Set β
f : β × Ω → F
hX : Measurable X
hY : AEMeasurable Y μ
hs : MeasurableSet s
t : Set α
ht : MeasurableSet t
⊢ ∫⁻ (a : α) in t, ((condDistrib Y X μ) (X a)) s ∂μ = μ (t ∩ Y ⁻¹' s)
state_after: case intro.intro
α : Type u_1
β : Type u_2
Ω : Type u_3
F : Type u_4
inst✝⁴ : MeasurableSpace Ω
inst✝³ : StandardBorelSpace Ω
inst✝² : Nonempty Ω
inst✝¹ : NormedAddCommGroup F
mα : MeasurableSpace α
μ : Measure α
inst✝ : IsFiniteMeasure μ
X : α → β
Y : α → Ω
mβ : MeasurableSpace β
s : Set Ω
t : Set β
f : β × Ω → F
hX : Measurable X
hY : AEMeasurable Y μ
hs : MeasurableSet s
t' : Set β
ht' : MeasurableSet t'
⊢ ∫⁻ (a : α) in X ⁻¹' t', ((condDistrib Y X μ) (X a)) s ∂μ = μ (X ⁻¹' t' ∩ Y ⁻¹' s)

tactic: rw [setLIntegral_preimage_condDistrib hX hY hs ht']
state_before: case intro.intro
α : Type u_1
β : Type u_2
Ω : Type u_3
F : Type u_4
inst✝⁴ : MeasurableSpace Ω
inst✝³ : StandardBorelSpace Ω
inst✝² : Nonempty Ω
inst✝¹ : NormedAddCommGroup F
mα : MeasurableSpace α
μ : Measure α
inst✝ : IsFiniteMeasure μ
X : α → β
Y : α → Ω
mβ : MeasurableSpace β
s : Set Ω
t : Set β
f : β × Ω → F
hX : Measurable X
hY : AEMeasurable Y μ
hs : MeasurableSet s
t' : Set β
ht' : MeasurableSet t'
⊢ ∫⁻ (a : α) in X ⁻¹' t', ((condDistrib Y X μ) (X a)) s ∂μ = μ (X ⁻¹' t' ∩ Y ⁻¹' s)
state_after: no goals
Theorem: LocallyFinite.closure_iUnion
File: Mathlib/Topology/LocallyFinite.lean

tactic: ext x
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
h : LocallyFinite f
⊢ closure (⋃ i, f i) = ⋃ i, closure (f i)
state_after: case h
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
h : LocallyFinite f
x : X
⊢ x ∈ closure (⋃ i, f i) ↔ x ∈ ⋃ i, closure (f i)

tactic: simp only [mem_closure_iff_nhdsWithin_neBot, h.nhdsWithin_iUnion, iSup_neBot, mem_iUnion]
state_before: case h
ι : Type u_1
ι' : Type u_2
α : Type u_3
X : Type u_4
Y : Type u_5
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f g : ι → Set X
h : LocallyFinite f
x : X
⊢ x ∈ closure (⋃ i, f i) ↔ x ∈ ⋃ i, closure (f i)
state_after: no goals
Theorem: MvPolynomial.rename_eq
File: Mathlib/Algebra/MvPolynomial/Rename.lean

tactic: simp only [rename, aeval_def, eval₂, Finsupp.mapDomain, algebraMap_eq, comp_apply,
  X_pow_eq_monomial, ← monomial_finsupp_sum_index]
state_before: σ : Type u_1
τ : Type u_2
α : Type u_3
R : Type u_4
S : Type u_5
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : σ → τ
p : MvPolynomial σ R
⊢ (rename f) p = Finsupp.mapDomain (Finsupp.mapDomain f) p
state_after: σ : Type u_1
τ : Type u_2
α : Type u_3
R : Type u_4
S : Type u_5
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : σ → τ
p : MvPolynomial σ R
⊢ (sum p fun s a => (monomial (s.sum fun a => Finsupp.single (f a))) a) =
    sum p fun a => Finsupp.single (a.sum fun a => Finsupp.single (f a))

tactic: rfl
state_before: σ : Type u_1
τ : Type u_2
α : Type u_3
R : Type u_4
S : Type u_5
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : σ → τ
p : MvPolynomial σ R
⊢ (sum p fun s a => (monomial (s.sum fun a => Finsupp.single (f a))) a) =
    sum p fun a => Finsupp.single (a.sum fun a => Finsupp.single (f a))
state_after: no goals
Theorem: MeasureTheory.measure_biUnion_lt_top
File: Mathlib/MeasureTheory/Measure/MeasureSpaceDef.lean

tactic: convert (measure_biUnion_finset_le (μ := μ) hs.toFinset f).trans_lt _ using 3
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
inst✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : Set β
f : β → Set α
hs : s.Finite
hfin : ∀ i ∈ s, μ (f i) ≠ ⊤
⊢ μ (⋃ i ∈ s, f i) < ⊤
state_after: case h.e'_3.h.e'_6.h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
inst✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : Set β
f : β → Set α
hs : s.Finite
hfin : ∀ i ∈ s, μ (f i) ≠ ⊤
⊢ (fun i => ⋃ (_ : i ∈ s), f i) = fun i => ⋃ (_ : i ∈ hs.toFinset), f i

case convert_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
inst✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : Set β
f : β → Set α
hs : s.Finite
hfin : ∀ i ∈ s, μ (f i) ≠ ⊤
⊢ ∑ i ∈ hs.toFinset, μ (f i) < ⊤

tactic: ext
state_before: case h.e'_3.h.e'_6.h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
inst✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : Set β
f : β → Set α
hs : s.Finite
hfin : ∀ i ∈ s, μ (f i) ≠ ⊤
⊢ (fun i => ⋃ (_ : i ∈ s), f i) = fun i => ⋃ (_ : i ∈ hs.toFinset), f i
state_after: case h.e'_3.h.e'_6.h.e'_3.h.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
inst✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : Set β
f : β → Set α
hs : s.Finite
hfin : ∀ i ∈ s, μ (f i) ≠ ⊤
x✝¹ : β
x✝ : α
⊢ x✝ ∈ ⋃ (_ : x✝¹ ∈ s), f x✝¹ ↔ x✝ ∈ ⋃ (_ : x✝¹ ∈ hs.toFinset), f x✝¹

tactic: rw [Finite.mem_toFinset]
state_before: case h.e'_3.h.e'_6.h.e'_3.h.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
inst✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : Set β
f : β → Set α
hs : s.Finite
hfin : ∀ i ∈ s, μ (f i) ≠ ⊤
x✝¹ : β
x✝ : α
⊢ x✝ ∈ ⋃ (_ : x✝¹ ∈ s), f x✝¹ ↔ x✝ ∈ ⋃ (_ : x✝¹ ∈ hs.toFinset), f x✝¹
state_after: no goals

tactic: apply ENNReal.sum_lt_top
state_before: case convert_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
inst✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : Set β
f : β → Set α
hs : s.Finite
hfin : ∀ i ∈ s, μ (f i) ≠ ⊤
⊢ ∑ i ∈ hs.toFinset, μ (f i) < ⊤
state_after: case convert_2.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
inst✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : Set β
f : β → Set α
hs : s.Finite
hfin : ∀ i ∈ s, μ (f i) ≠ ⊤
⊢ ∀ a ∈ hs.toFinset, μ (f a) ≠ ⊤

tactic: simpa only [Finite.mem_toFinset]
state_before: case convert_2.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
inst✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
s : Set β
f : β → Set α
hs : s.Finite
hfin : ∀ i ∈ s, μ (f i) ≠ ⊤
⊢ ∀ a ∈ hs.toFinset, μ (f a) ≠ ⊤
state_after: no goals
Theorem: Cardinal.le_mk_iff_exists_subset
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [le_mk_iff_exists_set, ← Subtype.exists_set_subtype]
state_before: α✝ β : Type u
c✝ : Cardinal.{?u.234207}
c : Cardinal.{u}
α : Type u
s : Set α
⊢ c ≤ #↑s ↔ ∃ p ⊆ s, #↑p = c
state_after: α✝ β : Type u
c✝ : Cardinal.{?u.234207}
c : Cardinal.{u}
α : Type u
s : Set α
⊢ (∃ p, #↑p = c) ↔ ∃ s_1, #↑(Subtype.val '' s_1) = c

tactic: apply exists_congr
state_before: α✝ β : Type u
c✝ : Cardinal.{?u.234207}
c : Cardinal.{u}
α : Type u
s : Set α
⊢ (∃ p, #↑p = c) ↔ ∃ s_1, #↑(Subtype.val '' s_1) = c
state_after: case h
α✝ β : Type u
c✝ : Cardinal.{?u.234207}
c : Cardinal.{u}
α : Type u
s : Set α
⊢ ∀ (a : Set ↑s), #↑a = c ↔ #↑(Subtype.val '' a) = c

tactic: intro t
state_before: case h
α✝ β : Type u
c✝ : Cardinal.{?u.234207}
c : Cardinal.{u}
α : Type u
s : Set α
⊢ ∀ (a : Set ↑s), #↑a = c ↔ #↑(Subtype.val '' a) = c
state_after: case h
α✝ β : Type u
c✝ : Cardinal.{?u.234207}
c : Cardinal.{u}
α : Type u
s : Set α
t : Set ↑s
⊢ #↑t = c ↔ #↑(Subtype.val '' t) = c

tactic: rw [mk_image_eq]
state_before: case h
α✝ β : Type u
c✝ : Cardinal.{?u.234207}
c : Cardinal.{u}
α : Type u
s : Set α
t : Set ↑s
⊢ #↑t = c ↔ #↑(Subtype.val '' t) = c
state_after: case h
α✝ β : Type u
c✝ : Cardinal.{?u.234207}
c : Cardinal.{u}
α : Type u
s : Set α
t : Set ↑s
⊢ Injective Subtype.val

tactic: apply Subtype.val_injective
state_before: case h
α✝ β : Type u
c✝ : Cardinal.{?u.234207}
c : Cardinal.{u}
α : Type u
s : Set α
t : Set ↑s
⊢ Injective Subtype.val
state_after: no goals
Theorem: Set.image2_left
File: Mathlib/Data/Set/NAry.lean

tactic: simp [nonempty_def.mp h, ext_iff]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
h : t.Nonempty
⊢ image2 (fun x x_1 => x) s t = s
state_after: no goals
Theorem: Nat.iInf_const_zero
File: Mathlib/Data/Nat/Lattice.lean

tactic: simp
state_before: ι : Sort u_1
h : IsEmpty ι
⊢ ⨅ i, 0 = 0
state_after: no goals

tactic: simp
state_before: ι : Sort u_1
h : Nonempty ι
⊢ (0 ∈ range fun i => 0) ∨ (range fun i => 0) = ∅
state_after: no goals
Theorem: Nat.bit0_mod_two
File: Mathlib/Data/Nat/Bits.lean

tactic: rw [Nat.mod_two_of_bodd]
state_before: m n : ℕ
⊢ bit0 n % 2 = 0
state_after: m n : ℕ
⊢ (bif (bit0 n).bodd then 1 else 0) = 0

tactic: simp
state_before: m n : ℕ
⊢ (bif (bit0 n).bodd then 1 else 0) = 0
state_after: no goals
Theorem: Nat.Coprime.gcd_mul_left_cancel_right
File: .lake/packages/batteries/Batteries/Data/Nat/Gcd.lean

tactic: rw [gcd_comm m n, gcd_comm m (k * n), H.gcd_mul_left_cancel n]
state_before: k m n : Nat
H : k.Coprime m
⊢ m.gcd (k * n) = m.gcd n
state_after: no goals