tasksource/leandojo huggingface dataset:
Theorem: MeasureTheory.L2.inner_indicatorConstLp_eq_inner_set_integral
File: Mathlib/MeasureTheory/Function/L2Space.lean

tactic: rw [← integral_inner (integrableOn_Lp_of_measure_ne_top f fact_one_le_two_ennreal.elim hμs),
  L2.inner_indicatorConstLp_eq_set_integral_inner]
state_before: α : Type u_2
E : Type u_1
F : Type ?u.159069
𝕜 : Type u_3
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : MeasurableSpace α
μ : Measure α
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : NormedAddCommGroup F
s : Set α
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
hs : MeasurableSet s
hμs : ↑↑μ s ≠ ⊤
c : E
f : { x // x ∈ Lp E 2 }
⊢ inner (indicatorConstLp 2 hs hμs c) f = inner c (∫ (x : α) in s, ↑↑f x ∂μ)
Theorem: Set.preimage_mul_const_Icc
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [← Ici_inter_Iic, h]
state_before: α : Type u_1
inst✝ : LinearOrderedField α
a✝ a b c : α
h : 0 < c
⊢ (fun x => x * c) ⁻¹' Icc a b = Icc (a / c) (b / c)
Theorem: PadicInt.zmod_congr_of_sub_mem_span
File: Mathlib/NumberTheory/Padics/RingHoms.lean

tactic: simpa using zmod_congr_of_sub_mem_span_aux n x a b ha hb
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
n : ℕ
x : ℤ_[p]
a b : ℕ
ha : x - ↑a ∈ Ideal.span {↑p ^ n}
hb : x - ↑b ∈ Ideal.span {↑p ^ n}
⊢ ↑a = ↑b
Theorem: Set.inter_empty_of_inter_sUnion_empty
File: Mathlib/Data/Set/Lattice.lean

tactic: rw [← h]
state_before: α : Type u_1
β : Type ?u.148065
γ : Type ?u.148068
ι : Sort ?u.148071
ι' : Sort ?u.148074
ι₂ : Sort ?u.148077
κ : ι → Sort ?u.148082
κ₁ : ι → Sort ?u.148087
κ₂ : ι → Sort ?u.148092
κ' : ι' → Sort ?u.148097
s t : Set α
S : Set (Set α)
hs : t ∈ S
h : s ∩ ⋃₀ S = ∅
⊢ s ∩ t ⊆ ∅

tactic: exact inter_subset_inter_right _ (subset_sUnion_of_mem hs)
state_before: α : Type u_1
β : Type ?u.148065
γ : Type ?u.148068
ι : Sort ?u.148071
ι' : Sort ?u.148074
ι₂ : Sort ?u.148077
κ : ι → Sort ?u.148082
κ₁ : ι → Sort ?u.148087
κ₂ : ι → Sort ?u.148092
κ' : ι' → Sort ?u.148097
s t : Set α
S : Set (Set α)
hs : t ∈ S
h : s ∩ ⋃₀ S = ∅
⊢ s ∩ t ⊆ s ∩ ⋃₀ S
Theorem: Real.sqrt_eq_zero'
File: Mathlib/Data/Real/Sqrt.lean

tactic: rw [sqrt, NNReal.coe_eq_zero, NNReal.sqrt_eq_zero, Real.toNNReal_eq_zero]
state_before: x y : ℝ
⊢ sqrt x = 0 ↔ x ≤ 0
Theorem: tsub_pos_iff_not_le
File: Mathlib/Algebra/Order/Sub/Canonical.lean

tactic: rw [pos_iff_ne_zero, Ne.def, tsub_eq_zero_iff_le]
state_before: α : Type u_1
inst✝² : CanonicallyOrderedAddMonoid α
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
⊢ 0 < a - b ↔ ¬a ≤ b
Theorem: IsTensorProduct.map_eq
File: Mathlib/RingTheory/IsTensorProduct.lean

tactic: delta IsTensorProduct.map
state_before: R : Type u_1
inst✝¹⁴ : CommRing R
M₁ : Type u_2
M₂ : Type u_3
M : Type u_4
M' : Type ?u.102460
inst✝¹³ : AddCommMonoid M₁
inst✝¹² : AddCommMonoid M₂
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : Module R M₁
inst✝⁸ : Module R M₂
inst✝⁷ : Module R M
inst✝⁶ : Module R M'
f : M₁ →ₗ[R] M₂ →ₗ[R] M
N₁ : Type u_5
N₂ : Type u_6
N : Type u_7
inst✝⁵ : AddCommMonoid N₁
inst✝⁴ : AddCommMonoid N₂
inst✝³ : AddCommMonoid N
inst✝² : Module R N₁
inst✝¹ : Module R N₂
inst✝ : Module R N
g : N₁ →ₗ[R] N₂ →ₗ[R] N
hf : IsTensorProduct f
hg : IsTensorProduct g
i₁ : M₁ →ₗ[R] N₁
i₂ : M₂ →ₗ[R] N₂
x₁ : M₁
x₂ : M₂
⊢ ↑(map hf hg i₁ i₂) (↑(↑f x₁) x₂) = ↑(↑g (↑i₁ x₁)) (↑i₂ x₂)

tactic: simp
state_before: R : Type u_1
inst✝¹⁴ : CommRing R
M₁ : Type u_2
M₂ : Type u_3
M : Type u_4
M' : Type ?u.102460
inst✝¹³ : AddCommMonoid M₁
inst✝¹² : AddCommMonoid M₂
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : Module R M₁
inst✝⁸ : Module R M₂
inst✝⁷ : Module R M
inst✝⁶ : Module R M'
f : M₁ →ₗ[R] M₂ →ₗ[R] M
N₁ : Type u_5
N₂ : Type u_6
N : Type u_7
inst✝⁵ : AddCommMonoid N₁
inst✝⁴ : AddCommMonoid N₂
inst✝³ : AddCommMonoid N
inst✝² : Module R N₁
inst✝¹ : Module R N₂
inst✝ : Module R N
g : N₁ →ₗ[R] N₂ →ₗ[R] N
hf : IsTensorProduct f
hg : IsTensorProduct g
i₁ : M₁ →ₗ[R] N₁
i₂ : M₂ →ₗ[R] N₂
x₁ : M₁
x₂ : M₂
⊢ ↑(LinearMap.comp (↑(equiv hg)) (LinearMap.comp (TensorProduct.map i₁ i₂) ↑(LinearEquiv.symm (equiv hf))))
      (↑(↑f x₁) x₂) =
    ↑(↑g (↑i₁ x₁)) (↑i₂ x₂)
Theorem: Set.piecewise_compl
File: Mathlib/Data/Set/Function.lean

tactic: simp [hx]
state_before: α : Type u_1
β : Type ?u.83376
γ : Type ?u.83379
ι : Sort ?u.83382
π : α → Type ?u.83387
δ : α → Sort u_2
s : Set α
f g : (i : α) → δ i
inst✝¹ : (j : α) → Decidable (j ∈ s)
inst✝ : (i : α) → Decidable (i ∈ sᶜ)
x : α
hx : x ∈ s
⊢ piecewise (sᶜ) f g x = piecewise s g f x

tactic: simp [hx]
state_before: α : Type u_1
β : Type ?u.83376
γ : Type ?u.83379
ι : Sort ?u.83382
π : α → Type ?u.83387
δ : α → Sort u_2
s : Set α
f g : (i : α) → δ i
inst✝¹ : (j : α) → Decidable (j ∈ s)
inst✝ : (i : α) → Decidable (i ∈ sᶜ)
x : α
hx : ¬x ∈ s
⊢ piecewise (sᶜ) f g x = piecewise s g f x
Theorem: InnerProductGeometry.angle_neg_right
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Basic.lean

tactic: unfold angle
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
⊢ angle x (-y) = π - angle x y

tactic: rw [← Real.arccos_neg, norm_neg, inner_neg_right, neg_div]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
⊢ arccos (inner x (-y) / (‖x‖ * ‖-y‖)) = π - arccos (inner x y / (‖x‖ * ‖y‖))
Theorem: Matrix.isUnit_diagonal
File: Mathlib/LinearAlgebra/Matrix/NonsingularInverse.lean

tactic: simp only [← nonempty_invertible_iff_isUnit,
  (diagonalInvertibleEquivInvertible v).nonempty_congr]
state_before: l : Type ?u.338640
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B : Matrix n n α
v : n → α
⊢ IsUnit (diagonal v) ↔ IsUnit v
Theorem: Commute.mul_self_sub_mul_self_eq'
File: Mathlib/Algebra/Ring/Commute.lean

tactic: rw [mul_add, sub_mul, sub_mul, h.eq, sub_add_sub_cancel]
state_before: α : Type u
β : Type v
γ : Type w
R : Type x
inst✝ : NonUnitalNonAssocRing R
a b : R
h : Commute a b
⊢ a * a - b * b = (a - b) * (a + b)
Theorem: ENNReal.eq_inv_of_mul_eq_one_left
File: Mathlib/Data/Real/ENNReal.lean

tactic: rw [← mul_one a, ← ENNReal.mul_inv_cancel (right_ne_zero_of_mul_eq_one h), ← mul_assoc, h,
  one_mul]
state_before: α : Type ?u.297877
β : Type ?u.297880
a b c d : ℝ≥0∞
r p q : ℝ≥0
h : a * b = 1
⊢ a = b⁻¹

tactic: rintro rfl
state_before: α : Type ?u.297877
β : Type ?u.297880
a b c d : ℝ≥0∞
r p q : ℝ≥0
h : a * b = 1
⊢ b ≠ ⊤

tactic: simp [left_ne_zero_of_mul_eq_one h] at h
state_before: α : Type ?u.297877
β : Type ?u.297880
a c d : ℝ≥0∞
r p q : ℝ≥0
h : a * ⊤ = 1
⊢ False
Theorem: Matrix.TransvectionStruct.det_toMatrix_prod
File: Mathlib/LinearAlgebra/Matrix/Transvection.lean

tactic: induction' L with t L IH
state_before: n : Type u_1
p : Type ?u.23948
R : Type u₂
𝕜 : Type u_2
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Fintype n
L : List (TransvectionStruct n 𝕜)
⊢ det (List.prod (List.map toMatrix L)) = 1

tactic: simp
state_before: case nil
n : Type u_1
p : Type ?u.23948
R : Type u₂
𝕜 : Type u_2
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Fintype n
⊢ det (List.prod (List.map toMatrix [])) = 1

tactic: simp [IH]
state_before: case cons
n : Type u_1
p : Type ?u.23948
R : Type u₂
𝕜 : Type u_2
inst✝⁴ : Field 𝕜
inst✝³ : DecidableEq n
inst✝² : DecidableEq p
inst✝¹ : CommRing R
i j : n
inst✝ : Fintype n
t : TransvectionStruct n 𝕜
L : List (TransvectionStruct n 𝕜)
IH : det (List.prod (List.map toMatrix L)) = 1
⊢ det (List.prod (List.map toMatrix (t :: L))) = 1
Theorem: Linarith.lt_of_eq_of_lt
File: Mathlib/Tactic/Linarith/Lemmas.lean

tactic: simp [*]
state_before: α : Type u_1
inst✝ : OrderedSemiring α
a b : α
ha : a = 0
hb : b < 0
⊢ a + b < 0
Theorem: Matrix.det_smul_inv_mulVec_eq_cramer
File: Mathlib/LinearAlgebra/Matrix/NonsingularInverse.lean

tactic: rw [cramer_eq_adjugate_mulVec, A.nonsing_inv_apply h, ← smul_mulVec_assoc, smul_smul,
  h.mul_val_inv, one_smul]
state_before: l : Type ?u.360583
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A✝ B A : Matrix n n α
b : n → α
h : IsUnit (det A)
⊢ det A • mulVec A⁻¹ b = ↑(cramer A) b
Theorem: Set.toFinset_eq_univ
File: Mathlib/Data/Fintype/Basic.lean

tactic: rw [← coe_inj, coe_toFinset, coe_univ]
state_before: α : Type u_1
β : Type ?u.92677
γ : Type ?u.92680
s t : Set α
inst✝¹ : Fintype α
inst✝ : Fintype ↑s
⊢ toFinset s = Finset.univ ↔ s = univ
Theorem: le_max_of_sq_le_mul
File: Mathlib/Algebra/GroupPower/Order.lean

tactic: simpa using min_le_max_of_mul_le_mul ((pow_two _).symm.trans_le h)
state_before: β : Type ?u.175159
A : Type ?u.175162
G : Type ?u.175165
M : Type u_1
R : Type ?u.175171
inst✝³ : Monoid M
inst✝² : LinearOrder M
inst✝¹ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass M M (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c : M
h : a ^ 2 ≤ b * c
⊢ a ≤ max b c
Theorem: Ordinal.apply_lt_nfpBFamily
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

tactic: rw [←familyOfBFamily_enum o f]
state_before: o : Ordinal
f : (b : Ordinal) → b < o → Ordinal → Ordinal
H : ∀ (i : Ordinal) (hi : i < o), IsNormal (f i hi)
a b : Ordinal
hb : b < nfpBFamily o f a
i : Ordinal
hi : i < o
⊢ f i hi b < nfpBFamily o f a

tactic: apply apply_lt_nfpFamily (fun _ => H _ _) hb
state_before: o : Ordinal
f : (b : Ordinal) → b < o → Ordinal → Ordinal
H : ∀ (i : Ordinal) (hi : i < o), IsNormal (f i hi)
a b : Ordinal
hb : b < nfpBFamily o f a
i : Ordinal
hi : i < o
⊢ familyOfBFamily o f (enum (fun x x_1 => x < x_1) i (_ : i < type fun x x_1 => x < x_1)) b < nfpBFamily o f a
Theorem: LinearIsometry.norm_compContinuousMultilinearMap
File: Mathlib/Analysis/NormedSpace/Multilinear.lean

tactic: simp only [ContinuousLinearMap.compContinuousMultilinearMap_coe,
  LinearIsometry.coe_toContinuousLinearMap, LinearIsometry.norm_map,
  ContinuousMultilinearMap.norm_def, Function.comp_apply]
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
g : G →ₗᵢ[𝕜] G'
f : ContinuousMultilinearMap 𝕜 E G
⊢ ‖ContinuousLinearMap.compContinuousMultilinearMap (toContinuousLinearMap g) f‖ = ‖f‖
Theorem: Polynomial.nextCoeffUp_of_pos_natTrailingDegree
File: Mathlib/Data/Polynomial/Degree/TrailingDegree.lean

tactic: rw [nextCoeffUp, if_neg]
state_before: R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
p : R[X]
hp : 0 < natTrailingDegree p
⊢ nextCoeffUp p = coeff p (natTrailingDegree p + 1)

tactic: contrapose! hp
state_before: case hnc
R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
p : R[X]
hp : 0 < natTrailingDegree p
⊢ ¬natTrailingDegree p = 0

tactic: simpa
state_before: case hnc
R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
p : R[X]
hp : natTrailingDegree p = 0
⊢ natTrailingDegree p ≤ 0
Theorem: Finset.closure_biUnion
File: Mathlib/Topology/Basic.lean

tactic: classical
  refine' s.induction_on (by simp) _
  intro i s _ h₂
  simp [h₂]
state_before: α : Type u
β : Type v
ι✝ : Sort w
a : α
s✝ s₁ s₂ t : Set α
p p₁ p₂ : α → Prop
inst✝ : TopologicalSpace α
ι : Type u_1
s : Finset ι
f : ι → Set α
⊢ closure (⋃ (i : ι) (_ : i ∈ s), f i) = ⋃ (i : ι) (_ : i ∈ s), closure (f i)

tactic: refine' s.induction_on (by simp) _
state_before: α : Type u
β : Type v
ι✝ : Sort w
a : α
s✝ s₁ s₂ t : Set α
p p₁ p₂ : α → Prop
inst✝ : TopologicalSpace α
ι : Type u_1
s : Finset ι
f : ι → Set α
⊢ closure (⋃ (i : ι) (_ : i ∈ s), f i) = ⋃ (i : ι) (_ : i ∈ s), closure (f i)

tactic: intro i s _ h₂
state_before: α : Type u
β : Type v
ι✝ : Sort w
a : α
s✝ s₁ s₂ t : Set α
p p₁ p₂ : α → Prop
inst✝ : TopologicalSpace α
ι : Type u_1
s : Finset ι
f : ι → Set α
⊢ ∀ ⦃a : ι⦄ {s : Finset ι},
    ¬a ∈ s →
      (closure (⋃ (i : ι) (_ : i ∈ s), f i) = ⋃ (i : ι) (_ : i ∈ s), closure (f i)) →
        closure (⋃ (i : ι) (_ : i ∈ insert a s), f i) = ⋃ (i : ι) (_ : i ∈ insert a s), closure (f i)

tactic: simp [h₂]
state_before: α : Type u
β : Type v
ι✝ : Sort w
a : α
s✝¹ s₁ s₂ t : Set α
p p₁ p₂ : α → Prop
inst✝ : TopologicalSpace α
ι : Type u_1
s✝ : Finset ι
f : ι → Set α
i : ι
s : Finset ι
a✝ : ¬i ∈ s
h₂ : closure (⋃ (i : ι) (_ : i ∈ s), f i) = ⋃ (i : ι) (_ : i ∈ s), closure (f i)
⊢ closure (⋃ (i_1 : ι) (_ : i_1 ∈ insert i s), f i_1) = ⋃ (i_1 : ι) (_ : i_1 ∈ insert i s), closure (f i_1)

tactic: simp
state_before: α : Type u
β : Type v
ι✝ : Sort w
a : α
s✝ s₁ s₂ t : Set α
p p₁ p₂ : α → Prop
inst✝ : TopologicalSpace α
ι : Type u_1
s : Finset ι
f : ι → Set α
⊢ closure (⋃ (i : ι) (_ : i ∈ ∅), f i) = ⋃ (i : ι) (_ : i ∈ ∅), closure (f i)
Theorem: isCoprime_of_dvd
File: Mathlib/RingTheory/PrincipalIdealDomain.lean

tactic: rw [← gcd_isUnit_iff]
state_before: R : Type u
M : Type v
inst✝³ : CommRing R
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : GCDMonoid R
x y : R
nonzero : ¬(x = 0 ∧ y = 0)
H : ∀ (z : R), z ∈ nonunits R → z ≠ 0 → z ∣ x → ¬z ∣ y
⊢ IsCoprime x y

tactic: by_contra h
state_before: R : Type u
M : Type v
inst✝³ : CommRing R
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : GCDMonoid R
x y : R
nonzero : ¬(x = 0 ∧ y = 0)
H : ∀ (z : R), z ∈ nonunits R → z ≠ 0 → z ∣ x → ¬z ∣ y
⊢ IsUnit (gcd x y)

tactic: refine' H _ h _ (gcd_dvd_left _ _) (gcd_dvd_right _ _)
state_before: R : Type u
M : Type v
inst✝³ : CommRing R
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : GCDMonoid R
x y : R
nonzero : ¬(x = 0 ∧ y = 0)
H : ∀ (z : R), z ∈ nonunits R → z ≠ 0 → z ∣ x → ¬z ∣ y
h : ¬IsUnit (gcd x y)
⊢ False

tactic: rwa [Ne, gcd_eq_zero_iff]
state_before: R : Type u
M : Type v
inst✝³ : CommRing R
inst✝² : IsDomain R
inst✝¹ : IsPrincipalIdealRing R
inst✝ : GCDMonoid R
x y : R
nonzero : ¬(x = 0 ∧ y = 0)
H : ∀ (z : R), z ∈ nonunits R → z ≠ 0 → z ∣ x → ¬z ∣ y
h : ¬IsUnit (gcd x y)
⊢ gcd x y ≠ 0
Theorem: MeasureTheory.integrable_zero
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: simp [Integrable, aestronglyMeasurable_const]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.938698
δ : Type ?u.938701
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
⊢ Integrable fun x => 0
Theorem: Vector.head_ofFn
File: Mathlib/Data/Vector/Basic.lean

tactic: rw [← get_zero, get_ofFn]
state_before: n✝ : ℕ
α : Type u_1
n : ℕ
f : Fin (Nat.succ n) → α
⊢ head (ofFn f) = f 0
Theorem: cmpUsing_eq_eq
File: Mathlib/Init/Data/Ordering/Lemmas.lean

tactic: simp
state_before: α : Type u
lt : α → α → Prop
inst✝ : DecidableRel lt
a b : α
⊢ (cmpUsing lt a b = Ordering.eq) = (¬lt a b ∧ ¬lt b a)
Theorem: Cardinal.add_eq_self
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: convert mul_le_mul_right' ((nat_lt_aleph0 2).le.trans h) c using 1
<;> simp [two_mul, mul_eq_self h]
state_before: c : Cardinal
h : ℵ₀ ≤ c
⊢ c + c ≤ c
Theorem: Rel.image_comp
File: Mathlib/Data/Rel.lean

tactic: ext z
state_before: α : Type u_3
β : Type u_1
γ : Type u_2
r : Rel α β
s : Rel β γ
t : Set α
⊢ image (r • s) t = image s (image r t)

tactic: simp only [mem_image]
state_before: case h
α : Type u_3
β : Type u_1
γ : Type u_2
r : Rel α β
s : Rel β γ
t : Set α
z : γ
⊢ z ∈ image (r • s) t ↔ z ∈ image s (image r t)

tactic: constructor
state_before: case h
α : Type u_3
β : Type u_1
γ : Type u_2
r : Rel α β
s : Rel β γ
t : Set α
z : γ
⊢ (∃ x, x ∈ t ∧ (r • s) x z) ↔ ∃ x, (∃ x_1, x_1 ∈ t ∧ r x_1 x) ∧ s x z

tactic: rintro ⟨x, xt, y, rxy, syz⟩
state_before: case h.mp
α : Type u_3
β : Type u_1
γ : Type u_2
r : Rel α β
s : Rel β γ
t : Set α
z : γ
⊢ (∃ x, x ∈ t ∧ (r • s) x z) → ∃ x, (∃ x_1, x_1 ∈ t ∧ r x_1 x) ∧ s x z

tactic: exact ⟨y, ⟨x, xt, rxy⟩, syz⟩
state_before: case h.mp.intro.intro.intro.intro
α : Type u_3
β : Type u_1
γ : Type u_2
r : Rel α β
s : Rel β γ
t : Set α
z : γ
x : α
xt : x ∈ t
y : β
rxy : r x y
syz : s y z
⊢ ∃ x, (∃ x_1, x_1 ∈ t ∧ r x_1 x) ∧ s x z

tactic: rintro ⟨y, ⟨x, xt, rxy⟩, syz⟩
state_before: case h.mpr
α : Type u_3
β : Type u_1
γ : Type u_2
r : Rel α β
s : Rel β γ
t : Set α
z : γ
⊢ (∃ x, (∃ x_1, x_1 ∈ t ∧ r x_1 x) ∧ s x z) → ∃ x, x ∈ t ∧ (r • s) x z

tactic: exact ⟨x, xt, y, rxy, syz⟩
state_before: case h.mpr.intro.intro.intro.intro
α : Type u_3
β : Type u_1
γ : Type u_2
r : Rel α β
s : Rel β γ
t : Set α
z : γ
y : β
syz : s y z
x : α
xt : x ∈ t
rxy : r x y
⊢ ∃ x, x ∈ t ∧ (r • s) x z
Theorem: SimpleGraph.Walk.exists_length_eq_zero_iff
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: constructor
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
⊢ (∃ p, length p = 0) ↔ u = v

tactic: rintro ⟨p, hp⟩
state_before: case mp
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
⊢ (∃ p, length p = 0) → u = v

tactic: exact eq_of_length_eq_zero hp
state_before: case mp.intro
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
p : Walk G u v
hp : length p = 0
⊢ u = v

tactic: rintro rfl
state_before: case mpr
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
⊢ u = v → ∃ p, length p = 0

tactic: exact ⟨nil, rfl⟩
state_before: case mpr
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u : V
⊢ ∃ p, length p = 0
Theorem: PartENat.natCast_get
File: Mathlib/Data/Nat/PartENat.lean

tactic: exact Part.ext' (iff_of_true trivial h) fun _ _ => rfl
state_before: x : PartENat
h : x.Dom
⊢ ↑(Part.get x h) = x
Theorem: Wcovby.Icc_eq
File: Mathlib/Order/Cover.lean

tactic: ext c
state_before: α : Type u_1
β : Type ?u.17119
inst✝ : PartialOrder α
a b c : α
h : a ⩿ b
⊢ Icc a b = {a, b}

tactic: exact h.le_and_le_iff
state_before: case h
α : Type u_1
β : Type ?u.17119
inst✝ : PartialOrder α
a b c✝ : α
h : a ⩿ b
c : α
⊢ c ∈ Icc a b ↔ c ∈ {a, b}
Theorem: idRel_sub_separationRel
File: Mathlib/Topology/UniformSpace/Separation.lean

tactic: unfold separationRel
state_before: α✝ : Type u
β : Type v
γ : Type w
inst✝³ : UniformSpace α✝
inst✝² : UniformSpace β
inst✝¹ : UniformSpace γ
α : Type u_1
inst✝ : UniformSpace α
⊢ idRel ⊆ 𝓢 α

tactic: rw [idRel_subset]
state_before: α✝ : Type u
β : Type v
γ : Type w
inst✝³ : UniformSpace α✝
inst✝² : UniformSpace β
inst✝¹ : UniformSpace γ
α : Type u_1
inst✝ : UniformSpace α
⊢ idRel ⊆ ⋂₀ (𝓤 α).sets

tactic: intro x
state_before: α✝ : Type u
β : Type v
γ : Type w
inst✝³ : UniformSpace α✝
inst✝² : UniformSpace β
inst✝¹ : UniformSpace γ
α : Type u_1
inst✝ : UniformSpace α
⊢ ∀ (a : α), (a, a) ∈ ⋂₀ (𝓤 α).sets

tactic: suffices ∀ t ∈ 𝓤 α, (x, x) ∈ t by simpa only [refl_mem_uniformity]
state_before: α✝ : Type u
β : Type v
γ : Type w
inst✝³ : UniformSpace α✝
inst✝² : UniformSpace β
inst✝¹ : UniformSpace γ
α : Type u_1
inst✝ : UniformSpace α
x : α
⊢ (x, x) ∈ ⋂₀ (𝓤 α).sets

tactic: exact fun t => refl_mem_uniformity
state_before: α✝ : Type u
β : Type v
γ : Type w
inst✝³ : UniformSpace α✝
inst✝² : UniformSpace β
inst✝¹ : UniformSpace γ
α : Type u_1
inst✝ : UniformSpace α
x : α
⊢ ∀ (t : Set (α × α)), t ∈ 𝓤 α → (x, x) ∈ t

tactic: simpa only [refl_mem_uniformity]
state_before: α✝ : Type u
β : Type v
γ : Type w
inst✝³ : UniformSpace α✝
inst✝² : UniformSpace β
inst✝¹ : UniformSpace γ
α : Type u_1
inst✝ : UniformSpace α
x : α
this : ∀ (t : Set (α × α)), t ∈ 𝓤 α → (x, x) ∈ t
⊢ (x, x) ∈ ⋂₀ (𝓤 α).sets
Theorem: Ideal.prod_mem_prod
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: refine Finset.induction_on s ?_ ?_
state_before: R : Type u
ι✝ : Type ?u.211911
inst✝ : CommSemiring R
I✝ J K L : Ideal R
ι : Type u_1
s : Finset ι
I : ι → Ideal R
x : ι → R
⊢ (∀ (i : ι), i ∈ s → x i ∈ I i) → ∏ i in s, x i ∈ ∏ i in s, I i

tactic: intro
state_before: case refine_1
R : Type u
ι✝ : Type ?u.211911
inst✝ : CommSemiring R
I✝ J K L : Ideal R
ι : Type u_1
s : Finset ι
I : ι → Ideal R
x : ι → R
⊢ (∀ (i : ι), i ∈ ∅ → x i ∈ I i) → ∏ i in ∅, x i ∈ ∏ i in ∅, I i

tactic: rw [Finset.prod_empty, Finset.prod_empty, one_eq_top]
state_before: case refine_1
R : Type u
ι✝ : Type ?u.211911
inst✝ : CommSemiring R
I✝ J K L : Ideal R
ι : Type u_1
s : Finset ι
I : ι → Ideal R
x : ι → R
a✝ : ∀ (i : ι), i ∈ ∅ → x i ∈ I i
⊢ ∏ i in ∅, x i ∈ ∏ i in ∅, I i

tactic: exact Submodule.mem_top
state_before: case refine_1
R : Type u
ι✝ : Type ?u.211911
inst✝ : CommSemiring R
I✝ J K L : Ideal R
ι : Type u_1
s : Finset ι
I : ι → Ideal R
x : ι → R
a✝ : ∀ (i : ι), i ∈ ∅ → x i ∈ I i
⊢ 1 ∈ ⊤

tactic: intro a s ha IH h
state_before: case refine_2
R : Type u
ι✝ : Type ?u.211911
inst✝ : CommSemiring R
I✝ J K L : Ideal R
ι : Type u_1
s : Finset ι
I : ι → Ideal R
x : ι → R
⊢ ∀ ⦃a : ι⦄ {s : Finset ι},
    ¬a ∈ s →
      ((∀ (i : ι), i ∈ s → x i ∈ I i) → ∏ i in s, x i ∈ ∏ i in s, I i) →
        (∀ (i : ι), i ∈ insert a s → x i ∈ I i) → ∏ i in insert a s, x i ∈ ∏ i in insert a s, I i

tactic: rw [Finset.prod_insert ha, Finset.prod_insert ha]
state_before: case refine_2
R : Type u
ι✝ : Type ?u.211911
inst✝ : CommSemiring R
I✝ J K L : Ideal R
ι : Type u_1
s✝ : Finset ι
I : ι → Ideal R
x : ι → R
a : ι
s : Finset ι
ha : ¬a ∈ s
IH : (∀ (i : ι), i ∈ s → x i ∈ I i) → ∏ i in s, x i ∈ ∏ i in s, I i
h : ∀ (i : ι), i ∈ insert a s → x i ∈ I i
⊢ ∏ i in insert a s, x i ∈ ∏ i in insert a s, I i

tactic: exact
  mul_mem_mul (h a <| Finset.mem_insert_self a s)
    (IH fun i hi => h i <| Finset.mem_insert_of_mem hi)
state_before: case refine_2
R : Type u
ι✝ : Type ?u.211911
inst✝ : CommSemiring R
I✝ J K L : Ideal R
ι : Type u_1
s✝ : Finset ι
I : ι → Ideal R
x : ι → R
a : ι
s : Finset ι
ha : ¬a ∈ s
IH : (∀ (i : ι), i ∈ s → x i ∈ I i) → ∏ i in s, x i ∈ ∏ i in s, I i
h : ∀ (i : ι), i ∈ insert a s → x i ∈ I i
⊢ x a * ∏ x_1 in s, x x_1 ∈ I a * ∏ x in s, I x
Theorem: LieSubalgebra.subset_lieSpan
File: Mathlib/Algebra/Lie/Subalgebra.lean

tactic: intro m hm
state_before: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
s : Set L
⊢ s ⊆ ↑(lieSpan R L s)

tactic: erw [mem_lieSpan]
state_before: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
s : Set L
m : L
hm : m ∈ s
⊢ m ∈ ↑(lieSpan R L s)

tactic: intro K hK
state_before: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
s : Set L
m : L
hm : m ∈ s
⊢ ∀ (K : LieSubalgebra R L), s ⊆ ↑K → m ∈ K

tactic: exact hK hm
state_before: R : Type u
L : Type v
inst✝⁴ : CommRing R
inst✝³ : LieRing L
inst✝² : LieAlgebra R L
L₂ : Type w
inst✝¹ : LieRing L₂
inst✝ : LieAlgebra R L₂
f : L →ₗ⁅R⁆ L₂
K✝ K' : LieSubalgebra R L
K₂ : LieSubalgebra R L₂
s : Set L
m : L
hm : m ∈ s
K : LieSubalgebra R L
hK : s ⊆ ↑K
⊢ m ∈ K
Theorem: List.toFinset_replicate_of_ne_zero
File: Mathlib/Data/Finset/Basic.lean

tactic: ext x
state_before: α : Type u_1
β : Type ?u.473165
γ : Type ?u.473168
inst✝ : DecidableEq α
l l' : List α
a : α
n : ℕ
hn : n ≠ 0
⊢ toFinset (replicate n a) = {a}

tactic: simp [hn, List.mem_replicate]
state_before: case a
α : Type u_1
β : Type ?u.473165
γ : Type ?u.473168
inst✝ : DecidableEq α
l l' : List α
a : α
n : ℕ
hn : n ≠ 0
x : α
⊢ x ∈ toFinset (replicate n a) ↔ x ∈ {a}