1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Finsupp.total_surjective
File: Mathlib/LinearAlgebra/Finsupp.lean

tactic: intro x
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁹ : Semiring R
inst✝⁸ : Semiring S
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
inst✝⁵ : AddCommMonoid N
inst✝⁴ : Module R N
inst✝³ : AddCommMonoid P
inst✝² : Module R P
α' : Type u_7
M' : Type u_8
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
v : α → M
v' : α' → M'
h : Function.Surjective v
⊢ Function.Surjective ⇑(Finsupp.total α M R v)
state_after: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁹ : Semiring R
inst✝⁸ : Semiring S
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
inst✝⁵ : AddCommMonoid N
inst✝⁴ : Module R N
inst✝³ : AddCommMonoid P
inst✝² : Module R P
α' : Type u_7
M' : Type u_8
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
v : α → M
v' : α' → M'
h : Function.Surjective v
x : M
⊢ ∃ a, (Finsupp.total α M R v) a = x

tactic: obtain ⟨y, hy⟩ := h x
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁹ : Semiring R
inst✝⁸ : Semiring S
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
inst✝⁵ : AddCommMonoid N
inst✝⁴ : Module R N
inst✝³ : AddCommMonoid P
inst✝² : Module R P
α' : Type u_7
M' : Type u_8
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
v : α → M
v' : α' → M'
h : Function.Surjective v
x : M
⊢ ∃ a, (Finsupp.total α M R v) a = x
state_after: case intro
α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁹ : Semiring R
inst✝⁸ : Semiring S
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
inst✝⁵ : AddCommMonoid N
inst✝⁴ : Module R N
inst✝³ : AddCommMonoid P
inst✝² : Module R P
α' : Type u_7
M' : Type u_8
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
v : α → M
v' : α' → M'
h : Function.Surjective v
x : M
y : α
hy : v y = x
⊢ ∃ a, (Finsupp.total α M R v) a = x

tactic: exact ⟨Finsupp.single y 1, by simp [hy]⟩
state_before: case intro
α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁹ : Semiring R
inst✝⁸ : Semiring S
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
inst✝⁵ : AddCommMonoid N
inst✝⁴ : Module R N
inst✝³ : AddCommMonoid P
inst✝² : Module R P
α' : Type u_7
M' : Type u_8
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
v : α → M
v' : α' → M'
h : Function.Surjective v
x : M
y : α
hy : v y = x
⊢ ∃ a, (Finsupp.total α M R v) a = x
state_after: no goals

tactic: simp [hy]
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝⁹ : Semiring R
inst✝⁸ : Semiring S
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
inst✝⁵ : AddCommMonoid N
inst✝⁴ : Module R N
inst✝³ : AddCommMonoid P
inst✝² : Module R P
α' : Type u_7
M' : Type u_8
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
v : α → M
v' : α' → M'
h : Function.Surjective v
x : M
y : α
hy : v y = x
⊢ (Finsupp.total α M R v) (single y 1) = x
state_after: no goals
Theorem: AlgebraicGeometry.isPullback_morphismRestrict
File: Mathlib/AlgebraicGeometry/Restrict.lean

tactic: delta morphismRestrict
state_before: C : Type u₁
inst✝ : Category.{v, u₁} C
X Y : Scheme
f : X ⟶ Y
U : Opens ↑↑Y.toPresheafedSpace
⊢ IsPullback (f ∣_ U) (Scheme.ιOpens (f ⁻¹ᵁ U)) (Scheme.ιOpens U) f
state_after: C : Type u₁
inst✝ : Category.{v, u₁} C
X Y : Scheme
f : X ⟶ Y
U : Opens ↑↑Y.toPresheafedSpace
⊢ IsPullback ((pullbackRestrictIsoRestrict f U).inv ≫ pullback.snd) (Scheme.ιOpens (f ⁻¹ᵁ U)) (Scheme.ιOpens U) f

tactic: rw [← Category.id_comp f]
state_before: C : Type u₁
inst✝ : Category.{v, u₁} C
X Y : Scheme
f : X ⟶ Y
U : Opens ↑↑Y.toPresheafedSpace
⊢ IsPullback ((pullbackRestrictIsoRestrict f U).inv ≫ pullback.snd) (Scheme.ιOpens (f ⁻¹ᵁ U)) (Scheme.ιOpens U) f
state_after: C : Type u₁
inst✝ : Category.{v, u₁} C
X Y : Scheme
f : X ⟶ Y
U : Opens ↑↑Y.toPresheafedSpace
⊢ IsPullback ((pullbackRestrictIsoRestrict (𝟙 X ≫ f) U).inv ≫ pullback.snd) (Scheme.ιOpens ((𝟙 X ≫ f) ⁻¹ᵁ U))
    (Scheme.ιOpens U) (𝟙 X ≫ f)

tactic: refine
  (IsPullback.of_horiz_isIso ⟨?_⟩).paste_horiz
    (IsPullback.of_hasPullback f (Y.ofRestrict U.openEmbedding)).flip
state_before: C : Type u₁
inst✝ : Category.{v, u₁} C
X Y : Scheme
f : X ⟶ Y
U : Opens ↑↑Y.toPresheafedSpace
⊢ IsPullback ((pullbackRestrictIsoRestrict (𝟙 X ≫ f) U).inv ≫ pullback.snd) (Scheme.ιOpens ((𝟙 X ≫ f) ⁻¹ᵁ U))
    (Scheme.ιOpens U) (𝟙 X ≫ f)
state_after: C : Type u₁
inst✝ : Category.{v, u₁} C
X Y : Scheme
f : X ⟶ Y
U : Opens ↑↑Y.toPresheafedSpace
⊢ (pullbackRestrictIsoRestrict (𝟙 X ≫ f) U).inv ≫ pullback.fst = Scheme.ιOpens ((𝟙 X ≫ f) ⁻¹ᵁ U) ≫ 𝟙 X

tactic: erw [pullbackRestrictIsoRestrict_inv_fst]
state_before: C : Type u₁
inst✝ : Category.{v, u₁} C
X Y : Scheme
f : X ⟶ Y
U : Opens ↑↑Y.toPresheafedSpace
⊢ (pullbackRestrictIsoRestrict (𝟙 X ≫ f) U).inv ≫ pullback.fst = Scheme.ιOpens ((𝟙 X ≫ f) ⁻¹ᵁ U) ≫ 𝟙 X
state_after: C : Type u₁
inst✝ : Category.{v, u₁} C
X Y : Scheme
f : X ⟶ Y
U : Opens ↑↑Y.toPresheafedSpace
⊢ X.ofRestrict ⋯ = Scheme.ιOpens ((𝟙 X ≫ f) ⁻¹ᵁ U) ≫ 𝟙 X

tactic: rw [Category.comp_id]
state_before: C : Type u₁
inst✝ : Category.{v, u₁} C
X Y : Scheme
f : X ⟶ Y
U : Opens ↑↑Y.toPresheafedSpace
⊢ X.ofRestrict ⋯ = Scheme.ιOpens ((𝟙 X ≫ f) ⁻¹ᵁ U) ≫ 𝟙 X
state_after: no goals
Theorem: MeasureTheory.norm_setIntegral_le_of_norm_le_const_ae''
File: Mathlib/MeasureTheory/Integral/SetIntegral.lean

tactic: rwa [ae_restrict_eq hsm, eventually_inf_principal]
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝² : MeasurableSpace X
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f g : X → E
s t : Set X
μ ν : Measure X
l l' : Filter X
C : ℝ
hs : μ s < ⊤
hsm : MeasurableSet s
hC : ∀ᵐ (x : X) ∂μ, x ∈ s → ‖f x‖ ≤ C
⊢ ∀ᵐ (x : X) ∂μ.restrict s, ‖f x‖ ≤ C
state_after: no goals
Theorem: List.cons_bagInter_of_neg
File: Mathlib/Data/List/Lattice.lean

tactic: cases l₂
state_before: α : Type u_1
l l₁✝ l₂ : List α
p : α → Prop
a : α
inst✝ : DecidableEq α
l₁ : List α
h : ¬a ∈ l₂
⊢ (a :: l₁).bagInter l₂ = l₁.bagInter l₂
state_after: case nil
α : Type u_1
l l₁✝ : List α
p : α → Prop
a : α
inst✝ : DecidableEq α
l₁ : List α
h : ¬a ∈ []
⊢ (a :: l₁).bagInter [] = l₁.bagInter []

case cons
α : Type u_1
l l₁✝ : List α
p : α → Prop
a : α
inst✝ : DecidableEq α
l₁ : List α
head✝ : α
tail✝ : List α
h : ¬a ∈ head✝ :: tail✝
⊢ (a :: l₁).bagInter (head✝ :: tail✝) = l₁.bagInter (head✝ :: tail✝)

tactic: simp only [erase_of_not_mem h, List.bagInter, if_neg (mt mem_of_elem_eq_true h)]
state_before: case cons
α : Type u_1
l l₁✝ : List α
p : α → Prop
a : α
inst✝ : DecidableEq α
l₁ : List α
head✝ : α
tail✝ : List α
h : ¬a ∈ head✝ :: tail✝
⊢ (a :: l₁).bagInter (head✝ :: tail✝) = l₁.bagInter (head✝ :: tail✝)
state_after: no goals

tactic: simp only [bagInter_nil]
state_before: case nil
α : Type u_1
l l₁✝ : List α
p : α → Prop
a : α
inst✝ : DecidableEq α
l₁ : List α
h : ¬a ∈ []
⊢ (a :: l₁).bagInter [] = l₁.bagInter []
state_after: no goals
Theorem: Int.mod_nat_eq_sub_mul_floor_rat_div
File: Mathlib/Data/Rat/Floor.lean

tactic: rw [eq_sub_of_add_eq <| Int.emod_add_ediv n d, Rat.floor_int_div_nat_eq_div]
state_before: n : ℤ
d : ℕ
⊢ n % ↑d = n - ↑d * ⌊↑n / ↑d⌋
state_after: no goals
Theorem: Nat.three_dvd_iff
File: Mathlib/Data/Nat/Digits.lean

tactic: norm_num
state_before: n✝ n : ℕ
⊢ 10 % 3 = 1
state_after: no goals
Theorem: MeasureTheory.quasiMeasurePreserving_div_of_right_invariant
File: Mathlib/MeasureTheory/Group/Prod.lean

tactic: refine QuasiMeasurePreserving.prod_of_left measurable_div (eventually_of_forall fun y => ?_)
state_before: G : Type u_1
inst✝⁶ : MeasurableSpace G
inst✝⁵ : Group G
inst✝⁴ : MeasurableMul₂ G
μ ν : Measure G
inst✝³ : SigmaFinite ν
inst✝² : SigmaFinite μ
s : Set G
inst✝¹ : MeasurableInv G
inst✝ : μ.IsMulRightInvariant
⊢ QuasiMeasurePreserving (fun p => p.1 / p.2) (μ.prod ν) μ
state_after: G : Type u_1
inst✝⁶ : MeasurableSpace G
inst✝⁵ : Group G
inst✝⁴ : MeasurableMul₂ G
μ ν : Measure G
inst✝³ : SigmaFinite ν
inst✝² : SigmaFinite μ
s : Set G
inst✝¹ : MeasurableInv G
inst✝ : μ.IsMulRightInvariant
y : G
⊢ QuasiMeasurePreserving (fun x => (x, y).1 / (x, y).2) μ μ

tactic: exact (measurePreserving_div_right μ y).quasiMeasurePreserving
state_before: G : Type u_1
inst✝⁶ : MeasurableSpace G
inst✝⁵ : Group G
inst✝⁴ : MeasurableMul₂ G
μ ν : Measure G
inst✝³ : SigmaFinite ν
inst✝² : SigmaFinite μ
s : Set G
inst✝¹ : MeasurableInv G
inst✝ : μ.IsMulRightInvariant
y : G
⊢ QuasiMeasurePreserving (fun x => (x, y).1 / (x, y).2) μ μ
state_after: no goals
Theorem: MatrixEquivTensor.invFun_zero
File: Mathlib/RingTheory/MatrixAlgebra.lean

tactic: simp [invFun]
state_before: R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
⊢ invFun R A n 0 = 0
state_after: no goals
Theorem: SimpleGraph.nonempty_ends_of_infinite
File: Mathlib/Combinatorics/SimpleGraph/Ends/Properties.lean

tactic: classical
apply nonempty_sections_of_finite_inverse_system G.componentComplFunctor
state_before: V : Type
G : SimpleGraph V
inst✝² : G.LocallyFinite
inst✝¹ : Fact G.Preconnected
inst✝ : Infinite V
⊢ G.end.Nonempty
state_after: no goals

tactic: apply nonempty_sections_of_finite_inverse_system G.componentComplFunctor
state_before: V : Type
G : SimpleGraph V
inst✝² : G.LocallyFinite
inst✝¹ : Fact G.Preconnected
inst✝ : Infinite V
⊢ G.end.Nonempty
state_after: no goals
Theorem: rpow_one_add_le_one_add_mul_self
File: Mathlib/Analysis/Convex/SpecificFunctions/Basic.lean

tactic: rcases eq_or_lt_of_le hp1 with (rfl | hp1)
state_before: s : ℝ
hs : -1 ≤ s
p : ℝ
hp1 : 0 ≤ p
hp2 : p ≤ 1
⊢ (1 + s) ^ p ≤ 1 + p * s
state_after: case inl
s : ℝ
hs : -1 ≤ s
hp1 : 0 ≤ 0
hp2 : 0 ≤ 1
⊢ (1 + s) ^ 0 ≤ 1 + 0 * s

case inr
s : ℝ
hs : -1 ≤ s
p : ℝ
hp1✝ : 0 ≤ p
hp2 : p ≤ 1
hp1 : 0 < p
⊢ (1 + s) ^ p ≤ 1 + p * s

tactic: rcases eq_or_lt_of_le hp2 with (rfl | hp2)
state_before: case inr
s : ℝ
hs : -1 ≤ s
p : ℝ
hp1✝ : 0 ≤ p
hp2 : p ≤ 1
hp1 : 0 < p
⊢ (1 + s) ^ p ≤ 1 + p * s
state_after: case inr.inl
s : ℝ
hs : -1 ≤ s
hp1✝ : 0 ≤ 1
hp2 : 1 ≤ 1
hp1 : 0 < 1
⊢ (1 + s) ^ 1 ≤ 1 + 1 * s

case inr.inr
s : ℝ
hs : -1 ≤ s
p : ℝ
hp1✝ : 0 ≤ p
hp2✝ : p ≤ 1
hp1 : 0 < p
hp2 : p < 1
⊢ (1 + s) ^ p ≤ 1 + p * s

tactic: by_cases hs' : s = 0
state_before: case inr.inr
s : ℝ
hs : -1 ≤ s
p : ℝ
hp1✝ : 0 ≤ p
hp2✝ : p ≤ 1
hp1 : 0 < p
hp2 : p < 1
⊢ (1 + s) ^ p ≤ 1 + p * s
state_after: case pos
s : ℝ
hs : -1 ≤ s
p : ℝ
hp1✝ : 0 ≤ p
hp2✝ : p ≤ 1
hp1 : 0 < p
hp2 : p < 1
hs' : s = 0
⊢ (1 + s) ^ p ≤ 1 + p * s

case neg
s : ℝ
hs : -1 ≤ s
p : ℝ
hp1✝ : 0 ≤ p
hp2✝ : p ≤ 1
hp1 : 0 < p
hp2 : p < 1
hs' : ¬s = 0
⊢ (1 + s) ^ p ≤ 1 + p * s

tactic: exact (rpow_one_add_lt_one_add_mul_self hs hs' hp1 hp2).le
state_before: case neg
s : ℝ
hs : -1 ≤ s
p : ℝ
hp1✝ : 0 ≤ p
hp2✝ : p ≤ 1
hp1 : 0 < p
hp2 : p < 1
hs' : ¬s = 0
⊢ (1 + s) ^ p ≤ 1 + p * s
state_after: no goals

tactic: simp
state_before: case inl
s : ℝ
hs : -1 ≤ s
hp1 : 0 ≤ 0
hp2 : 0 ≤ 1
⊢ (1 + s) ^ 0 ≤ 1 + 0 * s
state_after: no goals

tactic: simp
state_before: case inr.inl
s : ℝ
hs : -1 ≤ s
hp1✝ : 0 ≤ 1
hp2 : 1 ≤ 1
hp1 : 0 < 1
⊢ (1 + s) ^ 1 ≤ 1 + 1 * s
state_after: no goals

tactic: simp [hs']
state_before: case pos
s : ℝ
hs : -1 ≤ s
p : ℝ
hp1✝ : 0 ≤ p
hp2✝ : p ≤ 1
hp1 : 0 < p
hp2 : p < 1
hs' : s = 0
⊢ (1 + s) ^ p ≤ 1 + p * s
state_after: no goals
Theorem: MeasureTheory.Measure.lintegral_rnDeriv_lt_top
File: Mathlib/MeasureTheory/Decomposition/Lebesgue.lean

tactic: rw [← setLIntegral_univ]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : IsFiniteMeasure μ
⊢ ∫⁻ (x : α), μ.rnDeriv ν x ∂ν < ⊤
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : IsFiniteMeasure μ
⊢ ∫⁻ (x : α) in univ, μ.rnDeriv ν x ∂ν < ⊤

tactic: exact lintegral_rnDeriv_lt_top_of_measure_ne_top _ (measure_lt_top _ _).ne
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝ : IsFiniteMeasure μ
⊢ ∫⁻ (x : α) in univ, μ.rnDeriv ν x ∂ν < ⊤
state_after: no goals
Theorem: Multiset.lcm_dvd
File: Mathlib/Algebra/GCDMonoid/Multiset.lean

tactic: simp
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s : Multiset α
a : α
⊢ lcm 0 ∣ a ↔ ∀ b ∈ 0, b ∣ a
state_after: no goals

tactic: simp (config := { contextual := true }) [or_imp, forall_and, lcm_dvd_iff]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s : Multiset α
a : α
⊢ ∀ (a_1 : α) (s : Multiset α), (s.lcm ∣ a ↔ ∀ b ∈ s, b ∣ a) → ((a_1 ::ₘ s).lcm ∣ a ↔ ∀ b ∈ a_1 ::ₘ s, b ∣ a)
state_after: no goals
Theorem: Matrix.cons_vecMul
File: Mathlib/Data/Matrix/Notation.lean

tactic: ext i
state_before: α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
inst✝ : NonUnitalNonAssocSemiring α
x : α
v : Fin n → α
B : Fin n.succ → o' → α
⊢ vecCons x v ᵥ* of B = x • vecHead B + v ᵥ* of (vecTail B)
state_after: case h
α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
inst✝ : NonUnitalNonAssocSemiring α
x : α
v : Fin n → α
B : Fin n.succ → o' → α
i : o'
⊢ (vecCons x v ᵥ* of B) i = (x • vecHead B + v ᵥ* of (vecTail B)) i

tactic: simp [vecMul]
state_before: case h
α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
inst✝ : NonUnitalNonAssocSemiring α
x : α
v : Fin n → α
B : Fin n.succ → o' → α
i : o'
⊢ (vecCons x v ᵥ* of B) i = (x • vecHead B + v ᵥ* of (vecTail B)) i
state_after: no goals
Theorem: GradedTensorProduct.auxEquiv_one
File: Mathlib/LinearAlgebra/TensorProduct/Graded/Internal.lean

tactic: rw [← of_one, Algebra.TensorProduct.one_def, auxEquiv_tmul 𝒜 ℬ, DirectSum.decompose_one,
  DirectSum.decompose_one, Algebra.TensorProduct.one_def]
state_before: R : Type u_1
ι : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring ι
inst✝⁸ : Module ι (Additive ℤˣ)
inst✝⁷ : DecidableEq ι
inst✝⁶ : CommRing R
inst✝⁵ : Ring A
inst✝⁴ : Ring B
inst✝³ : Algebra R A
inst✝² : Algebra R B
𝒜 : ι → Submodule R A
ℬ : ι → Submodule R B
inst✝¹ : GradedAlgebra 𝒜
inst✝ : GradedAlgebra ℬ
⊢ (auxEquiv R 𝒜 ℬ) 1 = 1
state_after: no goals
Theorem: Part.ofOption_eq_get
File: Mathlib/Data/Part.lean

tactic: cases o
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
o : Option α
h₁ : (↑o).Dom
h₂ : { Dom := o.isSome = true, get := o.get }.Dom
⊢ (↑o).get h₁ = { Dom := o.isSome = true, get := o.get }.get h₂
state_after: case none
α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
h₁ : (↑Option.none).Dom
h₂ : { Dom := Option.none.isSome = true, get := Option.none.get }.Dom
⊢ (↑Option.none).get h₁ = { Dom := Option.none.isSome = true, get := Option.none.get }.get h₂

case some
α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
val✝ : α
h₁ : (↑(Option.some val✝)).Dom
h₂ : { Dom := (Option.some val✝).isSome = true, get := (Option.some val✝).get }.Dom
⊢ (↑(Option.some val✝)).get h₁ = { Dom := (Option.some val✝).isSome = true, get := (Option.some val✝).get }.get h₂

tactic: simp at h₂
state_before: case none
α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
h₁ : (↑Option.none).Dom
h₂ : { Dom := Option.none.isSome = true, get := Option.none.get }.Dom
⊢ (↑Option.none).get h₁ = { Dom := Option.none.isSome = true, get := Option.none.get }.get h₂
state_after: no goals

tactic: rfl
state_before: case some
α✝ : Type u_1
β : Type u_2
γ : Type u_3
α : Type u_4
val✝ : α
h₁ : (↑(Option.some val✝)).Dom
h₂ : { Dom := (Option.some val✝).isSome = true, get := (Option.some val✝).get }.Dom
⊢ (↑(Option.some val✝)).get h₁ = { Dom := (Option.some val✝).isSome = true, get := (Option.some val✝).get }.get h₂
state_after: no goals
Theorem: NormedAddGroupHom.incl_range
File: Mathlib/Analysis/Normed/Group/Hom.lean

tactic: ext x
state_before: V : Type u_1
W : Type u_2
V₁ : Type u_3
V₂ : Type u_4
V₃ : Type u_5
inst✝⁴ : SeminormedAddCommGroup V
inst✝³ : SeminormedAddCommGroup W
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f : NormedAddGroupHom V₁ V₂
g : NormedAddGroupHom V₂ V₃
s : AddSubgroup V₁
⊢ (incl s).range = s
state_after: case h
V : Type u_1
W : Type u_2
V₁ : Type u_3
V₂ : Type u_4
V₃ : Type u_5
inst✝⁴ : SeminormedAddCommGroup V
inst✝³ : SeminormedAddCommGroup W
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f : NormedAddGroupHom V₁ V₂
g : NormedAddGroupHom V₂ V₃
s : AddSubgroup V₁
x : V₁
⊢ x ∈ (incl s).range ↔ x ∈ s

tactic: exact ⟨fun ⟨y, hy⟩ => by rw [← hy]; simp, fun hx => ⟨⟨x, hx⟩, by simp⟩⟩
state_before: case h
V : Type u_1
W : Type u_2
V₁ : Type u_3
V₂ : Type u_4
V₃ : Type u_5
inst✝⁴ : SeminormedAddCommGroup V
inst✝³ : SeminormedAddCommGroup W
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f : NormedAddGroupHom V₁ V₂
g : NormedAddGroupHom V₂ V₃
s : AddSubgroup V₁
x : V₁
⊢ x ∈ (incl s).range ↔ x ∈ s
state_after: no goals

tactic: rw [← hy]
state_before: V : Type u_1
W : Type u_2
V₁ : Type u_3
V₂ : Type u_4
V₃ : Type u_5
inst✝⁴ : SeminormedAddCommGroup V
inst✝³ : SeminormedAddCommGroup W
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f : NormedAddGroupHom V₁ V₂
g : NormedAddGroupHom V₂ V₃
s : AddSubgroup V₁
x : V₁
x✝ : x ∈ (incl s).range
y : ↥s
hy : (incl s).toAddMonoidHom y = x
⊢ x ∈ s
state_after: V : Type u_1
W : Type u_2
V₁ : Type u_3
V₂ : Type u_4
V₃ : Type u_5
inst✝⁴ : SeminormedAddCommGroup V
inst✝³ : SeminormedAddCommGroup W
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f : NormedAddGroupHom V₁ V₂
g : NormedAddGroupHom V₂ V₃
s : AddSubgroup V₁
x : V₁
x✝ : x ∈ (incl s).range
y : ↥s
hy : (incl s).toAddMonoidHom y = x
⊢ (incl s).toAddMonoidHom y ∈ s

tactic: simp
state_before: V : Type u_1
W : Type u_2
V₁ : Type u_3
V₂ : Type u_4
V₃ : Type u_5
inst✝⁴ : SeminormedAddCommGroup V
inst✝³ : SeminormedAddCommGroup W
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f : NormedAddGroupHom V₁ V₂
g : NormedAddGroupHom V₂ V₃
s : AddSubgroup V₁
x : V₁
x✝ : x ∈ (incl s).range
y : ↥s
hy : (incl s).toAddMonoidHom y = x
⊢ (incl s).toAddMonoidHom y ∈ s
state_after: no goals

tactic: simp
state_before: V : Type u_1
W : Type u_2
V₁ : Type u_3
V₂ : Type u_4
V₃ : Type u_5
inst✝⁴ : SeminormedAddCommGroup V
inst✝³ : SeminormedAddCommGroup W
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f : NormedAddGroupHom V₁ V₂
g : NormedAddGroupHom V₂ V₃
s : AddSubgroup V₁
x : V₁
hx : x ∈ s
⊢ (incl s).toAddMonoidHom ⟨x, hx⟩ = x
state_after: no goals
Theorem: Finset.sigma_eq_biUnion
File: Mathlib/Data/Finset/Sigma.lean

tactic: ext ⟨x, y⟩
state_before: ι : Type u_1
α : ι → Type u_2
β : Type u_3
s✝ s₁ s₂ : Finset ι
t✝ t₁ t₂ : (i : ι) → Finset (α i)
inst✝ : DecidableEq ((i : ι) × α i)
s : Finset ι
t : (i : ι) → Finset (α i)
⊢ s.sigma t = s.biUnion fun i => map (Embedding.sigmaMk i) (t i)
state_after: case a.mk
ι : Type u_1
α : ι → Type u_2
β : Type u_3
s✝ s₁ s₂ : Finset ι
t✝ t₁ t₂ : (i : ι) → Finset (α i)
inst✝ : DecidableEq ((i : ι) × α i)
s : Finset ι
t : (i : ι) → Finset (α i)
x : ι
y : α x
⊢ ⟨x, y⟩ ∈ s.sigma t ↔ ⟨x, y⟩ ∈ s.biUnion fun i => map (Embedding.sigmaMk i) (t i)

tactic: simp [and_left_comm]
state_before: case a.mk
ι : Type u_1
α : ι → Type u_2
β : Type u_3
s✝ s₁ s₂ : Finset ι
t✝ t₁ t₂ : (i : ι) → Finset (α i)
inst✝ : DecidableEq ((i : ι) × α i)
s : Finset ι
t : (i : ι) → Finset (α i)
x : ι
y : α x
⊢ ⟨x, y⟩ ∈ s.sigma t ↔ ⟨x, y⟩ ∈ s.biUnion fun i => map (Embedding.sigmaMk i) (t i)
state_after: no goals
Theorem: Ordinal.enum_succ_eq_top
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rw [type_lt]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{?u.30181}
⊢ o < type fun x x_1 => x < x_1
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{?u.30181}
⊢ o < succ o

tactic: exact lt_succ o
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{?u.30181}
⊢ o < succ o
state_after: no goals
Theorem: MeasurableSpace.generateFrom_singleton
File: Mathlib/MeasureTheory/MeasurableSpace/Basic.lean

tactic: classical
letI : MeasurableSpace α := generateFrom {s}
refine le_antisymm (generateFrom_le fun t ht => ⟨{True}, trivial, by simp [ht.symm]⟩) ?_
rintro _ ⟨u, -, rfl⟩
exact (show MeasurableSet s from GenerateMeasurable.basic _ <| mem_singleton s).mem trivial
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u s : Set α
⊢ generateFrom {s} = MeasurableSpace.comap (fun x => x ∈ s) ⊤
state_after: no goals

tactic: letI : MeasurableSpace α := generateFrom {s}
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u s : Set α
⊢ generateFrom {s} = MeasurableSpace.comap (fun x => x ∈ s) ⊤
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u s : Set α
this : MeasurableSpace α := generateFrom {s}
⊢ generateFrom {s} = MeasurableSpace.comap (fun x => x ∈ s) ⊤

tactic: refine le_antisymm (generateFrom_le fun t ht => ⟨{True}, trivial, by simp [ht.symm]⟩) ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u s : Set α
this : MeasurableSpace α := generateFrom {s}
⊢ generateFrom {s} = MeasurableSpace.comap (fun x => x ∈ s) ⊤
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u s : Set α
this : MeasurableSpace α := generateFrom {s}
⊢ MeasurableSpace.comap (fun x => x ∈ s) ⊤ ≤ generateFrom {s}

tactic: rintro _ ⟨u, -, rfl⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u s : Set α
this : MeasurableSpace α := generateFrom {s}
⊢ MeasurableSpace.comap (fun x => x ∈ s) ⊤ ≤ generateFrom {s}
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u✝ s : Set α
this : MeasurableSpace α := generateFrom {s}
u : Set Prop
⊢ MeasurableSet ((fun x => x ∈ s) ⁻¹' u)

tactic: exact (show MeasurableSet s from GenerateMeasurable.basic _ <| mem_singleton s).mem trivial
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u✝ s : Set α
this : MeasurableSpace α := generateFrom {s}
u : Set Prop
⊢ MeasurableSet ((fun x => x ∈ s) ⁻¹' u)
state_after: no goals

tactic: simp [ht.symm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t✝ u s : Set α
this : MeasurableSpace α := generateFrom {s}
t : Set α
ht : t ∈ {s}
⊢ (fun x => x ∈ s) ⁻¹' {True} = t
state_after: no goals