tasksource/leandojo huggingface dataset:
Theorem: MeasureTheory.SimpleFunc.measurableSet_cut
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

tactic: have : { a | r a (f a) } = ⋃ b ∈ range f, { a | r a b } ∩ f ⁻¹' {b} := by
  ext a
  suffices r a (f a) ↔ ∃ i, r a (f i) ∧ f a = f i by simpa
  exact ⟨fun h => ⟨a, ⟨h, rfl⟩⟩, fun ⟨a', ⟨h', e⟩⟩ => e.symm ▸ h'⟩
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.22535
δ : Type ?u.22538
inst✝ : MeasurableSpace α
r : α → β → Prop
f : α →ₛ β
h : ∀ (b : β), MeasurableSet {a | r a b}
⊢ MeasurableSet {a | r a (↑f a)}

tactic: rw [this]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.22535
δ : Type ?u.22538
inst✝ : MeasurableSpace α
r : α → β → Prop
f : α →ₛ β
h : ∀ (b : β), MeasurableSet {a | r a b}
this : {a | r a (↑f a)} = ⋃ (b : β) (_ : b ∈ range ↑f), {a | r a b} ∩ ↑f ⁻¹' {b}
⊢ MeasurableSet {a | r a (↑f a)}

tactic: exact
  MeasurableSet.biUnion f.finite_range.countable fun b _ =>
    MeasurableSet.inter (h b) (f.measurableSet_fiber _)
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.22535
δ : Type ?u.22538
inst✝ : MeasurableSpace α
r : α → β → Prop
f : α →ₛ β
h : ∀ (b : β), MeasurableSet {a | r a b}
this : {a | r a (↑f a)} = ⋃ (b : β) (_ : b ∈ range ↑f), {a | r a b} ∩ ↑f ⁻¹' {b}
⊢ MeasurableSet (⋃ (b : β) (_ : b ∈ range ↑f), {a | r a b} ∩ ↑f ⁻¹' {b})

tactic: ext a
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.22535
δ : Type ?u.22538
inst✝ : MeasurableSpace α
r : α → β → Prop
f : α →ₛ β
h : ∀ (b : β), MeasurableSet {a | r a b}
⊢ {a | r a (↑f a)} = ⋃ (b : β) (_ : b ∈ range ↑f), {a | r a b} ∩ ↑f ⁻¹' {b}

tactic: suffices r a (f a) ↔ ∃ i, r a (f i) ∧ f a = f i by simpa
state_before: case h
α : Type u_1
β : Type u_2
γ : Type ?u.22535
δ : Type ?u.22538
inst✝ : MeasurableSpace α
r : α → β → Prop
f : α →ₛ β
h : ∀ (b : β), MeasurableSet {a | r a b}
a : α
⊢ a ∈ {a | r a (↑f a)} ↔ a ∈ ⋃ (b : β) (_ : b ∈ range ↑f), {a | r a b} ∩ ↑f ⁻¹' {b}

tactic: exact ⟨fun h => ⟨a, ⟨h, rfl⟩⟩, fun ⟨a', ⟨h', e⟩⟩ => e.symm ▸ h'⟩
state_before: case h
α : Type u_1
β : Type u_2
γ : Type ?u.22535
δ : Type ?u.22538
inst✝ : MeasurableSpace α
r : α → β → Prop
f : α →ₛ β
h : ∀ (b : β), MeasurableSet {a | r a b}
a : α
⊢ r a (↑f a) ↔ ∃ i, r a (↑f i) ∧ ↑f a = ↑f i

tactic: simpa
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.22535
δ : Type ?u.22538
inst✝ : MeasurableSpace α
r : α → β → Prop
f : α →ₛ β
h : ∀ (b : β), MeasurableSet {a | r a b}
a : α
this : r a (↑f a) ↔ ∃ i, r a (↑f i) ∧ ↑f a = ↑f i
⊢ a ∈ {a | r a (↑f a)} ↔ a ∈ ⋃ (b : β) (_ : b ∈ range ↑f), {a | r a b} ∩ ↑f ⁻¹' {b}
Theorem: hyperoperation_recursion
File: Mathlib/Data/Nat/Hyperoperation.lean

tactic: rw [hyperoperation]
state_before: n m k : ℕ
⊢ hyperoperation (n + 1) m (k + 1) = hyperoperation n m (hyperoperation (n + 1) m k)
Theorem: Nat.ceil_intCast
File: Mathlib/Algebra/Order/Floor.lean

tactic: simp
state_before: F : Type ?u.47671
α✝ : Type ?u.47674
β : Type ?u.47677
inst✝³ : LinearOrderedSemiring α✝
inst✝² : FloorSemiring α✝
a✝ : α✝
n : ℕ
α : Type u_1
inst✝¹ : LinearOrderedRing α
inst✝ : FloorSemiring α
z : ℤ
a : ℕ
⊢ ⌈↑z⌉₊ ≤ a ↔ Int.toNat z ≤ a

tactic: norm_cast
state_before: F : Type ?u.47671
α✝ : Type ?u.47674
β : Type ?u.47677
inst✝³ : LinearOrderedSemiring α✝
inst✝² : FloorSemiring α✝
a✝ : α✝
n : ℕ
α : Type u_1
inst✝¹ : LinearOrderedRing α
inst✝ : FloorSemiring α
z : ℤ
a : ℕ
⊢ ↑z ≤ ↑a ↔ z ≤ ↑a
Theorem: ProbabilityTheory.condCount_empty_meas
File: Mathlib/Probability/CondCount.lean

tactic: simp [condCount]
state_before: Ω : Type u_1
inst✝ : MeasurableSpace Ω
⊢ condCount ∅ = 0
Theorem: SimpleGraph.IsSRGWith.card_commonNeighbors_eq_of_not_adj_compl
File: Mathlib/Combinatorics/SimpleGraph/StronglyRegular.lean

tactic: simp only [← Set.toFinset_card, commonNeighbors, Set.toFinset_inter, neighborSet_compl,
  Set.toFinset_diff, Set.toFinset_singleton, Set.toFinset_compl, ← neighborFinset_def]
state_before: V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
h : IsSRGWith G n k ℓ μ
v w : V
hn : v ≠ w
hna : ¬Adj (Gᶜ) v w
⊢ Fintype.card ↑(commonNeighbors (Gᶜ) v w) = n - (2 * k - ℓ)

tactic: simp only [not_and, Classical.not_not, compl_adj] at hna
state_before: V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
h : IsSRGWith G n k ℓ μ
v w : V
hn : v ≠ w
hna : ¬Adj (Gᶜ) v w
⊢ Finset.card (neighborFinset G vᶜ \ {v} ∩ (neighborFinset G wᶜ \ {w})) = n - (2 * k - ℓ)

tactic: have h2' := hna hn
state_before: V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
h : IsSRGWith G n k ℓ μ
v w : V
hn : v ≠ w
hna : v ≠ w → Adj G v w
⊢ Finset.card (neighborFinset G vᶜ \ {v} ∩ (neighborFinset G wᶜ \ {w})) = n - (2 * k - ℓ)

tactic: simp_rw [compl_neighborFinset_sdiff_inter_eq, sdiff_compl_neighborFinset_inter_eq h2']
state_before: V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
h : IsSRGWith G n k ℓ μ
v w : V
hn : v ≠ w
hna : v ≠ w → Adj G v w
h2' : Adj G v w
⊢ Finset.card (neighborFinset G vᶜ \ {v} ∩ (neighborFinset G wᶜ \ {w})) = n - (2 * k - ℓ)

tactic: rwa [← Finset.compl_union, card_compl, h.card_neighborFinset_union_of_adj, ← h.card]
state_before: V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
h : IsSRGWith G n k ℓ μ
v w : V
hn : v ≠ w
hna : v ≠ w → Adj G v w
h2' : Adj G v w
⊢ Finset.card (neighborFinset G vᶜ ∩ neighborFinset G wᶜ) = n - (2 * k - ℓ)
Theorem: MvPolynomial.coeff_modMonomial_of_not_le
File: Mathlib/Data/MvPolynomial/Division.lean

tactic: rintro ⟨d, rfl⟩
state_before: σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
s' s : σ →₀ ℕ
x : MvPolynomial σ R
h : ¬s ≤ s'
⊢ ¬∃ d, s' = s + d

tactic: exact h le_self_add
state_before: case intro
σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
s : σ →₀ ℕ
x : MvPolynomial σ R
d : σ →₀ ℕ
h : ¬s ≤ s + d
⊢ False
Theorem: Irrational.mul_cases
File: Mathlib/Data/Real/Irrational.lean

tactic: delta Irrational
state_before: q : ℚ
x y : ℝ
⊢ Irrational (x * y) → Irrational x ∨ Irrational y

tactic: contrapose!
state_before: q : ℚ
x y : ℝ
⊢ ¬x * y ∈ Set.range Rat.cast → ¬x ∈ Set.range Rat.cast ∨ ¬y ∈ Set.range Rat.cast

tactic: rintro ⟨⟨rx, rfl⟩, ⟨ry, rfl⟩⟩
state_before: q : ℚ
x y : ℝ
⊢ x ∈ Set.range Rat.cast ∧ y ∈ Set.range Rat.cast → x * y ∈ Set.range Rat.cast

tactic: exact ⟨rx * ry, cast_mul rx ry⟩
state_before: case intro.intro.intro
q rx ry : ℚ
⊢ ↑rx * ↑ry ∈ Set.range Rat.cast
Theorem: Fin.comp_cons
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: ext j
state_before: m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ 0
q✝ : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ (succ i)
i : Fin n
y✝ : α✝ (succ i)
z : α✝ 0
α : Type u_1
β : Type u_2
g : α → β
y : α
q : Fin n → α
⊢ g ∘ cons y q = cons (g y) (g ∘ q)

tactic: by_cases h : j = 0
state_before: case h
m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ 0
q✝ : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ (succ i)
i : Fin n
y✝ : α✝ (succ i)
z : α✝ 0
α : Type u_1
β : Type u_2
g : α → β
y : α
q : Fin n → α
j : Fin (n + 1)
⊢ (g ∘ cons y q) j = cons (g y) (g ∘ q) j

tactic: rw [h]
state_before: case pos
m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ 0
q✝ : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ (succ i)
i : Fin n
y✝ : α✝ (succ i)
z : α✝ 0
α : Type u_1
β : Type u_2
g : α → β
y : α
q : Fin n → α
j : Fin (n + 1)
h : j = 0
⊢ (g ∘ cons y q) j = cons (g y) (g ∘ q) j

tactic: rfl
state_before: case pos
m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ 0
q✝ : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ (succ i)
i : Fin n
y✝ : α✝ (succ i)
z : α✝ 0
α : Type u_1
β : Type u_2
g : α → β
y : α
q : Fin n → α
j : Fin (n + 1)
h : j = 0
⊢ (g ∘ cons y q) 0 = cons (g y) (g ∘ q) 0

tactic: let j' := pred j h
state_before: case neg
m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ 0
q✝ : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ (succ i)
i : Fin n
y✝ : α✝ (succ i)
z : α✝ 0
α : Type u_1
β : Type u_2
g : α → β
y : α
q : Fin n → α
j : Fin (n + 1)
h : ¬j = 0
⊢ (g ∘ cons y q) j = cons (g y) (g ∘ q) j

tactic: have : j'.succ = j := succ_pred j h
state_before: case neg
m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ 0
q✝ : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ (succ i)
i : Fin n
y✝ : α✝ (succ i)
z : α✝ 0
α : Type u_1
β : Type u_2
g : α → β
y : α
q : Fin n → α
j : Fin (n + 1)
h : ¬j = 0
j' : Fin n := pred j h
⊢ (g ∘ cons y q) j = cons (g y) (g ∘ q) j

tactic: rw [← this, cons_succ, comp, comp, cons_succ]
state_before: case neg
m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ 0
q✝ : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ (succ i)
i : Fin n
y✝ : α✝ (succ i)
z : α✝ 0
α : Type u_1
β : Type u_2
g : α → β
y : α
q : Fin n → α
j : Fin (n + 1)
h : ¬j = 0
j' : Fin n := pred j h
this : succ j' = j
⊢ (g ∘ cons y q) j = cons (g y) (g ∘ q) j
Theorem: dist_le_pi_dist
File: Mathlib/Topology/MetricSpace/Basic.lean

tactic: simp only [dist_nndist, NNReal.coe_le_coe, nndist_le_pi_nndist f g b]
state_before: α : Type u
β : Type v
X : Type ?u.398493
ι : Type ?u.398496
inst✝² : PseudoMetricSpace α
π : β → Type u_1
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoMetricSpace (π b)
f g : (b : β) → π b
b : β
⊢ dist (f b) (g b) ≤ dist f g
Theorem: PartENat.toWithTop_natCast'
File: Mathlib/Data/Nat/PartENat.lean

tactic: rw [toWithTop_natCast n]
state_before: n : ℕ
h : Decidable (↑n).Dom
⊢ toWithTop ↑n = ↑n
Theorem: spectrum.pow_image_subset
File: Mathlib/FieldTheory/IsAlgClosed/Spectrum.lean

tactic: simpa only [eval_pow, eval_X, aeval_X_pow] using subset_polynomial_aeval a (X ^ n : 𝕜[X])
state_before: 𝕜 : Type u
A : Type v
inst✝² : Field 𝕜
inst✝¹ : Ring A
inst✝ : Algebra 𝕜 A
a : A
n : ℕ
⊢ (fun x => x ^ n) '' σ a ⊆ σ (a ^ n)
Theorem: Real.not_summable_one_div_nat_cast
File: Mathlib/Analysis/PSeries.lean

tactic: simpa only [inv_eq_one_div] using Real.not_summable_nat_cast_inv
state_before: ⊢ ¬Summable fun n => 1 / ↑n
Theorem: AffineSubspace.affineSpan_pair_parallel_iff_vectorSpan_eq
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: simp [affineSpan_parallel_iff_vectorSpan_eq_and_eq_empty_iff_eq_empty, ←
  not_nonempty_iff_eq_empty]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
p₁ p₂ p₃ p₄ : P
⊢ affineSpan k {p₁, p₂} ∥ affineSpan k {p₃, p₄} ↔ vectorSpan k {p₁, p₂} = vectorSpan k {p₃, p₄}
Theorem: MeasureTheory.ae_eq_set_compl
File: Mathlib/MeasureTheory/Measure/MeasureSpaceDef.lean

tactic: rw [← ae_eq_set_compl_compl, compl_compl]
state_before: α : Type u_1
β : Type ?u.112006
γ : Type ?u.112009
δ : Type ?u.112012
ι : Type ?u.112015
inst✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t✝ s t : Set α
⊢ sᶜ =ᵐ[μ] t ↔ s =ᵐ[μ] tᶜ
Theorem: contDiff_zero
File: Mathlib/Analysis/Calculus/ContDiffDef.lean

tactic: rw [← contDiffOn_univ, continuous_iff_continuousOn_univ]
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
⊢ ContDiff 𝕜 0 f ↔ Continuous f

tactic: exact contDiffOn_zero
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
⊢ ContDiffOn 𝕜 0 f univ ↔ ContinuousOn f univ
Theorem: List.pairwise_filter
File: Mathlib/Data/List/Pairwise.lean

tactic: rw [← filterMap_eq_filter, pairwise_filterMap]
state_before: α : Type u_1
β : Type ?u.15897
R S T : α → α → Prop
a : α
l✝ : List α
p : α → Prop
inst✝ : DecidablePred p
l : List α
⊢ Pairwise R (filter (fun b => decide (p b)) l) ↔ Pairwise (fun x y => p x → p y → R x y) l

tactic: apply Pairwise.iff
state_before: α : Type u_1
β : Type ?u.15897
R S T : α → α → Prop
a : α
l✝ : List α
p : α → Prop
inst✝ : DecidablePred p
l : List α
⊢ Pairwise
      (fun a a' =>
        ∀ (b : α),
          b ∈ Option.guard (fun x => decide (p x) = true) a →
            ∀ (b' : α), b' ∈ Option.guard (fun x => decide (p x) = true) a' → R b b')
      l ↔
    Pairwise (fun x y => p x → p y → R x y) l

tactic: intros
state_before: case H
α : Type u_1
β : Type ?u.15897
R S T : α → α → Prop
a : α
l✝ : List α
p : α → Prop
inst✝ : DecidablePred p
l : List α
⊢ ∀ (a b : α),
    (∀ (b_1 : α),
        b_1 ∈ Option.guard (fun x => decide (p x) = true) a →
          ∀ (b' : α), b' ∈ Option.guard (fun x => decide (p x) = true) b → R b_1 b') ↔
      p a → p b → R a b

tactic: simp only [decide_eq_true_eq, Option.mem_def, Option.guard_eq_some, and_imp, forall_eq']
state_before: case H
α : Type u_1
β : Type ?u.15897
R S T : α → α → Prop
a : α
l✝ : List α
p : α → Prop
inst✝ : DecidablePred p
l : List α
a✝ b✝ : α
⊢ (∀ (b : α),
      b ∈ Option.guard (fun x => decide (p x) = true) a✝ →
        ∀ (b' : α), b' ∈ Option.guard (fun x => decide (p x) = true) b✝ → R b b') ↔
    p a✝ → p b✝ → R a✝ b✝
Theorem: MeasureTheory.Measure.tsum_indicator_apply_singleton
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: simp only [Measure.sum_apply _ hs, Measure.smul_apply, smul_eq_mul, Measure.dirac_apply,
  Set.indicator_apply, mul_ite, Pi.one_apply, mul_one, MulZeroClass.mul_zero]
state_before: α : Type u_1
β : Type ?u.356681
γ : Type ?u.356684
δ : Type ?u.356687
ι : Type ?u.356690
R : Type ?u.356693
R' : Type ?u.356696
m0 : MeasurableSpace α
inst✝³ : MeasurableSpace β
inst✝² : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
inst✝¹ : Countable α
inst✝ : MeasurableSingletonClass α
μ : Measure α
s : Set α
hs : MeasurableSet s
⊢ (∑' (x : α), indicator s (fun x => ↑↑μ {x}) x) = ↑↑(sum fun a => ↑↑μ {a} • dirac a) s

tactic: rw [μ.sum_smul_dirac]
state_before: α : Type u_1
β : Type ?u.356681
γ : Type ?u.356684
δ : Type ?u.356687
ι : Type ?u.356690
R : Type ?u.356693
R' : Type ?u.356696
m0 : MeasurableSpace α
inst✝³ : MeasurableSpace β
inst✝² : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
inst✝¹ : Countable α
inst✝ : MeasurableSingletonClass α
μ : Measure α
s : Set α
hs : MeasurableSet s
⊢ ↑↑(sum fun a => ↑↑μ {a} • dirac a) s = ↑↑μ s
Theorem: div_lt_one_of_neg
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [div_lt_iff_of_neg hb, one_mul]
state_before: ι : Type ?u.155573
α : Type u_1
β : Type ?u.155579
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
hb : b < 0
⊢ a / b < 1 ↔ b < a
Theorem: LatticeOrderedCommGroup.m_neg_abs
File: Mathlib/Algebra/Order/LatticeGroup.lean

tactic: refine' le_antisymm _ _
state_before: α : Type u
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ abs a⁻ = 1

tactic: rw [← pos_inf_neg_eq_one a]
state_before: case refine'_1
α : Type u
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ abs a⁻ ≤ 1

tactic: apply le_inf
state_before: case refine'_1
α : Type u
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ abs a⁻ ≤ a⁺ ⊓ a⁻

tactic: rw [pos_eq_neg_inv]
state_before: case refine'_1.a
α : Type u
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ abs a⁻ ≤ a⁺

tactic: exact ((m_le_iff_pos_le_neg_ge _ _).mp (inv_le_abs a)).right
state_before: case refine'_1.a
α : Type u
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ abs a⁻ ≤ a⁻¹⁻

tactic: exact And.right (Iff.mp (m_le_iff_pos_le_neg_ge _ _) (le_mabs a))
state_before: case refine'_1.a
α : Type u
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ abs a⁻ ≤ a⁻

tactic: exact one_le_neg _
state_before: case refine'_2
α : Type u
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ 1 ≤ abs a⁻
Theorem: Polynomial.aeval_algHom_apply
File: Mathlib/Data/Polynomial/AlgebraMap.lean

tactic: refine' Polynomial.induction_on p (by simp [AlgHomClass.commutes]) (fun p q hp hq => _)
  (by simp [AlgHomClass.commutes])
state_before: R : Type u
S : Type v
T : Type w
A : Type z
A' : Type ?u.893198
B' : Type ?u.893201
a b : R
n : ℕ
inst✝⁷ : CommSemiring A'
inst✝⁶ : Semiring B'
inst✝⁵ : CommSemiring R
p✝ q : R[X]
inst✝⁴ : Semiring A
inst✝³ : Algebra R A
B : Type u_2
inst✝² : Semiring B
inst✝¹ : Algebra R B
x✝ : A
F : Type u_1
inst✝ : AlgHomClass F R A B
f : F
x : A
p : R[X]
⊢ ↑(aeval (↑f x)) p = ↑f (↑(aeval x) p)

tactic: rw [map_add, hp, hq, ← map_add, ← map_add]
state_before: R : Type u
S : Type v
T : Type w
A : Type z
A' : Type ?u.893198
B' : Type ?u.893201
a b : R
n : ℕ
inst✝⁷ : CommSemiring A'
inst✝⁶ : Semiring B'
inst✝⁵ : CommSemiring R
p✝¹ q✝ : R[X]
inst✝⁴ : Semiring A
inst✝³ : Algebra R A
B : Type u_2
inst✝² : Semiring B
inst✝¹ : Algebra R B
x✝ : A
F : Type u_1
inst✝ : AlgHomClass F R A B
f : F
x : A
p✝ p q : R[X]
hp : ↑(aeval (↑f x)) p = ↑f (↑(aeval x) p)
hq : ↑(aeval (↑f x)) q = ↑f (↑(aeval x) q)
⊢ ↑(aeval (↑f x)) (p + q) = ↑f (↑(aeval x) (p + q))

tactic: simp [AlgHomClass.commutes]
state_before: R : Type u
S : Type v
T : Type w
A : Type z
A' : Type ?u.893198
B' : Type ?u.893201
a b : R
n : ℕ
inst✝⁷ : CommSemiring A'
inst✝⁶ : Semiring B'
inst✝⁵ : CommSemiring R
p✝ q : R[X]
inst✝⁴ : Semiring A
inst✝³ : Algebra R A
B : Type u_2
inst✝² : Semiring B
inst✝¹ : Algebra R B
x✝ : A
F : Type u_1
inst✝ : AlgHomClass F R A B
f : F
x : A
p : R[X]
⊢ ∀ (a : R), ↑(aeval (↑f x)) (↑C a) = ↑f (↑(aeval x) (↑C a))

tactic: simp [AlgHomClass.commutes]
state_before: R : Type u
S : Type v
T : Type w
A : Type z
A' : Type ?u.893198
B' : Type ?u.893201
a b : R
n : ℕ
inst✝⁷ : CommSemiring A'
inst✝⁶ : Semiring B'
inst✝⁵ : CommSemiring R
p✝ q : R[X]
inst✝⁴ : Semiring A
inst✝³ : Algebra R A
B : Type u_2
inst✝² : Semiring B
inst✝¹ : Algebra R B
x✝ : A
F : Type u_1
inst✝ : AlgHomClass F R A B
f : F
x : A
p : R[X]
⊢ ∀ (n : ℕ) (a : R),
    ↑(aeval (↑f x)) (↑C a * X ^ n) = ↑f (↑(aeval x) (↑C a * X ^ n)) →
      ↑(aeval (↑f x)) (↑C a * X ^ (n + 1)) = ↑f (↑(aeval x) (↑C a * X ^ (n + 1)))
Theorem: le_div_iff_mul_le'
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [le_div_iff_mul_le, mul_comm]
state_before: α : Type u
inst✝² : CommGroup α
inst✝¹ : LE α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c d : α
⊢ b ≤ c / a ↔ a * b ≤ c
Theorem: Finset.disjoint_sup_left
File: Mathlib/Data/Finset/Lattice.lean

tactic: simp only [disjoint_iff, sup_inf_distrib_right, Finset.sup_eq_bot_iff]
state_before: F : Type ?u.157856
α : Type u_1
β : Type ?u.157862
γ : Type ?u.157865
ι : Type u_2
κ : Type ?u.157871
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s : Finset ι
t : Finset κ
f : ι → α
g : κ → α
a : α
⊢ _root_.Disjoint (sup s f) a ↔ ∀ ⦃i : ι⦄, i ∈ s → _root_.Disjoint (f i) a
Theorem: Filter.smallSets_bot
File: Mathlib/Order/Filter/SmallSets.lean

tactic: rw [smallSets, lift'_bot, powerset_empty, principal_singleton]
state_before: α : Type u_1
β : Type ?u.2653
ι : Sort ?u.2656
l l' la : Filter α
lb : Filter β
⊢ smallSets ⊥ = pure ∅

tactic: exact monotone_powerset
state_before: α : Type u_1
β : Type ?u.2653
ι : Sort ?u.2656
l l' la : Filter α
lb : Filter β
⊢ Monotone powerset
Theorem: Finset.sum_antidiagonal_choose_succ_mul
File: Mathlib/Data/Nat/Choose/Sum.lean

tactic: simpa only [nsmul_eq_mul] using sum_antidiagonal_choose_succ_nsmul f n
state_before: R✝ : Type ?u.383760
M : Type ?u.383763
R : Type u_1
inst✝¹ : CommMonoid M
inst✝ : NonAssocSemiring R
f : ℕ → ℕ → R
n : ℕ
⊢ ∑ ij in Nat.antidiagonal (n + 1), ↑(Nat.choose (n + 1) ij.fst) * f ij.fst ij.snd =
    ∑ ij in Nat.antidiagonal n, ↑(Nat.choose n ij.fst) * f ij.fst (ij.snd + 1) +
      ∑ ij in Nat.antidiagonal n, ↑(Nat.choose n ij.snd) * f (ij.fst + 1) ij.snd
Theorem: Finset.prod_erase_eq_div
File: Mathlib/Algebra/BigOperators/Basic.lean

tactic: rw [eq_div_iff_mul_eq', prod_erase_mul _ _ h]
state_before: ι : Type ?u.859388
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a✝ : α
f g : α → β
inst✝¹ : CommGroup β
inst✝ : DecidableEq α
a : α
h : a ∈ s
⊢ ∏ x in erase s a, f x = (∏ x in s, f x) / f a
Theorem: EuclideanGeometry.cospherical_singleton
File: Mathlib/Geometry/Euclidean/Sphere/Basic.lean

tactic: use p
state_before: V : Type ?u.7597
P : Type u_1
inst✝ : MetricSpace P
p : P
⊢ Cospherical {p}

tactic: simp
state_before: V : Type ?u.7597
P : Type u_1
inst✝ : MetricSpace P
p : P
⊢ ∃ radius, ∀ (p_1 : P), p_1 ∈ {p} → dist p_1 p = radius
Theorem: add_tsub_add_le_tsub_right
File: Mathlib/Algebra/Order/Sub/Defs.lean

tactic: rw [tsub_le_iff_left, add_right_comm]
state_before: α : Type u_1
β : Type ?u.21029
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 + c - (b + c) ≤ a - b

tactic: exact add_le_add_right le_add_tsub c
state_before: α : Type u_1
β : Type ?u.21029
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 + c ≤ b + (a - b) + c
Theorem: Real.rpow_sub
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: simp only [sub_eq_add_neg, rpow_add hx, rpow_neg (le_of_lt hx), div_eq_mul_inv]
state_before: x✝ y✝ z✝ x : ℝ
hx : 0 < x
y z : ℝ
⊢ x ^ (y - z) = x ^ y / x ^ z
Theorem: exists_pow_lt_of_lt_one
File: Mathlib/Algebra/Order/Archimedean.lean

tactic: by_cases y_pos : y ≤ 0
state_before: α : Type u_1
inst✝¹ : LinearOrderedField α
inst✝ : Archimedean α
x y ε : α
hx : 0 < x
hy : y < 1
⊢ ∃ n, y ^ n < x

tactic: rw [not_le] at y_pos
state_before: case neg
α : Type u_1
inst✝¹ : LinearOrderedField α
inst✝ : Archimedean α
x y ε : α
hx : 0 < x
hy : y < 1
y_pos : ¬y ≤ 0
⊢ ∃ n, y ^ n < x

tactic: rcases pow_unbounded_of_one_lt x⁻¹ (one_lt_inv y_pos hy) with ⟨q, hq⟩
state_before: case neg
α : Type u_1
inst✝¹ : LinearOrderedField α
inst✝ : Archimedean α
x y ε : α
hx : 0 < x
hy : y < 1
y_pos : 0 < y
⊢ ∃ n, y ^ n < x

tactic: exact ⟨q, by rwa [inv_pow, inv_lt_inv hx (pow_pos y_pos _)] at hq⟩
state_before: case neg.intro
α : Type u_1
inst✝¹ : LinearOrderedField α
inst✝ : Archimedean α
x y ε : α
hx : 0 < x
hy : y < 1
y_pos : 0 < y
q : ℕ
hq : x⁻¹ < y⁻¹ ^ q
⊢ ∃ n, y ^ n < x

tactic: use 1
state_before: case pos
α : Type u_1
inst✝¹ : LinearOrderedField α
inst✝ : Archimedean α
x y ε : α
hx : 0 < x
hy : y < 1
y_pos : y ≤ 0
⊢ ∃ n, y ^ n < x

tactic: simp only [pow_one]
state_before: case pos
α : Type u_1
inst✝¹ : LinearOrderedField α
inst✝ : Archimedean α
x y ε : α
hx : 0 < x
hy : y < 1
y_pos : y ≤ 0
⊢ y ^ 1 < x

tactic: linarith
state_before: case pos
α : Type u_1
inst✝¹ : LinearOrderedField α
inst✝ : Archimedean α
x y ε : α
hx : 0 < x
hy : y < 1
y_pos : y ≤ 0
⊢ y < x

tactic: rwa [inv_pow, inv_lt_inv hx (pow_pos y_pos _)] at hq
state_before: α : Type u_1
inst✝¹ : LinearOrderedField α
inst✝ : Archimedean α
x y ε : α
hx : 0 < x
hy : y < 1
y_pos : 0 < y
q : ℕ
hq : x⁻¹ < y⁻¹ ^ q
⊢ y ^ q < x
Theorem: Set.iUnion_singleton_eq_range
File: Mathlib/Data/Set/Lattice.lean

tactic: ext x
state_before: α✝ : Type ?u.163313
β✝ : Type ?u.163316
γ : Type ?u.163319
ι : Sort ?u.163322
ι' : Sort ?u.163325
ι₂ : Sort ?u.163328
κ : ι → Sort ?u.163333
κ₁ : ι → Sort ?u.163338
κ₂ : ι → Sort ?u.163343
κ' : ι' → Sort ?u.163348
α : Type u_1
β : Type u_2
f : α → β
⊢ (⋃ (x : α), {f x}) = range f

tactic: simp [@eq_comm _ x]
state_before: case h
α✝ : Type ?u.163313
β✝ : Type ?u.163316
γ : Type ?u.163319
ι : Sort ?u.163322
ι' : Sort ?u.163325
ι₂ : Sort ?u.163328
κ : ι → Sort ?u.163333
κ₁ : ι → Sort ?u.163338
κ₂ : ι → Sort ?u.163343
κ' : ι' → Sort ?u.163348
α : Type u_1
β : Type u_2
f : α → β
x : β
⊢ (x ∈ ⋃ (x : α), {f x}) ↔ x ∈ range f