1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Real.ennnorm_eq_ofReal_abs
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: rw [← Real.nnnorm_abs r, Real.ennnorm_eq_ofReal (abs_nonneg _)]
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r✝ r₁ r₂ r : ℝ
⊢ ↑‖r‖₊ = ENNReal.ofReal |r|
state_after: no goals
Theorem: CochainComplex.ShiftSequence.shiftIso_inv_app
File: Mathlib/Algebra/Homology/HomotopyCategory/ShiftSequence.lean

tactic: dsimp [shiftIso]
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : CategoryWithHomology C
n a a' : ℤ
ha' : n + a = a'
K : CochainComplex C ℤ
⊢ (shiftIso C n a a' ha').inv.app K = ShortComplex.homologyMap ((shiftShortComplexFunctorIso C n a a' ha').inv.app K)
state_after: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : CategoryWithHomology C
n a a' : ℤ
ha' : n + a = a'
K : CochainComplex C ℤ
⊢ ((𝟙 (homology K a') ≫ ShortComplex.homologyMap ((shiftShortComplexFunctorIso C n a a' ha').inv.app K)) ≫
        𝟙
          ((shortComplexFunctor C (up ℤ) a).obj
              ((CategoryTheory.shiftFunctor (HomologicalComplex C (up ℤ)) n).obj K)).homology) ≫
      𝟙 (((CategoryTheory.shiftFunctor (HomologicalComplex C (up ℤ)) n).obj K).homology a) =
    ShortComplex.homologyMap ((shiftShortComplexFunctorIso C n a a' ha').inv.app K)

tactic: erw [id_comp, comp_id, comp_id]
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
inst✝ : CategoryWithHomology C
n a a' : ℤ
ha' : n + a = a'
K : CochainComplex C ℤ
⊢ ((𝟙 (homology K a') ≫ ShortComplex.homologyMap ((shiftShortComplexFunctorIso C n a a' ha').inv.app K)) ≫
        𝟙
          ((shortComplexFunctor C (up ℤ) a).obj
              ((CategoryTheory.shiftFunctor (HomologicalComplex C (up ℤ)) n).obj K)).homology) ≫
      𝟙 (((CategoryTheory.shiftFunctor (HomologicalComplex C (up ℤ)) n).obj K).homology a) =
    ShortComplex.homologyMap ((shiftShortComplexFunctorIso C n a a' ha').inv.app K)
state_after: no goals
Theorem: CategoryTheory.NonPreadditiveAbelian.neg_add_self
File: Mathlib/CategoryTheory/Abelian/NonPreadditive.lean

tactic: rw [add_comm, add_neg_self]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : NonPreadditiveAbelian C
X Y : C
a : X ⟶ Y
⊢ -a + a = 0
state_after: no goals
Theorem: Relation.ReflTransGen.swap
File: Mathlib/Logic/Relation.lean

tactic: induction' h with b c _ hbc ih
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a b c d : α
h : ReflTransGen r b a
⊢ ReflTransGen (Function.swap r) a b
state_after: case refl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a b c d : α
⊢ ReflTransGen (Function.swap r) b b

case tail
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a b✝ c✝ d b c : α
a✝ : ReflTransGen r b✝ b
hbc : r b c
ih : ReflTransGen (Function.swap r) b b✝
⊢ ReflTransGen (Function.swap r) c b✝

tactic: rfl
state_before: case refl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a b c d : α
⊢ ReflTransGen (Function.swap r) b b
state_after: no goals

tactic: exact ih.head hbc
state_before: case tail
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a b✝ c✝ d b c : α
a✝ : ReflTransGen r b✝ b
hbc : r b c
ih : ReflTransGen (Function.swap r) b b✝
⊢ ReflTransGen (Function.swap r) c b✝
state_after: no goals
Theorem: DirectSum.coe_decompose_mul_of_left_mem_of_le
File: Mathlib/RingTheory/GradedAlgebra/Basic.lean

tactic: lift a to 𝒜 i using a_mem
state_before: ι : Type u_1
R : Type u_2
A : Type u_3
σ : Type u_4
inst✝⁸ : Semiring A
inst✝⁷ : DecidableEq ι
inst✝⁶ : CanonicallyOrderedAddCommMonoid ι
inst✝⁵ : SetLike σ A
inst✝⁴ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝³ : GradedRing 𝒜
a b : A
n i : ι
inst✝² : Sub ι
inst✝¹ : OrderedSub ι
inst✝ : ContravariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
a_mem : a ∈ 𝒜 i
h : i ≤ n
⊢ ↑(((decompose 𝒜) (a * b)) n) = a * ↑(((decompose 𝒜) b) (n - i))
state_after: case intro
ι : Type u_1
R : Type u_2
A : Type u_3
σ : Type u_4
inst✝⁸ : Semiring A
inst✝⁷ : DecidableEq ι
inst✝⁶ : CanonicallyOrderedAddCommMonoid ι
inst✝⁵ : SetLike σ A
inst✝⁴ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝³ : GradedRing 𝒜
b : A
n i : ι
inst✝² : Sub ι
inst✝¹ : OrderedSub ι
inst✝ : ContravariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
h : i ≤ n
a : ↥(𝒜 i)
⊢ ↑(((decompose 𝒜) (↑a * b)) n) = ↑a * ↑(((decompose 𝒜) b) (n - i))

tactic: rwa [decompose_mul, decompose_coe, coe_of_mul_apply_of_le]
state_before: case intro
ι : Type u_1
R : Type u_2
A : Type u_3
σ : Type u_4
inst✝⁸ : Semiring A
inst✝⁷ : DecidableEq ι
inst✝⁶ : CanonicallyOrderedAddCommMonoid ι
inst✝⁵ : SetLike σ A
inst✝⁴ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝³ : GradedRing 𝒜
b : A
n i : ι
inst✝² : Sub ι
inst✝¹ : OrderedSub ι
inst✝ : ContravariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
h : i ≤ n
a : ↥(𝒜 i)
⊢ ↑(((decompose 𝒜) (↑a * b)) n) = ↑a * ↑(((decompose 𝒜) b) (n - i))
state_after: no goals
Theorem: Memℓp.const_mul
File: Mathlib/Analysis/NormedSpace/lpSpace.lean

tactic: infer_instance
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝³ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type u_3
inst✝² : NormedRing 𝕜
inst✝¹ : (i : α) → Module 𝕜 (E i)
inst✝ : ∀ (i : α), BoundedSMul 𝕜 (E i)
f : α → 𝕜
hf : Memℓp f p
c : 𝕜
i : α
⊢ BoundedSMul 𝕜 ((fun x => 𝕜) i)
state_after: no goals
Theorem: Finset.monotone_iff_forall_le_cons
File: Mathlib/Data/Finset/Interval.lean

tactic: classical simp [monotone_iff_forall_covBy, covBy_iff_exists_cons]
state_before: α : Type u_1
β : Type u_2
inst✝ : Preorder β
s t : Finset α
f : Finset α → β
⊢ Monotone f ↔ ∀ (s : Finset α) ⦃a : α⦄ (ha : a ∉ s), f s ≤ f (cons a s ha)
state_after: no goals

tactic: simp [monotone_iff_forall_covBy, covBy_iff_exists_cons]
state_before: α : Type u_1
β : Type u_2
inst✝ : Preorder β
s t : Finset α
f : Finset α → β
⊢ Monotone f ↔ ∀ (s : Finset α) ⦃a : α⦄ (ha : a ∉ s), f s ≤ f (cons a s ha)
state_after: no goals
Theorem: IsGroupHom.trivial_ker_iff_eq_one
File: Mathlib/Deprecated/Subgroup.lean

tactic: rw [Set.ext_iff]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
⊢ ker f = IsSubgroup.trivial G ↔ ∀ (x : G), f x = 1 → x = 1
state_after: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
⊢ (∀ (x : G), x ∈ ker f ↔ x ∈ IsSubgroup.trivial G) ↔ ∀ (x : G), f x = 1 → x = 1

tactic: simp [ker]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
⊢ (∀ (x : G), x ∈ ker f ↔ x ∈ IsSubgroup.trivial G) ↔ ∀ (x : G), f x = 1 → x = 1
state_after: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
⊢ (∀ (x : G), f x = 1 ↔ x = 1) ↔ ∀ (x : G), f x = 1 → x = 1

tactic: exact ⟨fun h x hx => (h x).1 hx, fun h x => ⟨h x, fun hx => by rw [hx, hf.map_one]⟩⟩
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
⊢ (∀ (x : G), f x = 1 ↔ x = 1) ↔ ∀ (x : G), f x = 1 → x = 1
state_after: no goals

tactic: rw [hx, hf.map_one]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
h : ∀ (x : G), f x = 1 → x = 1
x : G
hx : x = 1
⊢ f x = 1
state_after: no goals
Theorem: TopCat.prodIsoProd_hom_snd
File: Mathlib/Topology/Category/TopCat/Limits/Products.lean

tactic: simp [← Iso.eq_inv_comp, prodIsoProd]
state_before: J : Type v
inst✝ : SmallCategory J
X Y : TopCat
⊢ (X.prodIsoProd Y).hom ≫ prodSnd = prod.snd
state_after: J : Type v
inst✝ : SmallCategory J
X Y : TopCat
⊢ prodSnd = (X.prodBinaryFan Y).snd

tactic: rfl
state_before: J : Type v
inst✝ : SmallCategory J
X Y : TopCat
⊢ prodSnd = (X.prodBinaryFan Y).snd
state_after: no goals
Theorem: dense_of_exists_between
File: Mathlib/Topology/Order/Basic.lean

tactic: refine dense_iff_inter_open.2 fun U U_open U_nonempty => ?_
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
h : ∀ ⦃a b : α⦄, a < b → ∃ c ∈ s, a < c ∧ c < b
⊢ Dense s
state_after: α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
h : ∀ ⦃a b : α⦄, a < b → ∃ c ∈ s, a < c ∧ c < b
U : Set α
U_open : IsOpen U
U_nonempty : U.Nonempty
⊢ (U ∩ s).Nonempty

tactic: obtain ⟨a, b, hab, H⟩ : ∃ a b : α, a < b ∧ Ioo a b ⊆ U := U_open.exists_Ioo_subset U_nonempty
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
h : ∀ ⦃a b : α⦄, a < b → ∃ c ∈ s, a < c ∧ c < b
U : Set α
U_open : IsOpen U
U_nonempty : U.Nonempty
⊢ (U ∩ s).Nonempty
state_after: case intro.intro.intro
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
h : ∀ ⦃a b : α⦄, a < b → ∃ c ∈ s, a < c ∧ c < b
U : Set α
U_open : IsOpen U
U_nonempty : U.Nonempty
a b : α
hab : a < b
H : Ioo a b ⊆ U
⊢ (U ∩ s).Nonempty

tactic: obtain ⟨x, xs, hx⟩ : ∃ x ∈ s, a < x ∧ x < b := h hab
state_before: case intro.intro.intro
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
h : ∀ ⦃a b : α⦄, a < b → ∃ c ∈ s, a < c ∧ c < b
U : Set α
U_open : IsOpen U
U_nonempty : U.Nonempty
a b : α
hab : a < b
H : Ioo a b ⊆ U
⊢ (U ∩ s).Nonempty
state_after: case intro.intro.intro.intro.intro
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
h : ∀ ⦃a b : α⦄, a < b → ∃ c ∈ s, a < c ∧ c < b
U : Set α
U_open : IsOpen U
U_nonempty : U.Nonempty
a b : α
hab : a < b
H : Ioo a b ⊆ U
x : α
xs : x ∈ s
hx : a < x ∧ x < b
⊢ (U ∩ s).Nonempty

tactic: exact ⟨x, ⟨H hx, xs⟩⟩
state_before: case intro.intro.intro.intro.intro
α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : Nontrivial α
s : Set α
h : ∀ ⦃a b : α⦄, a < b → ∃ c ∈ s, a < c ∧ c < b
U : Set α
U_open : IsOpen U
U_nonempty : U.Nonempty
a b : α
hab : a < b
H : Ioo a b ⊆ U
x : α
xs : x ∈ s
hx : a < x ∧ x < b
⊢ (U ∩ s).Nonempty
state_after: no goals
Theorem: List.measurable_prod'
File: Mathlib/MeasureTheory/Group/Arithmetic.lean

tactic: induction' l with f l ihl
state_before: α✝ : Type u_1
M : Type u_2
α : Type u_3
inst✝² : Monoid M
inst✝¹ : MeasurableSpace M
inst✝ : MeasurableMul₂ M
m : MeasurableSpace α
μ : Measure α
l : List (α → M)
hl : ∀ f ∈ l, Measurable f
⊢ Measurable l.prod
state_after: case nil
α✝ : Type u_1
M : Type u_2
α : Type u_3
inst✝² : Monoid M
inst✝¹ : MeasurableSpace M
inst✝ : MeasurableMul₂ M
m : MeasurableSpace α
μ : Measure α
hl : ∀ f ∈ [], Measurable f
⊢ Measurable [].prod

case cons
α✝ : Type u_1
M : Type u_2
α : Type u_3
inst✝² : Monoid M
inst✝¹ : MeasurableSpace M
inst✝ : MeasurableMul₂ M
m : MeasurableSpace α
μ : Measure α
f : α → M
l : List (α → M)
ihl : (∀ f ∈ l, Measurable f) → Measurable l.prod
hl : ∀ f_1 ∈ f :: l, Measurable f_1
⊢ Measurable (f :: l).prod

tactic: rw [List.forall_mem_cons] at hl
state_before: case cons
α✝ : Type u_1
M : Type u_2
α : Type u_3
inst✝² : Monoid M
inst✝¹ : MeasurableSpace M
inst✝ : MeasurableMul₂ M
m : MeasurableSpace α
μ : Measure α
f : α → M
l : List (α → M)
ihl : (∀ f ∈ l, Measurable f) → Measurable l.prod
hl : ∀ f_1 ∈ f :: l, Measurable f_1
⊢ Measurable (f :: l).prod
state_after: case cons
α✝ : Type u_1
M : Type u_2
α : Type u_3
inst✝² : Monoid M
inst✝¹ : MeasurableSpace M
inst✝ : MeasurableMul₂ M
m : MeasurableSpace α
μ : Measure α
f : α → M
l : List (α → M)
ihl : (∀ f ∈ l, Measurable f) → Measurable l.prod
hl : Measurable f ∧ ∀ x ∈ l, Measurable x
⊢ Measurable (f :: l).prod

tactic: rw [List.prod_cons]
state_before: case cons
α✝ : Type u_1
M : Type u_2
α : Type u_3
inst✝² : Monoid M
inst✝¹ : MeasurableSpace M
inst✝ : MeasurableMul₂ M
m : MeasurableSpace α
μ : Measure α
f : α → M
l : List (α → M)
ihl : (∀ f ∈ l, Measurable f) → Measurable l.prod
hl : Measurable f ∧ ∀ x ∈ l, Measurable x
⊢ Measurable (f :: l).prod
state_after: case cons
α✝ : Type u_1
M : Type u_2
α : Type u_3
inst✝² : Monoid M
inst✝¹ : MeasurableSpace M
inst✝ : MeasurableMul₂ M
m : MeasurableSpace α
μ : Measure α
f : α → M
l : List (α → M)
ihl : (∀ f ∈ l, Measurable f) → Measurable l.prod
hl : Measurable f ∧ ∀ x ∈ l, Measurable x
⊢ Measurable (f * l.prod)

tactic: exact hl.1.mul (ihl hl.2)
state_before: case cons
α✝ : Type u_1
M : Type u_2
α : Type u_3
inst✝² : Monoid M
inst✝¹ : MeasurableSpace M
inst✝ : MeasurableMul₂ M
m : MeasurableSpace α
μ : Measure α
f : α → M
l : List (α → M)
ihl : (∀ f ∈ l, Measurable f) → Measurable l.prod
hl : Measurable f ∧ ∀ x ∈ l, Measurable x
⊢ Measurable (f * l.prod)
state_after: no goals

tactic: exact measurable_one
state_before: case nil
α✝ : Type u_1
M : Type u_2
α : Type u_3
inst✝² : Monoid M
inst✝¹ : MeasurableSpace M
inst✝ : MeasurableMul₂ M
m : MeasurableSpace α
μ : Measure α
hl : ∀ f ∈ [], Measurable f
⊢ Measurable [].prod
state_after: no goals
Theorem: Finset.univ_fin2
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: ext x
state_before: ⊢ univ = {0, 1}
state_after: case a
x : Fin 2
⊢ x ∈ univ ↔ x ∈ {0, 1}

tactic: fin_cases x <;> simp
state_before: case a
x : Fin 2
⊢ x ∈ univ ↔ x ∈ {0, 1}
state_after: no goals
Theorem: CategoryTheory.Functor.CommShift.ofIso_compatibility
File: Mathlib/CategoryTheory/Shift/CommShift.lean

tactic: letI := ofIso e A
state_before: C : Type u_1
D : Type u_2
E : Type u_3
inst✝⁵ : Category.{u_5, u_1} C
inst✝⁴ : Category.{u_6, u_2} D
F G : C ⥤ D
e : F ≅ G
A : Type u_4
inst✝³ : AddMonoid A
inst✝² : HasShift C A
inst✝¹ : HasShift D A
inst✝ : F.CommShift A
⊢ NatTrans.CommShift e.hom A
state_after: C : Type u_1
D : Type u_2
E : Type u_3
inst✝⁵ : Category.{u_5, u_1} C
inst✝⁴ : Category.{u_6, u_2} D
F G : C ⥤ D
e : F ≅ G
A : Type u_4
inst✝³ : AddMonoid A
inst✝² : HasShift C A
inst✝¹ : HasShift D A
inst✝ : F.CommShift A
this : G.CommShift A := ofIso e A
⊢ NatTrans.CommShift e.hom A

tactic: refine' ⟨fun a => _⟩
state_before: C : Type u_1
D : Type u_2
E : Type u_3
inst✝⁵ : Category.{u_5, u_1} C
inst✝⁴ : Category.{u_6, u_2} D
F G : C ⥤ D
e : F ≅ G
A : Type u_4
inst✝³ : AddMonoid A
inst✝² : HasShift C A
inst✝¹ : HasShift D A
inst✝ : F.CommShift A
this : G.CommShift A := ofIso e A
⊢ NatTrans.CommShift e.hom A
state_after: C : Type u_1
D : Type u_2
E : Type u_3
inst✝⁵ : Category.{u_5, u_1} C
inst✝⁴ : Category.{u_6, u_2} D
F G : C ⥤ D
e : F ≅ G
A : Type u_4
inst✝³ : AddMonoid A
inst✝² : HasShift C A
inst✝¹ : HasShift D A
inst✝ : F.CommShift A
this : G.CommShift A := ofIso e A
a : A
⊢ (F.commShiftIso a).hom ≫ whiskerRight e.hom (shiftFunctor D a) =
    whiskerLeft (shiftFunctor C a) e.hom ≫ (G.commShiftIso a).hom

tactic: dsimp [commShiftIso, ofIso]
state_before: C : Type u_1
D : Type u_2
E : Type u_3
inst✝⁵ : Category.{u_5, u_1} C
inst✝⁴ : Category.{u_6, u_2} D
F G : C ⥤ D
e : F ≅ G
A : Type u_4
inst✝³ : AddMonoid A
inst✝² : HasShift C A
inst✝¹ : HasShift D A
inst✝ : F.CommShift A
this : G.CommShift A := ofIso e A
a : A
⊢ (F.commShiftIso a).hom ≫ whiskerRight e.hom (shiftFunctor D a) =
    whiskerLeft (shiftFunctor C a) e.hom ≫ (G.commShiftIso a).hom
state_after: C : Type u_1
D : Type u_2
E : Type u_3
inst✝⁵ : Category.{u_5, u_1} C
inst✝⁴ : Category.{u_6, u_2} D
F G : C ⥤ D
e : F ≅ G
A : Type u_4
inst✝³ : AddMonoid A
inst✝² : HasShift C A
inst✝¹ : HasShift D A
inst✝ : F.CommShift A
this : G.CommShift A := ofIso e A
a : A
⊢ (iso a).hom ≫ whiskerRight e.hom (shiftFunctor D a) =
    whiskerLeft (shiftFunctor C a) e.hom ≫
      whiskerLeft (shiftFunctor C a) e.inv ≫ (iso a).hom ≫ whiskerRight e.hom (shiftFunctor D a)

tactic: rw [← whiskerLeft_comp_assoc, e.hom_inv_id, whiskerLeft_id', id_comp]
state_before: C : Type u_1
D : Type u_2
E : Type u_3
inst✝⁵ : Category.{u_5, u_1} C
inst✝⁴ : Category.{u_6, u_2} D
F G : C ⥤ D
e : F ≅ G
A : Type u_4
inst✝³ : AddMonoid A
inst✝² : HasShift C A
inst✝¹ : HasShift D A
inst✝ : F.CommShift A
this : G.CommShift A := ofIso e A
a : A
⊢ (iso a).hom ≫ whiskerRight e.hom (shiftFunctor D a) =
    whiskerLeft (shiftFunctor C a) e.hom ≫
      whiskerLeft (shiftFunctor C a) e.inv ≫ (iso a).hom ≫ whiskerRight e.hom (shiftFunctor D a)
state_after: no goals
Theorem: LazyList.mem_nil
File: Mathlib/Data/LazyList/Basic.lean

tactic: simp [Membership.mem, LazyList.Mem]
state_before: α : Type u_1
x : α
⊢ x ∈ nil ↔ False
state_after: no goals
Theorem: Option.isSome_map
File: Mathlib/Data/Option/Basic.lean

tactic: cases o <;> rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
f : α → β
o : Option α
⊢ (Option.map f o).isSome = o.isSome
state_after: no goals
Theorem: Set.projIci_coe
File: Mathlib/Order/Interval/Set/ProjIcc.lean

tactic: cases x
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a b : α
h : a ≤ b
x✝ : α
x : ↑(Ici a)
⊢ projIci a ↑x = x
state_after: case mk
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a b : α
h : a ≤ b
x val✝ : α
property✝ : val✝ ∈ Ici a
⊢ projIci a ↑⟨val✝, property✝⟩ = ⟨val✝, property✝⟩

tactic: apply projIci_of_mem
state_before: case mk
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a b : α
h : a ≤ b
x val✝ : α
property✝ : val✝ ∈ Ici a
⊢ projIci a ↑⟨val✝, property✝⟩ = ⟨val✝, property✝⟩
state_after: no goals
Theorem: Finset.singleton_iff_unique_mem
File: Mathlib/Data/Finset/Basic.lean

tactic: simp only [eq_singleton_iff_unique_mem, ExistsUnique]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s✝ : Finset α
a b : α
s : Finset α
⊢ (∃ a, s = {a}) ↔ ∃! a, a ∈ s
state_after: no goals
Theorem: Multiset.powersetCardAux_cons
File: Mathlib/Data/Multiset/Powerset.lean

tactic: simp only [powersetCardAux_eq_map_coe, sublistsLen_succ_cons, map_append, List.map_map,
  append_cancel_left_eq]
state_before: α : Type u_1
n : ℕ
a : α
l : List α
⊢ powersetCardAux (n + 1) (a :: l) = powersetCardAux (n + 1) l ++ List.map (cons a) (powersetCardAux n l)
state_after: α : Type u_1
n : ℕ
a : α
l : List α
⊢ List.map (ofList ∘ List.cons a) (sublistsLen n l) = List.map (cons a ∘ ofList) (sublistsLen n l)

tactic: rfl
state_before: α : Type u_1
n : ℕ
a : α
l : List α
⊢ List.map (ofList ∘ List.cons a) (sublistsLen n l) = List.map (cons a ∘ ofList) (sublistsLen n l)
state_after: no goals
Theorem: List.rotate'_mod
File: Mathlib/Data/List/Rotate.lean

tactic: rw [rotate'_length_mul]
state_before: α : Type u
l : List α
n : ℕ
⊢ l.rotate' (n % l.length) = (l.rotate' (n % l.length)).rotate' ((l.rotate' (n % l.length)).length * (n / l.length))
state_after: no goals

tactic: rw [rotate'_rotate', length_rotate', Nat.mod_add_div]
state_before: α : Type u
l : List α
n : ℕ
⊢ (l.rotate' (n % l.length)).rotate' ((l.rotate' (n % l.length)).length * (n / l.length)) = l.rotate' n
state_after: no goals
Theorem: Nat.one_lt_bit0
File: Mathlib/Init/Data/Nat/Lemmas.lean

tactic: contradiction
state_before: h : 0 ≠ 0
⊢ 1 < bit0 0
state_after: no goals

tactic: rw [Nat.bit0_succ_eq]
state_before: n : ℕ
_h : n.succ ≠ 0
⊢ 1 < bit0 n.succ
state_after: n : ℕ
_h : n.succ ≠ 0
⊢ 1 < (bit0 n).succ.succ

tactic: apply succ_lt_succ
state_before: n : ℕ
_h : n.succ ≠ 0
⊢ 1 < (bit0 n).succ.succ
state_after: case a
n : ℕ
_h : n.succ ≠ 0
⊢ 0 < bit0 n + 1

tactic: apply zero_lt_succ
state_before: case a
n : ℕ
_h : n.succ ≠ 0
⊢ 0 < bit0 n + 1
state_after: no goals
Theorem: extChartAt_target_mem_nhds
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: convert extChartAt_target_mem_nhdsWithin I x
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
inst✝² : ChartedSpace H M
inst✝¹ : ChartedSpace H' M'
inst✝ : I.Boundaryless
x : M
⊢ (extChartAt I x).target ∈ 𝓝 (↑(extChartAt I x) x)
state_after: case h.e'_5
𝕜 : 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
inst✝² : ChartedSpace H M
inst✝¹ : ChartedSpace H' M'
inst✝ : I.Boundaryless
x : M
⊢ 𝓝 (↑(extChartAt I x) x) = 𝓝[range ↑I] ↑(extChartAt I x) x

tactic: simp only [I.range_eq_univ, nhdsWithin_univ]
state_before: case h.e'_5
𝕜 : 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
inst✝² : ChartedSpace H M
inst✝¹ : ChartedSpace H' M'
inst✝ : I.Boundaryless
x : M
⊢ 𝓝 (↑(extChartAt I x) x) = 𝓝[range ↑I] ↑(extChartAt I x) x
state_after: no goals