tasksource/leandojo huggingface dataset:
Theorem: MeasureTheory.AEStronglyMeasurable.isSeparable_ae_range
File: Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic.lean

tactic: refine' ⟨range (hf.mk f), hf.stronglyMeasurable_mk.isSeparable_range, _⟩
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.348372
ι : Type ?u.348375
inst✝² : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f g : α → β
hf : AEStronglyMeasurable f μ
⊢ ∃ t, IsSeparable t ∧ ∀ᵐ (x : α) ∂μ, f x ∈ t

tactic: filter_upwards [hf.ae_eq_mk] with x hx
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.348372
ι : Type ?u.348375
inst✝² : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f g : α → β
hf : AEStronglyMeasurable f μ
⊢ ∀ᵐ (x : α) ∂μ, f x ∈ range (AEStronglyMeasurable.mk f hf)

tactic: simp [hx]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type ?u.348372
ι : Type ?u.348375
inst✝² : Countable ι
m : MeasurableSpace α
μ : Measure α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f g : α → β
hf : AEStronglyMeasurable f μ
x : α
hx : f x = AEStronglyMeasurable.mk f hf x
⊢ f x ∈ range (AEStronglyMeasurable.mk f hf)
Theorem: MeasureTheory.integral_eq_zero_of_ae
File: Mathlib/MeasureTheory/Integral/Bochner.lean

tactic: simp [integral_congr_ae hf, integral_zero]
state_before: α : Type u_1
E : Type u_2
F : Type ?u.968060
𝕜 : Type ?u.968063
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : CompleteSpace E
inst✝⁵ : NontriviallyNormedField 𝕜
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : SMulCommClass ℝ 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
f✝ g : α → E
m : MeasurableSpace α
μ : Measure α
f : α → E
hf : f =ᵐ[μ] 0
⊢ (∫ (a : α), f a ∂μ) = 0
Theorem: Lean.Data.AC.Context.mergeIdem_head
File: src/lean/Init/Data/AC.lean

tactic: simp [mergeIdem, mergeIdem.loop]
state_before: x : Nat
xs : List Nat
⊢ mergeIdem (x :: x :: xs) = mergeIdem (x :: xs)
Theorem: Con.conGen_of_con
File: Mathlib/GroupTheory/Congruence.lean

tactic: rw [conGen_eq]
state_before: M : Type u_1
N : Type ?u.27586
P : Type ?u.27589
inst✝² : Mul M
inst✝¹ : Mul N
inst✝ : Mul P
c✝ c : Con M
⊢ conGen ↑c ≤ c

tactic: exact sInf_le fun _ _ => id
state_before: M : Type u_1
N : Type ?u.27586
P : Type ?u.27589
inst✝² : Mul M
inst✝¹ : Mul N
inst✝ : Mul P
c✝ c : Con M
⊢ sInf {s | ∀ (x y : M), ↑c x y → ↑s x y} ≤ c
Theorem: Set.toFinset_eq_empty
File: Mathlib/Data/Fintype/Basic.lean

tactic: rw [← toFinset_empty, toFinset_inj]
state_before: α : Type u_1
β : Type ?u.92229
γ : Type ?u.92232
s t : Set α
inst✝ : Fintype ↑s
⊢ toFinset s = ∅ ↔ s = ∅
Theorem: CategoryTheory.isCoseparator_op_iff
File: Mathlib/CategoryTheory/Generator.lean

tactic: rw [IsSeparator, IsCoseparator, ← isCoseparating_op_iff, Set.singleton_op]
state_before: C : Type u₁
inst✝¹ : Category C
D : Type u₂
inst✝ : Category D
G : C
⊢ IsCoseparator G.op ↔ IsSeparator G
Theorem: Lagrange.eq_interpolate_of_eval_eq
File: Mathlib/LinearAlgebra/Lagrange.lean

tactic: rw [eq_interpolate hvs degree_f_lt]
state_before: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i j : ι
v r r' : ι → F
f : F[X]
hvs : Set.InjOn v ↑s
degree_f_lt : degree f < ↑(card s)
eval_f : ∀ (i : ι), i ∈ s → eval (v i) f = r i
⊢ f = ↑(interpolate s v) r

tactic: exact interpolate_eq_of_values_eq_on _ _ eval_f
state_before: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s t : Finset ι
i j : ι
v r r' : ι → F
f : F[X]
hvs : Set.InjOn v ↑s
degree_f_lt : degree f < ↑(card s)
eval_f : ∀ (i : ι), i ∈ s → eval (v i) f = r i
⊢ (↑(interpolate s v) fun i => eval (v i) f) = ↑(interpolate s v) r
Theorem: Directed.disjoint_iSup_right
File: Mathlib/Order/CompactlyGenerated.lean

tactic: simp_rw [disjoint_iff, h.inf_iSup_eq, iSup_eq_bot]
state_before: ι : Sort u_2
α : Type u_1
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
h : Directed (fun x x_1 => x ≤ x_1) f
⊢ Disjoint a (⨆ (i : ι), f i) ↔ ∀ (i : ι), Disjoint a (f i)
Theorem: MeasureTheory.SimpleFunc.integral_eq
File: Mathlib/MeasureTheory/Integral/Bochner.lean

tactic: simp [integral, setToSimpleFunc, weightedSMul_apply]
state_before: α : Type u_1
E : Type ?u.97756
F : Type u_2
𝕜 : Type ?u.97762
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type ?u.97864
F' : Type ?u.97867
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedAddCommGroup F'
inst✝ : NormedSpace ℝ F'
m✝ : MeasurableSpace α
μ✝ : Measure α
m : MeasurableSpace α
μ : Measure α
f : α →ₛ F
⊢ integral μ f = ∑ x in SimpleFunc.range f, ENNReal.toReal (↑↑μ (↑f ⁻¹' {x})) • x
Theorem: integral_sin_pow_odd_mul_cos_pow
File: Mathlib/Analysis/SpecialFunctions/Integrals.lean

tactic: rw [integral_symm]
state_before: a b : ℝ
n✝ m n : ℕ
hc : Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
⊢ (∫ (x : ℝ) in a..b, sin x ^ (2 * m + 1) * cos x ^ n) = -∫ (x : ℝ) in b..a, sin x ^ (2 * m + 1) * cos x ^ n

tactic: simp only [_root_.pow_succ', pow_mul, _root_.pow_zero, one_mul, mul_neg, neg_mul,
  integral_neg, neg_inj]
state_before: a b : ℝ
n✝ m n : ℕ
hc : Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
⊢ (-∫ (x : ℝ) in b..a, sin x ^ (2 * m + 1) * cos x ^ n) = ∫ (x : ℝ) in b..a, (1 - cos x ^ 2) ^ m * -sin x * cos x ^ n

tactic: congr! 5
state_before: a b : ℝ
n✝ m n : ℕ
hc : Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
⊢ (∫ (x : ℝ) in b..a, (sin x * sin x) ^ m * sin x * cos x ^ n) =
    ∫ (x : ℝ) in b..a, (1 - cos x * cos x) ^ m * sin x * cos x ^ n

tactic: rw [← sq, ← sq, sin_sq]
state_before: case h.e'_5.h.h.e'_5.h.e'_5.h.e'_5
a b : ℝ
n✝ m n : ℕ
hc : Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
x✝ : ℝ
⊢ sin x✝ * sin x✝ = 1 - cos x✝ * cos x✝

tactic: congr
state_before: a b : ℝ
n✝ m n : ℕ
hc : Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
⊢ (∫ (x : ℝ) in b..a, (1 - cos x ^ 2) ^ m * -sin x * cos x ^ n) =
    ∫ (x : ℝ) in b..a, cos x ^ n * (1 - cos x ^ 2) ^ m * -sin x

tactic: ext
state_before: case e_f
a b : ℝ
n✝ m n : ℕ
hc : Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
⊢ (fun x => (1 - cos x ^ 2) ^ m * -sin x * cos x ^ n) = fun x => cos x ^ n * (1 - cos x ^ 2) ^ m * -sin x

tactic: ring
state_before: case e_f.h
a b : ℝ
n✝ m n : ℕ
hc : Continuous fun u => u ^ n * (1 - u ^ 2) ^ m
x✝ : ℝ
⊢ (1 - cos x✝ ^ 2) ^ m * -sin x✝ * cos x✝ ^ n = cos x✝ ^ n * (1 - cos x✝ ^ 2) ^ m * -sin x✝
Theorem: Matrix.blockDiagonal'_tsum
File: Mathlib/Topology/Instances/Matrix.lean

tactic: by_cases hf : Summable f
state_before: X : Type u_5
α : Type ?u.110701
l : Type u_1
m : Type ?u.110707
n : Type ?u.110710
p : Type ?u.110713
S : Type ?u.110716
R : Type u_2
m' : l → Type u_3
n' : l → Type u_4
inst✝⁵ : Semiring α
inst✝⁴ : AddCommMonoid R
inst✝³ : TopologicalSpace R
inst✝² : Module α R
inst✝¹ : DecidableEq l
inst✝ : T2Space R
f : X → (i : l) → Matrix (m' i) (n' i) R
⊢ blockDiagonal' (∑' (x : X), f x) = ∑' (x : X), blockDiagonal' (f x)

tactic: exact hf.hasSum.matrix_blockDiagonal'.tsum_eq.symm
state_before: case pos
X : Type u_5
α : Type ?u.110701
l : Type u_1
m : Type ?u.110707
n : Type ?u.110710
p : Type ?u.110713
S : Type ?u.110716
R : Type u_2
m' : l → Type u_3
n' : l → Type u_4
inst✝⁵ : Semiring α
inst✝⁴ : AddCommMonoid R
inst✝³ : TopologicalSpace R
inst✝² : Module α R
inst✝¹ : DecidableEq l
inst✝ : T2Space R
f : X → (i : l) → Matrix (m' i) (n' i) R
hf : Summable f
⊢ blockDiagonal' (∑' (x : X), f x) = ∑' (x : X), blockDiagonal' (f x)

tactic: have hft := summable_matrix_blockDiagonal'.not.mpr hf
state_before: case neg
X : Type u_5
α : Type ?u.110701
l : Type u_1
m : Type ?u.110707
n : Type ?u.110710
p : Type ?u.110713
S : Type ?u.110716
R : Type u_2
m' : l → Type u_3
n' : l → Type u_4
inst✝⁵ : Semiring α
inst✝⁴ : AddCommMonoid R
inst✝³ : TopologicalSpace R
inst✝² : Module α R
inst✝¹ : DecidableEq l
inst✝ : T2Space R
f : X → (i : l) → Matrix (m' i) (n' i) R
hf : ¬Summable f
⊢ blockDiagonal' (∑' (x : X), f x) = ∑' (x : X), blockDiagonal' (f x)

tactic: rw [tsum_eq_zero_of_not_summable hf, tsum_eq_zero_of_not_summable hft]
state_before: case neg
X : Type u_5
α : Type ?u.110701
l : Type u_1
m : Type ?u.110707
n : Type ?u.110710
p : Type ?u.110713
S : Type ?u.110716
R : Type u_2
m' : l → Type u_3
n' : l → Type u_4
inst✝⁵ : Semiring α
inst✝⁴ : AddCommMonoid R
inst✝³ : TopologicalSpace R
inst✝² : Module α R
inst✝¹ : DecidableEq l
inst✝ : T2Space R
f : X → (i : l) → Matrix (m' i) (n' i) R
hf : ¬Summable f
hft : ¬Summable fun x => blockDiagonal' (f x)
⊢ blockDiagonal' (∑' (x : X), f x) = ∑' (x : X), blockDiagonal' (f x)

tactic: exact blockDiagonal'_zero
state_before: case neg
X : Type u_5
α : Type ?u.110701
l : Type u_1
m : Type ?u.110707
n : Type ?u.110710
p : Type ?u.110713
S : Type ?u.110716
R : Type u_2
m' : l → Type u_3
n' : l → Type u_4
inst✝⁵ : Semiring α
inst✝⁴ : AddCommMonoid R
inst✝³ : TopologicalSpace R
inst✝² : Module α R
inst✝¹ : DecidableEq l
inst✝ : T2Space R
f : X → (i : l) → Matrix (m' i) (n' i) R
hf : ¬Summable f
hft : ¬Summable fun x => blockDiagonal' (f x)
⊢ blockDiagonal' 0 = 0
Theorem: Nat.fib_add_two_strictMono
File: Mathlib/Data/Nat/Fib.lean

tactic: refine' strictMono_nat_of_lt_succ fun n => _
state_before: ⊢ StrictMono fun n => fib (n + 2)

tactic: rw [add_right_comm]
state_before: n : ℕ
⊢ fib (n + 2) < fib (n + 1 + 2)

tactic: exact fib_lt_fib_succ (self_le_add_left _ _)
state_before: n : ℕ
⊢ fib (n + 2) < fib (n + 2 + 1)
Theorem: List.foldr_eq_foldrM
File: Std/Data/List/Init/Lemmas.lean

tactic: induction l <;> simp [*]
state_before: α : Type u_1
β : Type u_2
f : α → β → β
b : β
l : List α
⊢ foldr f b l = foldrM f b l
Theorem: List.length_cyclicPermutations_cons
File: Mathlib/Data/List/Rotate.lean

tactic: simp [cyclicPermutations_cons]
state_before: α : Type u
l✝ l' : List α
x : α
l : List α
⊢ length (cyclicPermutations (x :: l)) = length l + 1
Theorem: StarSubalgebra.mem_iInf
File: Mathlib/Algebra/Star/Subalgebra.lean

tactic: simp only [iInf, mem_sInf, Set.forall_range_iff]
state_before: F : Type ?u.692912
R : Type u_2
A : Type u_3
B : Type ?u.692921
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
inst✝⁵ : StarRing A
inst✝⁴ : StarModule R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : StarModule R B
ι : Sort u_1
S : ι → StarSubalgebra R A
x : A
⊢ (x ∈ ⨅ (i : ι), S i) ↔ ∀ (i : ι), x ∈ S i
Theorem: QuadraticForm.polar_neg_right
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: rw [← neg_one_smul R y, polar_smul_right, neg_one_mul]
state_before: S : Type ?u.169206
R : Type u_1
R₁ : Type ?u.169212
M : Type u_2
inst✝³ : Ring R
inst✝² : CommRing R₁
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
x y : M
⊢ polar (↑Q) x (-y) = -polar (↑Q) x y
Theorem: Matrix.isDiag_fromBlocks_iff
File: Mathlib/LinearAlgebra/Matrix/IsDiag.lean

tactic: constructor
state_before: α : Type u_1
β : Type ?u.22462
R : Type ?u.22465
n : Type u_3
m : Type u_2
inst✝ : Zero α
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
⊢ IsDiag (fromBlocks A B C D) ↔ IsDiag A ∧ B = 0 ∧ C = 0 ∧ IsDiag D

tactic: intro h
state_before: case mp
α : Type u_1
β : Type ?u.22462
R : Type ?u.22465
n : Type u_3
m : Type u_2
inst✝ : Zero α
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
⊢ IsDiag (fromBlocks A B C D) → IsDiag A ∧ B = 0 ∧ C = 0 ∧ IsDiag D

tactic: refine' ⟨fun i j hij => _, ext fun i j => _, ext fun i j => _, fun i j hij => _⟩
state_before: case mp
α : Type u_1
β : Type ?u.22462
R : Type ?u.22465
n : Type u_3
m : Type u_2
inst✝ : Zero α
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
h : IsDiag (fromBlocks A B C D)
⊢ IsDiag A ∧ B = 0 ∧ C = 0 ∧ IsDiag D

tactic: exact h (Sum.inl_injective.ne hij)
state_before: case mp.refine'_1
α : Type u_1
β : Type ?u.22462
R : Type ?u.22465
n : Type u_3
m : Type u_2
inst✝ : Zero α
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
h : IsDiag (fromBlocks A B C D)
i j : m
hij : i ≠ j
⊢ A i j = 0

tactic: exact h Sum.inl_ne_inr
state_before: case mp.refine'_2
α : Type u_1
β : Type ?u.22462
R : Type ?u.22465
n : Type u_3
m : Type u_2
inst✝ : Zero α
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
h : IsDiag (fromBlocks A B C D)
i : m
j : n
⊢ B i j = OfNat.ofNat 0 i j

tactic: exact h Sum.inr_ne_inl
state_before: case mp.refine'_3
α : Type u_1
β : Type ?u.22462
R : Type ?u.22465
n : Type u_3
m : Type u_2
inst✝ : Zero α
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
h : IsDiag (fromBlocks A B C D)
i : n
j : m
⊢ C i j = OfNat.ofNat 0 i j

tactic: exact h (Sum.inr_injective.ne hij)
state_before: case mp.refine'_4
α : Type u_1
β : Type ?u.22462
R : Type ?u.22465
n : Type u_3
m : Type u_2
inst✝ : Zero α
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
h : IsDiag (fromBlocks A B C D)
i j : n
hij : i ≠ j
⊢ D i j = 0

tactic: rintro ⟨ha, hb, hc, hd⟩
state_before: case mpr
α : Type u_1
β : Type ?u.22462
R : Type ?u.22465
n : Type u_3
m : Type u_2
inst✝ : Zero α
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
⊢ IsDiag A ∧ B = 0 ∧ C = 0 ∧ IsDiag D → IsDiag (fromBlocks A B C D)

tactic: convert IsDiag.fromBlocks ha hd
state_before: case mpr.intro.intro.intro
α : Type u_1
β : Type ?u.22462
R : Type ?u.22465
n : Type u_3
m : Type u_2
inst✝ : Zero α
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
D : Matrix n n α
ha : IsDiag A
hb : B = 0
hc : C = 0
hd : IsDiag D
⊢ IsDiag (fromBlocks A B C D)
Theorem: AffineSubspace.direction_inf
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: simp only [direction_eq_vectorSpan, vectorSpan_def]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s1 s2 : AffineSubspace k P
⊢ direction (s1 ⊓ s2) ≤ direction s1 ⊓ direction s2

tactic: exact
  le_inf (sInf_le_sInf fun p hp => trans (vsub_self_mono (inter_subset_left _ _)) hp)
    (sInf_le_sInf fun p hp => trans (vsub_self_mono (inter_subset_right _ _)) hp)
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s1 s2 : AffineSubspace k P
⊢ Submodule.span k (↑(s1 ⊓ s2) -ᵥ ↑(s1 ⊓ s2)) ≤ Submodule.span k (↑s1 -ᵥ ↑s1) ⊓ Submodule.span k (↑s2 -ᵥ ↑s2)
Theorem: List.measurable_prod
File: Mathlib/MeasureTheory/Group/Arithmetic.lean

tactic: simpa only [← Pi.list_prod_apply] using l.measurable_prod' hl
state_before: M : Type u_1
α : Type u_2
inst✝² : Monoid M
inst✝¹ : MeasurableSpace M
inst✝ : MeasurableMul₂ M
m : MeasurableSpace α
μ : MeasureTheory.Measure α
l : List (α → M)
hl : ∀ (f : α → M), f ∈ l → Measurable f
⊢ Measurable fun x => prod (map (fun f => f x) l)
Theorem: Set.Intersecting.card_le
File: Mathlib/Combinatorics/SetFamily/Intersecting.lean

tactic: classical
  refine' (s.disjUnion _ hs.disjoint_map_compl).card_le_univ.trans_eq' _
  rw [two_mul, card_disjUnion, card_map]
state_before: α : Type u_1
inst✝¹ : BooleanAlgebra α
inst✝ : Fintype α
s : Finset α
hs : Intersecting ↑s
⊢ 2 * card s ≤ Fintype.card α

tactic: refine' (s.disjUnion _ hs.disjoint_map_compl).card_le_univ.trans_eq' _
state_before: α : Type u_1
inst✝¹ : BooleanAlgebra α
inst✝ : Fintype α
s : Finset α
hs : Intersecting ↑s
⊢ 2 * card s ≤ Fintype.card α

tactic: rw [two_mul, card_disjUnion, card_map]
state_before: α : Type u_1
inst✝¹ : BooleanAlgebra α
inst✝ : Fintype α
s : Finset α
hs : Intersecting ↑s
⊢ 2 * card s =
    card
      (disjUnion s (map { toFun := compl, inj' := (_ : Function.Injective compl) } s)
        (_ : Disjoint s (map { toFun := compl, inj' := (_ : Function.Injective compl) } s)))
Theorem: MeasureTheory.measure_union_add_inter₀'
File: Mathlib/MeasureTheory/Measure/NullMeasurable.lean

tactic: rw [union_comm, inter_comm, measure_union_add_inter₀ t hs, add_comm]
state_before: ι : Type ?u.18521
α : Type u_1
β : Type ?u.18527
γ : Type ?u.18530
m0 : MeasurableSpace α
μ : Measure α
s t✝ : Set α
hs : NullMeasurableSet s
t : Set α
⊢ ↑↑μ (s ∪ t) + ↑↑μ (s ∩ t) = ↑↑μ s + ↑↑μ t
Theorem: seq_map_assoc
File: Mathlib/Control/Basic.lean

tactic: simp [← pure_seq]
state_before: α β γ : Type u
F : Type u → Type v
inst✝¹ : Applicative F
inst✝ : LawfulApplicative F
x : F (α → β)
f : γ → α
y : F γ
⊢ (Seq.seq x fun x => f <$> y) = Seq.seq ((fun x => x ∘ f) <$> x) fun x => y

tactic: simp [pure_seq]
state_before: α β γ : Type u
F : Type u → Type v
inst✝¹ : Applicative F
inst✝ : LawfulApplicative F
x : F (α → β)
f : γ → α
y : F γ
⊢ (Seq.seq ((fun x x_1 => x (f x_1)) <$> x) fun x => y) =
    Seq.seq (Seq.seq (pure fun x x_1 => x (f x_1)) fun x_1 => x) fun x => y
Theorem: List.mem_dedup
File: Mathlib/Data/List/Dedup.lean

tactic: simpa only [dedup, forall_mem_ne, not_not] using this
state_before: case refine_2
α : Type u
inst✝ : DecidableEq α
a : α
l : List α
this : (¬∀ (b : α), b ∈ pwFilter (fun x x_1 => x ≠ x_1) l → a ≠ b) ↔ ¬∀ (b : α), b ∈ l → a ≠ b
⊢ a ∈ dedup l ↔ a ∈ l

case refine_1
α : Type u
inst✝ : DecidableEq α
a : α
l : List α
⊢ ∀ {x y z : α}, (fun x x_1 => x ≠ x_1) x z → (fun x x_1 => x ≠ x_1) x y ∨ (fun x x_1 => x ≠ x_1) y z

tactic: intros x y z xz
state_before: case refine_1
α : Type u
inst✝ : DecidableEq α
a : α
l : List α
⊢ ∀ {x y z : α}, (fun x x_1 => x ≠ x_1) x z → (fun x x_1 => x ≠ x_1) x y ∨ (fun x x_1 => x ≠ x_1) y z

tactic: exact not_and_or.1 <| mt (fun h ↦ h.1.trans h.2) xz
state_before: case refine_1
α : Type u
inst✝ : DecidableEq α
a : α
l : List α
x y z : α
xz : x ≠ z
⊢ (fun x x_1 => x ≠ x_1) x y ∨ (fun x x_1 => x ≠ x_1) y z
Theorem: Equiv.Perm.not_mem_support
File: Mathlib/GroupTheory/Perm/Support.lean

tactic: simp
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
x : α
⊢ ¬x ∈ support f ↔ ↑f x = x
Theorem: Ideal.span_singleton_mul_eq_span_singleton_mul
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: simp only [le_antisymm_iff, span_singleton_mul_le_span_singleton_mul, eq_comm]
state_before: R : Type u
ι : Type ?u.246088
inst✝ : CommSemiring R
I✝ J✝ K L : Ideal R
x y : R
I J : Ideal R
⊢ span {x} * I = span {y} * J ↔
    (∀ (zI : R), zI ∈ I → ∃ zJ, zJ ∈ J ∧ x * zI = y * zJ) ∧ ∀ (zJ : R), zJ ∈ J → ∃ zI, zI ∈ I ∧ x * zI = y * zJ
Theorem: MeasureTheory.integral_union_ae
File: Mathlib/MeasureTheory/Integral/SetIntegral.lean

tactic: simp only [IntegrableOn, Measure.restrict_union₀ hst ht, integral_add_measure hfs hft]
state_before: α : Type u_1
β : Type ?u.3445
E : Type u_2
F : Type ?u.3451
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
f g : α → E
s t : Set α
μ ν : Measure α
l l' : Filter α
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
hst : AEDisjoint μ s t
ht : NullMeasurableSet t
hfs : IntegrableOn f s
hft : IntegrableOn f t
⊢ (∫ (x : α) in s ∪ t, f x ∂μ) = (∫ (x : α) in s, f x ∂μ) + ∫ (x : α) in t, f x ∂μ
Theorem: BoundedOrder.ext
File: Mathlib/Order/BoundedOrder.lean

tactic: have ht : @BoundedOrder.toOrderTop α _ A = @BoundedOrder.toOrderTop α _ B := OrderTop.ext
state_before: α✝ : Type u
β : Type v
γ : Type ?u.28802
δ : Type ?u.28805
α : Type u_1
inst✝ : PartialOrder α
A B : BoundedOrder α
⊢ A = B

tactic: have hb : @BoundedOrder.toOrderBot α _ A = @BoundedOrder.toOrderBot α _ B := OrderBot.ext
state_before: α✝ : Type u
β : Type v
γ : Type ?u.28802
δ : Type ?u.28805
α : Type u_1
inst✝ : PartialOrder α
A B : BoundedOrder α
ht : toOrderTop = toOrderTop
⊢ A = B

tactic: cases A
state_before: α✝ : Type u
β : Type v
γ : Type ?u.28802
δ : Type ?u.28805
α : Type u_1
inst✝ : PartialOrder α
A B : BoundedOrder α
ht : toOrderTop = toOrderTop
hb : toOrderBot = toOrderBot
⊢ A = B

tactic: cases B
state_before: case mk
α✝ : Type u
β : Type v
γ : Type ?u.28802
δ : Type ?u.28805
α : Type u_1
inst✝ : PartialOrder α
B : BoundedOrder α
toOrderTop✝ : OrderTop α
toOrderBot✝ : OrderBot α
ht : toOrderTop = toOrderTop
hb : toOrderBot = toOrderBot
⊢ mk = B

tactic: congr
state_before: case mk.mk
α✝ : Type u
β : Type v
γ : Type ?u.28802
δ : Type ?u.28805
α : Type u_1
inst✝ : PartialOrder α
toOrderTop✝¹ : OrderTop α
toOrderBot✝¹ : OrderBot α
toOrderTop✝ : OrderTop α
toOrderBot✝ : OrderBot α
ht : toOrderTop = toOrderTop
hb : toOrderBot = toOrderBot
⊢ mk = mk
Theorem: Cardinal.extend_function
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: intros
state_before: α : Type u_1
β : Type u_2
s : Set α
f : ↑s ↪ β
h : Nonempty (↑(sᶜ) ≃ ↑(range ↑fᶜ))
⊢ ∃ g, ∀ (x : ↑s), ↑g ↑x = ↑f x

tactic: have := h
state_before: α : Type u_1
β : Type u_2
s : Set α
f : ↑s ↪ β
h : Nonempty (↑(sᶜ) ≃ ↑(range ↑fᶜ))
⊢ ∃ g, ∀ (x : ↑s), ↑g ↑x = ↑f x

tactic: cases' this with g
state_before: α : Type u_1
β : Type u_2
s : Set α
f : ↑s ↪ β
h this : Nonempty (↑(sᶜ) ≃ ↑(range ↑fᶜ))
⊢ ∃ g, ∀ (x : ↑s), ↑g ↑x = ↑f x

tactic: let h : α ≃ β :=
  (Set.sumCompl (s : Set α)).symm.trans
    ((sumCongr (Equiv.ofInjective f f.2) g).trans (Set.sumCompl (range f)))
state_before: case intro
α : Type u_1
β : Type u_2
s : Set α
f : ↑s ↪ β
h : Nonempty (↑(sᶜ) ≃ ↑(range ↑fᶜ))
g : ↑(sᶜ) ≃ ↑(range ↑fᶜ)
⊢ ∃ g, ∀ (x : ↑s), ↑g ↑x = ↑f x

tactic: refine' ⟨h, _⟩
state_before: case intro
α : Type u_1
β : Type u_2
s : Set α
f : ↑s ↪ β
h✝ : Nonempty (↑(sᶜ) ≃ ↑(range ↑fᶜ))
g : ↑(sᶜ) ≃ ↑(range ↑fᶜ)
h : α ≃ β :=
  (Set.sumCompl s).symm.trans ((sumCongr (ofInjective ↑f (_ : Injective f.toFun)) g).trans (Set.sumCompl (range ↑f)))
⊢ ∃ g, ∀ (x : ↑s), ↑g ↑x = ↑f x

tactic: rintro ⟨x, hx⟩
state_before: case intro
α : Type u_1
β : Type u_2
s : Set α
f : ↑s ↪ β
h✝ : Nonempty (↑(sᶜ) ≃ ↑(range ↑fᶜ))
g : ↑(sᶜ) ≃ ↑(range ↑fᶜ)
h : α ≃ β :=
  (Set.sumCompl s).symm.trans ((sumCongr (ofInjective ↑f (_ : Injective f.toFun)) g).trans (Set.sumCompl (range ↑f)))
⊢ ∀ (x : ↑s), ↑h ↑x = ↑f x

tactic: simp [Set.sumCompl_symm_apply_of_mem, hx]
state_before: case intro.mk
α : Type u_1
β : Type u_2
s : Set α
f : ↑s ↪ β
h✝ : Nonempty (↑(sᶜ) ≃ ↑(range ↑fᶜ))
g : ↑(sᶜ) ≃ ↑(range ↑fᶜ)
h : α ≃ β :=
  (Set.sumCompl s).symm.trans ((sumCongr (ofInjective ↑f (_ : Injective f.toFun)) g).trans (Set.sumCompl (range ↑f)))
x : α
hx : x ∈ s
⊢ ↑h ↑{ val := x, property := hx } = ↑f { val := x, property := hx }
Theorem: MeasureTheory.Measure.add_haar_sphere
File: Mathlib/MeasureTheory/Measure/Lebesgue/EqHaar.lean

tactic: rcases eq_or_ne r 0 with (rfl | h)
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.2019568
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s : Set E
inst✝ : Nontrivial E
x : E
r : ℝ
⊢ ↑↑μ (sphere x r) = 0

tactic: rw [sphere_zero, measure_singleton]
state_before: case inl
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.2019568
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s : Set E
inst✝ : Nontrivial E
x : E
⊢ ↑↑μ (sphere x 0) = 0

tactic: exact add_haar_sphere_of_ne_zero μ x h
state_before: case inr
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.2019568
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s : Set E
inst✝ : Nontrivial E
x : E
r : ℝ
h : r ≠ 0
⊢ ↑↑μ (sphere x r) = 0