1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Module.End.isSemisimple_iff
File: Mathlib/LinearAlgebra/Semisimple.lean

tactic: set s := (AEval.comapSubmodule R M f).range
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
⊢ f.IsSemisimple ↔ ∀ p ≤ Submodule.comap f p, ∃ q ≤ Submodule.comap f q, IsCompl p q
state_after: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
s : CompleteSublattice (Submodule R M) := (AEval.comapSubmodule R M f).range
⊢ f.IsSemisimple ↔ ∀ p ≤ Submodule.comap f p, ∃ q ≤ Submodule.comap f q, IsCompl p q

tactic: have h : s = {p : Submodule R M | p ≤ p.comap f} := AEval.range_comapSubmodule R M f
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
s : CompleteSublattice (Submodule R M) := (AEval.comapSubmodule R M f).range
⊢ f.IsSemisimple ↔ ∀ p ≤ Submodule.comap f p, ∃ q ≤ Submodule.comap f q, IsCompl p q
state_after: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
s : CompleteSublattice (Submodule R M) := (AEval.comapSubmodule R M f).range
h : ↑s = {p | p ≤ Submodule.comap f p}
⊢ f.IsSemisimple ↔ ∀ p ≤ Submodule.comap f p, ∃ q ≤ Submodule.comap f q, IsCompl p q

tactic: let e := CompleteLatticeHom.toOrderIsoRangeOfInjective _ (AEval.injective_comapSubmodule R M f)
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
s : CompleteSublattice (Submodule R M) := (AEval.comapSubmodule R M f).range
h : ↑s = {p | p ≤ Submodule.comap f p}
⊢ f.IsSemisimple ↔ ∀ p ≤ Submodule.comap f p, ∃ q ≤ Submodule.comap f q, IsCompl p q
state_after: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
s : CompleteSublattice (Submodule R M) := (AEval.comapSubmodule R M f).range
h : ↑s = {p | p ≤ Submodule.comap f p}
e : Submodule R[X] (AEval R M f) ≃o ↥(AEval.comapSubmodule R M f).range :=
  (AEval.comapSubmodule R M f).toOrderIsoRangeOfInjective ⋯
⊢ f.IsSemisimple ↔ ∀ p ≤ Submodule.comap f p, ∃ q ≤ Submodule.comap f q, IsCompl p q

tactic: simp_rw [Module.End.IsSemisimple, IsSemisimpleModule, e.complementedLattice_iff,
  s.isComplemented_iff, ← SetLike.mem_coe, h, mem_setOf_eq]
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f g : End R M
s : CompleteSublattice (Submodule R M) := (AEval.comapSubmodule R M f).range
h : ↑s = {p | p ≤ Submodule.comap f p}
e : Submodule R[X] (AEval R M f) ≃o ↥(AEval.comapSubmodule R M f).range :=
  (AEval.comapSubmodule R M f).toOrderIsoRangeOfInjective ⋯
⊢ f.IsSemisimple ↔ ∀ p ≤ Submodule.comap f p, ∃ q ≤ Submodule.comap f q, IsCompl p q
state_after: no goals
Theorem: tsub_le_iff_left
File: Mathlib/Algebra/Order/Sub/Defs.lean

tactic: rw [tsub_le_iff_right, add_comm]
state_before: α : Type u_1
β : Type u_2
inst✝³ : Preorder α
inst✝² : AddCommSemigroup α
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
⊢ a - b ≤ c ↔ a ≤ b + c
state_after: no goals
Theorem: Finset.prod_const_one
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: simp only [Finset.prod, Multiset.map_const', Multiset.prod_replicate, one_pow]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : CommMonoid β
⊢ ∏ _x ∈ s, 1 = 1
state_after: no goals
Theorem: Nat.log_pos_iff
File: Mathlib/Data/Nat/Log.lean

tactic: rw [Nat.pos_iff_ne_zero, Ne, log_eq_zero_iff, not_or, not_lt, not_le]
state_before: b n : ℕ
⊢ 0 < log b n ↔ b ≤ n ∧ 1 < b
state_after: no goals
Theorem: Valued.mem_nhds_zero
File: Mathlib/Topology/Algebra/Valuation.lean

tactic: simp only [mem_nhds, sub_zero]
state_before: R : Type u
inst✝¹ : Ring R
Γ₀ : Type v
inst✝ : LinearOrderedCommGroupWithZero Γ₀
_i : Valued R Γ₀
s : Set R
⊢ s ∈ 𝓝 0 ↔ ∃ γ, {x | v x < ↑γ} ⊆ s
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.X_ne_zero_of_Z_eq_zero
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: intro hPx
state_before: R : Type u
inst✝² : CommRing R
W' : Jacobian R
F : Type v
inst✝¹ : Field F
W : Jacobian F
inst✝ : NoZeroDivisors R
P : Fin 3 → R
hP : W'.Nonsingular P
hPz : P z = 0
⊢ P x ≠ 0
state_after: R : Type u
inst✝² : CommRing R
W' : Jacobian R
F : Type v
inst✝¹ : Field F
W : Jacobian F
inst✝ : NoZeroDivisors R
P : Fin 3 → R
hP : W'.Nonsingular P
hPz : P z = 0
hPx : P x = 0
⊢ False

tactic: simp only [nonsingular_of_Z_eq_zero hPz, equation_of_Z_eq_zero hPz, hPx, mul_zero, zero_mul,
  zero_pow <| OfNat.ofNat_ne_zero _, ne_self_iff_false, or_false, false_or] at hP
state_before: R : Type u
inst✝² : CommRing R
W' : Jacobian R
F : Type v
inst✝¹ : Field F
W : Jacobian F
inst✝ : NoZeroDivisors R
P : Fin 3 → R
hP : W'.Nonsingular P
hPz : P z = 0
hPx : P x = 0
⊢ False
state_after: R : Type u
inst✝² : CommRing R
W' : Jacobian R
F : Type v
inst✝¹ : Field F
W : Jacobian F
inst✝ : NoZeroDivisors R
P : Fin 3 → R
hPz : P z = 0
hPx : P x = 0
hP : P y ^ 2 = 0 ∧ 2 * P y ≠ 0
⊢ False

tactic: rwa [pow_eq_zero_iff two_ne_zero, hP.left, eq_self, true_and, mul_zero, ne_self_iff_false] at hP
state_before: R : Type u
inst✝² : CommRing R
W' : Jacobian R
F : Type v
inst✝¹ : Field F
W : Jacobian F
inst✝ : NoZeroDivisors R
P : Fin 3 → R
hPz : P z = 0
hPx : P x = 0
hP : P y ^ 2 = 0 ∧ 2 * P y ≠ 0
⊢ False
state_after: no goals
Theorem: Nat.odd_of_mod_four_eq_one
File: Mathlib/Data/Nat/ModEq.lean

tactic: simpa [ModEq, show 2 * 2 = 4 by norm_num] using @ModEq.of_mul_left 2 n 1 2
state_before: m n✝ a b c d n : ℕ
⊢ n % 4 = 1 → n % 2 = 1
state_after: no goals

tactic: norm_num
state_before: m n✝ a b c d n : ℕ
⊢ 2 * 2 = 4
state_after: no goals
Theorem: Real.continuousAt_const_rpow
File: Mathlib/Analysis/SpecialFunctions/Pow/Continuity.lean

tactic: simp only [rpow_def]
state_before: a b : ℝ
h : a ≠ 0
⊢ ContinuousAt (fun x => a ^ x) b
state_after: a b : ℝ
h : a ≠ 0
⊢ ContinuousAt (fun x => (↑a ^ ↑x).re) b

tactic: refine Complex.continuous_re.continuousAt.comp ?_
state_before: a b : ℝ
h : a ≠ 0
⊢ ContinuousAt (fun x => (↑a ^ ↑x).re) b
state_after: a b : ℝ
h : a ≠ 0
⊢ ContinuousAt (fun x => ↑a ^ ↑x) b

tactic: refine (continuousAt_const_cpow ?_).comp Complex.continuous_ofReal.continuousAt
state_before: a b : ℝ
h : a ≠ 0
⊢ ContinuousAt (fun x => ↑a ^ ↑x) b
state_after: a b : ℝ
h : a ≠ 0
⊢ ↑a ≠ 0

tactic: norm_cast
state_before: a b : ℝ
h : a ≠ 0
⊢ ↑a ≠ 0
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.whiskerRight_iff
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: simp
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
U V W X✝ Y✝ Z X Y : C
f g : X ⟶ Y
⊢ f ▷ 𝟙_ C = g ▷ 𝟙_ C ↔ f = g
state_after: no goals
Theorem: Ordering.swap_orElse
File: Mathlib/Order/Compare.lean

tactic: cases o₁ <;> rfl
state_before: α : Type u_1
β : Type u_2
o₁ o₂ : Ordering
⊢ (o₁.orElse o₂).swap = o₁.swap.orElse o₂.swap
state_after: no goals
Theorem: AddMonoidAlgebra.modOf_add_divOf
File: Mathlib/Algebra/MonoidAlgebra/Division.lean

tactic: rw [add_comm, divOf_add_modOf]
state_before: k : Type u_1
G : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCancelCommMonoid G
x : k[G]
g : G
⊢ x %ᵒᶠ g + of' k G g * (x /ᵒᶠ g) = x
state_after: no goals
Theorem: legendreSym.at_one
File: Mathlib/NumberTheory/LegendreSymbol/Basic.lean

tactic: rw [legendreSym, Int.cast_one, MulChar.map_one]
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
⊢ legendreSym p 1 = 1
state_after: no goals
Theorem: AlgebraicGeometry.IsAffineOpen.basicOpen
File: Mathlib/AlgebraicGeometry/AffineScheme.lean

tactic: rw [← hU.fromSpec_image_basicOpen, Scheme.Hom.isAffineOpen_iff_of_isOpenImmersion]
state_before: X Y : Scheme
U : Opens ↑↑X.toPresheafedSpace
hU : IsAffineOpen U
f : ↑Γ(X, U)
⊢ IsAffineOpen (X.basicOpen f)
state_after: X Y : Scheme
U : Opens ↑↑X.toPresheafedSpace
hU : IsAffineOpen U
f : ↑Γ(X, U)
⊢ IsAffineOpen (PrimeSpectrum.basicOpen f)

tactic: convert isAffineOpen_opensRange
  (Spec.map (CommRingCat.ofHom <| algebraMap Γ(X, U) (Localization.Away f)))
state_before: X Y : Scheme
U : Opens ↑↑X.toPresheafedSpace
hU : IsAffineOpen U
f : ↑Γ(X, U)
⊢ IsAffineOpen (PrimeSpectrum.basicOpen f)
state_after: case h.e'_2.h
X Y : Scheme
U : Opens ↑↑X.toPresheafedSpace
hU : IsAffineOpen U
f : ↑Γ(X, U)
e_1✝ : Spec Γ(X, U) = Spec (CommRingCat.of ↑Γ(X, U))
⊢ PrimeSpectrum.basicOpen f =
    Scheme.Hom.opensRange (Spec.map (CommRingCat.ofHom (algebraMap (↑Γ(X, U)) (Localization.Away f))))

tactic: exact Opens.ext (PrimeSpectrum.localization_away_comap_range (Localization.Away f) f).symm
state_before: case h.e'_2.h
X Y : Scheme
U : Opens ↑↑X.toPresheafedSpace
hU : IsAffineOpen U
f : ↑Γ(X, U)
e_1✝ : Spec Γ(X, U) = Spec (CommRingCat.of ↑Γ(X, U))
⊢ PrimeSpectrum.basicOpen f =
    Scheme.Hom.opensRange (Spec.map (CommRingCat.ofHom (algebraMap (↑Γ(X, U)) (Localization.Away f))))
state_after: no goals
Theorem: Set.ncard_eq_toFinset_card
File: Mathlib/Data/Set/Card.lean

tactic: rw [← Nat.card_coe_set_eq, @Nat.card_eq_fintype_card _ hs.fintype,
  @Finite.card_toFinset _ _ hs.fintype hs]
state_before: α : Type u_1
β : Type u_2
s✝ t s : Set α
hs : autoParam s.Finite _auto✝
⊢ s.ncard = (Finite.toFinset hs).card
state_after: no goals
Theorem: CategoryTheory.mono_of_mono
File: Mathlib/CategoryTheory/Category/Basic.lean

tactic: constructor
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝ X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
inst✝ : Mono (f ≫ g)
⊢ Mono f
state_after: case right_cancellation
C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝ X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
inst✝ : Mono (f ≫ g)
⊢ ∀ {Z : C} (g h : Z ⟶ X), g ≫ f = h ≫ f → g = h

tactic: intro Z a b w
state_before: case right_cancellation
C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝ X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
inst✝ : Mono (f ≫ g)
⊢ ∀ {Z : C} (g h : Z ⟶ X), g ≫ f = h ≫ f → g = h
state_after: case right_cancellation
C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝¹ X Y Z✝ : C
f : X ⟶ Y
g : Y ⟶ Z✝
inst✝ : Mono (f ≫ g)
Z : C
a b : Z ⟶ X
w : a ≫ f = b ≫ f
⊢ a = b

tactic: replace w := congr_arg (fun k => k ≫ g) w
state_before: case right_cancellation
C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝¹ X Y Z✝ : C
f : X ⟶ Y
g : Y ⟶ Z✝
inst✝ : Mono (f ≫ g)
Z : C
a b : Z ⟶ X
w : a ≫ f = b ≫ f
⊢ a = b
state_after: case right_cancellation
C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝¹ X Y Z✝ : C
f : X ⟶ Y
g : Y ⟶ Z✝
inst✝ : Mono (f ≫ g)
Z : C
a b : Z ⟶ X
w : (fun k => k ≫ g) (a ≫ f) = (fun k => k ≫ g) (b ≫ f)
⊢ a = b

tactic: dsimp at w
state_before: case right_cancellation
C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝¹ X Y Z✝ : C
f : X ⟶ Y
g : Y ⟶ Z✝
inst✝ : Mono (f ≫ g)
Z : C
a b : Z ⟶ X
w : (fun k => k ≫ g) (a ≫ f) = (fun k => k ≫ g) (b ≫ f)
⊢ a = b
state_after: case right_cancellation
C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝¹ X Y Z✝ : C
f : X ⟶ Y
g : Y ⟶ Z✝
inst✝ : Mono (f ≫ g)
Z : C
a b : Z ⟶ X
w : (a ≫ f) ≫ g = (b ≫ f) ≫ g
⊢ a = b

tactic: rw [Category.assoc, Category.assoc] at w
state_before: case right_cancellation
C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝¹ X Y Z✝ : C
f : X ⟶ Y
g : Y ⟶ Z✝
inst✝ : Mono (f ≫ g)
Z : C
a b : Z ⟶ X
w : (a ≫ f) ≫ g = (b ≫ f) ≫ g
⊢ a = b
state_after: case right_cancellation
C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝¹ X Y Z✝ : C
f : X ⟶ Y
g : Y ⟶ Z✝
inst✝ : Mono (f ≫ g)
Z : C
a b : Z ⟶ X
w : a ≫ f ≫ g = b ≫ f ≫ g
⊢ a = b

tactic: exact (cancel_mono _).1 w
state_before: case right_cancellation
C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ Z✝¹ X Y Z✝ : C
f : X ⟶ Y
g : Y ⟶ Z✝
inst✝ : Mono (f ≫ g)
Z : C
a b : Z ⟶ X
w : a ≫ f ≫ g = b ≫ f ≫ g
⊢ a = b
state_after: no goals
Theorem: Mathlib.Tactic.Ring.nsmul_congr
File: Mathlib/Tactic/Ring/Basic.lean

tactic: subst_vars
state_before: u : Lean.Level
R : Type u_1
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a a' : ℕ
b b' c : R
x✝² : a = a'
x✝¹ : b = b'
x✝ : a' • b' = c
⊢ a • b = c
state_after: u : Lean.Level
R : Type u_1
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a' : ℕ
b' : R
⊢ a' • b' = a' • b'

tactic: rfl
state_before: u : Lean.Level
R : Type u_1
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a' : ℕ
b' : R
⊢ a' • b' = a' • b'
state_after: no goals
Theorem: Turing.PartrecToTM2.supports_union
File: Mathlib/Computability/TMToPartrec.lean

tactic: simp [Supports, or_imp, forall_and]
state_before: K₁ K₂ S : Finset Λ'
⊢ Supports (K₁ ∪ K₂) S ↔ Supports K₁ S ∧ Supports K₂ S
state_after: no goals
Theorem: Orientation.areaForm_map
File: Mathlib/Analysis/InnerProductSpace/TwoDim.lean

tactic: have : φ.symm ∘ ![x, y] = ![φ.symm x, φ.symm y] := by
  ext i
  fin_cases i <;> rfl
state_before: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace ℝ E
inst✝² : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
hF : Fact (finrank ℝ F = 2)
φ : E ≃ₗᵢ[ℝ] F
x y : F
⊢ (((map (Fin 2) φ.toLinearEquiv) o).areaForm x) y = (o.areaForm (φ.symm x)) (φ.symm y)
state_after: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace ℝ E
inst✝² : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
hF : Fact (finrank ℝ F = 2)
φ : E ≃ₗᵢ[ℝ] F
x y : F
this : ⇑φ.symm ∘ ![x, y] = ![φ.symm x, φ.symm y]
⊢ (((map (Fin 2) φ.toLinearEquiv) o).areaForm x) y = (o.areaForm (φ.symm x)) (φ.symm y)

tactic: simp [areaForm_to_volumeForm, volumeForm_map, this]
state_before: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace ℝ E
inst✝² : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
hF : Fact (finrank ℝ F = 2)
φ : E ≃ₗᵢ[ℝ] F
x y : F
this : ⇑φ.symm ∘ ![x, y] = ![φ.symm x, φ.symm y]
⊢ (((map (Fin 2) φ.toLinearEquiv) o).areaForm x) y = (o.areaForm (φ.symm x)) (φ.symm y)
state_after: no goals

tactic: ext i
state_before: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace ℝ E
inst✝² : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
hF : Fact (finrank ℝ F = 2)
φ : E ≃ₗᵢ[ℝ] F
x y : F
⊢ ⇑φ.symm ∘ ![x, y] = ![φ.symm x, φ.symm y]
state_after: case h
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace ℝ E
inst✝² : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
hF : Fact (finrank ℝ F = 2)
φ : E ≃ₗᵢ[ℝ] F
x y : F
i : Fin (Nat.succ 0).succ
⊢ (⇑φ.symm ∘ ![x, y]) i = ![φ.symm x, φ.symm y] i

tactic: fin_cases i <;> rfl
state_before: case h
E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : InnerProductSpace ℝ E
inst✝² : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
hF : Fact (finrank ℝ F = 2)
φ : E ≃ₗᵢ[ℝ] F
x y : F
i : Fin (Nat.succ 0).succ
⊢ (⇑φ.symm ∘ ![x, y]) i = ![φ.symm x, φ.symm y] i
state_after: no goals
Theorem: HasCompactSupport.integral_Iic_deriv_eq
File: Mathlib/MeasureTheory/Integral/IntegralEqImproper.lean

tactic: have := fun x (_ : x ∈ Iio b) ↦ hf.differentiable le_rfl x |>.hasDerivAt
state_before: E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b✝ l : ℝ
m : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hf : ContDiff ℝ 1 f
h2f : HasCompactSupport f
b : ℝ
⊢ ∫ (x : ℝ) in Iic b, deriv f x = f b
state_after: E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b✝ l : ℝ
m : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hf : ContDiff ℝ 1 f
h2f : HasCompactSupport f
b : ℝ
this : ∀ x ∈ Iio b, HasDerivAt f (deriv f x) x
⊢ ∫ (x : ℝ) in Iic b, deriv f x = f b

tactic: rw [integral_Iic_of_hasDerivAt_of_tendsto hf.continuous.continuousWithinAt this, sub_zero]
state_before: E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b✝ l : ℝ
m : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hf : ContDiff ℝ 1 f
h2f : HasCompactSupport f
b : ℝ
this : ∀ x ∈ Iio b, HasDerivAt f (deriv f x) x
⊢ ∫ (x : ℝ) in Iic b, deriv f x = f b
state_after: case f'int
E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b✝ l : ℝ
m : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hf : ContDiff ℝ 1 f
h2f : HasCompactSupport f
b : ℝ
this : ∀ x ∈ Iio b, HasDerivAt f (deriv f x) x
⊢ IntegrableOn (deriv f) (Iic b) volume

case hf
E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b✝ l : ℝ
m : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hf : ContDiff ℝ 1 f
h2f : HasCompactSupport f
b : ℝ
this : ∀ x ∈ Iio b, HasDerivAt f (deriv f x) x
⊢ Tendsto f atBot (𝓝 0)

tactic: rw [hasCompactSupport_iff_eventuallyEq, Filter.coclosedCompact_eq_cocompact] at h2f
state_before: case hf
E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b✝ l : ℝ
m : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hf : ContDiff ℝ 1 f
h2f : HasCompactSupport f
b : ℝ
this : ∀ x ∈ Iio b, HasDerivAt f (deriv f x) x
⊢ Tendsto f atBot (𝓝 0)
state_after: case hf
E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b✝ l : ℝ
m : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hf : ContDiff ℝ 1 f
h2f : f =ᶠ[cocompact ℝ] 0
b : ℝ
this : ∀ x ∈ Iio b, HasDerivAt f (deriv f x) x
⊢ Tendsto f atBot (𝓝 0)

tactic: exact h2f.filter_mono _root_.atBot_le_cocompact |>.tendsto
state_before: case hf
E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b✝ l : ℝ
m : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hf : ContDiff ℝ 1 f
h2f : f =ᶠ[cocompact ℝ] 0
b : ℝ
this : ∀ x ∈ Iio b, HasDerivAt f (deriv f x) x
⊢ Tendsto f atBot (𝓝 0)
state_after: no goals

tactic: refine hf.continuous_deriv le_rfl |>.integrable_of_hasCompactSupport h2f.deriv |>.integrableOn
state_before: case f'int
E : Type u_1
f f' : ℝ → E
g g' : ℝ → ℝ
a b✝ l : ℝ
m : E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
hf : ContDiff ℝ 1 f
h2f : HasCompactSupport f
b : ℝ
this : ∀ x ∈ Iio b, HasDerivAt f (deriv f x) x
⊢ IntegrableOn (deriv f) (Iic b) volume
state_after: no goals
Theorem: Traversable.comp_sequence
File: Mathlib/Control/Traversable/Lemmas.lean

tactic: simp only [sequence, traverse_map, id_comp]
state_before: t : Type u → Type u
inst✝⁵ : Traversable t
inst✝⁴ : LawfulTraversable t
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : LawfulApplicative F
inst✝¹ : Applicative G
inst✝ : LawfulApplicative G
α β γ : Type u
g : α → F β
h : β → G γ
f : β → γ
x✝ : t β
x : t (F (G α))
⊢ sequence (Comp.mk <$> x) = Comp.mk (sequence <$> sequence x)
state_after: t : Type u → Type u
inst✝⁵ : Traversable t
inst✝⁴ : LawfulTraversable t
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : LawfulApplicative F
inst✝¹ : Applicative G
inst✝ : LawfulApplicative G
α β γ : Type u
g : α → F β
h : β → G γ
f : β → γ
x✝ : t β
x : t (F (G α))
⊢ traverse Comp.mk x = Comp.mk (traverse id <$> traverse id x)

tactic: rw [← comp_traverse]
state_before: t : Type u → Type u
inst✝⁵ : Traversable t
inst✝⁴ : LawfulTraversable t
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : LawfulApplicative F
inst✝¹ : Applicative G
inst✝ : LawfulApplicative G
α β γ : Type u
g : α → F β
h : β → G γ
f : β → γ
x✝ : t β
x : t (F (G α))
⊢ traverse Comp.mk x = Comp.mk (traverse id <$> traverse id x)
state_after: t : Type u → Type u
inst✝⁵ : Traversable t
inst✝⁴ : LawfulTraversable t
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : LawfulApplicative F
inst✝¹ : Applicative G
inst✝ : LawfulApplicative G
α β γ : Type u
g : α → F β
h : β → G γ
f : β → γ
x✝ : t β
x : t (F (G α))
⊢ traverse Comp.mk x = traverse (Comp.mk ∘ map id ∘ id) x

tactic: simp [map_id]
state_before: t : Type u → Type u
inst✝⁵ : Traversable t
inst✝⁴ : LawfulTraversable t
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : LawfulApplicative F
inst✝¹ : Applicative G
inst✝ : LawfulApplicative G
α β γ : Type u
g : α → F β
h : β → G γ
f : β → γ
x✝ : t β
x : t (F (G α))
⊢ traverse Comp.mk x = traverse (Comp.mk ∘ map id ∘ id) x
state_after: no goals
Theorem: SimpleGraph.Subgraph.Connected.mono
File: Mathlib/Combinatorics/SimpleGraph/Connectivity/Subgraph.lean

tactic: rw [← Subgraph.copy_eq H' H.verts hv H'.Adj rfl]
state_before: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
H H' : G.Subgraph
hle : H ≤ H'
hv : H.verts = H'.verts
h : H.Connected
⊢ H'.Connected
state_after: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
H H' : G.Subgraph
hle : H ≤ H'
hv : H.verts = H'.verts
h : H.Connected
⊢ (H'.copy H.verts hv H'.Adj ⋯).Connected

tactic: refine ⟨h.coe.mono ?_⟩
state_before: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
H H' : G.Subgraph
hle : H ≤ H'
hv : H.verts = H'.verts
h : H.Connected
⊢ (H'.copy H.verts hv H'.Adj ⋯).Connected
state_after: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
H H' : G.Subgraph
hle : H ≤ H'
hv : H.verts = H'.verts
h : H.Connected
⊢ H.coe ≤ (H'.copy H.verts hv H'.Adj ⋯).coe

tactic: rintro ⟨v, hv⟩ ⟨w, hw⟩ hvw
state_before: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
H H' : G.Subgraph
hle : H ≤ H'
hv : H.verts = H'.verts
h : H.Connected
⊢ H.coe ≤ (H'.copy H.verts hv H'.Adj ⋯).coe
state_after: case mk.mk
V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
H H' : G.Subgraph
hle : H ≤ H'
hv✝ : H.verts = H'.verts
h : H.Connected
v : V
hv : v ∈ H.verts
w : V
hw : w ∈ H.verts
hvw : H.coe.Adj ⟨v, hv⟩ ⟨w, hw⟩
⊢ (H'.copy H.verts hv✝ H'.Adj ⋯).coe.Adj ⟨v, hv⟩ ⟨w, hw⟩

tactic: exact hle.2 hvw
state_before: case mk.mk
V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
H H' : G.Subgraph
hle : H ≤ H'
hv✝ : H.verts = H'.verts
h : H.Connected
v : V
hv : v ∈ H.verts
w : V
hw : w ∈ H.verts
hvw : H.coe.Adj ⟨v, hv⟩ ⟨w, hw⟩
⊢ (H'.copy H.verts hv✝ H'.Adj ⋯).coe.Adj ⟨v, hv⟩ ⟨w, hw⟩
state_after: no goals