tasksource/leandojo huggingface dataset:
Theorem: Set.piecewise_insert
File: Mathlib/Data/Set/Function.lean

tactic: simp [piecewise]
state_before: α : Type u_1
β : Type ?u.73354
γ : Type ?u.73357
ι : Sort ?u.73360
π : α → Type ?u.73365
δ : α → Sort u_2
s : Set α
f g : (i : α) → δ i
inst✝² : (j : α) → Decidable (j ∈ s)
inst✝¹ : DecidableEq α
j : α
inst✝ : (i : α) → Decidable (i ∈ insert j s)
⊢ piecewise (insert j s) f g = update (piecewise s f g) j (f j)

tactic: ext i
state_before: α : Type u_1
β : Type ?u.73354
γ : Type ?u.73357
ι : Sort ?u.73360
π : α → Type ?u.73365
δ : α → Sort u_2
s : Set α
f g : (i : α) → δ i
inst✝² : (j : α) → Decidable (j ∈ s)
inst✝¹ : DecidableEq α
j : α
inst✝ : (i : α) → Decidable (i ∈ insert j s)
⊢ (fun i => if i = j ∨ i ∈ s then f i else g i) = update (fun i => if i ∈ s then f i else g i) j (f j)

tactic: by_cases h : i = j
state_before: case h
α : Type u_1
β : Type ?u.73354
γ : Type ?u.73357
ι : Sort ?u.73360
π : α → Type ?u.73365
δ : α → Sort u_2
s : Set α
f g : (i : α) → δ i
inst✝² : (j : α) → Decidable (j ∈ s)
inst✝¹ : DecidableEq α
j : α
inst✝ : (i : α) → Decidable (i ∈ insert j s)
i : α
⊢ (if i = j ∨ i ∈ s then f i else g i) = update (fun i => if i ∈ s then f i else g i) j (f j) i

tactic: rw [h]
state_before: case pos
α : Type u_1
β : Type ?u.73354
γ : Type ?u.73357
ι : Sort ?u.73360
π : α → Type ?u.73365
δ : α → Sort u_2
s : Set α
f g : (i : α) → δ i
inst✝² : (j : α) → Decidable (j ∈ s)
inst✝¹ : DecidableEq α
j : α
inst✝ : (i : α) → Decidable (i ∈ insert j s)
i : α
h : i = j
⊢ (if i = j ∨ i ∈ s then f i else g i) = update (fun i => if i ∈ s then f i else g i) j (f j) i

tactic: simp
state_before: case pos
α : Type u_1
β : Type ?u.73354
γ : Type ?u.73357
ι : Sort ?u.73360
π : α → Type ?u.73365
δ : α → Sort u_2
s : Set α
f g : (i : α) → δ i
inst✝² : (j : α) → Decidable (j ∈ s)
inst✝¹ : DecidableEq α
j : α
inst✝ : (i : α) → Decidable (i ∈ insert j s)
i : α
h : i = j
⊢ (if j = j ∨ j ∈ s then f j else g j) = update (fun i => if i ∈ s then f i else g i) j (f j) j

tactic: by_cases h' : i ∈ s <;> simp [h, h']
state_before: case neg
α : Type u_1
β : Type ?u.73354
γ : Type ?u.73357
ι : Sort ?u.73360
π : α → Type ?u.73365
δ : α → Sort u_2
s : Set α
f g : (i : α) → δ i
inst✝² : (j : α) → Decidable (j ∈ s)
inst✝¹ : DecidableEq α
j : α
inst✝ : (i : α) → Decidable (i ∈ insert j s)
i : α
h : ¬i = j
⊢ (if i = j ∨ i ∈ s then f i else g i) = update (fun i => if i ∈ s then f i else g i) j (f j) i
Theorem: MvPolynomial.comap_comp
File: Mathlib/Data/MvPolynomial/Comap.lean

tactic: funext x
state_before: σ : Type u_2
τ : Type u_3
υ : Type u_4
R : Type u_1
inst✝ : CommSemiring R
f : MvPolynomial σ R →ₐ[R] MvPolynomial τ R
g : MvPolynomial τ R →ₐ[R] MvPolynomial υ R
⊢ comap (AlgHom.comp g f) = comap f ∘ comap g

tactic: exact comap_comp_apply _ _ _
state_before: case h
σ : Type u_2
τ : Type u_3
υ : Type u_4
R : Type u_1
inst✝ : CommSemiring R
f : MvPolynomial σ R →ₐ[R] MvPolynomial τ R
g : MvPolynomial τ R →ₐ[R] MvPolynomial υ R
x : υ → R
⊢ comap (AlgHom.comp g f) x = (comap f ∘ comap g) x
Theorem: Filter.Tendsto.atBot_mul_atTop
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: have : Tendsto (fun x => -f x * g x) l atTop :=
  (tendsto_neg_atBot_atTop.comp hf).atTop_mul_atTop hg
state_before: ι : Type ?u.197158
ι' : Type ?u.197161
α : Type u_2
β : Type u_1
γ : Type ?u.197170
inst✝ : StrictOrderedRing α
l : Filter β
f g : β → α
hf : Tendsto f l atBot
hg : Tendsto g l atTop
⊢ Tendsto (fun x => f x * g x) l atBot
Theorem: MeasureTheory.Measure.add_haar_closedBall'
File: Mathlib/MeasureTheory/Measure/Lebesgue/EqHaar.lean

tactic: rw [← add_haar_closedBall_mul μ x hr zero_le_one, mul_one]
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : IsAddHaarMeasure μ
F : Type ?u.2003002
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s : Set E
x : E
r : ℝ
hr : 0 ≤ r
⊢ ↑↑μ (closedBall x r) = ENNReal.ofReal (r ^ finrank ℝ E) * ↑↑μ (closedBall 0 1)
Theorem: RatFunc.toFractionRing_injective
File: Mathlib/FieldTheory/RatFunc.lean

tactic: subst xy
state_before: K : Type u
inst✝ : CommRing K
x y : FractionRing K[X]
xy : { toFractionRing := x }.toFractionRing = { toFractionRing := y }.toFractionRing
⊢ { toFractionRing := x } = { toFractionRing := y }

tactic: rfl
state_before: K : Type u
inst✝ : CommRing K
x : FractionRing K[X]
⊢ { toFractionRing := x } = { toFractionRing := { toFractionRing := x }.toFractionRing }
Theorem: Quotient.subsingleton_iff
File: Mathlib/Data/Setoid/Basic.lean

tactic: simp only [_root_.subsingleton_iff, eq_top_iff, Setoid.le_def, Setoid.top_def, Pi.top_apply,
  forall_const]
state_before: α : Type u_1
β : Type ?u.22286
s : Setoid α
⊢ Subsingleton (Quotient s) ↔ s = ⊤

tactic: refine' (surjective_quotient_mk _).forall.trans (forall_congr' fun a => _)
state_before: α : Type u_1
β : Type ?u.22286
s : Setoid α
⊢ (∀ (x y : Quotient s), x = y) ↔ ∀ {x y : α}, ⊤ → Setoid.Rel s x y

tactic: refine' (surjective_quotient_mk _).forall.trans (forall_congr' fun b => _)
state_before: α : Type u_1
β : Type ?u.22286
s : Setoid α
a : α
⊢ (∀ (y : Quotient s), Quotient.mk s a = y) ↔ ∀ {y : α}, ⊤ → Setoid.Rel s a y

tactic: simp_rw [←Quotient.mk''_eq_mk, Prop.top_eq_true, true_implies, Quotient.eq'']
state_before: α : Type u_1
β : Type ?u.22286
s : Setoid α
a b : α
⊢ Quotient.mk s a = Quotient.mk s b ↔ ⊤ → Setoid.Rel s a b

tactic: rfl
state_before: α : Type u_1
β : Type ?u.22286
s : Setoid α
a b : α
⊢ Setoid.r a b ↔ Setoid.Rel s a b
Theorem: WittVector.IsPoly.comp
File: Mathlib/RingTheory/WittVector/IsPoly.lean

tactic: obtain ⟨φ, hf⟩ := hf
state_before: p : ℕ
R S : Type u
σ : Type ?u.528965
idx : Type ?u.528968
inst✝¹ : CommRing R
inst✝ : CommRing S
g f : ⦃R : Type u_1⦄ → [inst : CommRing R] → 𝕎 R → 𝕎 R
hg : IsPoly p g
hf : IsPoly p f
⊢ IsPoly p fun R _Rcr => g ∘ f

tactic: obtain ⟨ψ, hg⟩ := hg
state_before: case mk'.intro
p : ℕ
R S : Type u
σ : Type ?u.528965
idx : Type ?u.528968
inst✝¹ : CommRing R
inst✝ : CommRing S
g f : ⦃R : Type u_1⦄ → [inst : CommRing R] → 𝕎 R → 𝕎 R
hg : IsPoly p g
φ : ℕ → MvPolynomial ℕ ℤ
hf : ∀ ⦃R : Type u_1⦄ [inst : CommRing R] (x : 𝕎 R), (f x).coeff = fun n => ↑(aeval x.coeff) (φ n)
⊢ IsPoly p fun R _Rcr => g ∘ f

tactic: use fun n => bind₁ φ (ψ n)
state_before: case mk'.intro.mk'.intro
p : ℕ
R S : Type u
σ : Type ?u.528965
idx : Type ?u.528968
inst✝¹ : CommRing R
inst✝ : CommRing S
g f : ⦃R : Type u_1⦄ → [inst : CommRing R] → 𝕎 R → 𝕎 R
φ : ℕ → MvPolynomial ℕ ℤ
hf : ∀ ⦃R : Type u_1⦄ [inst : CommRing R] (x : 𝕎 R), (f x).coeff = fun n => ↑(aeval x.coeff) (φ n)
ψ : ℕ → MvPolynomial ℕ ℤ
hg : ∀ ⦃R : Type u_1⦄ [inst : CommRing R] (x : 𝕎 R), (g x).coeff = fun n => ↑(aeval x.coeff) (ψ n)
⊢ IsPoly p fun R _Rcr => g ∘ f

tactic: intros
state_before: case mk'.intro.mk'.intro
p : ℕ
R S : Type u
σ : Type ?u.528965
idx : Type ?u.528968
inst✝¹ : CommRing R
inst✝ : CommRing S
g f : ⦃R : Type u_1⦄ → [inst : CommRing R] → 𝕎 R → 𝕎 R
φ : ℕ → MvPolynomial ℕ ℤ
hf : ∀ ⦃R : Type u_1⦄ [inst : CommRing R] (x : 𝕎 R), (f x).coeff = fun n => ↑(aeval x.coeff) (φ n)
ψ : ℕ → MvPolynomial ℕ ℤ
hg : ∀ ⦃R : Type u_1⦄ [inst : CommRing R] (x : 𝕎 R), (g x).coeff = fun n => ↑(aeval x.coeff) (ψ n)
⊢ ∀ ⦃R : Type u_1⦄ [inst : CommRing R] (x : 𝕎 R),
    ((g ∘ f) x).coeff = fun n => ↑(aeval x.coeff) ((fun n => ↑(bind₁ φ) (ψ n)) n)

tactic: simp only [aeval_bind₁, Function.comp, hg, hf]
state_before: case mk'.intro.mk'.intro
p : ℕ
R S : Type u
σ : Type ?u.528965
idx : Type ?u.528968
inst✝² : CommRing R
inst✝¹ : CommRing S
g f : ⦃R : Type u_1⦄ → [inst : CommRing R] → 𝕎 R → 𝕎 R
φ : ℕ → MvPolynomial ℕ ℤ
hf : ∀ ⦃R : Type u_1⦄ [inst : CommRing R] (x : 𝕎 R), (f x).coeff = fun n => ↑(aeval x.coeff) (φ n)
ψ : ℕ → MvPolynomial ℕ ℤ
hg : ∀ ⦃R : Type u_1⦄ [inst : CommRing R] (x : 𝕎 R), (g x).coeff = fun n => ↑(aeval x.coeff) (ψ n)
R✝ : Type u_1
inst✝ : CommRing R✝
x✝ : 𝕎 R✝
⊢ ((g ∘ f) x✝).coeff = fun n => ↑(aeval x✝.coeff) ((fun n => ↑(bind₁ φ) (ψ n)) n)
Theorem: finprod_mem_iUnion
File: Mathlib/Algebra/BigOperators/Finprod.lean

tactic: cases nonempty_fintype ι
state_before: α : Type u_2
β : Type ?u.365704
ι : Type u_1
G : Type ?u.365710
M : Type u_3
N : Type ?u.365716
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f g : α → M
a b : α
s t✝ : Set α
inst✝ : Finite ι
t : ι → Set α
h : Pairwise (Disjoint on t)
ht : ∀ (i : ι), Set.Finite (t i)
⊢ (∏ᶠ (a : α) (_ : a ∈ ⋃ (i : ι), t i), f a) = ∏ᶠ (i : ι) (a : α) (_ : a ∈ t i), f a

tactic: lift t to ι → Finset α using ht
state_before: case intro
α : Type u_2
β : Type ?u.365704
ι : Type u_1
G : Type ?u.365710
M : Type u_3
N : Type ?u.365716
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f g : α → M
a b : α
s t✝ : Set α
inst✝ : Finite ι
t : ι → Set α
h : Pairwise (Disjoint on t)
ht : ∀ (i : ι), Set.Finite (t i)
val✝ : Fintype ι
⊢ (∏ᶠ (a : α) (_ : a ∈ ⋃ (i : ι), t i), f a) = ∏ᶠ (i : ι) (a : α) (_ : a ∈ t i), f a

tactic: rw [← biUnion_univ, ← Finset.coe_univ, ← Finset.coe_biUnion, finprod_mem_coe_finset,
  Finset.prod_biUnion]
state_before: case intro.intro
α : Type u_2
β : Type ?u.365704
ι : Type u_1
G : Type ?u.365710
M : Type u_3
N : Type ?u.365716
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f g : α → M
a b : α
s t✝ : Set α
inst✝ : Finite ι
val✝ : Fintype ι
t : ι → Finset α
h : Pairwise (Disjoint on fun i => ↑(t i))
⊢ (∏ᶠ (a : α) (_ : a ∈ ⋃ (i : ι), (fun i => ↑(t i)) i), f a) = ∏ᶠ (i : ι) (a : α) (_ : a ∈ (fun i => ↑(t i)) i), f a

tactic: simp only [finprod_mem_coe_finset, finprod_eq_prod_of_fintype]
state_before: case intro.intro
α : Type u_2
β : Type ?u.365704
ι : Type u_1
G : Type ?u.365710
M : Type u_3
N : Type ?u.365716
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f g : α → M
a b : α
s t✝ : Set α
inst✝ : Finite ι
val✝ : Fintype ι
t : ι → Finset α
h : Pairwise (Disjoint on fun i => ↑(t i))
⊢ ∏ x : ι, ∏ i in t x, f i = ∏ᶠ (i : ι) (a : α) (_ : a ∈ (fun i => ↑(t i)) i), f a

tactic: exact fun x _ y _ hxy => Finset.disjoint_coe.1 (h hxy)
state_before: case intro.intro
α : Type u_2
β : Type ?u.365704
ι : Type u_1
G : Type ?u.365710
M : Type u_3
N : Type ?u.365716
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f g : α → M
a b : α
s t✝ : Set α
inst✝ : Finite ι
val✝ : Fintype ι
t : ι → Finset α
h : Pairwise (Disjoint on fun i => ↑(t i))
⊢ PairwiseDisjoint ↑Finset.univ fun x => t x
Theorem: borel_eq_top_of_countable
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Basic.lean

tactic: refine' top_le_iff.1 fun s _ => biUnion_of_singleton s ▸ _
state_before: α : Type u_1
β : Type ?u.26837
γ : Type ?u.26840
γ₂ : Type ?u.26843
δ : Type ?u.26846
ι : Sort y
s t u : Set α
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : Countable α
⊢ borel α = ⊤

tactic: apply MeasurableSet.biUnion s.to_countable
state_before: α : Type u_1
β : Type ?u.26837
γ : Type ?u.26840
γ₂ : Type ?u.26843
δ : Type ?u.26846
ι : Sort y
s✝ t u : Set α
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : Countable α
s : Set α
x✝ : MeasurableSet s
⊢ MeasurableSet (⋃ (x : α) (_ : x ∈ s), {x})

tactic: intro x _
state_before: α : Type u_1
β : Type ?u.26837
γ : Type ?u.26840
γ₂ : Type ?u.26843
δ : Type ?u.26846
ι : Sort y
s✝ t u : Set α
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : Countable α
s : Set α
x✝ : MeasurableSet s
⊢ ∀ (b : α), b ∈ s → MeasurableSet {b}

tactic: apply MeasurableSet.of_compl
state_before: α : Type u_1
β : Type ?u.26837
γ : Type ?u.26840
γ₂ : Type ?u.26843
δ : Type ?u.26846
ι : Sort y
s✝ t u : Set α
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : Countable α
s : Set α
x✝ : MeasurableSet s
x : α
a✝ : x ∈ s
⊢ MeasurableSet {x}

tactic: apply GenerateMeasurable.basic
state_before: case h
α : Type u_1
β : Type ?u.26837
γ : Type ?u.26840
γ₂ : Type ?u.26843
δ : Type ?u.26846
ι : Sort y
s✝ t u : Set α
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : Countable α
s : Set α
x✝ : MeasurableSet s
x : α
a✝ : x ∈ s
⊢ MeasurableSet ({x}ᶜ)

tactic: exact isClosed_singleton.isOpen_compl
state_before: case h.a
α : Type u_1
β : Type ?u.26837
γ : Type ?u.26840
γ₂ : Type ?u.26843
δ : Type ?u.26846
ι : Sort y
s✝ t u : Set α
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : Countable α
s : Set α
x✝ : MeasurableSet s
x : α
a✝ : x ∈ s
⊢ {x}ᶜ ∈ {s | IsOpen s}
Theorem: CategoryTheory.Limits.kernelSubobject_zero
File: Mathlib/CategoryTheory/Subobject/Limits.lean

tactic: infer_instance
state_before: C : Type u
inst✝² : Category C
X Y Z : C
inst✝¹ : HasZeroMorphisms C
f : X ⟶ Y
inst✝ : HasKernel f
A B : C
⊢ IsIso (kernel.ι 0)
Theorem: List.isRotated_nil_iff'
File: Mathlib/Data/List/Rotate.lean

tactic: rw [isRotated_comm, isRotated_nil_iff, eq_comm]
state_before: α : Type u
l l' : List α
⊢ [] ~r l ↔ [] = l
Theorem: Turing.BlankExtends.trans
File: Mathlib/Computability/TuringMachine.lean

tactic: rintro ⟨i, rfl⟩ ⟨j, rfl⟩
state_before: Γ : Type u_1
inst✝ : Inhabited Γ
l₁ l₂ l₃ : List Γ
⊢ BlankExtends l₁ l₂ → BlankExtends l₂ l₃ → BlankExtends l₁ l₃

tactic: exact ⟨i + j, by simp [List.replicate_add]⟩
state_before: case intro.intro
Γ : Type u_1
inst✝ : Inhabited Γ
l₁ : List Γ
i j : ℕ
⊢ BlankExtends l₁ (l₁ ++ List.replicate i default ++ List.replicate j default)

tactic: simp [List.replicate_add]
state_before: Γ : Type u_1
inst✝ : Inhabited Γ
l₁ : List Γ
i j : ℕ
⊢ l₁ ++ List.replicate i default ++ List.replicate j default = l₁ ++ List.replicate (i + j) default
Theorem: Wbtw.swap_right_iff
File: Mathlib/Analysis/Convex/Between.lean

tactic: rw [← wbtw_swap_right_iff R x, and_iff_right h]
state_before: R : Type u_1
V : Type u_2
V' : Type ?u.218711
P : Type u_3
P' : Type ?u.218717
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
x y z : P
h : Wbtw R x y z
⊢ Wbtw R x z y ↔ y = z
Theorem: Int.testBit_lnot
File: Mathlib/Data/Int/Bitwise.lean

tactic: simp [lnot, testBit]
state_before: n k : ℕ
⊢ testBit (lnot ↑n) k = !testBit (↑n) k

tactic: simp [lnot, testBit]
state_before: n k : ℕ
⊢ testBit (lnot -[n+1]) k = !testBit -[n+1] k
Theorem: ZFSet.sUnion_empty
File: Mathlib/SetTheory/ZFC/Basic.lean

tactic: ext
state_before: ⊢ ⋃₀ ∅ = ∅

tactic: simp
state_before: case a
z✝ : ZFSet
⊢ z✝ ∈ ⋃₀ ∅ ↔ z✝ ∈ ∅
Theorem: List.Perm.sizeOf_eq_sizeOf
File: Mathlib/Data/List/Perm.lean

tactic: induction h with | nil => rfl
| cons _ _ h_sz₁₂ => simp [h_sz₁₂]
| swap => simp [add_left_comm]
| trans _ _ h_sz₁₂ h_sz₂₃ => simp [h_sz₁₂, h_sz₂₃]
state_before: α : Type uu
β : Type vv
l₁✝ l₂✝ : List α
inst✝ : SizeOf α
l₁ l₂ : List α
h : l₁ ~ l₂
⊢ sizeOf l₁ = sizeOf l₂

tactic: rfl
state_before: case nil
α : Type uu
β : Type vv
l₁✝ l₂✝ : List α
inst✝ : SizeOf α
l₁ l₂ : List α
⊢ sizeOf [] = sizeOf []

tactic: simp [h_sz₁₂]
state_before: case cons
α : Type uu
β : Type vv
l₁✝¹ l₂✝¹ : List α
inst✝ : SizeOf α
l₁ l₂ : List α
x✝ : α
l₁✝ l₂✝ : List α
a✝ : l₁✝ ~ l₂✝
h_sz₁₂ : sizeOf l₁✝ = sizeOf l₂✝
⊢ sizeOf (x✝ :: l₁✝) = sizeOf (x✝ :: l₂✝)

tactic: simp [add_left_comm]
state_before: case swap
α : Type uu
β : Type vv
l₁✝ l₂✝ : List α
inst✝ : SizeOf α
l₁ l₂ : List α
x✝ y✝ : α
l✝ : List α
⊢ sizeOf (y✝ :: x✝ :: l✝) = sizeOf (x✝ :: y✝ :: l✝)

tactic: simp [h_sz₁₂, h_sz₂₃]
state_before: case trans
α : Type uu
β : Type vv
l₁✝¹ l₂✝¹ : List α
inst✝ : SizeOf α
l₁ l₂ l₁✝ l₂✝ l₃✝ : List α
a✝¹ : l₁✝ ~ l₂✝
a✝ : l₂✝ ~ l₃✝
h_sz₁₂ : sizeOf l₁✝ = sizeOf l₂✝
h_sz₂₃ : sizeOf l₂✝ = sizeOf l₃✝
⊢ sizeOf l₁✝ = sizeOf l₃✝
Theorem: Real.sin_sub_sin
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [sin_sub_sin]
state_before: x y : ℝ
⊢ ↑(sin x - sin y) = ↑(2 * sin ((x - y) / 2) * cos ((x + y) / 2))
Theorem: Set.Icc.coe_eq_one
File: Mathlib/Data/Set/Intervals/Instances.lean

tactic: symm
state_before: α : Type u_1
inst✝ : OrderedSemiring α
x : ↑(Icc 0 1)
⊢ ↑x = 1 ↔ x = 1

tactic: exact Subtype.ext_iff
state_before: α : Type u_1
inst✝ : OrderedSemiring α
x : ↑(Icc 0 1)
⊢ x = 1 ↔ ↑x = 1
Theorem: MeasureTheory.set_lintegral_max
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: rw [lintegral_max hf hg, restrict_restrict, restrict_restrict, inter_comm s, inter_comm s]
state_before: α : Type u_1
β : Type ?u.1032041
γ : Type ?u.1032044
δ : Type ?u.1032047
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
s : Set α
⊢ (∫⁻ (x : α) in s, max (f x) (g x) ∂μ) =
    (∫⁻ (x : α) in s ∩ {x | f x ≤ g x}, g x ∂μ) + ∫⁻ (x : α) in s ∩ {x | g x < f x}, f x ∂μ

tactic: exacts [measurableSet_lt hg hf, measurableSet_le hf hg]
state_before: α : Type u_1
β : Type ?u.1032041
γ : Type ?u.1032044
δ : Type ?u.1032047
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
s : Set α
⊢ MeasurableSet {x | g x < f x}

α : Type u_1
β : Type ?u.1032041
γ : Type ?u.1032044
δ : Type ?u.1032047
m : MeasurableSpace α
μ ν : Measure α
f g : α → ℝ≥0∞
hf : Measurable f
hg : Measurable g
s : Set α
⊢ MeasurableSet {x | f x ≤ g x}
Theorem: CategoryTheory.congrArg_mpr_hom_left
File: Mathlib/CategoryTheory/EqToHom.lean

tactic: cases p
state_before: C : Type u₁
inst✝ : Category C
X Y Z : C
p : X = Y
q : Y ⟶ Z
⊢ Eq.mpr (_ : (X ⟶ Z) = (Y ⟶ Z)) q = eqToHom p ≫ q

tactic: simp
state_before: case refl
C : Type u₁
inst✝ : Category C
X Z : C
q : X ⟶ Z
⊢ Eq.mpr (_ : (X ⟶ Z) = (X ⟶ Z)) q = eqToHom (_ : X = X) ≫ q
Theorem: Homeomorph.inducing
File: Mathlib/Topology/Homeomorph.lean

tactic: simp only [symm_comp_self, inducing_id]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.57703
δ : Type ?u.57706
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
h : α ≃ₜ β
⊢ Inducing (↑(Homeomorph.symm h) ∘ ↑h)
Theorem: mulSalemSpencer_mul_left_iff₀
File: Mathlib/Combinatorics/Additive/SalemSpencer.lean

tactic: rw [mul_mul_mul_comm, h, mul_mul_mul_comm]
state_before: F : Type ?u.103189
α : Type u_1
β : Type ?u.103195
𝕜 : Type ?u.103198
E : Type ?u.103201
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NoZeroDivisors α
s : Set α
a : α
ha : a ≠ 0
hs : MulSalemSpencer ((fun x x_1 => x * x_1) a '' s)
b c d : α
hb : b ∈ s
hc : c ∈ s
hd : d ∈ s
h : b * c = d * d
⊢ a * b * (a * c) = (fun x x_1 => x * x_1) a d * (fun x x_1 => x * x_1) a d
Theorem: Down.mem_compression
File: Mathlib/Combinatorics/SetFamily/Compression/Down.lean

tactic: simp_rw [compression, mem_disjUnion, mem_filter, mem_image, and_comm (a := (¬ s ∈ 𝒜))]
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
⊢ s ∈ 𝓓 a 𝒜 ↔ s ∈ 𝒜 ∧ erase s a ∈ 𝒜 ∨ ¬s ∈ 𝒜 ∧ insert a s ∈ 𝒜

tactic: refine'
  or_congr_right
    (and_congr_left fun hs =>
      ⟨_, fun h => ⟨_, h, erase_insert <| insert_ne_self.1 <| ne_of_mem_of_not_mem h hs⟩⟩)
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
⊢ s ∈ 𝒜 ∧ erase s a ∈ 𝒜 ∨ (∃ a_1, a_1 ∈ 𝒜 ∧ erase a_1 a = s) ∧ ¬s ∈ 𝒜 ↔ s ∈ 𝒜 ∧ erase s a ∈ 𝒜 ∨ insert a s ∈ 𝒜 ∧ ¬s ∈ 𝒜

tactic: rintro ⟨t, ht, rfl⟩
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
hs : ¬s ∈ 𝒜
⊢ (∃ a_1, a_1 ∈ 𝒜 ∧ erase a_1 a = s) → insert a s ∈ 𝒜

tactic: rwa [insert_erase (erase_ne_self.1 (ne_of_mem_of_not_mem ht hs).symm)]
state_before: case intro.intro
α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
a : α
t : Finset α
ht : t ∈ 𝒜
hs : ¬erase t a ∈ 𝒜
⊢ insert a (erase t a) ∈ 𝒜
Theorem: CategoryTheory.Limits.pushoutIsoUnopPullback_inv_fst
File: Mathlib/CategoryTheory/Limits/Opposites.lean

tactic: apply Quiver.Hom.unop_inj
state_before: C : Type u₁
inst✝³ : Category C
J : Type u₂
inst✝² : Category J
X✝ : Type v₂
X Y Z : C
f : X ⟶ Z
g : X ⟶ Y
inst✝¹ : HasPushout f g
inst✝ : HasPullback f.op g.op
⊢ (pushoutIsoUnopPullback f g).inv.op ≫ pullback.fst = pushout.inl.op

tactic: dsimp
state_before: case a
C : Type u₁
inst✝³ : Category C
J : Type u₂
inst✝² : Category J
X✝ : Type v₂
X Y Z : C
f : X ⟶ Z
g : X ⟶ Y
inst✝¹ : HasPushout f g
inst✝ : HasPullback f.op g.op
⊢ ((pushoutIsoUnopPullback f g).inv.op ≫ pullback.fst).unop = pushout.inl.op.unop

tactic: rw [← pushoutIsoUnopPullback_inl_hom, Category.assoc, Iso.hom_inv_id, Category.comp_id]
state_before: case a
C : Type u₁
inst✝³ : Category C
J : Type u₂
inst✝² : Category J
X✝ : Type v₂
X Y Z : C
f : X ⟶ Z
g : X ⟶ Y
inst✝¹ : HasPushout f g
inst✝ : HasPullback f.op g.op
⊢ pullback.fst.unop ≫ (pushoutIsoUnopPullback f g).inv = pushout.inl
Theorem: lowerCentralSeries_pi_of_finite
File: Mathlib/GroupTheory/Nilpotent.lean

tactic: let pi := fun f : ∀ i, Subgroup (Gs i) => Subgroup.pi Set.univ f
state_before: G : Type ?u.343966
inst✝³ : Group G
H : Subgroup G
inst✝² : Normal H
η : Type u_1
Gs : η → Type u_2
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : Finite η
n : ℕ
⊢ lowerCentralSeries ((i : η) → Gs i) n = pi Set.univ fun i => lowerCentralSeries (Gs i) n

tactic: induction' n with n ih
state_before: G : Type ?u.343966
inst✝³ : Group G
H : Subgroup G
inst✝² : Normal H
η : Type u_1
Gs : η → Type u_2
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : Finite η
n : ℕ
pi : ((i : η) → Subgroup (Gs i)) → Subgroup ((i : η) → Gs i) := fun f => Subgroup.pi Set.univ f
⊢ lowerCentralSeries ((i : η) → Gs i) n = Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) n

tactic: simp [pi_top]
state_before: case zero
G : Type ?u.343966
inst✝³ : Group G
H : Subgroup G
inst✝² : Normal H
η : Type u_1
Gs : η → Type u_2
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : Finite η
pi : ((i : η) → Subgroup (Gs i)) → Subgroup ((i : η) → Gs i) := fun f => Subgroup.pi Set.univ f
⊢ lowerCentralSeries ((i : η) → Gs i) Nat.zero = Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) Nat.zero

tactic: calc
  lowerCentralSeries (∀ i, Gs i) n.succ = ⁅lowerCentralSeries (∀ i, Gs i) n, ⊤⁆ := rfl
  _ = ⁅pi fun i => lowerCentralSeries (Gs i) n, ⊤⁆ := by rw [ih]
  _ = ⁅pi fun i => lowerCentralSeries (Gs i) n, pi fun i => ⊤⁆ := by simp [pi_top]
  _ = pi fun i => ⁅lowerCentralSeries (Gs i) n, ⊤⁆ := (commutator_pi_pi_of_finite _ _)
  _ = pi fun i => lowerCentralSeries (Gs i) n.succ := rfl
state_before: case succ
G : Type ?u.343966
inst✝³ : Group G
H : Subgroup G
inst✝² : Normal H
η : Type u_1
Gs : η → Type u_2
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : Finite η
pi : ((i : η) → Subgroup (Gs i)) → Subgroup ((i : η) → Gs i) := fun f => Subgroup.pi Set.univ f
n : ℕ
ih : lowerCentralSeries ((i : η) → Gs i) n = Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) n
⊢ lowerCentralSeries ((i : η) → Gs i) (Nat.succ n) =
    Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) (Nat.succ n)

tactic: rw [ih]
state_before: G : Type ?u.343966
inst✝³ : Group G
H : Subgroup G
inst✝² : Normal H
η : Type u_1
Gs : η → Type u_2
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : Finite η
pi : ((i : η) → Subgroup (Gs i)) → Subgroup ((i : η) → Gs i) := fun f => Subgroup.pi Set.univ f
n : ℕ
ih : lowerCentralSeries ((i : η) → Gs i) n = Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) n
⊢ ⁅lowerCentralSeries ((i : η) → Gs i) n, ⊤⁆ = ⁅pi fun i => lowerCentralSeries (Gs i) n, ⊤⁆

tactic: simp [pi_top]
state_before: G : Type ?u.343966
inst✝³ : Group G
H : Subgroup G
inst✝² : Normal H
η : Type u_1
Gs : η → Type u_2
inst✝¹ : (i : η) → Group (Gs i)
inst✝ : Finite η
pi : ((i : η) → Subgroup (Gs i)) → Subgroup ((i : η) → Gs i) := fun f => Subgroup.pi Set.univ f
n : ℕ
ih : lowerCentralSeries ((i : η) → Gs i) n = Subgroup.pi Set.univ fun i => lowerCentralSeries (Gs i) n
⊢ ⁅pi fun i => lowerCentralSeries (Gs i) n, ⊤⁆ = ⁅pi fun i => lowerCentralSeries (Gs i) n, pi fun i => ⊤⁆
Theorem: leftCoset_mem_leftCoset
File: Mathlib/GroupTheory/Coset.lean

tactic: simp [mem_leftCoset_iff, mul_mem_cancel_left (s.inv_mem ha)]
state_before: α : Type u_1
inst✝ : Group α
s : Subgroup α
a : α
ha : a ∈ s
⊢ ∀ (x : α), x ∈ a *l ↑s ↔ x ∈ ↑s