tasksource/leandojo huggingface dataset:
Theorem: Set.Ioc_inter_Ioo_of_left_lt
File: Mathlib/Data/Set/Intervals/Basic.lean

tactic: simp [and_assoc, @and_left_comm (x ≤ _), and_iff_left_iff_imp.2 fun h' => lt_of_le_of_lt h' h]
state_before: α : Type u_1
β : Type ?u.188656
inst✝¹ : LinearOrder α
inst✝ : LinearOrder β
f : α → β
a a₁ a₂ b b₁ b₂ c d : α
h : b₁ < b₂
x : α
⊢ x ∈ Ioc a₁ b₁ ∩ Ioo a₂ b₂ ↔ x ∈ Ioc (max a₁ a₂) b₁
Theorem: Polynomial.coeff_mul_mirror
File: Mathlib/Data/Polynomial/Mirror.lean

tactic: rw [coeff_mul, Finset.Nat.sum_antidiagonal_eq_sum_range_succ_mk]
state_before: R : Type u_1
inst✝ : Semiring R
p q : R[X]
⊢ coeff (p * mirror p) (natDegree p + natTrailingDegree p) = sum p fun n x => x ^ 2

tactic: rw [coeff_mirror, ← revAt_le (Finset.mem_range_succ_iff.mp hn), revAt_invol, ← sq]
state_before: R : Type u_1
inst✝ : Semiring R
p q : R[X]
n : ℕ
hn : n ∈ Finset.range (Nat.succ (natDegree p + natTrailingDegree p))
⊢ coeff p (n, natDegree p + natTrailingDegree p - n).fst *
      coeff (mirror p) (n, natDegree p + natTrailingDegree p - n).snd =
    coeff p n ^ 2
Theorem: Gamma0_det
File: Mathlib/NumberTheory/ModularForms/CongruenceSubgroups.lean

tactic: simp [A.1.property]
state_before: N✝ N : ℕ
A : { x // x ∈ Gamma0 N }
⊢ ↑(det ↑↑A) = 1
Theorem: toIocMod_add_right_eq_add
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: simp_rw [toIocMod, toIocDiv_sub_eq_toIocDiv_add', sub_add_eq_add_sub]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c✝ : α
n : ℤ
a b c : α
⊢ toIocMod hp a (b + c) = toIocMod hp (a - c) b + c
Theorem: Finset.prod_le_prod_of_subset_of_one_le'
File: Mathlib/Algebra/BigOperators/Order.lean

tactic: classical calc
    (∏ i in s, f i) ≤ (∏ i in t \ s, f i) * ∏ i in s, f i :=
      le_mul_of_one_le_left' <| one_le_prod' <| by simpa only [mem_sdiff, and_imp]
    _ = ∏ i in t \ s ∪ s, f i := (prod_union sdiff_disjoint).symm
    _ = ∏ i in t, f i := by rw [sdiff_union_of_subset h]
state_before: ι : Type u_1
α : Type ?u.20233
β : Type ?u.20236
M : Type ?u.20239
N : Type u_2
G : Type ?u.20245
k : Type ?u.20248
R : Type ?u.20251
inst✝¹ : CommMonoid M
inst✝ : OrderedCommMonoid N
f g : ι → N
s t : Finset ι
h : s ⊆ t
hf : ∀ (i : ι), i ∈ t → ¬i ∈ s → 1 ≤ f i
⊢ ∏ i in s, f i ≤ ∏ i in t, f i

tactic: calc
(∏ i in s, f i) ≤ (∏ i in t \ s, f i) * ∏ i in s, f i :=
le_mul_of_one_le_left' <| one_le_prod' <| by simpa only [mem_sdiff, and_imp]
_ = ∏ i in t \ s ∪ s, f i := (prod_union sdiff_disjoint).symm
_ = ∏ i in t, f i := by rw [sdiff_union_of_subset h]
state_before: ι : Type u_1
α : Type ?u.20233
β : Type ?u.20236
M : Type ?u.20239
N : Type u_2
G : Type ?u.20245
k : Type ?u.20248
R : Type ?u.20251
inst✝¹ : CommMonoid M
inst✝ : OrderedCommMonoid N
f g : ι → N
s t : Finset ι
h : s ⊆ t
hf : ∀ (i : ι), i ∈ t → ¬i ∈ s → 1 ≤ f i
⊢ ∏ i in s, f i ≤ ∏ i in t, f i

tactic: simpa only [mem_sdiff, and_imp]
state_before: ι : Type u_1
α : Type ?u.20233
β : Type ?u.20236
M : Type ?u.20239
N : Type u_2
G : Type ?u.20245
k : Type ?u.20248
R : Type ?u.20251
inst✝¹ : CommMonoid M
inst✝ : OrderedCommMonoid N
f g : ι → N
s t : Finset ι
h : s ⊆ t
hf : ∀ (i : ι), i ∈ t → ¬i ∈ s → 1 ≤ f i
⊢ ∀ (i : ι), i ∈ t \ s → 1 ≤ f i

tactic: rw [sdiff_union_of_subset h]
state_before: ι : Type u_1
α : Type ?u.20233
β : Type ?u.20236
M : Type ?u.20239
N : Type u_2
G : Type ?u.20245
k : Type ?u.20248
R : Type ?u.20251
inst✝¹ : CommMonoid M
inst✝ : OrderedCommMonoid N
f g : ι → N
s t : Finset ι
h : s ⊆ t
hf : ∀ (i : ι), i ∈ t → ¬i ∈ s → 1 ≤ f i
⊢ ∏ i in t \ s ∪ s, f i = ∏ i in t, f i
Theorem: AffineSubspace.isConnected_setOf_sOppSide
File: Mathlib/Analysis/Convex/Side.lean

tactic: obtain ⟨p, hp⟩ := h
state_before: R : Type ?u.503618
V : Type u_1
V' : Type ?u.503624
P : Type u_2
P' : Type ?u.503630
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
hx : ¬x ∈ s
h : Set.Nonempty ↑s
⊢ IsConnected {y | SOppSide s x y}

tactic: haveI : Nonempty s := ⟨⟨p, hp⟩⟩
state_before: case intro
R : Type ?u.503618
V : Type u_1
V' : Type ?u.503624
P : Type u_2
P' : Type ?u.503630
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
hx : ¬x ∈ s
p : P
hp : p ∈ ↑s
⊢ IsConnected {y | SOppSide s x y}

tactic: rw [setOf_sOppSide_eq_image2 hx hp, ← Set.image_prod]
state_before: case intro
R : Type ?u.503618
V : Type u_1
V' : Type ?u.503624
P : Type u_2
P' : Type ?u.503630
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
hx : ¬x ∈ s
p : P
hp : p ∈ ↑s
this : Nonempty { x // x ∈ s }
⊢ IsConnected {y | SOppSide s x y}

tactic: refine' (isConnected_Iio.prod (isConnected_iff_connectedSpace.2 _)).image _
  ((continuous_fst.smul continuous_const).vadd continuous_snd).continuousOn
state_before: case intro
R : Type ?u.503618
V : Type u_1
V' : Type ?u.503624
P : Type u_2
P' : Type ?u.503630
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
hx : ¬x ∈ s
p : P
hp : p ∈ ↑s
this : Nonempty { x // x ∈ s }
⊢ IsConnected ((fun x_1 => x_1.fst • (x -ᵥ p) +ᵥ x_1.snd) '' Set.Iio 0 ×ˢ ↑s)

tactic: convert AddTorsor.connectedSpace s.direction s
state_before: case intro
R : Type ?u.503618
V : Type u_1
V' : Type ?u.503624
P : Type u_2
P' : Type ?u.503630
inst✝³ : SeminormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor V P
s : AffineSubspace ℝ P
x : P
hx : ¬x ∈ s
p : P
hp : p ∈ ↑s
this : Nonempty { x // x ∈ s }
⊢ ConnectedSpace ↑↑s
Theorem: Real.sq_cos_pi_div_six
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: have h1 : cos (π / 6) ^ 2 = 1 / 2 + 1 / 2 / 2 := by
  convert cos_sq (π / 6) using 3
  have h2 : 2 * (π / 6) = π / 3 := by linarith
  rw [h2, cos_pi_div_three]
state_before: x : ℝ
⊢ cos (π / 6) ^ 2 = 3 / 4

tactic: rw [← sub_eq_zero] at h1⊢
state_before: x : ℝ
h1 : cos (π / 6) ^ 2 = 1 / 2 + 1 / 2 / 2
⊢ cos (π / 6) ^ 2 = 3 / 4

tactic: convert h1 using 1
state_before: x : ℝ
h1✝ : cos (π / 6) ^ 2 = 1 / 2 + 1 / 2 / 2
h1 : cos (π / 6) ^ 2 - (1 / 2 + 1 / 2 / 2) = 0
⊢ cos (π / 6) ^ 2 - 3 / 4 = 0

tactic: ring
state_before: case h.e'_2
x : ℝ
h1✝ : cos (π / 6) ^ 2 = 1 / 2 + 1 / 2 / 2
h1 : cos (π / 6) ^ 2 - (1 / 2 + 1 / 2 / 2) = 0
⊢ cos (π / 6) ^ 2 - 3 / 4 = cos (π / 6) ^ 2 - (1 / 2 + 1 / 2 / 2)

tactic: convert cos_sq (π / 6) using 3
state_before: x : ℝ
⊢ cos (π / 6) ^ 2 = 1 / 2 + 1 / 2 / 2

tactic: have h2 : 2 * (π / 6) = π / 3 := by linarith
state_before: case h.e'_3.h.e'_6.h.e'_5
x : ℝ
⊢ 1 / 2 = cos (2 * (π / 6))

tactic: rw [h2, cos_pi_div_three]
state_before: case h.e'_3.h.e'_6.h.e'_5
x : ℝ
h2 : 2 * (π / 6) = π / 3
⊢ 1 / 2 = cos (2 * (π / 6))

tactic: linarith
state_before: x : ℝ
⊢ 2 * (π / 6) = π / 3
Theorem: CategoryTheory.MonoidalCategory.tensorRightTensor_inv_app
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: simp [tensorRightTensor]
state_before: C✝³ : Type u
𝒞 : Category C✝³
inst✝⁸ : MonoidalCategory C✝³
C✝² : Type u
inst✝⁷ : Category C✝²
inst✝⁶ : MonoidalCategory C✝²
C✝¹ : Type u
inst✝⁵ : Category C✝¹
inst✝⁴ : MonoidalCategory C✝¹
C✝ : Type u
inst✝³ : Category C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category C
inst✝ : MonoidalCategory C
X Y Z : C
⊢ (tensorRightTensor X Y).inv.app Z = (α_ Z X Y).hom
Theorem: RelIso.cof_le_lift
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: rw [Order.cof, Order.cof, lift_sInf, lift_sInf,
  le_csInf_iff'' (nonempty_image_iff.2 (Order.cof_nonempty s))]
state_before: α✝ : Type ?u.1813
r✝ : α✝ → α✝ → Prop
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝ : IsRefl β s
f : r ≃r s
⊢ Cardinal.lift (cof r) ≤ Cardinal.lift (cof s)

tactic: rintro - ⟨-, ⟨u, H, rfl⟩, rfl⟩
state_before: α✝ : Type ?u.1813
r✝ : α✝ → α✝ → Prop
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝ : IsRefl β s
f : r ≃r s
⊢ ∀ (b : Cardinal),
    b ∈ Cardinal.lift '' {c | ∃ S, (∀ (a : β), ∃ b, b ∈ S ∧ s a b) ∧ (#↑S) = c} →
      sInf (Cardinal.lift '' {c | ∃ S, (∀ (a : α), ∃ b, b ∈ S ∧ r a b) ∧ (#↑S) = c}) ≤ b

tactic: apply csInf_le'
state_before: case intro.intro.intro.intro
α✝ : Type ?u.1813
r✝ : α✝ → α✝ → Prop
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝ : IsRefl β s
f : r ≃r s
u : Set β
H : ∀ (a : β), ∃ b, b ∈ u ∧ s a b
⊢ sInf (Cardinal.lift '' {c | ∃ S, (∀ (a : α), ∃ b, b ∈ S ∧ r a b) ∧ (#↑S) = c}) ≤ Cardinal.lift (#↑u)

tactic: refine'
  ⟨_, ⟨f.symm '' u, fun a => _, rfl⟩,
    lift_mk_eq.{u, v, max u v}.2 ⟨(f.symm.toEquiv.image u).symm⟩⟩
state_before: case intro.intro.intro.intro.h
α✝ : Type ?u.1813
r✝ : α✝ → α✝ → Prop
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝ : IsRefl β s
f : r ≃r s
u : Set β
H : ∀ (a : β), ∃ b, b ∈ u ∧ s a b
⊢ Cardinal.lift (#↑u) ∈ Cardinal.lift '' {c | ∃ S, (∀ (a : α), ∃ b, b ∈ S ∧ r a b) ∧ (#↑S) = c}

tactic: rcases H (f a) with ⟨b, hb, hb'⟩
state_before: case intro.intro.intro.intro.h
α✝ : Type ?u.1813
r✝ : α✝ → α✝ → Prop
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝ : IsRefl β s
f : r ≃r s
u : Set β
H : ∀ (a : β), ∃ b, b ∈ u ∧ s a b
a : α
⊢ ∃ b, b ∈ ↑(RelIso.symm f) '' u ∧ r a b

tactic: refine' ⟨f.symm b, mem_image_of_mem _ hb, f.map_rel_iff.1 _⟩
state_before: case intro.intro.intro.intro.h.intro.intro
α✝ : Type ?u.1813
r✝ : α✝ → α✝ → Prop
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝ : IsRefl β s
f : r ≃r s
u : Set β
H : ∀ (a : β), ∃ b, b ∈ u ∧ s a b
a : α
b : β
hb : b ∈ u
hb' : s (↑f a) b
⊢ ∃ b, b ∈ ↑(RelIso.symm f) '' u ∧ r a b

tactic: rwa [RelIso.apply_symm_apply]
state_before: case intro.intro.intro.intro.h.intro.intro
α✝ : Type ?u.1813
r✝ : α✝ → α✝ → Prop
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝ : IsRefl β s
f : r ≃r s
u : Set β
H : ∀ (a : β), ∃ b, b ∈ u ∧ s a b
a : α
b : β
hb : b ∈ u
hb' : s (↑f a) b
⊢ s (↑f a) (↑f (↑(RelIso.symm f) b))
Theorem: covby_iff_atom_Ici
File: Mathlib/Order/Atoms.lean

tactic: simp
state_before: α : Type u_1
β : Type ?u.8567
inst✝ : PartialOrder α
a b : α
h : a ≤ b
⊢ a ⋖ b ↔ IsAtom { val := b, property := h }
Theorem: Num.cast_succ'
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [← PosNum.cast_to_nat, succ'_to_nat, Nat.cast_add_one, cast_to_nat]
state_before: α : Type u_1
inst✝ : AddMonoidWithOne α
n : Num
⊢ ↑(succ' n) = ↑n + 1
Theorem: IsSubmonoid.pow_mem
File: Mathlib/Deprecated/Submonoid.lean

tactic: rw [pow_zero]
state_before: M : Type u_1
inst✝¹ : Monoid M
s : Set M
A : Type ?u.30867
inst✝ : AddMonoid A
t : Set A
a : M
hs : IsSubmonoid s
h : a ∈ s
⊢ a ^ 0 ∈ s

tactic: exact hs.one_mem
state_before: M : Type u_1
inst✝¹ : Monoid M
s : Set M
A : Type ?u.30867
inst✝ : AddMonoid A
t : Set A
a : M
hs : IsSubmonoid s
h : a ∈ s
⊢ 1 ∈ s

tactic: rw [pow_succ]
state_before: M : Type u_1
inst✝¹ : Monoid M
s : Set M
A : Type ?u.30867
inst✝ : AddMonoid A
t : Set A
a : M
hs : IsSubmonoid s
h : a ∈ s
n : ℕ
⊢ a ^ (n + 1) ∈ s

tactic: exact hs.mul_mem h (IsSubmonoid.pow_mem hs h)
state_before: M : Type u_1
inst✝¹ : Monoid M
s : Set M
A : Type ?u.30867
inst✝ : AddMonoid A
t : Set A
a : M
hs : IsSubmonoid s
h : a ∈ s
n : ℕ
⊢ a * a ^ n ∈ s
Theorem: List.exists_of_set
File: Std/Data/List/Lemmas.lean

tactic: rw [set_eq_modifyNth]
state_before: α : Type u_1
n : Nat
a' : α
l : List α
h : n < length l
⊢ ∃ l₁ a l₂, l = l₁ ++ a :: l₂ ∧ length l₁ = n ∧ set l n a' = l₁ ++ a' :: l₂

tactic: exact exists_of_modifyNth _ h
state_before: α : Type u_1
n : Nat
a' : α
l : List α
h : n < length l
⊢ ∃ l₁ a l₂, l = l₁ ++ a :: l₂ ∧ length l₁ = n ∧ modifyNth (fun x => a') n l = l₁ ++ a' :: l₂
Theorem: QuotientGroup.equivQuotientZPowOfEquiv_trans
File: Mathlib/GroupTheory/QuotientGroup.lean

tactic: ext x
state_before: G : Type u
inst✝⁴ : Group G
N : Subgroup G
nN : Subgroup.Normal N
H : Type v
inst✝³ : Group H
φ : G →* H
A B C : Type u
inst✝² : CommGroup A
inst✝¹ : CommGroup B
inst✝ : CommGroup C
f : A →* B
g : B →* A
e : A ≃* B
d : B ≃* C
n : ℤ
⊢ MulEquiv.trans (equivQuotientZPowOfEquiv e n) (equivQuotientZPowOfEquiv d n) =
    equivQuotientZPowOfEquiv (MulEquiv.trans e d) n

tactic: rw [← Quotient.out_eq' x]
state_before: case h
G : Type u
inst✝⁴ : Group G
N : Subgroup G
nN : Subgroup.Normal N
H : Type v
inst✝³ : Group H
φ : G →* H
A B C : Type u
inst✝² : CommGroup A
inst✝¹ : CommGroup B
inst✝ : CommGroup C
f : A →* B
g : B →* A
e : A ≃* B
d : B ≃* C
n : ℤ
x : A ⧸ range (zpowGroupHom n)
⊢ ↑(MulEquiv.trans (equivQuotientZPowOfEquiv e n) (equivQuotientZPowOfEquiv d n)) x =
    ↑(equivQuotientZPowOfEquiv (MulEquiv.trans e d) n) x

tactic: rfl
state_before: case h
G : Type u
inst✝⁴ : Group G
N : Subgroup G
nN : Subgroup.Normal N
H : Type v
inst✝³ : Group H
φ : G →* H
A B C : Type u
inst✝² : CommGroup A
inst✝¹ : CommGroup B
inst✝ : CommGroup C
f : A →* B
g : B →* A
e : A ≃* B
d : B ≃* C
n : ℤ
x : A ⧸ range (zpowGroupHom n)
⊢ ↑(MulEquiv.trans (equivQuotientZPowOfEquiv e n) (equivQuotientZPowOfEquiv d n)) (Quotient.mk'' (Quotient.out' x)) =
    ↑(equivQuotientZPowOfEquiv (MulEquiv.trans e d) n) (Quotient.mk'' (Quotient.out' x))
Theorem: SymplecticGroup.mem_iff'
File: Mathlib/LinearAlgebra/SymplecticGroup.lean

tactic: rw [← transpose_mem_iff, mem_iff, transpose_transpose]
state_before: l : Type u_1
R : Type u_2
inst✝² : DecidableEq l
inst✝¹ : Fintype l
inst✝ : CommRing R
A : Matrix (l ⊕ l) (l ⊕ l) R
⊢ A ∈ symplecticGroup l R ↔ Aᵀ ⬝ J l R ⬝ A = J l R
Theorem: Matrix.neg_dotProduct
File: Mathlib/Data/Matrix/Basic.lean

tactic: simp [dotProduct]
state_before: l : Type ?u.173129
m : Type u_1
n : Type ?u.173135
o : Type ?u.173138
m' : o → Type ?u.173143
n' : o → Type ?u.173148
R : Type ?u.173151
S : Type ?u.173154
α : Type v
β : Type w
γ : Type ?u.173161
inst✝² : Fintype m
inst✝¹ : Fintype n
inst✝ : NonUnitalNonAssocRing α
u v w : m → α
⊢ -v ⬝ᵥ w = -(v ⬝ᵥ w)
Theorem: ENNReal.div_eq_top
File: Mathlib/Data/Real/ENNReal.lean

tactic: simp [div_eq_mul_inv, ENNReal.mul_eq_top]
state_before: α : Type ?u.276780
β : Type ?u.276783
a b c d : ℝ≥0∞
r p q : ℝ≥0
⊢ a / b = ⊤ ↔ a ≠ 0 ∧ b = 0 ∨ a = ⊤ ∧ b ≠ ⊤
Theorem: tendsto_const_mul_pow_nhds_iff
File: Mathlib/Topology/Algebra/Order/Field.lean

tactic: simp [tendsto_const_mul_pow_nhds_iff', hc]
state_before: 𝕜 : Type u_1
α : Type ?u.41734
inst✝² : LinearOrderedField 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
l : Filter α
f g : α → 𝕜
n : ℕ
c d : 𝕜
hc : c ≠ 0
⊢ Tendsto (fun x => c * x ^ n) atTop (𝓝 d) ↔ n = 0 ∧ c = d
Theorem: Multiset.toEnumFinset_mono
File: Mathlib/Data/Multiset/Fintype.lean

tactic: intro p
state_before: α : Type u_1
inst✝ : DecidableEq α
m m₁ m₂ : Multiset α
h : m₁ ≤ m₂
⊢ toEnumFinset m₁ ⊆ toEnumFinset m₂

tactic: simp only [Multiset.mem_toEnumFinset]
state_before: α : Type u_1
inst✝ : DecidableEq α
m m₁ m₂ : Multiset α
h : m₁ ≤ m₂
p : α × ℕ
⊢ p ∈ toEnumFinset m₁ → p ∈ toEnumFinset m₂

tactic: exact gt_of_ge_of_gt (Multiset.le_iff_count.mp h p.1)
state_before: α : Type u_1
inst✝ : DecidableEq α
m m₁ m₂ : Multiset α
h : m₁ ≤ m₂
p : α × ℕ
⊢ p.snd < count p.fst m₁ → p.snd < count p.fst m₂
Theorem: PiNat.self_mem_cylinder
File: Mathlib/Topology/MetricSpace/PiNat.lean

tactic: simp
state_before: E : ℕ → Type u_1
x : (n : ℕ) → E n
n : ℕ
⊢ x ∈ cylinder x n
Theorem: countable_of_isolated_right'
File: Mathlib/Topology/Order/Basic.lean

tactic: simpa only [← covby_iff_Ioo_eq] using countable_setOf_covby_right
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : SecondCountableTopology α
⊢ Set.Countable {x | ∃ y, x < y ∧ Ioo x y = ∅}
Theorem: ProbabilityTheory.indepFun_iff_indepSet_preimage
File: Mathlib/Probability/Independence/Basic.lean

tactic: refine' indepFun_iff_measure_inter_preimage_eq_mul.trans _
state_before: Ω : Type u_3
ι : Type ?u.3148409
β : Type u_1
β' : Type u_2
γ : Type ?u.3148418
γ' : Type ?u.3148421
mΩ : MeasurableSpace Ω
μ : MeasureTheory.Measure Ω
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
inst✝ : IsProbabilityMeasure μ
hf : Measurable f
hg : Measurable g
⊢ IndepFun f g ↔ ∀ (s : Set β) (t : Set β'), MeasurableSet s → MeasurableSet t → IndepSet (f ⁻¹' s) (g ⁻¹' t)

tactic: constructor <;> intro h s t hs ht <;> specialize h s t hs ht
state_before: Ω : Type u_3
ι : Type ?u.3148409
β : Type u_1
β' : Type u_2
γ : Type ?u.3148418
γ' : Type ?u.3148421
mΩ : MeasurableSpace Ω
μ : MeasureTheory.Measure Ω
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
inst✝ : IsProbabilityMeasure μ
hf : Measurable f
hg : Measurable g
⊢ (∀ (s : Set β) (t : Set β'),
      MeasurableSet s → MeasurableSet t → ↑↑μ (f ⁻¹' s ∩ g ⁻¹' t) = ↑↑μ (f ⁻¹' s) * ↑↑μ (g ⁻¹' t)) ↔
    ∀ (s : Set β) (t : Set β'), MeasurableSet s → MeasurableSet t → IndepSet (f ⁻¹' s) (g ⁻¹' t)

tactic: rwa [indepSet_iff_measure_inter_eq_mul (hf hs) (hg ht) μ]
state_before: case mp
Ω : Type u_3
ι : Type ?u.3148409
β : Type u_1
β' : Type u_2
γ : Type ?u.3148418
γ' : Type ?u.3148421
mΩ : MeasurableSpace Ω
μ : MeasureTheory.Measure Ω
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
inst✝ : IsProbabilityMeasure μ
hf : Measurable f
hg : Measurable g
s : Set β
t : Set β'
hs : MeasurableSet s
ht : MeasurableSet t
h : ↑↑μ (f ⁻¹' s ∩ g ⁻¹' t) = ↑↑μ (f ⁻¹' s) * ↑↑μ (g ⁻¹' t)
⊢ IndepSet (f ⁻¹' s) (g ⁻¹' t)

tactic: rwa [← indepSet_iff_measure_inter_eq_mul (hf hs) (hg ht) μ]
state_before: case mpr
Ω : Type u_3
ι : Type ?u.3148409
β : Type u_1
β' : Type u_2
γ : Type ?u.3148418
γ' : Type ?u.3148421
mΩ : MeasurableSpace Ω
μ : MeasureTheory.Measure Ω
f : Ω → β
g : Ω → β'
mβ : MeasurableSpace β
mβ' : MeasurableSpace β'
inst✝ : IsProbabilityMeasure μ
hf : Measurable f
hg : Measurable g
s : Set β
t : Set β'
hs : MeasurableSet s
ht : MeasurableSet t
h : IndepSet (f ⁻¹' s) (g ⁻¹' t)
⊢ ↑↑μ (f ⁻¹' s ∩ g ⁻¹' t) = ↑↑μ (f ⁻¹' s) * ↑↑μ (g ⁻¹' t)
Theorem: Real.rpow_lt_one_iff
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rcases hx.eq_or_lt with (rfl | hx)
state_before: x y z : ℝ
hx : 0 ≤ x
⊢ x ^ y < 1 ↔ x = 0 ∧ y ≠ 0 ∨ 1 < x ∧ y < 0 ∨ x < 1 ∧ 0 < y

tactic: rcases _root_.em (y = 0) with (rfl | hy) <;> simp [*, lt_irrefl, zero_lt_one]
state_before: case inl
y z : ℝ
hx : 0 ≤ 0
⊢ 0 ^ y < 1 ↔ 0 = 0 ∧ y ≠ 0 ∨ 1 < 0 ∧ y < 0 ∨ 0 < 1 ∧ 0 < y

tactic: simp [rpow_lt_one_iff_of_pos hx, hx.ne.symm]
state_before: case inr
x y z : ℝ
hx✝ : 0 ≤ x
hx : 0 < x
⊢ x ^ y < 1 ↔ x = 0 ∧ y ≠ 0 ∨ 1 < x ∧ y < 0 ∨ x < 1 ∧ 0 < y
Theorem: Disjoint.sdiff_eq_left
File: Mathlib/Order/Heyting/Basic.lean

tactic: conv_rhs => rw [← @sdiff_bot _ _ a]
state_before: ι : Type ?u.139347
α : Type u_1
β : Type ?u.139353
inst✝ : GeneralizedCoheytingAlgebra α
a b c d : α
h : Disjoint a b
⊢ a \ b = a

tactic: rw [← h.eq_bot, sdiff_inf_self_left]
state_before: ι : Type ?u.139347
α : Type u_1
β : Type ?u.139353
inst✝ : GeneralizedCoheytingAlgebra α
a b c d : α
h : Disjoint a b
⊢ a \ b = a \ ⊥
Theorem: add_le_add_add_tsub
File: Mathlib/Algebra/Order/Sub/Defs.lean

tactic: rw [add_assoc]
state_before: α : Type u_1
β : Type ?u.9485
inst✝⁴ : Preorder α
inst✝³ : AddCommSemigroup α
inst✝² : Sub α
inst✝¹ : OrderedSub α
a b c d : α
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
⊢ a + b ≤ a + c + (b - c)

tactic: exact add_le_add_left le_add_tsub a
state_before: α : Type u_1
β : Type ?u.9485
inst✝⁴ : Preorder α
inst✝³ : AddCommSemigroup α
inst✝² : Sub α
inst✝¹ : OrderedSub α
a b c d : α
inst✝ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
⊢ a + b ≤ a + (c + (b - c))
Theorem: CategoryTheory.IsCofiltered.of_left_adjoint
File: Mathlib/CategoryTheory/Filtered.lean

tactic: rw [← h.homEquiv_naturality_right_symm, ← h.homEquiv_naturality_right_symm, eq_condition]
state_before: C : Type u
inst✝⁴ : Category C
inst✝³ : IsCofiltered C
O : Finset C
H : Finset ((X : C) ×' (Y : C) ×' (_ : X ∈ O) ×' (_ : Y ∈ O) ×' (X ⟶ Y))
J : Type w
inst✝² : SmallCategory J
inst✝¹ : FinCategory J
D : Type u₁
inst✝ : Category D
L : C ⥤ D
R : D ⥤ C
h : L ⊣ R
X Y : D
f g : X ⟶ Y
⊢ ↑(Adjunction.homEquiv h (eq (R.map f) (R.map g)) X).symm (eqHom (R.map f) (R.map g)) ≫ f =
    ↑(Adjunction.homEquiv h (eq (R.map f) (R.map g)) X).symm (eqHom (R.map f) (R.map g)) ≫ g
Theorem: Set.inter_indicator_one
File: Mathlib/Algebra/IndicatorFunction.lean

tactic: simp only [← inter_indicator_mul, Pi.mul_apply, Pi.one_apply, one_mul]
state_before: α : Type u_1
β : Type ?u.128368
ι : Type ?u.128371
M : Type u_2
N : Type ?u.128377
inst✝ : MulZeroOneClass M
s t : Set α
x✝ : α
⊢ indicator (s ∩ t) 1 x✝ = (indicator s 1 * indicator t 1) x✝

tactic: congr
state_before: α : Type u_1
β : Type ?u.128368
ι : Type ?u.128371
M : Type u_2
N : Type ?u.128377
inst✝ : MulZeroOneClass M
s t : Set α
x✝ : α
⊢ indicator (s ∩ t) 1 x✝ = indicator (s ∩ t) (fun x => 1) x✝
Theorem: List.mem_iff_get?
File: Std/Data/List/Lemmas.lean

tactic: simp [get?_eq_some, Fin.exists_iff, mem_iff_get]
state_before: α : Type u_1
a : α
l : List α
⊢ a ∈ l ↔ ∃ n, get? l n = some a
Theorem: RatFunc.ofFractionRing_zero
File: Mathlib/FieldTheory/RatFunc.lean

tactic: simp only [Zero.zero, OfNat.ofNat, RatFunc.zero]
state_before: K : Type u
inst✝ : CommRing K
⊢ { toFractionRing := 0 } = 0
Theorem: Submonoid.LocalizationMap.lift_eq
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: rw [lift_spec, ← g.map_mul]
state_before: M : Type u_2
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_3
inst✝¹ : CommMonoid N
P : Type u_1
inst✝ : CommMonoid P
f : LocalizationMap S N
g : M →* P
hg : ∀ (y : { x // x ∈ S }), IsUnit (↑g ↑y)
x : M
⊢ ↑(lift f hg) (↑(toMap f) x) = ↑g x

tactic: exact f.eq_of_eq hg (by rw [sec_spec', f.toMap.map_mul])
state_before: M : Type u_2
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_3
inst✝¹ : CommMonoid N
P : Type u_1
inst✝ : CommMonoid P
f : LocalizationMap S N
g : M →* P
hg : ∀ (y : { x // x ∈ S }), IsUnit (↑g ↑y)
x : M
⊢ ↑g (sec f (↑(toMap f) x)).fst = ↑g (↑(sec f (↑(toMap f) x)).snd * x)

tactic: rw [sec_spec', f.toMap.map_mul]
state_before: M : Type u_2
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_3
inst✝¹ : CommMonoid N
P : Type u_1
inst✝ : CommMonoid P
f : LocalizationMap S N
g : M →* P
hg : ∀ (y : { x // x ∈ S }), IsUnit (↑g ↑y)
x : M
⊢ ↑(toMap f) (sec f (↑(toMap f) x)).fst = ↑(toMap f) (↑(sec f (↑(toMap f) x)).snd * x)
Theorem: AList.extract_eq_lookup_erase
File: Mathlib/Data/List/AList.lean

tactic: simp [extract]
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
a : α
s : AList β
⊢ extract a s = (lookup a s, erase a s)

tactic: constructor <;> rfl
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
a : α
s : AList β
⊢ dlookup a s.entries = lookup a s ∧
    { entries := kerase a s.entries, nodupKeys := (_ : NodupKeys (kerase a s.entries)) } = erase a s
Theorem: compl_le_compl_iff_le
File: Mathlib/Order/BooleanAlgebra.lean

tactic: have h := compl_le_compl h
state_before: α : Type u
β : Type ?u.56262
w x y z : α
inst✝ : BooleanAlgebra α
h : yᶜ ≤ xᶜ
⊢ x ≤ y

tactic: simp at h
state_before: α : Type u
β : Type ?u.56262
w x y z : α
inst✝ : BooleanAlgebra α
h✝ : yᶜ ≤ xᶜ
h : xᶜᶜ ≤ yᶜᶜ
⊢ x ≤ y

tactic: assumption
state_before: α : Type u
β : Type ?u.56262
w x y z : α
inst✝ : BooleanAlgebra α
h✝ : yᶜ ≤ xᶜ
h : x ≤ y
⊢ x ≤ y
Theorem: CategoryTheory.Limits.Bicone.ι_of_isLimit
File: Mathlib/CategoryTheory/Limits/Shapes/Biproducts.lean

tactic: rw [ht.fac]
state_before: J : Type w
C : Type u
inst✝¹ : Category C
inst✝ : HasZeroMorphisms C
F f : J → C
t : Bicone f
ht : IsLimit (toCone t)
j : J
j' : Discrete J
⊢ ι t j ≫ (toCone t).π.app j' =
    IsLimit.lift ht (Fan.mk (f j) fun j' => if h : j = j' then eqToHom (_ : f j = f j') else 0) ≫ (toCone t).π.app j'

tactic: simp [t.ι_π]
state_before: J : Type w
C : Type u
inst✝¹ : Category C
inst✝ : HasZeroMorphisms C
F f : J → C
t : Bicone f
ht : IsLimit (toCone t)
j : J
j' : Discrete J
⊢ ι t j ≫ (toCone t).π.app j' = (Fan.mk (f j) fun j' => if h : j = j' then eqToHom (_ : f j = f j') else 0).π.app j'