1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: List.sublist_or_mem_of_sublist
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: induction l₁ generalizing l with
| nil => match h with
  | .cons _ h => exact .inl h
  | .cons₂ _ h => exact .inr (.head ..)
| cons b l₁ IH =>
  match h with
  | .cons _ h => exact (IH h).imp_left (Sublist.cons _)
  | .cons₂ _ h => exact (IH h).imp (Sublist.cons₂ _) (.tail _)
state_before: α✝ : Type u_1
l l₁ : List α✝
a : α✝
l₂ : List α✝
h : l <+ l₁ ++ a :: l₂
⊢ l <+ l₁ ++ l₂ ∨ a ∈ l
state_after: no goals

tactic: match h with
| .cons _ h => exact .inl h
| .cons₂ _ h => exact .inr (.head ..)
state_before: case nil
α✝ : Type u_1
a : α✝
l₂ l : List α✝
h : l <+ [] ++ a :: l₂
⊢ l <+ [] ++ l₂ ∨ a ∈ l
state_after: no goals

tactic: exact .inl h
state_before: α✝ : Type u_1
a : α✝
l₂ l✝ : List α✝
h✝ : l✝ <+ [] ++ a :: l₂
l : List α✝
h : l <+ l₂
⊢ l <+ [] ++ l₂ ∨ a ∈ l
state_after: no goals

tactic: exact .inr (.head ..)
state_before: α✝ : Type u_1
a : α✝
l₂ l : List α✝
h✝ : l <+ [] ++ a :: l₂
l₁✝ : List α✝
h : l₁✝ <+ l₂
⊢ a :: l₁✝ <+ [] ++ l₂ ∨ a ∈ a :: l₁✝
state_after: no goals

tactic: match h with
| .cons _ h => exact (IH h).imp_left (Sublist.cons _)
| .cons₂ _ h => exact (IH h).imp (Sublist.cons₂ _) (.tail _)
state_before: case cons
α✝ : Type u_1
a : α✝
l₂ : List α✝
b : α✝
l₁ : List α✝
IH : ∀ {l : List α✝}, l <+ l₁ ++ a :: l₂ → l <+ l₁ ++ l₂ ∨ a ∈ l
l : List α✝
h : l <+ b :: l₁ ++ a :: l₂
⊢ l <+ b :: l₁ ++ l₂ ∨ a ∈ l
state_after: no goals

tactic: exact (IH h).imp_left (Sublist.cons _)
state_before: α✝ : Type u_1
a : α✝
l₂ : List α✝
b : α✝
l₁ : List α✝
IH : ∀ {l : List α✝}, l <+ l₁ ++ a :: l₂ → l <+ l₁ ++ l₂ ∨ a ∈ l
l✝ : List α✝
h✝ : l✝ <+ b :: l₁ ++ a :: l₂
l : List α✝
h : l <+ l₁.append (a :: l₂)
⊢ l <+ b :: l₁ ++ l₂ ∨ a ∈ l
state_after: no goals

tactic: exact (IH h).imp (Sublist.cons₂ _) (.tail _)
state_before: α✝ : Type u_1
a : α✝
l₂ : List α✝
b : α✝
l₁ : List α✝
IH : ∀ {l : List α✝}, l <+ l₁ ++ a :: l₂ → l <+ l₁ ++ l₂ ∨ a ∈ l
l : List α✝
h✝ : l <+ b :: l₁ ++ a :: l₂
l₁✝ : List α✝
h : l₁✝ <+ l₁.append (a :: l₂)
⊢ b :: l₁✝ <+ b :: l₁ ++ l₂ ∨ a ∈ b :: l₁✝
state_after: no goals
Theorem: Real.log_le_log_iff
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: rw [← exp_le_exp, exp_log h, exp_log h₁]
state_before: x y : ℝ
h : 0 < x
h₁ : 0 < y
⊢ log x ≤ log y ↔ x ≤ y
state_after: no goals
Theorem: pow_one
File: Mathlib/Algebra/Group/Defs.lean

tactic: rw [pow_succ, pow_zero, one_mul]
state_before: G : Type u_1
M : Type u_2
inst✝ : Monoid M
a✝ b c : M
m n : ℕ
a : M
⊢ a ^ 1 = a
state_after: no goals
Theorem: Cardinal.mk_multiset_of_countable
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: simp
state_before: α : Type u
inst✝¹ : Countable α
inst✝ : Nonempty α
⊢ #(α →₀ ℕ) = ℵ₀
state_after: no goals
Theorem: MvPolynomial.bind₁_comp_bind₁
File: Mathlib/Algebra/MvPolynomial/Monad.lean

tactic: ext1
state_before: σ : Type u_1
τ : Type u_2
R : Type u_3
S : Type u_4
T : Type u_5
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
inst✝ : CommSemiring T
f✝ : σ → MvPolynomial τ R
υ : Type u_6
f : σ → MvPolynomial τ R
g : τ → MvPolynomial υ R
⊢ (bind₁ g).comp (bind₁ f) = bind₁ fun i => (bind₁ g) (f i)
state_after: case hf
σ : Type u_1
τ : Type u_2
R : Type u_3
S : Type u_4
T : Type u_5
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
inst✝ : CommSemiring T
f✝ : σ → MvPolynomial τ R
υ : Type u_6
f : σ → MvPolynomial τ R
g : τ → MvPolynomial υ R
i✝ : σ
⊢ ((bind₁ g).comp (bind₁ f)) (X i✝) = (bind₁ fun i => (bind₁ g) (f i)) (X i✝)

tactic: apply bind₁_bind₁
state_before: case hf
σ : Type u_1
τ : Type u_2
R : Type u_3
S : Type u_4
T : Type u_5
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S
inst✝ : CommSemiring T
f✝ : σ → MvPolynomial τ R
υ : Type u_6
f : σ → MvPolynomial τ R
g : τ → MvPolynomial υ R
i✝ : σ
⊢ ((bind₁ g).comp (bind₁ f)) (X i✝) = (bind₁ fun i => (bind₁ g) (f i)) (X i✝)
state_after: no goals
Theorem: Left.one_lt_inv_iff
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [← mul_lt_mul_iff_left a, mul_inv_self, mul_one]
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LT α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c : α
⊢ 1 < a⁻¹ ↔ a < 1
state_after: no goals
Theorem: IsOpenMap.preimage_frontier_subset_frontier_preimage
File: Mathlib/Topology/Maps.lean

tactic: simpa only [frontier_eq_closure_inter_closure, preimage_inter] using
  inter_subset_inter hf.preimage_closure_subset_closure_preimage
    hf.preimage_closure_subset_closure_preimage
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
ι : Type u_4
f : X → Y
g : Y → Z
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
hf : IsOpenMap f
s : Set Y
⊢ f ⁻¹' frontier s ⊆ frontier (f ⁻¹' s)
state_after: no goals
Theorem: ZMod.valMinAbs_natAbs_eq_min
File: Mathlib/Data/ZMod/Basic.lean

tactic: rw [valMinAbs_def_pos]
state_before: n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
⊢ a.valMinAbs.natAbs = min a.val (n - a.val)
state_after: n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
⊢ (if a.val ≤ n / 2 then ↑a.val else ↑a.val - ↑n).natAbs = min a.val (n - a.val)

tactic: split_ifs with h
state_before: n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
⊢ (if a.val ≤ n / 2 then ↑a.val else ↑a.val - ↑n).natAbs = min a.val (n - a.val)
state_after: case pos
n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : a.val ≤ n / 2
⊢ (↑a.val).natAbs = min a.val (n - a.val)

case neg
n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : ¬a.val ≤ n / 2
⊢ (↑a.val - ↑n).natAbs = min a.val (n - a.val)

tactic: rw [Int.natAbs_ofNat]
state_before: case pos
n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : a.val ≤ n / 2
⊢ (↑a.val).natAbs = min a.val (n - a.val)
state_after: case pos
n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : a.val ≤ n / 2
⊢ a.val = min a.val (n - a.val)

tactic: symm
state_before: case pos
n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : a.val ≤ n / 2
⊢ a.val = min a.val (n - a.val)
state_after: case pos
n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : a.val ≤ n / 2
⊢ min a.val (n - a.val) = a.val

tactic: apply
  min_eq_left (le_trans h (le_trans (Nat.half_le_of_sub_le_half _) (Nat.sub_le_sub_left h n)))
state_before: case pos
n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : a.val ≤ n / 2
⊢ min a.val (n - a.val) = a.val
state_after: n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : a.val ≤ n / 2
⊢ n - (n - n / 2) ≤ n / 2

tactic: rw [Nat.sub_sub_self (Nat.div_le_self _ _)]
state_before: n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : a.val ≤ n / 2
⊢ n - (n - n / 2) ≤ n / 2
state_after: no goals

tactic: rw [← Int.natAbs_neg, neg_sub, ← Nat.cast_sub a.val_le]
state_before: case neg
n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : ¬a.val ≤ n / 2
⊢ (↑a.val - ↑n).natAbs = min a.val (n - a.val)
state_after: case neg
n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : ¬a.val ≤ n / 2
⊢ (↑(n - a.val)).natAbs = min a.val (n - a.val)

tactic: symm
state_before: case neg
n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : ¬a.val ≤ n / 2
⊢ (↑(n - a.val)).natAbs = min a.val (n - a.val)
state_after: case neg
n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : ¬a.val ≤ n / 2
⊢ min a.val (n - a.val) = (↑(n - a.val)).natAbs

tactic: apply
  min_eq_right
    (le_trans (le_trans (Nat.sub_le_sub_left (lt_of_not_ge h) n) (Nat.le_half_of_half_lt_sub _))
      (le_of_not_ge h))
state_before: case neg
n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : ¬a.val ≤ n / 2
⊢ min a.val (n - a.val) = (↑(n - a.val)).natAbs
state_after: n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : ¬a.val ≤ n / 2
⊢ n / 2 < n - (n - (n / 2).succ)

tactic: rw [Nat.sub_sub_self (Nat.div_lt_self (lt_of_le_of_ne' (Nat.zero_le _) hpos.1) one_lt_two)]
state_before: n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : ¬a.val ≤ n / 2
⊢ n / 2 < n - (n - (n / 2).succ)
state_after: n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : ¬a.val ≤ n / 2
⊢ n / 2 < (n / 2).succ

tactic: apply Nat.lt_succ_self
state_before: n✝ a✝ n : ℕ
hpos : NeZero n
a : ZMod n
h : ¬a.val ≤ n / 2
⊢ n / 2 < (n / 2).succ
state_after: no goals
Theorem: Polynomial.coeff_pow_of_natDegree_le
File: Mathlib/Algebra/Polynomial/Degree/Lemmas.lean

tactic: induction' m with m hm
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
pn : p.natDegree ≤ n
⊢ (p ^ m).coeff (m * n) = p.coeff n ^ m
state_after: case zero
R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
pn : p.natDegree ≤ n
⊢ (p ^ 0).coeff (0 * n) = p.coeff n ^ 0

case succ
R : Type u
S : Type v
ι : Type w
a b : R
m✝ n : ℕ
inst✝ : Semiring R
p q r : R[X]
pn : p.natDegree ≤ n
m : ℕ
hm : (p ^ m).coeff (m * n) = p.coeff n ^ m
⊢ (p ^ (m + 1)).coeff ((m + 1) * n) = p.coeff n ^ (m + 1)

tactic: simp
state_before: case zero
R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
pn : p.natDegree ≤ n
⊢ (p ^ 0).coeff (0 * n) = p.coeff n ^ 0
state_after: no goals

tactic: rw [pow_succ, pow_succ, ← hm, Nat.succ_mul, coeff_mul_of_natDegree_le _ pn]
state_before: case succ
R : Type u
S : Type v
ι : Type w
a b : R
m✝ n : ℕ
inst✝ : Semiring R
p q r : R[X]
pn : p.natDegree ≤ n
m : ℕ
hm : (p ^ m).coeff (m * n) = p.coeff n ^ m
⊢ (p ^ (m + 1)).coeff ((m + 1) * n) = p.coeff n ^ (m + 1)
state_after: R : Type u
S : Type v
ι : Type w
a b : R
m✝ n : ℕ
inst✝ : Semiring R
p q r : R[X]
pn : p.natDegree ≤ n
m : ℕ
hm : (p ^ m).coeff (m * n) = p.coeff n ^ m
⊢ (p ^ m).natDegree ≤ m * n

tactic: refine natDegree_pow_le.trans (le_trans ?_ (le_refl _))
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m✝ n : ℕ
inst✝ : Semiring R
p q r : R[X]
pn : p.natDegree ≤ n
m : ℕ
hm : (p ^ m).coeff (m * n) = p.coeff n ^ m
⊢ (p ^ m).natDegree ≤ m * n
state_after: R : Type u
S : Type v
ι : Type w
a b : R
m✝ n : ℕ
inst✝ : Semiring R
p q r : R[X]
pn : p.natDegree ≤ n
m : ℕ
hm : (p ^ m).coeff (m * n) = p.coeff n ^ m
⊢ m * p.natDegree ≤ m * n

tactic: exact mul_le_mul_of_nonneg_left pn m.zero_le
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m✝ n : ℕ
inst✝ : Semiring R
p q r : R[X]
pn : p.natDegree ≤ n
m : ℕ
hm : (p ^ m).coeff (m * n) = p.coeff n ^ m
⊢ m * p.natDegree ≤ m * n
state_after: no goals
Theorem: circleIntegral.norm_integral_le_of_norm_le_const
File: Mathlib/MeasureTheory/Integral/CircleIntegral.lean

tactic: rwa [this]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
R C : ℝ
hR : 0 ≤ R
hf : ∀ z ∈ sphere c R, ‖f z‖ ≤ C
this : |R| = R
⊢ ∀ z ∈ sphere c |R|, ‖f z‖ ≤ C
state_after: no goals

tactic: rw [this]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c : ℂ
R C : ℝ
hR : 0 ≤ R
hf : ∀ z ∈ sphere c R, ‖f z‖ ≤ C
this : |R| = R
⊢ 2 * π * |R| * C = 2 * π * R * C
state_after: no goals
Theorem: AlgebraicGeometry.IsOpenImmersion.app_eq_invApp_app_of_comp_eq_aux
File: Mathlib/AlgebraicGeometry/OpenImmersion.lean

tactic: subst H
state_before: C : Type u
inst✝ : Category.{v, u} C
X✝ Y✝ Z : Scheme
f✝ : X✝ ⟶ Z
g✝ : Y✝ ⟶ Z
H✝ : IsOpenImmersion f✝
X Y U : Scheme
f : Y ⟶ U
g : U ⟶ X
fg : Y ⟶ X
H : fg = f ≫ g
h : IsOpenImmersion g
V : Opens ↑↑U.toPresheafedSpace
⊢ f ⁻¹ᵁ V = fg ⁻¹ᵁ g ''ᵁ V
state_after: C : Type u
inst✝ : Category.{v, u} C
X✝ Y✝ Z : Scheme
f✝ : X✝ ⟶ Z
g✝ : Y✝ ⟶ Z
H : IsOpenImmersion f✝
X Y U : Scheme
f : Y ⟶ U
g : U ⟶ X
h : IsOpenImmersion g
V : Opens ↑↑U.toPresheafedSpace
⊢ f ⁻¹ᵁ V = (f ≫ g) ⁻¹ᵁ g ''ᵁ V

tactic: rw [Scheme.comp_val_base, Opens.map_comp_obj]
state_before: C : Type u
inst✝ : Category.{v, u} C
X✝ Y✝ Z : Scheme
f✝ : X✝ ⟶ Z
g✝ : Y✝ ⟶ Z
H : IsOpenImmersion f✝
X Y U : Scheme
f : Y ⟶ U
g : U ⟶ X
h : IsOpenImmersion g
V : Opens ↑↑U.toPresheafedSpace
⊢ f ⁻¹ᵁ V = (f ≫ g) ⁻¹ᵁ g ''ᵁ V
state_after: C : Type u
inst✝ : Category.{v, u} C
X✝ Y✝ Z : Scheme
f✝ : X✝ ⟶ Z
g✝ : Y✝ ⟶ Z
H : IsOpenImmersion f✝
X Y U : Scheme
f : Y ⟶ U
g : U ⟶ X
h : IsOpenImmersion g
V : Opens ↑↑U.toPresheafedSpace
⊢ f ⁻¹ᵁ V = f ⁻¹ᵁ g ⁻¹ᵁ g ''ᵁ V

tactic: congr 1
state_before: C : Type u
inst✝ : Category.{v, u} C
X✝ Y✝ Z : Scheme
f✝ : X✝ ⟶ Z
g✝ : Y✝ ⟶ Z
H : IsOpenImmersion f✝
X Y U : Scheme
f : Y ⟶ U
g : U ⟶ X
h : IsOpenImmersion g
V : Opens ↑↑U.toPresheafedSpace
⊢ f ⁻¹ᵁ V = f ⁻¹ᵁ g ⁻¹ᵁ g ''ᵁ V
state_after: case e_a
C : Type u
inst✝ : Category.{v, u} C
X✝ Y✝ Z : Scheme
f✝ : X✝ ⟶ Z
g✝ : Y✝ ⟶ Z
H : IsOpenImmersion f✝
X Y U : Scheme
f : Y ⟶ U
g : U ⟶ X
h : IsOpenImmersion g
V : Opens ↑↑U.toPresheafedSpace
⊢ V = g ⁻¹ᵁ g ''ᵁ V

tactic: ext1
state_before: case e_a
C : Type u
inst✝ : Category.{v, u} C
X✝ Y✝ Z : Scheme
f✝ : X✝ ⟶ Z
g✝ : Y✝ ⟶ Z
H : IsOpenImmersion f✝
X Y U : Scheme
f : Y ⟶ U
g : U ⟶ X
h : IsOpenImmersion g
V : Opens ↑↑U.toPresheafedSpace
⊢ V = g ⁻¹ᵁ g ''ᵁ V
state_after: case e_a.h
C : Type u
inst✝ : Category.{v, u} C
X✝ Y✝ Z : Scheme
f✝ : X✝ ⟶ Z
g✝ : Y✝ ⟶ Z
H : IsOpenImmersion f✝
X Y U : Scheme
f : Y ⟶ U
g : U ⟶ X
h : IsOpenImmersion g
V : Opens ↑↑U.toPresheafedSpace
⊢ ↑V = ↑(g ⁻¹ᵁ g ''ᵁ V)

tactic: exact (Set.preimage_image_eq _ h.base_open.inj).symm
state_before: case e_a.h
C : Type u
inst✝ : Category.{v, u} C
X✝ Y✝ Z : Scheme
f✝ : X✝ ⟶ Z
g✝ : Y✝ ⟶ Z
H : IsOpenImmersion f✝
X Y U : Scheme
f : Y ⟶ U
g : U ⟶ X
h : IsOpenImmersion g
V : Opens ↑↑U.toPresheafedSpace
⊢ ↑V = ↑(g ⁻¹ᵁ g ''ᵁ V)
state_after: no goals
Theorem: Polynomial.smeval_one
File: Mathlib/Algebra/Polynomial/Smeval.lean

tactic: rw [← C_1, smeval_C]
state_before: R : Type u_1
inst✝³ : Semiring R
r : R
p : R[X]
S : Type u_2
inst✝² : AddCommMonoid S
inst✝¹ : Pow S ℕ
inst✝ : MulActionWithZero R S
x : S
⊢ smeval 1 x = 1 • x ^ 0
state_after: R : Type u_1
inst✝³ : Semiring R
r : R
p : R[X]
S : Type u_2
inst✝² : AddCommMonoid S
inst✝¹ : Pow S ℕ
inst✝ : MulActionWithZero R S
x : S
⊢ 1 • x ^ 0 = 1 • x ^ 0

tactic: simp only [Nat.cast_one, one_smul]
state_before: R : Type u_1
inst✝³ : Semiring R
r : R
p : R[X]
S : Type u_2
inst✝² : AddCommMonoid S
inst✝¹ : Pow S ℕ
inst✝ : MulActionWithZero R S
x : S
⊢ 1 • x ^ 0 = 1 • x ^ 0
state_after: no goals
Theorem: dense_irrational
File: Mathlib/Topology/Instances/Irrational.lean

tactic: refine Real.isTopologicalBasis_Ioo_rat.dense_iff.2 ?_
state_before: ⊢ Dense {x | Irrational x}
state_after: ⊢ ∀ o ∈ ⋃ a, ⋃ b, ⋃ (_ : a < b), {Ioo ↑a ↑b}, o.Nonempty → (o ∩ {x | Irrational x}).Nonempty

tactic: simp only [gt_iff_lt, Rat.cast_lt, not_lt, ge_iff_le, Rat.cast_le, mem_iUnion, mem_singleton_iff,
  exists_prop, forall_exists_index, and_imp]
state_before: ⊢ ∀ o ∈ ⋃ a, ⋃ b, ⋃ (_ : a < b), {Ioo ↑a ↑b}, o.Nonempty → (o ∩ {x | Irrational x}).Nonempty
state_after: ⊢ ∀ (o : Set ℝ) (x x_1 : ℚ), x < x_1 → o = Ioo ↑x ↑x_1 → o.Nonempty → (o ∩ {x | Irrational x}).Nonempty

tactic: rintro _ a b hlt rfl _
state_before: ⊢ ∀ (o : Set ℝ) (x x_1 : ℚ), x < x_1 → o = Ioo ↑x ↑x_1 → o.Nonempty → (o ∩ {x | Irrational x}).Nonempty
state_after: a b : ℚ
hlt : a < b
a✝ : (Ioo ↑a ↑b).Nonempty
⊢ (Ioo ↑a ↑b ∩ {x | Irrational x}).Nonempty

tactic: rw [inter_comm]
state_before: a b : ℚ
hlt : a < b
a✝ : (Ioo ↑a ↑b).Nonempty
⊢ (Ioo ↑a ↑b ∩ {x | Irrational x}).Nonempty
state_after: a b : ℚ
hlt : a < b
a✝ : (Ioo ↑a ↑b).Nonempty
⊢ ({x | Irrational x} ∩ Ioo ↑a ↑b).Nonempty

tactic: exact exists_irrational_btwn (Rat.cast_lt.2 hlt)
state_before: a b : ℚ
hlt : a < b
a✝ : (Ioo ↑a ↑b).Nonempty
⊢ ({x | Irrational x} ∩ Ioo ↑a ↑b).Nonempty
state_after: no goals
Theorem: CommRingCat.subsingleton_of_isTerminal
File: Mathlib/Algebra/Category/Ring/Constructions.lean

tactic: infer_instance
state_before: X : CommRingCat
hX : IsTerminal X
⊢ Subsingleton PUnit.{u_1 + 1}
state_after: no goals
Theorem: LinearMap.ker_eq_bot_iff_range_eq_top_of_finrank_eq_finrank
File: Mathlib/LinearAlgebra/FiniteDimensional.lean

tactic: rw [range_eq_top, ker_eq_bot, injective_iff_surjective_of_finrank_eq_finrank H]
state_before: K : Type u
V : Type v
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
V₂ : Type v'
inst✝³ : AddCommGroup V₂
inst✝² : Module K V₂
inst✝¹ : FiniteDimensional K V
inst✝ : FiniteDimensional K V₂
H : finrank K V = finrank K V₂
f : V →ₗ[K] V₂
⊢ ker f = ⊥ ↔ range f = ⊤
state_after: no goals
Theorem: Function.LeftInverse.iterate
File: Mathlib/Logic/Function/Iterate.lean

tactic: rw [iterate_succ', iterate_succ]
state_before: α : Type u
β : Type v
f : α → α
m n✝¹ : ℕ
a : α
g : α → α
hg : LeftInverse g f
n✝ n : ℕ
ihn : LeftInverse g^[n] f^[n]
⊢ LeftInverse g^[n.succ] f^[n.succ]
state_after: α : Type u
β : Type v
f : α → α
m n✝¹ : ℕ
a : α
g : α → α
hg : LeftInverse g f
n✝ n : ℕ
ihn : LeftInverse g^[n] f^[n]
⊢ LeftInverse (g ∘ g^[n]) (f^[n] ∘ f)

tactic: exact ihn.comp hg
state_before: α : Type u
β : Type v
f : α → α
m n✝¹ : ℕ
a : α
g : α → α
hg : LeftInverse g f
n✝ n : ℕ
ihn : LeftInverse g^[n] f^[n]
⊢ LeftInverse (g ∘ g^[n]) (f^[n] ∘ f)
state_after: no goals
Theorem: clusterPt_iff_lift'_closure'
File: Mathlib/Topology/Basic.lean

tactic: rw [clusterPt_iff_lift'_closure, ← Ultrafilter.coe_pure, inf_comm, Ultrafilter.inf_neBot_iff]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
F : Filter X
⊢ ClusterPt x F ↔ (F.lift' closure ⊓ pure x).NeBot
state_after: no goals
Theorem: List.countP_eq_zero
File: .lake/packages/batteries/Batteries/Data/List/Count.lean

tactic: simp only [countP_eq_length_filter, length_eq_zero, filter_eq_nil]
state_before: α : Type u_1
p q : α → Bool
l : List α
⊢ countP p l = 0 ↔ ∀ (a : α), a ∈ l → ¬p a = true
state_after: no goals
Theorem: PartialEquiv.trans_assoc
File: Mathlib/Logic/Equiv/PartialEquiv.lean

tactic: simp [trans_source, @preimage_comp α β γ, inter_assoc]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
e : PartialEquiv α β
e' : PartialEquiv β γ
e'' : PartialEquiv γ δ
⊢ ((e.trans e').trans e'').source = (e.trans (e'.trans e'')).source
state_after: no goals
Theorem: Turing.PartrecToTM2.trNat_zero
File: Mathlib/Computability/TMToPartrec.lean

tactic: rw [trNat, Nat.cast_zero]
state_before: ⊢ trNat 0 = []
state_after: ⊢ trNum 0 = []

tactic: rfl
state_before: ⊢ trNum 0 = []
state_after: no goals
Theorem: Set.toFinset_ofFinset
File: Mathlib/Data/Fintype/Basic.lean

tactic: rw [@mem_toFinset _ _ (id _), H]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s✝ t p : Set α
s : Finset α
H : ∀ (x : α), x ∈ s ↔ x ∈ p
x : α
⊢ x ∈ p.toFinset ↔ x ∈ s
state_after: no goals
Theorem: integrable_cexp_neg_mul_sq
File: Mathlib/Analysis/SpecialFunctions/Gaussian/GaussianIntegral.lean

tactic: refine ⟨(Complex.continuous_exp.comp
  (continuous_const.mul (continuous_ofReal.pow 2))).aestronglyMeasurable, ?_⟩
state_before: b : ℂ
hb : 0 < b.re
⊢ Integrable (fun x => cexp (-b * ↑x ^ 2)) volume
state_after: b : ℂ
hb : 0 < b.re
⊢ HasFiniteIntegral (fun x => cexp (-b * ↑x ^ 2)) volume

tactic: rw [← hasFiniteIntegral_norm_iff]
state_before: b : ℂ
hb : 0 < b.re
⊢ HasFiniteIntegral (fun x => cexp (-b * ↑x ^ 2)) volume
state_after: b : ℂ
hb : 0 < b.re
⊢ HasFiniteIntegral (fun a => ‖cexp (-b * ↑a ^ 2)‖) volume

tactic: simp_rw [norm_cexp_neg_mul_sq]
state_before: b : ℂ
hb : 0 < b.re
⊢ HasFiniteIntegral (fun a => ‖cexp (-b * ↑a ^ 2)‖) volume
state_after: b : ℂ
hb : 0 < b.re
⊢ HasFiniteIntegral (fun a => rexp (-b.re * a ^ 2)) volume

tactic: exact (integrable_exp_neg_mul_sq hb).2
state_before: b : ℂ
hb : 0 < b.re
⊢ HasFiniteIntegral (fun a => rexp (-b.re * a ^ 2)) volume
state_after: no goals
Theorem: ContractingWith.one_sub_K_pos'
File: Mathlib/Topology/MetricSpace/Contracting.lean

tactic: simp [hf.1]
state_before: α : Type u_1
inst✝ : EMetricSpace α
cs : CompleteSpace α
K : ℝ≥0
f : α → α
hf : ContractingWith K f
⊢ 0 < 1 - ↑K
state_after: no goals
Theorem: Matroid.Basis.insert_basis_insert
File: Mathlib/Data/Matroid/Basic.lean

tactic: simp_rw [← union_singleton] at *
state_before: α : Type u_1
M : Matroid α
I X : Set α
e : α
hI : M.Basis I X
h : M.Indep (insert e I)
⊢ M.Basis (insert e I) (insert e X)
state_after: α : Type u_1
M : Matroid α
I X : Set α
e : α
hI : M.Basis I X
h : M.Indep (I ∪ {e})
⊢ M.Basis (I ∪ {e}) (X ∪ {e})

tactic: exact hI.union_basis_union (h.subset subset_union_right).basis_self h
state_before: α : Type u_1
M : Matroid α
I X : Set α
e : α
hI : M.Basis I X
h : M.Indep (I ∪ {e})
⊢ M.Basis (I ∪ {e}) (X ∪ {e})
state_after: no goals
Theorem: lowerCentralSeries_isDescendingCentralSeries
File: Mathlib/GroupTheory/Nilpotent.lean

tactic: constructor
state_before: G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : H.Normal
⊢ IsDescendingCentralSeries (lowerCentralSeries G)
state_after: case left
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : H.Normal
⊢ lowerCentralSeries G 0 = ⊤

case right
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : H.Normal
⊢ ∀ (x : G) (n : ℕ), x ∈ lowerCentralSeries G n → ∀ (g : G), x * g * x⁻¹ * g⁻¹ ∈ lowerCentralSeries G (n + 1)

tactic: intro x n hxn g
state_before: case right
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : H.Normal
⊢ ∀ (x : G) (n : ℕ), x ∈ lowerCentralSeries G n → ∀ (g : G), x * g * x⁻¹ * g⁻¹ ∈ lowerCentralSeries G (n + 1)
state_after: case right
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : H.Normal
x : G
n : ℕ
hxn : x ∈ lowerCentralSeries G n
g : G
⊢ x * g * x⁻¹ * g⁻¹ ∈ lowerCentralSeries G (n + 1)

tactic: exact commutator_mem_commutator hxn (mem_top g)
state_before: case right
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : H.Normal
x : G
n : ℕ
hxn : x ∈ lowerCentralSeries G n
g : G
⊢ x * g * x⁻¹ * g⁻¹ ∈ lowerCentralSeries G (n + 1)
state_after: no goals

tactic: rfl
state_before: case left
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : H.Normal
⊢ lowerCentralSeries G 0 = ⊤
state_after: no goals
Theorem: List.inter_cons_of_mem
File: Mathlib/Data/List/Lattice.lean

tactic: simp [Inter.inter, List.inter, h]
state_before: α : Type u_1
l l₁✝ l₂ : List α
p : α → Prop
a : α
inst✝ : DecidableEq α
l₁ : List α
h : a ∈ l₂
⊢ (a :: l₁) ∩ l₂ = a :: l₁ ∩ l₂
state_after: no goals
Theorem: hasMellin_add
File: Mathlib/Analysis/MellinTransform.lean

tactic: simpa only [MellinConvergent, smul_add] using hf.add hg
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f g : ℝ → E
s : ℂ
hf : MellinConvergent f s
hg : MellinConvergent g s
⊢ MellinConvergent (fun t => f t + g t) s
state_after: no goals

tactic: simpa only [mellin, smul_add] using integral_add hf hg
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f g : ℝ → E
s : ℂ
hf : MellinConvergent f s
hg : MellinConvergent g s
⊢ mellin (fun t => f t + g t) s = mellin f s + mellin g s
state_after: no goals
Theorem: UpperSet.compl_iInf₂
File: Mathlib/Order/UpperLower/Basic.lean

tactic: simp_rw [UpperSet.compl_iInf]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝ : LE α
s t : UpperSet α
a : α
f : (i : ι) → κ i → UpperSet α
⊢ (⨅ i, ⨅ j, f i j).compl = ⨅ i, ⨅ j, (f i j).compl
state_after: no goals