tasksource/leandojo huggingface dataset:
Theorem: MeasurableSet.analyticSet
File: Mathlib/MeasureTheory/Constructions/Polish.lean

tactic: obtain ⟨t', t't, t'_polish, s_closed, _⟩ :
  ∃ t' : TopologicalSpace α, t' ≤ t ∧ @PolishSpace α t' ∧ IsClosed[t'] s ∧ IsOpen[t'] s :=
  hs.isClopenable
state_before: α✝ : Type ?u.62930
inst✝³ : TopologicalSpace α✝
ι : Type ?u.62936
α : Type u_1
t : TopologicalSpace α
inst✝² : PolishSpace α
inst✝¹ : MeasurableSpace α
inst✝ : BorelSpace α
s : Set α
hs : MeasurableSet s
⊢ AnalyticSet s

tactic: have A := @IsClosed.analyticSet α t' t'_polish s s_closed
state_before: case intro.intro.intro.intro
α✝ : Type ?u.62930
inst✝³ : TopologicalSpace α✝
ι : Type ?u.62936
α : Type u_1
t : TopologicalSpace α
inst✝² : PolishSpace α
inst✝¹ : MeasurableSpace α
inst✝ : BorelSpace α
s : Set α
hs : MeasurableSet s
t' : TopologicalSpace α
t't : t' ≤ t
t'_polish : PolishSpace α
s_closed : IsClosed s
right✝ : IsOpen s
⊢ AnalyticSet s

tactic: convert @AnalyticSet.image_of_continuous α t' α t s A id (continuous_id_of_le t't)
state_before: case intro.intro.intro.intro
α✝ : Type ?u.62930
inst✝³ : TopologicalSpace α✝
ι : Type ?u.62936
α : Type u_1
t : TopologicalSpace α
inst✝² : PolishSpace α
inst✝¹ : MeasurableSpace α
inst✝ : BorelSpace α
s : Set α
hs : MeasurableSet s
t' : TopologicalSpace α
t't : t' ≤ t
t'_polish : PolishSpace α
s_closed : IsClosed s
right✝ : IsOpen s
A : AnalyticSet s
⊢ AnalyticSet s

tactic: simp only [id.def, image_id']
state_before: case h.e'_3
α✝ : Type ?u.62930
inst✝³ : TopologicalSpace α✝
ι : Type ?u.62936
α : Type u_1
t : TopologicalSpace α
inst✝² : PolishSpace α
inst✝¹ : MeasurableSpace α
inst✝ : BorelSpace α
s : Set α
hs : MeasurableSet s
t' : TopologicalSpace α
t't : t' ≤ t
t'_polish : PolishSpace α
s_closed : IsClosed s
right✝ : IsOpen s
A : AnalyticSet s
⊢ s = id '' s
Theorem: PSet.toSet_empty
File: Mathlib/SetTheory/ZFC/Basic.lean

tactic: simp [toSet]
state_before: ⊢ toSet ∅ = ∅
Theorem: Int.natAbs_sign_of_nonzero
File: Std/Data/Int/Lemmas.lean

tactic: rw [Int.natAbs_sign, if_neg hz]
state_before: z : Int
hz : z ≠ 0
⊢ natAbs (sign z) = 1
Theorem: Filter.sup_limsup
File: Mathlib/Order/LiminfLimsup.lean

tactic: simp only [limsup_eq_iInf_iSup, iSup_sup_eq, sup_iInf₂_eq]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.164326
ι : Type ?u.164329
inst✝¹ : CompleteDistribLattice α
f : Filter β
p q : β → Prop
u : β → α
inst✝ : NeBot f
a : α
⊢ a ⊔ limsup u f = limsup (fun x => a ⊔ u x) f

tactic: congr
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.164326
ι : Type ?u.164329
inst✝¹ : CompleteDistribLattice α
f : Filter β
p q : β → Prop
u : β → α
inst✝ : NeBot f
a : α
⊢ (⨅ (i : Set β) (_ : i ∈ f), a ⊔ ⨆ (a : β) (_ : a ∈ i), u a) =
    ⨅ (s : Set β) (_ : s ∈ f), (⨆ (x : β) (_ : x ∈ s), a) ⊔ ⨆ (x : β) (_ : x ∈ s), u x

tactic: ext s
state_before: case e_s
α : Type u_2
β : Type u_1
γ : Type ?u.164326
ι : Type ?u.164329
inst✝¹ : CompleteDistribLattice α
f : Filter β
p q : β → Prop
u : β → α
inst✝ : NeBot f
a : α
⊢ (fun i => ⨅ (_ : i ∈ f), a ⊔ ⨆ (a : β) (_ : a ∈ i), u a) = fun s =>
    ⨅ (_ : s ∈ f), (⨆ (x : β) (_ : x ∈ s), a) ⊔ ⨆ (x : β) (_ : x ∈ s), u x

tactic: congr
state_before: case e_s.h
α : Type u_2
β : Type u_1
γ : Type ?u.164326
ι : Type ?u.164329
inst✝¹ : CompleteDistribLattice α
f : Filter β
p q : β → Prop
u : β → α
inst✝ : NeBot f
a : α
s : Set β
⊢ (⨅ (_ : s ∈ f), a ⊔ ⨆ (a : β) (_ : a ∈ s), u a) =
    ⨅ (_ : s ∈ f), (⨆ (x : β) (_ : x ∈ s), a) ⊔ ⨆ (x : β) (_ : x ∈ s), u x

tactic: ext hs
state_before: case e_s.h.e_s
α : Type u_2
β : Type u_1
γ : Type ?u.164326
ι : Type ?u.164329
inst✝¹ : CompleteDistribLattice α
f : Filter β
p q : β → Prop
u : β → α
inst✝ : NeBot f
a : α
s : Set β
⊢ (fun j => a ⊔ ⨆ (a : β) (_ : a ∈ s), u a) = fun x => (⨆ (x : β) (_ : x ∈ s), a) ⊔ ⨆ (x : β) (_ : x ∈ s), u x

tactic: congr
state_before: case e_s.h.e_s.h
α : Type u_2
β : Type u_1
γ : Type ?u.164326
ι : Type ?u.164329
inst✝¹ : CompleteDistribLattice α
f : Filter β
p q : β → Prop
u : β → α
inst✝ : NeBot f
a : α
s : Set β
hs : s ∈ f
⊢ (a ⊔ ⨆ (a : β) (_ : a ∈ s), u a) = (⨆ (x : β) (_ : x ∈ s), a) ⊔ ⨆ (x : β) (_ : x ∈ s), u x

tactic: exact (biSup_const (nonempty_of_mem hs)).symm
state_before: case e_s.h.e_s.h.e_a
α : Type u_2
β : Type u_1
γ : Type ?u.164326
ι : Type ?u.164329
inst✝¹ : CompleteDistribLattice α
f : Filter β
p q : β → Prop
u : β → α
inst✝ : NeBot f
a : α
s : Set β
hs : s ∈ f
⊢ a = ⨆ (x : β) (_ : x ∈ s), a
Theorem: List.forall₂_map_right_iff
File: Mathlib/Data/List/Forall2.lean

tactic: simp only [map, forall₂_nil_right_iff]
state_before: α : Type u_1
β : Type u_3
γ : Type u_2
δ : Type ?u.21466
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
f : γ → β
x✝ : List α
⊢ Forall₂ R x✝ (map f []) ↔ Forall₂ (fun a c => R a (f c)) x✝ []

tactic: simp only [map, forall₂_cons_right_iff, forall₂_map_right_iff]
state_before: α : Type u_1
β : Type u_3
γ : Type u_2
δ : Type ?u.21466
R S : α → β → Prop
P : γ → δ → Prop
Rₐ : α → α → Prop
f : γ → β
x✝ : List α
b : γ
u : List γ
⊢ Forall₂ R x✝ (map f (b :: u)) ↔ Forall₂ (fun a c => R a (f c)) x✝ (b :: u)
Theorem: Finset.prod_univ_sum
File: Mathlib/Data/Fintype/BigOperators.lean

tactic: simp only [Finset.prod_attach_univ, prod_sum, Finset.sum_univ_pi]
state_before: α : Type u_2
β : Type u_3
γ : Type ?u.45448
inst✝³ : DecidableEq α
inst✝² : Fintype α
inst✝¹ : CommSemiring β
δ : α → Type u_1
inst✝ : (a : α) → DecidableEq (δ a)
t : (a : α) → Finset (δ a)
f : (a : α) → δ a → β
⊢ ∏ a : α, ∑ b in t a, f a b = ∑ p in Fintype.piFinset t, ∏ x : α, f x (p x)
Theorem: CategoryTheory.MonoidalCategory.triangle_assoc_comp_right_inv
File: Mathlib/CategoryTheory/Monoidal/CoherenceLemmas.lean

tactic: coherence
state_before: C : Type u_2
inst✝¹ : Category C
inst✝ : MonoidalCategory C
X Y : C
⊢ ((ρ_ X).inv ⊗ 𝟙 Y) ≫ (α_ X (𝟙_ C) Y).hom = 𝟙 X ⊗ (λ_ Y).inv
Theorem: Right.inv_le_one_iff
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [← mul_le_mul_iff_right a]
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LE α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
⊢ a⁻¹ ≤ 1 ↔ 1 ≤ a

tactic: simp
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LE α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
⊢ a⁻¹ * a ≤ 1 * a ↔ 1 ≤ a
Theorem: swap_hammingDist
File: Mathlib/InformationTheory/Hamming.lean

tactic: funext x y
state_before: α : Type ?u.6729
ι : Type u_1
β : ι → Type u_2
inst✝² : Fintype ι
inst✝¹ : (i : ι) → DecidableEq (β i)
γ : ι → Type ?u.6761
inst✝ : (i : ι) → DecidableEq (γ i)
⊢ swap hammingDist = hammingDist

tactic: exact hammingDist_comm _ _
state_before: case h.h
α : Type ?u.6729
ι : Type u_1
β : ι → Type u_2
inst✝² : Fintype ι
inst✝¹ : (i : ι) → DecidableEq (β i)
γ : ι → Type ?u.6761
inst✝ : (i : ι) → DecidableEq (γ i)
x y : (i : ι) → β i
⊢ swap hammingDist x y = hammingDist x y
Theorem: Equiv.Perm.IsCycleOn.apply_ne
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: obtain ⟨b, hb, hba⟩ := hs.exists_ne a
state_before: ι : Type ?u.1651424
α : Type u_1
β : Type ?u.1651430
f g : Perm α
s t : Set α
a b x y : α
hf : IsCycleOn f s
hs : Set.Nontrivial s
ha : a ∈ s
⊢ ↑f a ≠ a

tactic: obtain ⟨n, rfl⟩ := hf.2 ha hb
state_before: case intro.intro
ι : Type ?u.1651424
α : Type u_1
β : Type ?u.1651430
f g : Perm α
s t : Set α
a b✝ x y : α
hf : IsCycleOn f s
hs : Set.Nontrivial s
ha : a ∈ s
b : α
hb : b ∈ s
hba : b ≠ a
⊢ ↑f a ≠ a

tactic: exact fun h => hba (IsFixedPt.perm_zpow h n)
state_before: case intro.intro.intro
ι : Type ?u.1651424
α : Type u_1
β : Type ?u.1651430
f g : Perm α
s t : Set α
a b x y : α
hf : IsCycleOn f s
hs : Set.Nontrivial s
ha : a ∈ s
n : ℤ
hb : ↑(f ^ n) a ∈ s
hba : ↑(f ^ n) a ≠ a
⊢ ↑f a ≠ a
Theorem: Multiset.add_eq_union_left_of_le
File: Mathlib/Algebra/BigOperators/Basic.lean

tactic: rw [← add_eq_union_iff_disjoint]
state_before: ι : Type ?u.902858
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : DecidableEq α
x y z : Multiset α
h : y ≤ x
⊢ z + x = z ∪ y ↔ Disjoint z x ∧ x = y

tactic: constructor
state_before: ι : Type ?u.902858
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : DecidableEq α
x y z : Multiset α
h : y ≤ x
⊢ z + x = z ∪ y ↔ z + x = z ∪ x ∧ x = y

tactic: intro h0
state_before: case mp
ι : Type ?u.902858
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : DecidableEq α
x y z : Multiset α
h : y ≤ x
⊢ z + x = z ∪ y → z + x = z ∪ x ∧ x = y

tactic: rw [and_iff_right_of_imp]
state_before: case mp
ι : Type ?u.902858
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : DecidableEq α
x y z : Multiset α
h : y ≤ x
h0 : z + x = z ∪ y
⊢ z + x = z ∪ x ∧ x = y

tactic: exact (le_of_add_le_add_left <| h0.trans_le <| union_le_add z y).antisymm h
state_before: case mp
ι : Type ?u.902858
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : DecidableEq α
x y z : Multiset α
h : y ≤ x
h0 : z + x = z ∪ y
⊢ x = y

tactic: rintro rfl
state_before: case mp
ι : Type ?u.902858
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : DecidableEq α
x y z : Multiset α
h : y ≤ x
h0 : z + x = z ∪ y
⊢ x = y → z + x = z ∪ x

tactic: exact h0
state_before: case mp
ι : Type ?u.902858
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : DecidableEq α
x z : Multiset α
h : x ≤ x
h0 : z + x = z ∪ x
⊢ z + x = z ∪ x

tactic: rintro ⟨h0, rfl⟩
state_before: case mpr
ι : Type ?u.902858
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : DecidableEq α
x y z : Multiset α
h : y ≤ x
⊢ z + x = z ∪ x ∧ x = y → z + x = z ∪ y

tactic: exact h0
state_before: case mpr.intro
ι : Type ?u.902858
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : DecidableEq α
x z : Multiset α
h0 : z + x = z ∪ x
h : x ≤ x
⊢ z + x = z ∪ x
Theorem: Set.Iic_iInf
File: Mathlib/Data/Set/Lattice.lean

tactic: simp only [mem_Iic, le_iInf_iff, mem_iInter]
state_before: α : Type u_1
β : Type ?u.295745
γ : Type ?u.295748
ι : Sort u_2
ι' : Sort ?u.295754
ι₂ : Sort ?u.295757
κ : ι → Sort ?u.295762
κ₁ : ι → Sort ?u.295767
κ₂ : ι → Sort ?u.295772
κ' : ι' → Sort ?u.295777
inst✝ : CompleteLattice α
f : ι → α
x✝ : α
⊢ x✝ ∈ Iic (⨅ (i : ι), f i) ↔ x✝ ∈ ⋂ (i : ι), Iic (f i)
Theorem: Int.sign_add_eq_of_sign_eq
File: Mathlib/Data/Int/Order/Basic.lean

tactic: have : (1 : ℤ) ≠ -1 := by decide
state_before: ⊢ ∀ {m n : ℤ}, sign m = sign n → sign (m + n) = sign n

tactic: rintro ((_ | m) | m) ((_ | n) | n) <;> simp [this, this.symm]
state_before: this : 1 ≠ -1
⊢ ∀ {m n : ℤ}, sign m = sign n → sign (m + n) = sign n

tactic: rw [Int.sign_eq_one_iff_pos]
state_before: case ofNat.succ.ofNat.succ
this : 1 ≠ -1
m n : ℕ
⊢ sign (↑m + 1 + (↑n + 1)) = 1

tactic: decide
state_before: ⊢ 1 ≠ -1

tactic: exact zero_lt_one.trans_le (le_add_of_nonneg_left <| coe_nat_nonneg _)
state_before: case ofNat.succ.ofNat.succ.hb
this : 1 ≠ -1
m n : ℕ
⊢ 0 < ↑n + 1
Theorem: MvPowerSeries.inv_eq_zero
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: simpa using congr_arg (constantCoeff σ k) h
state_before: σ : Type u_1
R : Type ?u.1713985
k : Type u_2
inst✝ : Field k
φ : MvPowerSeries σ k
h : φ⁻¹ = 0
⊢ ↑(constantCoeff σ k) φ = 0

tactic: rw [coeff_inv]
state_before: σ : Type u_1
R : Type ?u.1713985
k : Type u_2
inst✝ : Field k
φ : MvPowerSeries σ k
h : ↑(constantCoeff σ k) φ = 0
n : σ →₀ ℕ
⊢ ↑(coeff k n) φ⁻¹ = ↑(coeff k n) 0

tactic: split_ifs <;>
  simp only [h, map_zero, zero_mul, inv_zero, neg_zero]
state_before: σ : Type u_1
R : Type ?u.1713985
k : Type u_2
inst✝ : Field k
φ : MvPowerSeries σ k
h : ↑(constantCoeff σ k) φ = 0
n : σ →₀ ℕ
⊢ (if n = 0 then (↑(constantCoeff σ k) φ)⁻¹
    else
      -(↑(constantCoeff σ k) φ)⁻¹ *
        ∑ x in antidiagonal n, if x.snd < n then ↑(coeff k x.fst) φ * ↑(coeff k x.snd) φ⁻¹ else 0) =
    ↑(coeff k n) 0
Theorem: TopologicalSpace.Opens.op_map_id_obj
File: Mathlib/Topology/Category/TopCat/Opens.lean

tactic: simp
state_before: X Y Z : TopCat
U : (Opens ↑X)ᵒᵖ
⊢ (Functor.op (map (𝟙 X))).obj U = U
Theorem: lipschitzExtensionConstant_pos
File: Mathlib/Analysis/NormedSpace/FiniteDimension.lean

tactic: rw [lipschitzExtensionConstant]
state_before: 𝕜 : Type u
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type w
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
F' : Type x
inst✝⁸ : AddCommGroup F'
inst✝⁷ : Module 𝕜 F'
inst✝⁶ : TopologicalSpace F'
inst✝⁵ : TopologicalAddGroup F'
inst✝⁴ : ContinuousSMul 𝕜 F'
inst✝³ : CompleteSpace 𝕜
E' : Type u_1
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
⊢ 0 < lipschitzExtensionConstant E'

tactic: exact zero_lt_one.trans_le (le_max_right _ _)
state_before: 𝕜 : Type u
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type w
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
F' : Type x
inst✝⁸ : AddCommGroup F'
inst✝⁷ : Module 𝕜 F'
inst✝⁶ : TopologicalSpace F'
inst✝⁵ : TopologicalAddGroup F'
inst✝⁴ : ContinuousSMul 𝕜 F'
inst✝³ : CompleteSpace 𝕜
E' : Type u_1
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
⊢ 0 <
    let A := LinearEquiv.toContinuousLinearEquiv (Basis.equivFun (Basis.ofVectorSpace ℝ E'));
    max (‖↑(ContinuousLinearEquiv.symm A)‖₊ * ‖↑A‖₊) 1
Theorem: ExponentExists.isTorsion
File: Mathlib/GroupTheory/Torsion.lean

tactic: obtain ⟨n, npos, hn⟩ := h
state_before: G : Type u_1
H : Type ?u.170289
inst✝¹ : Group G
N : Subgroup G
inst✝ : Group H
h : ExponentExists G
g : G
⊢ IsOfFinOrder g

tactic: exact (isOfFinOrder_iff_pow_eq_one g).mpr ⟨n, npos, hn g⟩
state_before: case intro.intro
G : Type u_1
H : Type ?u.170289
inst✝¹ : Group G
N : Subgroup G
inst✝ : Group H
g : G
n : ℕ
npos : 0 < n
hn : ∀ (g : G), g ^ n = 1
⊢ IsOfFinOrder g
Theorem: MeasureTheory.snorm_zero'
File: Mathlib/MeasureTheory/Function/LpSeminorm.lean

tactic: convert snorm_zero (F := F)
state_before: α : Type u_1
E : Type ?u.923765
F : Type u_2
G : Type ?u.923771
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
⊢ snorm (fun x => 0) p μ = 0
Theorem: BoxIntegral.Prepartition.IsPartition.restrict
File: Mathlib/Analysis/BoxIntegral/Partition/Basic.lean

tactic: simp [h.iUnion_eq, hJ]
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
h : IsPartition π
hJ : J ≤ I
⊢ Prepartition.iUnion (restrict π J) = ↑J
Theorem: UV.aux
File: Mathlib/Combinatorics/SetFamily/Compression/UV.lean

tactic: rintro rfl
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
u v a : Finset α
huv : ∀ (x : α), x ∈ u → ∃ y, y ∈ v ∧ IsCompressed (erase u x) (erase v y) 𝒜
⊢ v = ∅ → u = ∅

tactic: refine' eq_empty_of_forall_not_mem fun a ha => _
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
u a : Finset α
huv : ∀ (x : α), x ∈ u → ∃ y, y ∈ ∅ ∧ IsCompressed (erase u x) (erase ∅ y) 𝒜
⊢ u = ∅

tactic: obtain ⟨_, ⟨⟩, -⟩ := huv a ha
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
u a✝ : Finset α
huv : ∀ (x : α), x ∈ u → ∃ y, y ∈ ∅ ∧ IsCompressed (erase u x) (erase ∅ y) 𝒜
a : α
ha : a ∈ u
⊢ False
Theorem: Ordinal.IsNormal.sup
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rw [sup_le_iff]
state_before: α : Type ?u.284505
β : Type ?u.284508
γ : Type ?u.284511
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal → Ordinal
H : IsNormal f
ι : Type u
g : ι → Ordinal
inst✝ : Nonempty ι
a : Ordinal
⊢ f (Ordinal.sup g) ≤ a ↔ Ordinal.sup (f ∘ g) ≤ a

tactic: simp only [comp]
state_before: α : Type ?u.284505
β : Type ?u.284508
γ : Type ?u.284511
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal → Ordinal
H : IsNormal f
ι : Type u
g : ι → Ordinal
inst✝ : Nonempty ι
a : Ordinal
⊢ f (Ordinal.sup g) ≤ a ↔ ∀ (i : ι), (f ∘ g) i ≤ a

tactic: rw [H.le_set' Set.univ Set.univ_nonempty g] <;>
simp [sup_le_iff]
state_before: α : Type ?u.284505
β : Type ?u.284508
γ : Type ?u.284511
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f : Ordinal → Ordinal
H : IsNormal f
ι : Type u
g : ι → Ordinal
inst✝ : Nonempty ι
a : Ordinal
⊢ f (Ordinal.sup g) ≤ a ↔ ∀ (i : ι), f (g i) ≤ a
Theorem: AffineSubspace.wOppSide_smul_vsub_vadd_left
File: Mathlib/Analysis/Convex/Side.lean

tactic: refine' ⟨p₂, hp₂, p₁, hp₁, _⟩
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.178003
P : Type u_3
P' : Type ?u.178009
inst✝⁶ : StrictOrderedCommRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
p₁ p₂ x : P
hp₁ : p₁ ∈ s
hp₂ : p₂ ∈ s
t : R
ht : t ≤ 0
⊢ WOppSide s (t • (x -ᵥ p₁) +ᵥ p₂) x

tactic: rw [vadd_vsub, ← neg_neg t, neg_smul, ← smul_neg, neg_vsub_eq_vsub_rev]
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.178003
P : Type u_3
P' : Type ?u.178009
inst✝⁶ : StrictOrderedCommRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
p₁ p₂ x : P
hp₁ : p₁ ∈ s
hp₂ : p₂ ∈ s
t : R
ht : t ≤ 0
⊢ SameRay R (t • (x -ᵥ p₁) +ᵥ p₂ -ᵥ p₂) (p₁ -ᵥ x)

tactic: exact SameRay.sameRay_nonneg_smul_left _ (neg_nonneg.2 ht)
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.178003
P : Type u_3
P' : Type ?u.178009
inst✝⁶ : StrictOrderedCommRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
p₁ p₂ x : P
hp₁ : p₁ ∈ s
hp₂ : p₂ ∈ s
t : R
ht : t ≤ 0
⊢ SameRay R (-t • (p₁ -ᵥ x)) (p₁ -ᵥ x)
Theorem: Finset.fin_map
File: Mathlib/Data/Finset/Image.lean

tactic: simp [Finset.fin, Finset.map_map]
state_before: α : Type ?u.137971
β : Type ?u.137974
γ : Type ?u.137977
n : ℕ
s : Finset ℕ
⊢ map Fin.valEmbedding (Finset.fin n s) = filter (fun x => x < n) s
Theorem: convexHull_diam
File: Mathlib/Analysis/Convex/Normed.lean

tactic: simp only [Metric.diam, convexHull_ediam]
state_before: ι : Type ?u.41107
E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace ℝ E
s✝ t s : Set E
⊢ diam (↑(convexHull ℝ).toOrderHom s) = diam s
Theorem: Finsupp.comapSMul_apply
File: Mathlib/Data/Finsupp/Basic.lean

tactic: conv_lhs => rw [← smul_inv_smul g a]
state_before: α : Type u_1
β : Type ?u.593102
γ : Type ?u.593105
ι : Type ?u.593108
M : Type u_2
M' : Type ?u.593114
N : Type ?u.593117
P : Type ?u.593120
G : Type u_3
H : Type ?u.593126
R : Type ?u.593129
S : Type ?u.593132
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : AddCommMonoid M
g : G
f : α →₀ M
a : α
⊢ ↑(g • f) a = ↑f (g⁻¹ • a)

tactic: exact mapDomain_apply (MulAction.injective g) _ (g⁻¹ • a)
state_before: α : Type u_1
β : Type ?u.593102
γ : Type ?u.593105
ι : Type ?u.593108
M : Type u_2
M' : Type ?u.593114
N : Type ?u.593117
P : Type ?u.593120
G : Type u_3
H : Type ?u.593126
R : Type ?u.593129
S : Type ?u.593132
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : AddCommMonoid M
g : G
f : α →₀ M
a : α
⊢ ↑(g • f) (g • g⁻¹ • a) = ↑f (g⁻¹ • a)
Theorem: Real.sign_zero
File: Mathlib/Data/Real/Sign.lean

tactic: rw [sign, if_neg (lt_irrefl _), if_neg (lt_irrefl _)]
state_before: ⊢ sign 0 = 0
Theorem: Cardinal.derivFamily_lt_ord
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: rwa [lift_id]
state_before: α : Type ?u.166484
r : α → α → Prop
ι : Type u
f : ι → Ordinal → Ordinal
c : Cardinal
hc : IsRegular c
hι : (#ι) < c
hc' : c ≠ ℵ₀
hf : ∀ (i : ι) (b : Ordinal), b < ord c → f i b < ord c
a : Ordinal
⊢ lift (#ι) < c
Theorem: subset_succChain
File: Mathlib/Order/Chain.lean

tactic: rw [exists_and_left] at h
state_before: α : Type u_1
β : Type ?u.9526
r : α → α → Prop
c c₁ c₂ c₃ s t : Set α
a b x y : α
h : ¬∃ t, IsChain r s ∧ SuperChain r s t
⊢ s ⊆ SuccChain r s

tactic: simp [SuccChain, dif_neg, h, Subset.rfl]
state_before: α : Type u_1
β : Type ?u.9526
r : α → α → Prop
c c₁ c₂ c₃ s t : Set α
a b x y : α
h : ¬(IsChain r s ∧ ∃ x, SuperChain r s x)
⊢ s ⊆ SuccChain r s
Theorem: Real.nnabs_of_nonneg
File: Mathlib/Data/Real/NNReal.lean

tactic: ext
state_before: x : ℝ
h : 0 ≤ x
⊢ ↑nnabs x = toNNReal x

tactic: rw [coe_toNNReal x h, coe_nnabs, abs_of_nonneg h]
state_before: case a
x : ℝ
h : 0 ≤ x
⊢ ↑(↑nnabs x) = ↑(toNNReal x)
Theorem: List.norm_prod_le'
File: Mathlib/Analysis/Normed/Field/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type ?u.110463
γ : Type ?u.110466
ι : Type ?u.110469
inst✝ : SeminormedRing α
a : α
x✝ : [a] ≠ []
⊢ ‖prod [a]‖ ≤ prod (map norm [a])

tactic: rw [List.map_cons, List.prod_cons, @List.prod_cons _ _ _ ‖a‖]
state_before: α : Type u_1
β : Type ?u.110463
γ : Type ?u.110466
ι : Type ?u.110469
inst✝ : SeminormedRing α
a b : α
l : List α
x✝ : a :: b :: l ≠ []
⊢ ‖prod (a :: b :: l)‖ ≤ prod (map norm (a :: b :: l))

tactic: refine' le_trans (norm_mul_le _ _) (mul_le_mul_of_nonneg_left _ (norm_nonneg _))
state_before: α : Type u_1
β : Type ?u.110463
γ : Type ?u.110466
ι : Type ?u.110469
inst✝ : SeminormedRing α
a b : α
l : List α
x✝ : a :: b :: l ≠ []
⊢ ‖a * prod (b :: l)‖ ≤ ‖a‖ * prod (map norm (b :: l))

tactic: exact List.norm_prod_le' (List.cons_ne_nil b l)
state_before: α : Type u_1
β : Type ?u.110463
γ : Type ?u.110466
ι : Type ?u.110469
inst✝ : SeminormedRing α
a b : α
l : List α
x✝ : a :: b :: l ≠ []
⊢ ‖prod (b :: l)‖ ≤ prod (map norm (b :: l))
Theorem: Finset.prod_ite_one
File: Mathlib/Algebra/BigOperators/Basic.lean

tactic: split_ifs with h
state_before: ι : Type ?u.798449
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a✝ : α
f✝ g : α → β
inst✝¹ : CommMonoid β
f : α → Prop
inst✝ : DecidablePred f
hf : Set.PairwiseDisjoint (↑s) f
a : β
⊢ (∏ i in s, if f i then a else 1) = if ∃ i, i ∈ s ∧ f i then a else 1

tactic: obtain ⟨i, hi, hfi⟩ := h
state_before: case inl
ι : Type ?u.798449
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a✝ : α
f✝ g : α → β
inst✝¹ : CommMonoid β
f : α → Prop
inst✝ : DecidablePred f
hf : Set.PairwiseDisjoint (↑s) f
a : β
h : ∃ i, i ∈ s ∧ f i
⊢ (∏ i in s, if f i then a else 1) = a

tactic: rw [prod_eq_single_of_mem _ hi, if_pos hfi]
state_before: case inl.intro.intro
ι : Type ?u.798449
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a✝ : α
f✝ g : α → β
inst✝¹ : CommMonoid β
f : α → Prop
inst✝ : DecidablePred f
hf : Set.PairwiseDisjoint (↑s) f
a : β
i : α
hi : i ∈ s
hfi : f i
⊢ (∏ i in s, if f i then a else 1) = a

tactic: exact fun j hj h => if_neg fun hfj => (hf hj hi h).le_bot ⟨hfj, hfi⟩
state_before: case inl.intro.intro
ι : Type ?u.798449
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a✝ : α
f✝ g : α → β
inst✝¹ : CommMonoid β
f : α → Prop
inst✝ : DecidablePred f
hf : Set.PairwiseDisjoint (↑s) f
a : β
i : α
hi : i ∈ s
hfi : f i
⊢ ∀ (b : α), b ∈ s → b ≠ i → (if f b then a else 1) = 1

tactic: push_neg  at h
state_before: case inr
ι : Type ?u.798449
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a✝ : α
f✝ g : α → β
inst✝¹ : CommMonoid β
f : α → Prop
inst✝ : DecidablePred f
hf : Set.PairwiseDisjoint (↑s) f
a : β
h : ¬∃ i, i ∈ s ∧ f i
⊢ (∏ i in s, if f i then a else 1) = 1

tactic: rw [prod_eq_one]
state_before: case inr
ι : Type ?u.798449
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a✝ : α
f✝ g : α → β
inst✝¹ : CommMonoid β
f : α → Prop
inst✝ : DecidablePred f
hf : Set.PairwiseDisjoint (↑s) f
a : β
h : ∀ (i : α), i ∈ s → ¬f i
⊢ (∏ i in s, if f i then a else 1) = 1

tactic: exact fun i hi => if_neg (h i hi)
state_before: case inr
ι : Type ?u.798449
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a✝ : α
f✝ g : α → β
inst✝¹ : CommMonoid β
f : α → Prop
inst✝ : DecidablePred f
hf : Set.PairwiseDisjoint (↑s) f
a : β
h : ∀ (i : α), i ∈ s → ¬f i
⊢ ∀ (x : α), x ∈ s → (if f x then a else 1) = 1