tasksource/leandojo huggingface dataset:
Theorem: GromovHausdorff.HD_bound_aux2
File: Mathlib/Topology/MetricSpace/GromovHausdorffRealized.lean

tactic: rcases (Real.bounded_iff_bddBelow_bddAbove.1 f.bounded_range).2 with ⟨Cf, hCf⟩
state_before: X : Type u
Y : Type v
inst✝⁵ : MetricSpace X
inst✝⁴ : CompactSpace X
inst✝³ : Nonempty X
inst✝² : MetricSpace Y
inst✝¹ : CompactSpace Y
inst✝ : Nonempty Y
f✝ : GromovHausdorff.ProdSpaceFun X Y
x y z t : X ⊕ Y
f : GromovHausdorff.Cb X Y
C : ℝ
⊢ BddAbove (range fun y => ⨅ (x : X), ↑f (inl x, inr y) + C)

tactic: refine' ⟨Cf + C, forall_range_iff.2 fun y => _⟩
state_before: case intro
X : Type u
Y : Type v
inst✝⁵ : MetricSpace X
inst✝⁴ : CompactSpace X
inst✝³ : Nonempty X
inst✝² : MetricSpace Y
inst✝¹ : CompactSpace Y
inst✝ : Nonempty Y
f✝ : GromovHausdorff.ProdSpaceFun X Y
x y z t : X ⊕ Y
f : GromovHausdorff.Cb X Y
C Cf : ℝ
hCf : Cf ∈ upperBounds (range ↑f)
⊢ BddAbove (range fun y => ⨅ (x : X), ↑f (inl x, inr y) + C)

tactic: calc
  (⨅ x, f (inl x, inr y) + C) ≤ f (inl default, inr y) + C := ciInf_le (HD_below_aux2 C) default
  _ ≤ Cf + C := add_le_add ((fun x => hCf (mem_range_self x)) _) le_rfl
state_before: case intro
X : Type u
Y : Type v
inst✝⁵ : MetricSpace X
inst✝⁴ : CompactSpace X
inst✝³ : Nonempty X
inst✝² : MetricSpace Y
inst✝¹ : CompactSpace Y
inst✝ : Nonempty Y
f✝ : GromovHausdorff.ProdSpaceFun X Y
x y✝ z t : X ⊕ Y
f : GromovHausdorff.Cb X Y
C Cf : ℝ
hCf : Cf ∈ upperBounds (range ↑f)
y : Y
⊢ (⨅ (x : X), ↑f (inl x, inr y) + C) ≤ Cf + C
Theorem: CategoryTheory.Limits.biprod_isoCoprod_hom
File: Mathlib/CategoryTheory/Limits/Shapes/Biproducts.lean

tactic: apply biprod.hom_ext' <;> simp [← Iso.eq_comp_inv]
state_before: J : Type w
C : Type u
inst✝² : Category C
inst✝¹ : HasZeroMorphisms C
P Q X Y : C
inst✝ : HasBinaryBiproduct X Y
⊢ (biprod.isoCoprod X Y).hom = biprod.desc coprod.inl coprod.inr
Theorem: closure_subset_preimage_closure_image
File: Mathlib/Topology/Basic.lean

tactic: rw [← Set.image_subset_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.173393
δ : Type ?u.173396
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f : α → β
s : Set α
h : Continuous f
⊢ closure s ⊆ f ⁻¹' closure (f '' s)

tactic: exact image_closure_subset_closure_image h
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.173393
δ : Type ?u.173396
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f : α → β
s : Set α
h : Continuous f
⊢ f '' closure s ⊆ closure (f '' s)
Theorem: modelWithCornersSelf_prod
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: ext1 <;> simp
state_before: 𝕜 : Type u_3
inst✝¹² : NontriviallyNormedField 𝕜
E : Type u_1
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
E' : Type ?u.86260
inst✝⁹ : NormedAddCommGroup E'
inst✝⁸ : NormedSpace 𝕜 E'
F : Type u_2
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type ?u.86466
inst✝⁵ : NormedAddCommGroup F'
inst✝⁴ : NormedSpace 𝕜 F'
H : Type ?u.86569
inst✝³ : TopologicalSpace H
H' : Type ?u.86575
inst✝² : TopologicalSpace H'
G : Type ?u.86581
inst✝¹ : TopologicalSpace G
G' : Type ?u.86587
inst✝ : TopologicalSpace G'
I : ModelWithCorners 𝕜 E H
J : ModelWithCorners 𝕜 F G
⊢ 𝓘(𝕜, E × F) = ModelWithCorners.prod 𝓘(𝕜, E) 𝓘(𝕜, F)
Theorem: Equiv.Perm.toList_nthLe_zero
File: Mathlib/GroupTheory/Perm/Cycle/Concrete.lean

tactic: simp [toList]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
p : Perm α
x : α
h : x ∈ support p
⊢ nthLe (toList p x) 0 (_ : 0 < length (toList p x)) = x
Theorem: BoxIntegral.Prepartition.IsPartition.compl_eq_bot
File: Mathlib/Analysis/BoxIntegral/Partition/Split.lean

tactic: rw [← iUnion_eq_empty, iUnion_compl, h.iUnion_eq, diff_self]
state_before: ι : Type u_1
M : Type ?u.67733
n : ℕ
I J : Box ι
i : ι
x : ℝ
inst✝ : Finite ι
π : Prepartition I
h : IsPartition π
⊢ compl π = ⊥
Theorem: AccPt.nhds_inter
File: Mathlib/Topology/Perfect.lean

tactic: have : 𝓝[≠] x ≤ 𝓟 U := by
  rw [le_principal_iff]
  exact mem_nhdsWithin_of_mem_nhds hU
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
x : α
U : Set α
h_acc : AccPt x (𝓟 C)
hU : U ∈ 𝓝 x
⊢ AccPt x (𝓟 (U ∩ C))

tactic: rw [AccPt, ← inf_principal, ← inf_assoc, inf_of_le_left this]
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
x : α
U : Set α
h_acc : AccPt x (𝓟 C)
hU : U ∈ 𝓝 x
this : 𝓝[{x}ᶜ] x ≤ 𝓟 U
⊢ AccPt x (𝓟 (U ∩ C))

tactic: exact h_acc
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
x : α
U : Set α
h_acc : AccPt x (𝓟 C)
hU : U ∈ 𝓝 x
this : 𝓝[{x}ᶜ] x ≤ 𝓟 U
⊢ NeBot (𝓝[{x}ᶜ] x ⊓ 𝓟 C)

tactic: rw [le_principal_iff]
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
x : α
U : Set α
h_acc : AccPt x (𝓟 C)
hU : U ∈ 𝓝 x
⊢ 𝓝[{x}ᶜ] x ≤ 𝓟 U

tactic: exact mem_nhdsWithin_of_mem_nhds hU
state_before: α : Type u_1
inst✝ : TopologicalSpace α
C : Set α
x : α
U : Set α
h_acc : AccPt x (𝓟 C)
hU : U ∈ 𝓝 x
⊢ U ∈ 𝓝[{x}ᶜ] x
Theorem: IsPathConnected.image
File: Mathlib/Topology/PathConnected.lean

tactic: rcases hF with ⟨x, x_in, hx⟩
state_before: X : Type u_2
Y✝ : Type ?u.644326
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y✝
x y z : X
ι : Type ?u.644341
F : Set X
Y : Type u_1
inst✝ : TopologicalSpace Y
hF : IsPathConnected F
f : X → Y
hf : Continuous f
⊢ IsPathConnected (f '' F)

tactic: use f x, mem_image_of_mem f x_in
state_before: case intro.intro
X : Type u_2
Y✝ : Type ?u.644326
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y✝
x✝ y z : X
ι : Type ?u.644341
F : Set X
Y : Type u_1
inst✝ : TopologicalSpace Y
f : X → Y
hf : Continuous f
x : X
x_in : x ∈ F
hx : ∀ {y : X}, y ∈ F → JoinedIn F x y
⊢ IsPathConnected (f '' F)

tactic: rintro _ ⟨y, y_in, rfl⟩
state_before: case intro.intro
X : Type u_2
Y✝ : Type ?u.644326
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y✝
x✝ y z : X
ι : Type ?u.644341
F : Set X
Y : Type u_1
inst✝ : TopologicalSpace Y
f : X → Y
hf : Continuous f
x : X
x_in : x ∈ F
hx : ∀ {y : X}, y ∈ F → JoinedIn F x y
⊢ ∀ {y : Y}, y ∈ f '' F → JoinedIn (f '' F) (f x) y

tactic: exact ⟨(hx y_in).somePath.map hf, fun t => ⟨_, (hx y_in).somePath_mem t, rfl⟩⟩
state_before: case intro.intro.intro.intro
X : Type u_2
Y✝ : Type ?u.644326
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y✝
x✝ y✝ z : X
ι : Type ?u.644341
F : Set X
Y : Type u_1
inst✝ : TopologicalSpace Y
f : X → Y
hf : Continuous f
x : X
x_in : x ∈ F
hx : ∀ {y : X}, y ∈ F → JoinedIn F x y
y : X
y_in : y ∈ F
⊢ JoinedIn (f '' F) (f x) (f y)
Theorem: inv_mul_le_iff_le_mul'
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [inv_mul_le_iff_le_mul, 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 : α
⊢ c⁻¹ * a ≤ b ↔ a ≤ b * c
Theorem: NonUnitalAlgHom.to_mulHom_injective
File: Mathlib/Algebra/Hom/NonUnitalAlg.lean

tactic: ext a
state_before: R : Type u
A : Type v
B : Type w
C : Type w₁
inst✝⁶ : Monoid R
inst✝⁵ : NonUnitalNonAssocSemiring A
inst✝⁴ : DistribMulAction R A
inst✝³ : NonUnitalNonAssocSemiring B
inst✝² : DistribMulAction R B
inst✝¹ : NonUnitalNonAssocSemiring C
inst✝ : DistribMulAction R C
f g : A →ₙₐ[R] B
h : ↑f = ↑g
⊢ f = g

tactic: exact FunLike.congr_fun h a
state_before: case h
R : Type u
A : Type v
B : Type w
C : Type w₁
inst✝⁶ : Monoid R
inst✝⁵ : NonUnitalNonAssocSemiring A
inst✝⁴ : DistribMulAction R A
inst✝³ : NonUnitalNonAssocSemiring B
inst✝² : DistribMulAction R B
inst✝¹ : NonUnitalNonAssocSemiring C
inst✝ : DistribMulAction R C
f g : A →ₙₐ[R] B
h : ↑f = ↑g
a : A
⊢ ↑f a = ↑g a
Theorem: isClosed_biUnion
File: Mathlib/Topology/Basic.lean

tactic: simp only [← isOpen_compl_iff, compl_iUnion] at *
state_before: α : Type u
β : Type v
ι : Sort w
a : α
s✝ s₁ s₂ t : Set α
p p₁ p₂ : α → Prop
inst✝ : TopologicalSpace α
s : Set β
f : β → Set α
hs : Set.Finite s
h : ∀ (i : β), i ∈ s → IsClosed (f i)
⊢ IsClosed (⋃ (i : β) (_ : i ∈ s), f i)

tactic: exact isOpen_biInter hs h
state_before: α : Type u
β : Type v
ι : Sort w
a : α
s✝ s₁ s₂ t : Set α
p p₁ p₂ : α → Prop
inst✝ : TopologicalSpace α
s : Set β
f : β → Set α
hs : Set.Finite s
h : ∀ (i : β), i ∈ s → IsOpen (f iᶜ)
⊢ IsOpen (⋂ (i : β) (_ : i ∈ s), f iᶜ)
Theorem: CochainComplex.mk'_d_1_0
File: Mathlib/Algebra/Homology/HomologicalComplex.lean

tactic: change ite (1 = 0 + 1) (d₀ ≫ 𝟙 X₁) 0 = d₀
state_before: ι : Type ?u.332610
V : Type u
inst✝¹ : Category V
inst✝ : HasZeroMorphisms V
X₀ X₁ X₂ : V
d₀ : X₀ ⟶ X₁
d₁ : X₁ ⟶ X₂
s : d₀ ≫ d₁ = 0
succ :
  (t : (X₀ : V) ×' (X₁ : V) ×' (X₂ : V) ×' (d₀ : X₀ ⟶ X₁) ×' (d₁ : X₁ ⟶ X₂) ×' d₀ ≫ d₁ = 0) →
    (X₃ : V) ×' (d₂ : t.snd.snd.fst ⟶ X₃) ×' t.snd.snd.snd.snd.fst ≫ d₂ = 0
succ' : (t : (X₀ : V) × (X₁ : V) × (X₀ ⟶ X₁)) → (X₂ : V) ×' (d : t.snd.fst ⟶ X₂) ×' t.snd.snd ≫ d = 0
⊢ HomologicalComplex.d (mk' X₀ X₁ d₀ succ') 0 1 = d₀

tactic: rw [if_pos rfl, Category.comp_id]
state_before: ι : Type ?u.332610
V : Type u
inst✝¹ : Category V
inst✝ : HasZeroMorphisms V
X₀ X₁ X₂ : V
d₀ : X₀ ⟶ X₁
d₁ : X₁ ⟶ X₂
s : d₀ ≫ d₁ = 0
succ :
  (t : (X₀ : V) ×' (X₁ : V) ×' (X₂ : V) ×' (d₀ : X₀ ⟶ X₁) ×' (d₁ : X₁ ⟶ X₂) ×' d₀ ≫ d₁ = 0) →
    (X₃ : V) ×' (d₂ : t.snd.snd.fst ⟶ X₃) ×' t.snd.snd.snd.snd.fst ≫ d₂ = 0
succ' : (t : (X₀ : V) × (X₁ : V) × (X₀ ⟶ X₁)) → (X₂ : V) ×' (d : t.snd.fst ⟶ X₂) ×' t.snd.snd ≫ d = 0
⊢ (if 1 = 0 + 1 then d₀ ≫ 𝟙 X₁ else 0) = d₀
Theorem: Cardinal.powerlt_aleph0
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: apply le_antisymm
state_before: c : Cardinal
h : ℵ₀ ≤ c
⊢ c ^< ℵ₀ = c

tactic: convert le_powerlt c one_lt_aleph0
state_before: case a
c : Cardinal
h : ℵ₀ ≤ c
⊢ c ≤ c ^< ℵ₀

tactic: rw [power_one]
state_before: case h.e'_3
c : Cardinal
h : ℵ₀ ≤ c
⊢ c = c ^ 1

tactic: rw [powerlt_le]
state_before: case a
c : Cardinal
h : ℵ₀ ≤ c
⊢ c ^< ℵ₀ ≤ c

tactic: intro c'
state_before: case a
c : Cardinal
h : ℵ₀ ≤ c
⊢ ∀ (x : Cardinal), x < ℵ₀ → c ^ x ≤ c

tactic: rw [lt_aleph0]
state_before: case a
c : Cardinal
h : ℵ₀ ≤ c
c' : Cardinal
⊢ c' < ℵ₀ → c ^ c' ≤ c

tactic: rintro ⟨n, rfl⟩
state_before: case a
c : Cardinal
h : ℵ₀ ≤ c
c' : Cardinal
⊢ (∃ n, c' = ↑n) → c ^ c' ≤ c

tactic: apply power_nat_le h
state_before: case a.intro
c : Cardinal
h : ℵ₀ ≤ c
n : ℕ
⊢ c ^ ↑n ≤ c
Theorem: Finset.image₂_swap
File: Mathlib/Data/Finset/NAry.lean

tactic: push_cast
state_before: α : Type u_1
α' : Type ?u.68272
β : Type u_2
β' : Type ?u.68278
γ : Type u_3
γ' : Type ?u.68284
δ : Type ?u.68287
δ' : Type ?u.68290
ε : Type ?u.68293
ε' : Type ?u.68296
ζ : Type ?u.68299
ζ' : Type ?u.68302
ν : Type ?u.68305
inst✝⁷ : DecidableEq α'
inst✝⁶ : DecidableEq β'
inst✝⁵ : DecidableEq γ
inst✝⁴ : DecidableEq γ'
inst✝³ : DecidableEq δ
inst✝² : DecidableEq δ'
inst✝¹ : DecidableEq ε
inst✝ : DecidableEq ε'
f✝ f' : α → β → γ
g g' : α → β → γ → δ
s✝ s' : Finset α
t✝ t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
f : α → β → γ
s : Finset α
t : Finset β
⊢ ↑(image₂ f s t) = ↑(image₂ (fun a b => f b a) t s)

tactic: exact image2_swap _ _ _
state_before: α : Type u_1
α' : Type ?u.68272
β : Type u_2
β' : Type ?u.68278
γ : Type u_3
γ' : Type ?u.68284
δ : Type ?u.68287
δ' : Type ?u.68290
ε : Type ?u.68293
ε' : Type ?u.68296
ζ : Type ?u.68299
ζ' : Type ?u.68302
ν : Type ?u.68305
inst✝⁷ : DecidableEq α'
inst✝⁶ : DecidableEq β'
inst✝⁵ : DecidableEq γ
inst✝⁴ : DecidableEq γ'
inst✝³ : DecidableEq δ
inst✝² : DecidableEq δ'
inst✝¹ : DecidableEq ε
inst✝ : DecidableEq ε'
f✝ f' : α → β → γ
g g' : α → β → γ → δ
s✝ s' : Finset α
t✝ t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
f : α → β → γ
s : Finset α
t : Finset β
⊢ image2 f ↑s ↑t = image2 (fun a b => f b a) ↑t ↑s
Theorem: Bool.right_le_or
File: Mathlib/Data/Bool/Basic.lean

tactic: decide
state_before: ⊢ ∀ (x y : Bool), y ≤ (x || y)
Theorem: Computable.nat_strong_rec
File: Mathlib/Computability/Partrec.lean

tactic: simp [List.get?_range (Nat.lt_succ_self a.2)]
state_before: α : Type u_2
β : Type ?u.196468
γ : Type ?u.196471
σ : Type u_1
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α → ℕ → σ
g : α → List σ → Option σ
hg : Computable₂ g
H : ∀ (a : α) (n : ℕ), g a (List.map (f a) (List.range n)) = Option.some (f a n)
this : Computable₂ fun a n => List.map (f a) (List.range n)
a : α × ℕ
⊢ (fun a b => List.get? (List.map (f (a, b).fst) (List.range (Nat.succ (a, b).snd))) (a, b).snd) a.fst a.snd =
    Option.some (f a.fst a.snd)

tactic: simp
state_before: α : Type u_2
β : Type ?u.196468
γ : Type ?u.196471
σ : Type u_1
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α → ℕ → σ
g : α → List σ → Option σ
hg : Computable₂ g
H : ∀ (a : α) (n : ℕ), g a (List.map (f a) (List.range n)) = Option.some (f a n)
a : α × ℕ
⊢ Nat.rec (Option.some [])
      (fun y IH =>
        Option.bind (a, y, IH).snd.snd fun b =>
          Option.map (fun b_1 => (((a, y, IH), b), b_1).fst.snd ++ [(((a, y, IH), b), b_1).snd])
            (g ((a, y, IH), b).fst.fst.fst ((a, y, IH), b).snd))
      a.snd =
    Option.some ((fun a n => List.map (f a) (List.range n)) a.fst a.snd)

tactic: induction' a.2 with n IH
state_before: α : Type u_2
β : Type ?u.196468
γ : Type ?u.196471
σ : Type u_1
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α → ℕ → σ
g : α → List σ → Option σ
hg : Computable₂ g
H : ∀ (a : α) (n : ℕ), g a (List.map (f a) (List.range n)) = Option.some (f a n)
a : α × ℕ
⊢ Nat.rec (Option.some []) (fun y IH => Option.bind IH fun b => Option.map (fun b_1 => b ++ [b_1]) (g a.fst b)) a.snd =
    Option.some (List.map (f a.fst) (List.range a.snd))

tactic: simp [IH, H, List.range_succ]
state_before: case succ
α : Type u_2
β : Type ?u.196468
γ : Type ?u.196471
σ : Type u_1
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α → ℕ → σ
g : α → List σ → Option σ
hg : Computable₂ g
H : ∀ (a : α) (n : ℕ), g a (List.map (f a) (List.range n)) = Option.some (f a n)
a : α × ℕ
n : ℕ
IH :
  Nat.rec (Option.some []) (fun y IH => Option.bind IH fun b => Option.map (fun b_1 => b ++ [b_1]) (g a.fst b)) n =
    Option.some (List.map (f a.fst) (List.range n))
⊢ Nat.rec (Option.some []) (fun y IH => Option.bind IH fun b => Option.map (fun b_1 => b ++ [b_1]) (g a.fst b))
      (Nat.succ n) =
    Option.some (List.map (f a.fst) (List.range (Nat.succ n)))

tactic: rfl
state_before: case zero
α : Type u_2
β : Type ?u.196468
γ : Type ?u.196471
σ : Type u_1
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α → ℕ → σ
g : α → List σ → Option σ
hg : Computable₂ g
H : ∀ (a : α) (n : ℕ), g a (List.map (f a) (List.range n)) = Option.some (f a n)
a : α × ℕ
⊢ Nat.rec (Option.some []) (fun y IH => Option.bind IH fun b => Option.map (fun b_1 => b ++ [b_1]) (g a.fst b))
      Nat.zero =
    Option.some (List.map (f a.fst) (List.range Nat.zero))
Theorem: orthogonalProjectionFn_inner_eq_zero
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

tactic: rw [← norm_eq_iInf_iff_inner_eq_zero K (orthogonalProjectionFn_mem v)]
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.454763
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
v : E
⊢ ∀ (w : E), w ∈ K → inner (v - orthogonalProjectionFn K v) w = 0

tactic: exact
  (exists_norm_eq_iInf_of_complete_subspace K (completeSpace_coe_iff_isComplete.mp ‹_›)
        v).choose_spec.right
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.454763
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
v : E
⊢ ‖v - orthogonalProjectionFn K v‖ = ⨅ (w : { x // x ∈ K }), ‖v - ↑w‖
Theorem: AddCircle.exists_norm_eq_of_isOfFinAddOrder
File: Mathlib/Analysis/Normed/Group/AddCircle.lean

tactic: let n := addOrderOf u
state_before: p : ℝ
hp : Fact (0 < p)
u : AddCircle p
hu : IsOfFinAddOrder u
⊢ ∃ k, ‖u‖ = p * (↑k / ↑(addOrderOf u))

tactic: change ∃ k : ℕ, ‖u‖ = p * (k / n)
state_before: p : ℝ
hp : Fact (0 < p)
u : AddCircle p
hu : IsOfFinAddOrder u
n : ℕ := addOrderOf u
⊢ ∃ k, ‖u‖ = p * (↑k / ↑(addOrderOf u))

tactic: obtain ⟨m, -, -, hm⟩ := exists_gcd_eq_one_of_isOfFinAddOrder hu
state_before: p : ℝ
hp : Fact (0 < p)
u : AddCircle p
hu : IsOfFinAddOrder u
n : ℕ := addOrderOf u
⊢ ∃ k, ‖u‖ = p * (↑k / ↑n)

tactic: refine' ⟨min (m % n) (n - m % n), _⟩
state_before: case intro.intro.intro
p : ℝ
hp : Fact (0 < p)
u : AddCircle p
hu : IsOfFinAddOrder u
n : ℕ := addOrderOf u
m : ℕ
hm : ↑(↑m / ↑(addOrderOf u) * p) = u
⊢ ∃ k, ‖u‖ = p * (↑k / ↑n)

tactic: rw [← hm, norm_div_nat_cast]
state_before: case intro.intro.intro
p : ℝ
hp : Fact (0 < p)
u : AddCircle p
hu : IsOfFinAddOrder u
n : ℕ := addOrderOf u
m : ℕ
hm : ↑(↑m / ↑(addOrderOf u) * p) = u
⊢ ‖u‖ = p * (↑(min (m % n) (n - m % n)) / ↑n)
Theorem: stdSimplex_subset_closedBall
File: Mathlib/Analysis/Convex/Topology.lean

tactic: intro f hf
state_before: ι : Type u_1
𝕜 : Type ?u.492
E : Type ?u.495
inst✝ : Fintype ι
⊢ stdSimplex ℝ ι ⊆ closedBall 0 1

tactic: rw [Metric.mem_closedBall, dist_pi_le_iff zero_le_one]
state_before: ι : Type u_1
𝕜 : Type ?u.492
E : Type ?u.495
inst✝ : Fintype ι
f : ι → ℝ
hf : f ∈ stdSimplex ℝ ι
⊢ f ∈ closedBall 0 1

tactic: intro x
state_before: ι : Type u_1
𝕜 : Type ?u.492
E : Type ?u.495
inst✝ : Fintype ι
f : ι → ℝ
hf : f ∈ stdSimplex ℝ ι
⊢ ∀ (b : ι), dist (f b) (OfNat.ofNat 0 b) ≤ 1

tactic: rw [Pi.zero_apply, Real.dist_0_eq_abs, abs_of_nonneg <| hf.1 x]
state_before: ι : Type u_1
𝕜 : Type ?u.492
E : Type ?u.495
inst✝ : Fintype ι
f : ι → ℝ
hf : f ∈ stdSimplex ℝ ι
x : ι
⊢ dist (f x) (OfNat.ofNat 0 x) ≤ 1

tactic: exact (mem_Icc_of_mem_stdSimplex hf x).2
state_before: ι : Type u_1
𝕜 : Type ?u.492
E : Type ?u.495
inst✝ : Fintype ι
f : ι → ℝ
hf : f ∈ stdSimplex ℝ ι
x : ι
⊢ f x ≤ 1
Theorem: GroupCat.SurjectiveOfEpiAuxs.g_apply_fromCoset
File: Mathlib/Algebra/Category/GroupCat/EpiMono.lean

tactic: aesop_cat
state_before: A B : GroupCat
f : A ⟶ B
x : ↑B
y : ↑(Set.range (Function.swap leftCoset (MonoidHom.range f).toSubmonoid.toSubsemigroup.carrier))
⊢ x *l ↑y ∈ Set.range (Function.swap leftCoset (MonoidHom.range f).toSubmonoid.toSubsemigroup.carrier)
Theorem: invOf_mul_self_assoc'
File: Mathlib/Algebra/Invertible.lean

tactic: rw [← mul_assoc, invOf_mul_self, one_mul]
state_before: α : Type u
inst✝ : Monoid α
a b : α
x✝ : Invertible a
⊢ ⅟a * (a * b) = b
Theorem: List.insertNth_comm
File: Mathlib/Data/List/Basic.lean

tactic: simp [insertNth]
state_before: ι : Type ?u.117403
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
a✝ a b : α
j : ℕ
l : List α
⊢ 0 ≤ j → j ≤ length l → insertNth (j + 1) b (insertNth 0 a l) = insertNth 0 a (insertNth j b l)

tactic: simp
state_before: ι : Type ?u.117403
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
a✝ a b : α
i j : ℕ
⊢ i + 1 ≤ j + 1 →
    j + 1 ≤ length [] → insertNth (j + 1 + 1) b (insertNth (i + 1) a []) = insertNth (i + 1) a (insertNth (j + 1) b [])

tactic: simp [insertNth]
state_before: ι : Type ?u.117403
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
a✝ a b : α
i j : ℕ
c : α
l : List α
h₀ : i + 1 ≤ j + 1
h₁ : j + 1 ≤ length (c :: l)
⊢ insertNth (j + 1 + 1) b (insertNth (i + 1) a (c :: l)) = insertNth (i + 1) a (insertNth (j + 1) b (c :: l))

tactic: exact insertNth_comm a b i j l (Nat.le_of_succ_le_succ h₀) (Nat.le_of_succ_le_succ h₁)
state_before: ι : Type ?u.117403
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
a✝ a b : α
i j : ℕ
c : α
l : List α
h₀ : i + 1 ≤ j + 1
h₁ : j + 1 ≤ length (c :: l)
⊢ modifyNthTail (cons b) (j + 1) (modifyNthTail (cons a) i l) = modifyNthTail (cons a) i (modifyNthTail (cons b) j l)
Theorem: reesAlgebra.monomial_mem
File: Mathlib/RingTheory/ReesAlgebra.lean

tactic: simp (config := { contextual := true }) [mem_reesAlgebra_iff_support, coeff_monomial, ←
  imp_iff_not_or]
state_before: R M : Type u
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I✝ I : Ideal R
i : ℕ
r : R
⊢ ↑(monomial i) r ∈ reesAlgebra I ↔ r ∈ I ^ i
Theorem: Ordinal.cof_eq'
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: rw [typein_enum]
state_before: α : Type u_1
r✝ r : α → α → Prop
inst✝ : IsWellOrder α r
h✝ : IsLimit (type r)
S : Set α
H : Unbounded r S
e : (#↑S) = cof (type r)
a : α
a' : α := enum r (succ (typein r a)) (_ : succ (typein r a) < type r)
b : α
h : b ∈ S
ab : ¬r b a'
⊢ typein r a < typein r a'

tactic: exact lt_succ (typein _ _)
state_before: α : Type u_1
r✝ r : α → α → Prop
inst✝ : IsWellOrder α r
h✝ : IsLimit (type r)
S : Set α
H : Unbounded r S
e : (#↑S) = cof (type r)
a : α
a' : α := enum r (succ (typein r a)) (_ : succ (typein r a) < type r)
b : α
h : b ∈ S
ab : ¬r b a'
⊢ typein r a < succ (typein r a)
Theorem: MeasureTheory.LocallyIntegrableOn.continuousOn_smul
File: Mathlib/MeasureTheory/Function/LocallyIntegrable.lean

tactic: rw [MeasureTheory.locallyIntegrableOn_iff (Or.inr hs)] at hf⊢
state_before: X : Type u_1
Y : Type ?u.2500484
E : Type u_3
R : Type ?u.2500490
inst✝¹⁰ : MeasurableSpace X
inst✝⁹ : TopologicalSpace X
inst✝⁸ : MeasurableSpace Y
inst✝⁷ : TopologicalSpace Y
inst✝⁶ : NormedAddCommGroup E
f✝ : X → E
μ : Measure X
s✝ : Set X
inst✝⁵ : OpensMeasurableSpace X
A K : Set X
inst✝⁴ : LocallyCompactSpace X
inst✝³ : T2Space X
𝕜 : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SecondCountableTopologyEither X 𝕜
inst✝ : NormedSpace 𝕜 E
f : X → E
g : X → 𝕜
s : Set X
hs : IsOpen s
hf : LocallyIntegrableOn f s
hg : ContinuousOn g s
⊢ LocallyIntegrableOn (fun x => g x • f x) s

tactic: exact fun k hk_sub hk_c => (hf k hk_sub hk_c).continuousOn_smul (hg.mono hk_sub) hk_c
state_before: X : Type u_1
Y : Type ?u.2500484
E : Type u_3
R : Type ?u.2500490
inst✝¹⁰ : MeasurableSpace X
inst✝⁹ : TopologicalSpace X
inst✝⁸ : MeasurableSpace Y
inst✝⁷ : TopologicalSpace Y
inst✝⁶ : NormedAddCommGroup E
f✝ : X → E
μ : Measure X
s✝ : Set X
inst✝⁵ : OpensMeasurableSpace X
A K : Set X
inst✝⁴ : LocallyCompactSpace X
inst✝³ : T2Space X
𝕜 : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SecondCountableTopologyEither X 𝕜
inst✝ : NormedSpace 𝕜 E
f : X → E
g : X → 𝕜
s : Set X
hs : IsOpen s
hf : ∀ (k : Set X), k ⊆ s → IsCompact k → IntegrableOn f k
hg : ContinuousOn g s
⊢ ∀ (k : Set X), k ⊆ s → IsCompact k → IntegrableOn (fun x => g x • f x) k
Theorem: List.prod_range_succ'
File: Mathlib/Data/List/Range.lean

tactic: rw [one_mul, mul_one]
state_before: α✝ α : Type u
inst✝ : Monoid α
f : ℕ → α
n : ℕ
⊢ 1 * f 0 = f 0 * 1

tactic: rw [List.prod_range_succ, hd, mul_assoc, ← List.prod_range_succ]
state_before: α✝ α : Type u
inst✝ : Monoid α
f : ℕ → α
n x✝ : ℕ
hd : prod (map f (range (succ x✝))) = f 0 * prod (map (fun i => f (succ i)) (range x✝))
⊢ prod (map f (range (succ (succ x✝)))) = f 0 * prod (map (fun i => f (succ i)) (range (succ x✝)))
Theorem: Finset.attach_map_val
File: Mathlib/Data/Finset/Image.lean

tactic: rw [map_val, attach_val]
state_before: α : Type u_1
β : Type ?u.45169
γ : Type ?u.45172
f : α ↪ β
s✝ s : Finset α
⊢ (map (Embedding.subtype fun x => x ∈ s) (attach s)).val = s.val

tactic: exact Multiset.attach_map_val _
state_before: α : Type u_1
β : Type ?u.45169
γ : Type ?u.45172
f : α ↪ β
s✝ s : Finset α
⊢ Multiset.map (↑(Embedding.subtype fun x => x ∈ s)) (Multiset.attach s.val) = s.val
Theorem: MeasureTheory.OuterMeasure.trim_eq_trim_iff
File: Mathlib/MeasureTheory/Measure/OuterMeasure.lean

tactic: simp only [le_antisymm_iff, trim_le_trim_iff, forall_and]
state_before: α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
⊢ trim m₁ = trim m₂ ↔ ∀ (s : Set α), MeasurableSet s → ↑m₁ s = ↑m₂ s