1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Finset.ofColex_inj
File: Mathlib/Combinatorics/Colex.lean

tactic: cases s
state_before: α : Type u_1
β : Type u_2
s t : Colex α
⊢ s.ofColex = t.ofColex ↔ s = t
state_after: case toColex
α : Type u_1
β : Type u_2
t : Colex α
ofColex✝ : Finset α
⊢ { ofColex := ofColex✝ }.ofColex = t.ofColex ↔ { ofColex := ofColex✝ } = t

tactic: cases t
state_before: case toColex
α : Type u_1
β : Type u_2
t : Colex α
ofColex✝ : Finset α
⊢ { ofColex := ofColex✝ }.ofColex = t.ofColex ↔ { ofColex := ofColex✝ } = t
state_after: case toColex.toColex
α : Type u_1
β : Type u_2
ofColex✝¹ ofColex✝ : Finset α
⊢ { ofColex := ofColex✝¹ }.ofColex = { ofColex := ofColex✝ }.ofColex ↔
    { ofColex := ofColex✝¹ } = { ofColex := ofColex✝ }

tactic: simp
state_before: case toColex.toColex
α : Type u_1
β : Type u_2
ofColex✝¹ ofColex✝ : Finset α
⊢ { ofColex := ofColex✝¹ }.ofColex = { ofColex := ofColex✝ }.ofColex ↔
    { ofColex := ofColex✝¹ } = { ofColex := ofColex✝ }
state_after: no goals
Theorem: Ordinal.nmul_nadd_le₃'
File: Mathlib/SetTheory/Ordinal/NaturalOps.lean

tactic: simp only [nmul_comm _ (_ ⨳ _)]
state_before: a b c d a' b' c' : Ordinal.{u}
ha : a' ≤ a
hb : b' ≤ b
hc : c' ≤ c
⊢ a' ⨳ (b ⨳ c) ♯ a ⨳ (b' ⨳ c) ♯ a ⨳ (b ⨳ c') ♯ a' ⨳ (b' ⨳ c') ≤
    a ⨳ (b ⨳ c) ♯ a' ⨳ (b' ⨳ c) ♯ a' ⨳ (b ⨳ c') ♯ a ⨳ (b' ⨳ c')
state_after: a b c d a' b' c' : Ordinal.{u}
ha : a' ≤ a
hb : b' ≤ b
hc : c' ≤ c
⊢ b ⨳ c ⨳ a' ♯ b' ⨳ c ⨳ a ♯ b ⨳ c' ⨳ a ♯ b' ⨳ c' ⨳ a' ≤ b ⨳ c ⨳ a ♯ b' ⨳ c ⨳ a' ♯ b ⨳ c' ⨳ a' ♯ b' ⨳ c' ⨳ a

tactic: simp only [nadd_eq_add, NatOrdinal.toOrdinal_toNatOrdinal]
state_before: case h.e'_4
a b c d a' b' c' : Ordinal.{u}
ha : a' ≤ a
hb : b' ≤ b
hc : c' ≤ c
⊢ b ⨳ c ⨳ a ♯ b' ⨳ c ⨳ a' ♯ b ⨳ c' ⨳ a' ♯ b' ⨳ c' ⨳ a = b ⨳ c ⨳ a ♯ b' ⨳ c' ⨳ a ♯ b' ⨳ c ⨳ a' ♯ b ⨳ c' ⨳ a'
state_after: case h.e'_4
a b c d a' b' c' : Ordinal.{u}
ha : a' ≤ a
hb : b' ≤ b
hc : c' ≤ c
⊢ toOrdinal
      (toNatOrdinal (b ⨳ c ⨳ a) + toNatOrdinal (b' ⨳ c ⨳ a') + toNatOrdinal (b ⨳ c' ⨳ a') +
        toNatOrdinal (b' ⨳ c' ⨳ a)) =
    toOrdinal
      (toNatOrdinal (b ⨳ c ⨳ a) + toNatOrdinal (b' ⨳ c' ⨳ a) + toNatOrdinal (b' ⨳ c ⨳ a') + toNatOrdinal (b ⨳ c' ⨳ a'))

tactic: abel_nf
state_before: case h.e'_4
a b c d a' b' c' : Ordinal.{u}
ha : a' ≤ a
hb : b' ≤ b
hc : c' ≤ c
⊢ toOrdinal
      (toNatOrdinal (b ⨳ c ⨳ a) + toNatOrdinal (b' ⨳ c ⨳ a') + toNatOrdinal (b ⨳ c' ⨳ a') +
        toNatOrdinal (b' ⨳ c' ⨳ a)) =
    toOrdinal
      (toNatOrdinal (b ⨳ c ⨳ a) + toNatOrdinal (b' ⨳ c' ⨳ a) + toNatOrdinal (b' ⨳ c ⨳ a') + toNatOrdinal (b ⨳ c' ⨳ a'))
state_after: no goals
Theorem: ZFSet.choice_mem_aux
File: Mathlib/SetTheory/ZFC/Basic.lean

tactic: rwa [← (eq_empty y).2 fun z zx => n ⟨z, zx⟩]
state_before: x : ZFSet
h : ∅ ∉ x
y : ZFSet
yx : y ∈ x
n : ¬∃ y_1, y_1 ∈ y
⊢ ∅ ∈ x
state_after: no goals
Theorem: Finsupp.toFinset_toMultiset
File: Mathlib/Data/Finsupp/Multiset.lean

tactic: refine f.induction ?_ ?_
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : DecidableEq α
f : α →₀ ℕ
⊢ (toMultiset f).toFinset = f.support
state_after: case refine_1
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : DecidableEq α
f : α →₀ ℕ
⊢ (toMultiset 0).toFinset = support 0

case refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : DecidableEq α
f : α →₀ ℕ
⊢ ∀ (a : α) (b : ℕ) (f : α →₀ ℕ),
    a ∉ f.support →
      b ≠ 0 → (toMultiset f).toFinset = f.support → (toMultiset (single a b + f)).toFinset = (single a b + f).support

tactic: rw [toMultiset_zero, Multiset.toFinset_zero, support_zero]
state_before: case refine_1
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : DecidableEq α
f : α →₀ ℕ
⊢ (toMultiset 0).toFinset = support 0
state_after: no goals

tactic: intro a n f ha hn ih
state_before: case refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : DecidableEq α
f : α →₀ ℕ
⊢ ∀ (a : α) (b : ℕ) (f : α →₀ ℕ),
    a ∉ f.support →
      b ≠ 0 → (toMultiset f).toFinset = f.support → (toMultiset (single a b + f)).toFinset = (single a b + f).support
state_after: case refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : DecidableEq α
f✝ : α →₀ ℕ
a : α
n : ℕ
f : α →₀ ℕ
ha : a ∉ f.support
hn : n ≠ 0
ih : (toMultiset f).toFinset = f.support
⊢ (toMultiset (single a n + f)).toFinset = (single a n + f).support

tactic: rw [toMultiset_add, Multiset.toFinset_add, ih, toMultiset_single, support_add_eq,
  support_single_ne_zero _ hn, Multiset.toFinset_nsmul _ _ hn, Multiset.toFinset_singleton]
state_before: case refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : DecidableEq α
f✝ : α →₀ ℕ
a : α
n : ℕ
f : α →₀ ℕ
ha : a ∉ f.support
hn : n ≠ 0
ih : (toMultiset f).toFinset = f.support
⊢ (toMultiset (single a n + f)).toFinset = (single a n + f).support
state_after: case refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : DecidableEq α
f✝ : α →₀ ℕ
a : α
n : ℕ
f : α →₀ ℕ
ha : a ∉ f.support
hn : n ≠ 0
ih : (toMultiset f).toFinset = f.support
⊢ Disjoint (single a n).support f.support

tactic: refine Disjoint.mono_left support_single_subset ?_
state_before: case refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : DecidableEq α
f✝ : α →₀ ℕ
a : α
n : ℕ
f : α →₀ ℕ
ha : a ∉ f.support
hn : n ≠ 0
ih : (toMultiset f).toFinset = f.support
⊢ Disjoint (single a n).support f.support
state_after: case refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : DecidableEq α
f✝ : α →₀ ℕ
a : α
n : ℕ
f : α →₀ ℕ
ha : a ∉ f.support
hn : n ≠ 0
ih : (toMultiset f).toFinset = f.support
⊢ Disjoint {a} f.support

tactic: rwa [Finset.disjoint_singleton_left]
state_before: case refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : DecidableEq α
f✝ : α →₀ ℕ
a : α
n : ℕ
f : α →₀ ℕ
ha : a ∉ f.support
hn : n ≠ 0
ih : (toMultiset f).toFinset = f.support
⊢ Disjoint {a} f.support
state_after: no goals
Theorem: Submodule.Quotient.equiv_refl
File: Mathlib/LinearAlgebra/Quotient.lean

tactic: simpa using hf
state_before: R : Type u_1
M : Type u_2
r : R
x y : M
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
p p' P Q : Submodule R M
hf : map (↑(LinearEquiv.refl R M)) P = Q
⊢ P = Q
state_after: no goals
Theorem: Rat.add_divInt
File: Mathlib/Data/Rat/Defs.lean

tactic: simp [h]
state_before: q a✝ b✝ c✝ : ℚ
a b c : ℤ
h : c = 0
⊢ (a + b) /. c = a /. c + b /. c
state_after: no goals

tactic: rw [divInt_add_divInt _ _ h h, divInt_eq_iff h (Int.mul_ne_zero h h)]
state_before: q a✝ b✝ c✝ : ℚ
a b c : ℤ
h : ¬c = 0
⊢ (a + b) /. c = a /. c + b /. c
state_after: q a✝ b✝ c✝ : ℚ
a b c : ℤ
h : ¬c = 0
⊢ (a + b) * (c * c) = (a * c + b * c) * c

tactic: simp [Int.add_mul, Int.mul_assoc]
state_before: q a✝ b✝ c✝ : ℚ
a b c : ℤ
h : ¬c = 0
⊢ (a + b) * (c * c) = (a * c + b * c) * c
state_after: no goals
Theorem: inv_le_div_iff_le_mul'
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [inv_le_div_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 : α
⊢ a⁻¹ ≤ b / c ↔ c ≤ a * b
state_after: no goals
Theorem: PartialHomeomorph.map_extend_nhdsWithin_eq_image_of_subset
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: rw [map_extend_nhdsWithin_eq_image _ _ hy, inter_eq_self_of_subset_right]
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
y : M
hy : y ∈ f.source
hs : s ⊆ f.source
⊢ map (↑(f.extend I)) (𝓝[s] y) = 𝓝[↑(f.extend I) '' s] ↑(f.extend I) y
state_after: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
y : M
hy : y ∈ f.source
hs : s ⊆ f.source
⊢ s ⊆ (f.extend I).source

tactic: rwa [extend_source]
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
y : M
hy : y ∈ f.source
hs : s ⊆ f.source
⊢ s ⊆ (f.extend I).source
state_after: no goals
Theorem: Real.isTheta_exp_comp_one
File: Mathlib/Analysis/SpecialFunctions/Exp.lean

tactic: simp only [← exp_zero, isTheta_exp_comp_exp_comp, sub_zero]
state_before: α : Type u_1
x y z : ℝ
l : Filter α
f : α → ℝ
⊢ ((fun x => rexp (f x)) =Θ[l] fun x => 1) ↔ IsBoundedUnder (fun x x_1 => x ≤ x_1) l fun x => |f x|
state_after: no goals
Theorem: LocalizedModule.mk_cancel_common_right
File: Mathlib/Algebra/Module/LocalizedModule.lean

tactic: simp [mul_smul]
state_before: R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
s s' : ↥S
m : M
⊢ 1 • s • s' • m = 1 • (s * s') • m
state_after: no goals
Theorem: Matroid.restrict_strictRestriction
File: Mathlib/Data/Matroid/Restrict.lean

tactic: refine (M.restrict_restriction R hR.subset).strictRestriction_of_ne (fun h ↦ ?_)
state_before: α : Type u_1
M✝ : Matroid α
R I J X Y : Set α
N M : Matroid α
hR : R ⊂ M.E
⊢ M ↾ R <r M
state_after: α : Type u_1
M✝ : Matroid α
R I J X Y : Set α
N M : Matroid α
hR : R ⊂ M.E
h : M ↾ R = M
⊢ False

tactic: rw [← h, restrict_ground_eq] at hR
state_before: α : Type u_1
M✝ : Matroid α
R I J X Y : Set α
N M : Matroid α
hR : R ⊂ M.E
h : M ↾ R = M
⊢ False
state_after: α : Type u_1
M✝ : Matroid α
R I J X Y : Set α
N M : Matroid α
hR : R ⊂ R
h : M ↾ R = M
⊢ False

tactic: exact hR.ne rfl
state_before: α : Type u_1
M✝ : Matroid α
R I J X Y : Set α
N M : Matroid α
hR : R ⊂ R
h : M ↾ R = M
⊢ False
state_after: no goals
Theorem: PartialHomeomorph.ofSet_trans
File: Mathlib/Topology/PartialHomeomorph.lean

tactic: simp [hs.interior_eq, inter_comm]
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
e' : PartialHomeomorph Y Z
s : Set X
hs : IsOpen s
⊢ ((ofSet s hs).trans e).source = (e.restr s).source
state_after: no goals
Theorem: PiTensorProduct.tprodL_coe
File: Mathlib/Analysis/NormedSpace/PiTensorProduct/InjectiveSeminorm.lean

tactic: ext m
state_before: ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
⊢ (tprodL 𝕜).toMultilinearMap = tprod 𝕜
state_after: case H
ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
m : (i : ι) → E i
⊢ (tprodL 𝕜).toMultilinearMap m = (tprod 𝕜) m

tactic: simp only [ContinuousMultilinearMap.coe_coe, tprodL_toFun]
state_before: case H
ι : Type uι
inst✝⁵ : Fintype ι
𝕜 : Type u𝕜
inst✝⁴ : NontriviallyNormedField 𝕜
E : ι → Type uE
inst✝³ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝² : (i : ι) → NormedSpace 𝕜 (E i)
F : Type uF
inst✝¹ : SeminormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
m : (i : ι) → E i
⊢ (tprodL 𝕜).toMultilinearMap m = (tprod 𝕜) m
state_after: no goals
Theorem: zsmul_eq_smul_cast
File: Mathlib/Algebra/Module/Defs.lean

tactic: apply AddMonoidHom.ext_int
state_before: α : Type u_1
R : Type u_2
k : Type u_3
S : Type u_4
M : Type u_5
M₂ : Type u_6
M₃ : Type u_7
ι : Type u_8
inst✝⁴ : Semiring S
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module S M
inst✝ : Module R M
n : ℤ
b : M
⊢ (smulAddHom ℤ M).flip b = ((smulAddHom R M).flip b).comp (Int.castAddHom R)
state_after: case h1
α : Type u_1
R : Type u_2
k : Type u_3
S : Type u_4
M : Type u_5
M₂ : Type u_6
M₃ : Type u_7
ι : Type u_8
inst✝⁴ : Semiring S
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module S M
inst✝ : Module R M
n : ℤ
b : M
⊢ ((smulAddHom ℤ M).flip b) 1 = (((smulAddHom R M).flip b).comp (Int.castAddHom R)) 1

tactic: simp
state_before: case h1
α : Type u_1
R : Type u_2
k : Type u_3
S : Type u_4
M : Type u_5
M₂ : Type u_6
M₃ : Type u_7
ι : Type u_8
inst✝⁴ : Semiring S
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module S M
inst✝ : Module R M
n : ℤ
b : M
⊢ ((smulAddHom ℤ M).flip b) 1 = (((smulAddHom R M).flip b).comp (Int.castAddHom R)) 1
state_after: no goals
Theorem: Subgroup.map_symm_eq_iff_map_eq
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: constructor <;> rintro rfl
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁵ : Group G
inst✝⁴ : Group G'
inst✝³ : Group G''
A : Type u_4
inst✝² : AddGroup A
H✝ K : Subgroup G
k : Set G
N : Type u_5
inst✝¹ : Group N
P : Type u_6
inst✝ : Group P
H : Subgroup N
e : G ≃* N
⊢ map (↑e.symm) H = K ↔ map (↑e) K = H
state_after: case mp
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁵ : Group G
inst✝⁴ : Group G'
inst✝³ : Group G''
A : Type u_4
inst✝² : AddGroup A
H✝ : Subgroup G
k : Set G
N : Type u_5
inst✝¹ : Group N
P : Type u_6
inst✝ : Group P
H : Subgroup N
e : G ≃* N
⊢ map (↑e) (map (↑e.symm) H) = H

case mpr
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁵ : Group G
inst✝⁴ : Group G'
inst✝³ : Group G''
A : Type u_4
inst✝² : AddGroup A
H K : Subgroup G
k : Set G
N : Type u_5
inst✝¹ : Group N
P : Type u_6
inst✝ : Group P
e : G ≃* N
⊢ map (↑e.symm) (map (↑e) K) = K

tactic: rw [map_map, ← MulEquiv.coe_monoidHom_trans, MulEquiv.symm_trans_self,
  MulEquiv.coe_monoidHom_refl, map_id]
state_before: case mp
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁵ : Group G
inst✝⁴ : Group G'
inst✝³ : Group G''
A : Type u_4
inst✝² : AddGroup A
H✝ : Subgroup G
k : Set G
N : Type u_5
inst✝¹ : Group N
P : Type u_6
inst✝ : Group P
H : Subgroup N
e : G ≃* N
⊢ map (↑e) (map (↑e.symm) H) = H
state_after: no goals

tactic: rw [map_map, ← MulEquiv.coe_monoidHom_trans, MulEquiv.self_trans_symm,
  MulEquiv.coe_monoidHom_refl, map_id]
state_before: case mpr
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁵ : Group G
inst✝⁴ : Group G'
inst✝³ : Group G''
A : Type u_4
inst✝² : AddGroup A
H K : Subgroup G
k : Set G
N : Type u_5
inst✝¹ : Group N
P : Type u_6
inst✝ : Group P
e : G ≃* N
⊢ map (↑e.symm) (map (↑e) K) = K
state_after: no goals
Theorem: List.zipWith_comm_of_comm
File: Mathlib/Data/List/Zip.lean

tactic: rw [zipWith_comm]
state_before: α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f : α → α → β
comm : ∀ (x y : α), f x y = f y x
l l' : List α
⊢ zipWith f l l' = zipWith f l' l
state_after: α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f : α → α → β
comm : ∀ (x y : α), f x y = f y x
l l' : List α
⊢ zipWith (fun b a => f a b) l' l = zipWith f l' l

tactic: simp only [comm]
state_before: α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f : α → α → β
comm : ∀ (x y : α), f x y = f y x
l l' : List α
⊢ zipWith (fun b a => f a b) l' l = zipWith f l' l
state_after: no goals
Theorem: CompHaus.Gleason
File: Mathlib/Topology/Category/Stonean/Basic.lean

tactic: constructor
state_before: X : CompHaus
⊢ Projective X ↔ ExtremallyDisconnected ↑X.toTop
state_after: case mp
X : CompHaus
⊢ Projective X → ExtremallyDisconnected ↑X.toTop

case mpr
X : CompHaus
⊢ ExtremallyDisconnected ↑X.toTop → Projective X

tactic: intro h
state_before: case mp
X : CompHaus
⊢ Projective X → ExtremallyDisconnected ↑X.toTop
state_after: case mp
X : CompHaus
h : Projective X
⊢ ExtremallyDisconnected ↑X.toTop

tactic: show ExtremallyDisconnected X.toStonean
state_before: case mp
X : CompHaus
h : Projective X
⊢ ExtremallyDisconnected ↑X.toTop
state_after: case mp
X : CompHaus
h : Projective X
⊢ ExtremallyDisconnected (CoeSort.coe X.toStonean)

tactic: infer_instance
state_before: case mp
X : CompHaus
h : Projective X
⊢ ExtremallyDisconnected (CoeSort.coe X.toStonean)
state_after: no goals

tactic: intro h
state_before: case mpr
X : CompHaus
⊢ ExtremallyDisconnected ↑X.toTop → Projective X
state_after: case mpr
X : CompHaus
h : ExtremallyDisconnected ↑X.toTop
⊢ Projective X

tactic: let X' : Stonean := ⟨X⟩
state_before: case mpr
X : CompHaus
h : ExtremallyDisconnected ↑X.toTop
⊢ Projective X
state_after: case mpr
X : CompHaus
h : ExtremallyDisconnected ↑X.toTop
X' : Stonean := Stonean.mk X
⊢ Projective X

tactic: show Projective X'.compHaus
state_before: case mpr
X : CompHaus
h : ExtremallyDisconnected ↑X.toTop
X' : Stonean := Stonean.mk X
⊢ Projective X
state_after: case mpr
X : CompHaus
h : ExtremallyDisconnected ↑X.toTop
X' : Stonean := Stonean.mk X
⊢ Projective X'.compHaus

tactic: apply Stonean.instProjectiveCompHausCompHaus
state_before: case mpr
X : CompHaus
h : ExtremallyDisconnected ↑X.toTop
X' : Stonean := Stonean.mk X
⊢ Projective X'.compHaus
state_after: no goals
Theorem: AddLECancellable.add_tsub_tsub_cancel
File: Mathlib/Algebra/Order/Sub/Canonical.lean

tactic: rw [add_assoc, add_tsub_cancel_of_le h, add_comm]
state_before: α : Type u_1
inst✝⁵ : AddCommSemigroup α
inst✝⁴ : PartialOrder α
inst✝³ : ExistsAddOfLE α
inst✝² : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
hac : AddLECancellable (a - c)
h : c ≤ a
⊢ a + b = b + c + (a - c)
state_after: no goals
Theorem: IsLocalization.Away.sec_spec
File: Mathlib/RingTheory/Localization/Away/Basic.lean

tactic: simp only [IsLocalization.Away.sec, ← IsLocalization.sec_spec]
state_before: R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝³ : CommSemiring S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommSemiring P
x : R
inst✝ : Away x S
s : S
⊢ s * (algebraMap R S) (x ^ (sec x s).2) = (algebraMap R S) (sec x s).1
state_after: R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝³ : CommSemiring S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommSemiring P
x : R
inst✝ : Away x S
s : S
⊢ s * (algebraMap R S) (x ^ Exists.choose ⋯) = s * (algebraMap R S) ↑(IsLocalization.sec (Submonoid.powers x) s).2

tactic: congr
state_before: R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝³ : CommSemiring S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommSemiring P
x : R
inst✝ : Away x S
s : S
⊢ s * (algebraMap R S) (x ^ Exists.choose ⋯) = s * (algebraMap R S) ↑(IsLocalization.sec (Submonoid.powers x) s).2
state_after: case e_a.h.e_6.h
R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝³ : CommSemiring S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommSemiring P
x : R
inst✝ : Away x S
s : S
⊢ x ^ Exists.choose ⋯ = ↑(IsLocalization.sec (Submonoid.powers x) s).2

tactic: exact (IsLocalization.sec (Submonoid.powers x) s).2.property.choose_spec
state_before: case e_a.h.e_6.h
R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝³ : CommSemiring S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommSemiring P
x : R
inst✝ : Away x S
s : S
⊢ x ^ Exists.choose ⋯ = ↑(IsLocalization.sec (Submonoid.powers x) s).2
state_after: no goals
Theorem: Option.map₂_left_comm
File: Mathlib/Data/Option/NAry.lean

tactic: cases a <;> cases b <;> cases c <;> simp [h_left_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
f✝ : α → β → γ
a : Option α
b : Option β
c : Option γ
α' : Type u_5
β' : Type u_6
δ' : Type u_7
ε : Type u_8
ε' : Type u_9
f : α → δ → ε
g : β → γ → δ
f' : α → γ → δ'
g' : β → δ' → ε
h_left_comm : ∀ (a : α) (b : β) (c : γ), f a (g b c) = g' b (f' a c)
⊢ map₂ f a (map₂ g b c) = map₂ g' b (map₂ f' a c)
state_after: no goals
Theorem: MeasureTheory.Integrable.condKernel_ae
File: Mathlib/Probability/Kernel/Disintegration/Integral.lean

tactic: have hf_ae : AEStronglyMeasurable f ρ := hf_int.1
state_before: α : Type u_1
Ω : Type u_2
E : Type u_3
F : Type u_4
mα : MeasurableSpace α
inst✝⁶ : MeasurableSpace Ω
inst✝⁵ : StandardBorelSpace Ω
inst✝⁴ : Nonempty Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
ρ : Measure (α × Ω)
inst✝ : IsFiniteMeasure ρ
f : α × Ω → F
hf_int : Integrable f ρ
⊢ ∀ᵐ (a : α) ∂ρ.fst, Integrable (fun ω => f (a, ω)) (ρ.condKernel a)
state_after: α : Type u_1
Ω : Type u_2
E : Type u_3
F : Type u_4
mα : MeasurableSpace α
inst✝⁶ : MeasurableSpace Ω
inst✝⁵ : StandardBorelSpace Ω
inst✝⁴ : Nonempty Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
ρ : Measure (α × Ω)
inst✝ : IsFiniteMeasure ρ
f : α × Ω → F
hf_int : Integrable f ρ
hf_ae : AEStronglyMeasurable f ρ
⊢ ∀ᵐ (a : α) ∂ρ.fst, Integrable (fun ω => f (a, ω)) (ρ.condKernel a)

tactic: rw [← hf_ae.ae_integrable_condKernel_iff] at hf_int
state_before: α : Type u_1
Ω : Type u_2
E : Type u_3
F : Type u_4
mα : MeasurableSpace α
inst✝⁶ : MeasurableSpace Ω
inst✝⁵ : StandardBorelSpace Ω
inst✝⁴ : Nonempty Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
ρ : Measure (α × Ω)
inst✝ : IsFiniteMeasure ρ
f : α × Ω → F
hf_int : Integrable f ρ
hf_ae : AEStronglyMeasurable f ρ
⊢ ∀ᵐ (a : α) ∂ρ.fst, Integrable (fun ω => f (a, ω)) (ρ.condKernel a)
state_after: α : Type u_1
Ω : Type u_2
E : Type u_3
F : Type u_4
mα : MeasurableSpace α
inst✝⁶ : MeasurableSpace Ω
inst✝⁵ : StandardBorelSpace Ω
inst✝⁴ : Nonempty Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
ρ : Measure (α × Ω)
inst✝ : IsFiniteMeasure ρ
f : α × Ω → F
hf_int :
  (∀ᵐ (a : α) ∂ρ.fst, Integrable (fun ω => f (a, ω)) (ρ.condKernel a)) ∧
    Integrable (fun a => ∫ (ω : Ω), ‖f (a, ω)‖ ∂ρ.condKernel a) ρ.fst
hf_ae : AEStronglyMeasurable f ρ
⊢ ∀ᵐ (a : α) ∂ρ.fst, Integrable (fun ω => f (a, ω)) (ρ.condKernel a)

tactic: exact hf_int.1
state_before: α : Type u_1
Ω : Type u_2
E : Type u_3
F : Type u_4
mα : MeasurableSpace α
inst✝⁶ : MeasurableSpace Ω
inst✝⁵ : StandardBorelSpace Ω
inst✝⁴ : Nonempty Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
ρ : Measure (α × Ω)
inst✝ : IsFiniteMeasure ρ
f : α × Ω → F
hf_int :
  (∀ᵐ (a : α) ∂ρ.fst, Integrable (fun ω => f (a, ω)) (ρ.condKernel a)) ∧
    Integrable (fun a => ∫ (ω : Ω), ‖f (a, ω)‖ ∂ρ.condKernel a) ρ.fst
hf_ae : AEStronglyMeasurable f ρ
⊢ ∀ᵐ (a : α) ∂ρ.fst, Integrable (fun ω => f (a, ω)) (ρ.condKernel a)
state_after: no goals
Theorem: Prod.fst_zmod_cast
File: Mathlib/Data/ZMod/Basic.lean

tactic: cases n
state_before: n : ℕ
R : Type u_1
inst✝¹ : AddGroupWithOne R
S : Type u_2
inst✝ : AddGroupWithOne S
a : ZMod n
⊢ a.cast.1 = a.cast
state_after: case zero
R : Type u_1
inst✝¹ : AddGroupWithOne R
S : Type u_2
inst✝ : AddGroupWithOne S
a : ZMod 0
⊢ a.cast.1 = a.cast

case succ
R : Type u_1
inst✝¹ : AddGroupWithOne R
S : Type u_2
inst✝ : AddGroupWithOne S
n✝ : ℕ
a : ZMod (n✝ + 1)
⊢ a.cast.1 = a.cast

tactic: rfl
state_before: case zero
R : Type u_1
inst✝¹ : AddGroupWithOne R
S : Type u_2
inst✝ : AddGroupWithOne S
a : ZMod 0
⊢ a.cast.1 = a.cast
state_after: no goals

tactic: simp [ZMod.cast]
state_before: case succ
R : Type u_1
inst✝¹ : AddGroupWithOne R
S : Type u_2
inst✝ : AddGroupWithOne S
n✝ : ℕ
a : ZMod (n✝ + 1)
⊢ a.cast.1 = a.cast
state_after: no goals
Theorem: le_himp_comm
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [le_himp_iff, le_himp_iff']
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedHeytingAlgebra α
a b c d : α
⊢ a ≤ b ⇨ c ↔ b ≤ a ⇨ c
state_after: no goals