1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Subadditive.apply_mul_add_le
File: Mathlib/Analysis/Subadditive.lean

tactic: induction k with
| zero => simp only [Nat.zero_eq, Nat.cast_zero, zero_mul, zero_add]; rfl
| succ k IH =>
  calc
    u ((k + 1) * n + r) = u (n + (k * n + r)) := by congr 1; ring
    _ ≤ u n + u (k * n + r) := h _ _
    _ ≤ u n + (k * u n + u r) := add_le_add_left IH _
    _ = (k + 1 : ℕ) * u n + u r := by simp; ring
state_before: u : ℕ → ℝ
h : Subadditive u
k n r : ℕ
⊢ u (k * n + r) ≤ ↑k * u n + u r
state_after: no goals

tactic: simp only [Nat.zero_eq, Nat.cast_zero, zero_mul, zero_add]
state_before: case zero
u : ℕ → ℝ
h : Subadditive u
n r : ℕ
⊢ u (0 * n + r) ≤ ↑0 * u n + u r
state_after: case zero
u : ℕ → ℝ
h : Subadditive u
n r : ℕ
⊢ u r ≤ u r

tactic: rfl
state_before: case zero
u : ℕ → ℝ
h : Subadditive u
n r : ℕ
⊢ u r ≤ u r
state_after: no goals

tactic: calc
  u ((k + 1) * n + r) = u (n + (k * n + r)) := by congr 1; ring
  _ ≤ u n + u (k * n + r) := h _ _
  _ ≤ u n + (k * u n + u r) := add_le_add_left IH _
  _ = (k + 1 : ℕ) * u n + u r := by simp; ring
state_before: case succ
u : ℕ → ℝ
h : Subadditive u
n r k : ℕ
IH : u (k * n + r) ≤ ↑k * u n + u r
⊢ u ((k + 1) * n + r) ≤ ↑(k + 1) * u n + u r
state_after: no goals

tactic: congr 1
state_before: u : ℕ → ℝ
h : Subadditive u
n r k : ℕ
IH : u (k * n + r) ≤ ↑k * u n + u r
⊢ u ((k + 1) * n + r) = u (n + (k * n + r))
state_after: case e_a
u : ℕ → ℝ
h : Subadditive u
n r k : ℕ
IH : u (k * n + r) ≤ ↑k * u n + u r
⊢ (k + 1) * n + r = n + (k * n + r)

tactic: ring
state_before: case e_a
u : ℕ → ℝ
h : Subadditive u
n r k : ℕ
IH : u (k * n + r) ≤ ↑k * u n + u r
⊢ (k + 1) * n + r = n + (k * n + r)
state_after: no goals

tactic: simp
state_before: u : ℕ → ℝ
h : Subadditive u
n r k : ℕ
IH : u (k * n + r) ≤ ↑k * u n + u r
⊢ u n + (↑k * u n + u r) = ↑(k + 1) * u n + u r
state_after: u : ℕ → ℝ
h : Subadditive u
n r k : ℕ
IH : u (k * n + r) ≤ ↑k * u n + u r
⊢ u n + (↑k * u n + u r) = (↑k + 1) * u n + u r

tactic: ring
state_before: u : ℕ → ℝ
h : Subadditive u
n r k : ℕ
IH : u (k * n + r) ≤ ↑k * u n + u r
⊢ u n + (↑k * u n + u r) = (↑k + 1) * u n + u r
state_after: no goals
Theorem: PNat.Coprime.mul_right
File: Mathlib/Data/PNat/Prime.lean

tactic: repeat rw [← coprime_coe]
state_before: k m n : ℕ+
⊢ k.Coprime m → k.Coprime n → k.Coprime (m * n)
state_after: k m n : ℕ+
⊢ (↑k).Coprime ↑m → (↑k).Coprime ↑n → (↑k).Coprime ↑(m * n)

tactic: rw [mul_coe]
state_before: k m n : ℕ+
⊢ (↑k).Coprime ↑m → (↑k).Coprime ↑n → (↑k).Coprime ↑(m * n)
state_after: k m n : ℕ+
⊢ (↑k).Coprime ↑m → (↑k).Coprime ↑n → (↑k).Coprime (↑m * ↑n)

tactic: apply Nat.Coprime.mul_right
state_before: k m n : ℕ+
⊢ (↑k).Coprime ↑m → (↑k).Coprime ↑n → (↑k).Coprime (↑m * ↑n)
state_after: no goals

tactic: rw [← coprime_coe]
state_before: k m n : ℕ+
⊢ (↑k).Coprime ↑m → (↑k).Coprime ↑n → k.Coprime (m * n)
state_after: k m n : ℕ+
⊢ (↑k).Coprime ↑m → (↑k).Coprime ↑n → (↑k).Coprime ↑(m * n)
Theorem: Nat.roughNumbersUpTo_card_le
File: Mathlib/NumberTheory/SmoothNumbers.lean

tactic: rw [roughNumbersUpTo_eq_biUnion]
state_before: N k : ℕ
⊢ (N.roughNumbersUpTo k).card ≤ ∑ p ∈ N.succ.primesBelow \ k.primesBelow, N / p
state_after: N k : ℕ
⊢ ((N.succ.primesBelow \ k.primesBelow).biUnion fun p =>
        Finset.filter (fun m => m ≠ 0 ∧ p ∣ m) (Finset.range N.succ)).card ≤
    ∑ p ∈ N.succ.primesBelow \ k.primesBelow, N / p

tactic: exact Finset.card_biUnion_le.trans <| Finset.sum_le_sum fun p _ ↦ (card_multiples' N p).le
state_before: N k : ℕ
⊢ ((N.succ.primesBelow \ k.primesBelow).biUnion fun p =>
        Finset.filter (fun m => m ≠ 0 ∧ p ∣ m) (Finset.range N.succ)).card ≤
    ∑ p ∈ N.succ.primesBelow \ k.primesBelow, N / p
state_after: no goals
Theorem: isUnit_zero_iff
File: Mathlib/Algebra/GroupWithZero/Units/Basic.lean

tactic: rwa [zero_mul] at a0
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : MonoidWithZero M₀
x✝ : IsUnit 0
a : M₀
a0 : 0 * a = 1
inv_val✝ : a * 0 = 1
⊢ 0 = 1
state_after: no goals
Theorem: Module.End.eigenspace_aeval_polynomial_degree_1
File: Mathlib/LinearAlgebra/Eigenspace/Minpoly.lean

tactic: rw [eigenspace_div]
state_before: K : Type v
V : Type w
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End K V
q : K[X]
hq : q.degree = 1
⊢ f.eigenspace (-q.coeff 0 / q.leadingCoeff) =
    LinearMap.ker (q.leadingCoeff • f - (algebraMap K (End K V)) (-q.coeff 0))
state_after: case hb
K : Type v
V : Type w
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End K V
q : K[X]
hq : q.degree = 1
⊢ q.leadingCoeff ≠ 0

tactic: intro h
state_before: case hb
K : Type v
V : Type w
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End K V
q : K[X]
hq : q.degree = 1
⊢ q.leadingCoeff ≠ 0
state_after: case hb
K : Type v
V : Type w
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End K V
q : K[X]
hq : q.degree = 1
h : q.leadingCoeff = 0
⊢ False

tactic: rw [leadingCoeff_eq_zero_iff_deg_eq_bot.1 h] at hq
state_before: case hb
K : Type v
V : Type w
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End K V
q : K[X]
hq : q.degree = 1
h : q.leadingCoeff = 0
⊢ False
state_after: case hb
K : Type v
V : Type w
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End K V
q : K[X]
hq : ⊥ = 1
h : q.leadingCoeff = 0
⊢ False

tactic: cases hq
state_before: case hb
K : Type v
V : Type w
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End K V
q : K[X]
hq : ⊥ = 1
h : q.leadingCoeff = 0
⊢ False
state_after: no goals

tactic: rw [C_mul', aeval_def]
state_before: K : Type v
V : Type w
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End K V
q : K[X]
hq : q.degree = 1
⊢ LinearMap.ker (q.leadingCoeff • f - (algebraMap K (End K V)) (-q.coeff 0)) =
    LinearMap.ker ((aeval f) (C q.leadingCoeff * X + C (q.coeff 0)))
state_after: K : Type v
V : Type w
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End K V
q : K[X]
hq : q.degree = 1
⊢ LinearMap.ker (q.leadingCoeff • f - (algebraMap K (End K V)) (-q.coeff 0)) =
    LinearMap.ker (eval₂ (algebraMap K (End K V)) f (q.leadingCoeff • X + C (q.coeff 0)))

tactic: simp [algebraMap, Algebra.toRingHom]
state_before: K : Type v
V : Type w
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End K V
q : K[X]
hq : q.degree = 1
⊢ LinearMap.ker (q.leadingCoeff • f - (algebraMap K (End K V)) (-q.coeff 0)) =
    LinearMap.ker (eval₂ (algebraMap K (End K V)) f (q.leadingCoeff • X + C (q.coeff 0)))
state_after: no goals

tactic: rwa [← eq_X_add_C_of_degree_eq_one]
state_before: K : Type v
V : Type w
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
f : End K V
q : K[X]
hq : q.degree = 1
⊢ LinearMap.ker ((aeval f) (C q.leadingCoeff * X + C (q.coeff 0))) = LinearMap.ker ((aeval f) q)
state_after: no goals
Theorem: ConcaveOn.set_average_mem_hypograph
File: Mathlib/Analysis/Convex/Integral.lean

tactic: simpa only [mem_setOf_eq, Pi.neg_apply, average_neg, neg_le_neg_iff] using
  hg.neg.set_average_mem_epigraph hgc.neg hsc h0 ht hfs hfi hgi.neg
state_before: α : Type u_1
E : Type u_2
F : Type u_3
m0 : MeasurableSpace α
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : CompleteSpace E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
μ : Measure α
s : Set E
t : Set α
f : α → E
g : E → ℝ
C : ℝ
hg : ConcaveOn ℝ s g
hgc : ContinuousOn g s
hsc : IsClosed s
h0 : μ t ≠ 0
ht : μ t ≠ ⊤
hfs : ∀ᵐ (x : α) ∂μ.restrict t, f x ∈ s
hfi : IntegrableOn f t μ
hgi : IntegrableOn (g ∘ f) t μ
⊢ (⨍ (x : α) in t, f x ∂μ, ⨍ (x : α) in t, g (f x) ∂μ) ∈ {p | p.1 ∈ s ∧ p.2 ≤ g p.1}
state_after: no goals
Theorem: le_gauge_of_subset_closedBall
File: Mathlib/Analysis/Convex/Gauge.lean

tactic: rw [← gauge_closedBall hr]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
s : Set E
r : ℝ
x : E
hs : Absorbent ℝ s
hr : 0 ≤ r
hsr : s ⊆ closedBall 0 r
⊢ ‖x‖ / r ≤ gauge s x
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
s : Set E
r : ℝ
x : E
hs : Absorbent ℝ s
hr : 0 ≤ r
hsr : s ⊆ closedBall 0 r
⊢ gauge (closedBall 0 r) x ≤ gauge s x

tactic: exact gauge_mono hs hsr _
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
s : Set E
r : ℝ
x : E
hs : Absorbent ℝ s
hr : 0 ≤ r
hsr : s ⊆ closedBall 0 r
⊢ gauge (closedBall 0 r) x ≤ gauge s x
state_after: no goals
Theorem: Perfection.coeff_iterate_frobenius
File: Mathlib/RingTheory/Perfection.lean

tactic: erw [Function.iterate_succ_apply', coeff_frobenius, ih]
state_before: R : Type u₁
inst✝¹ : CommSemiring R
p : ℕ
hp : Fact (Nat.Prime p)
inst✝ : CharP R p
f : Ring.Perfection R p
n m✝ m : ℕ
ih : (coeff R p (n + m)) ((⇑(frobenius (Ring.Perfection R p) p))^[m] f) = (coeff R p n) f
⊢ (coeff R p (n + m.succ)) ((⇑(frobenius (Ring.Perfection R p) p))^[m.succ] f) = (coeff R p n) f
state_after: no goals
Theorem: Metric.infDist_image
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: simp [infDist, infEdist_image hΦ]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
hΦ : Isometry Φ
⊢ infDist (Φ x) (Φ '' t) = infDist x t
state_after: no goals
Theorem: Int.gcd_mul_lcm
File: Mathlib/Data/Int/GCD.lean

tactic: rw [Int.gcd, Int.lcm, Nat.gcd_mul_lcm, natAbs_mul]
state_before: i j : ℤ
⊢ i.gcd j * i.lcm j = (i * j).natAbs
state_after: no goals
Theorem: Finset.biUnion_subset
File: Mathlib/Data/Finset/Union.lean

tactic: simp only [subset_iff, mem_biUnion]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s s₁ s₂ : Finset α
t t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
s' : Finset β
⊢ s.biUnion t ⊆ s' ↔ ∀ x ∈ s, t x ⊆ s'
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
s s₁ s₂ : Finset α
t t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
s' : Finset β
⊢ (∀ ⦃x : β⦄, (∃ a ∈ s, x ∈ t a) → x ∈ s') ↔ ∀ x ∈ s, ∀ ⦃x_1 : β⦄, x_1 ∈ t x → x_1 ∈ s'

tactic: exact ⟨fun H a ha b hb ↦ H ⟨a, ha, hb⟩, fun H b ⟨a, ha, hb⟩ ↦ H a ha hb⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s s₁ s₂ : Finset α
t t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
s' : Finset β
⊢ (∀ ⦃x : β⦄, (∃ a ∈ s, x ∈ t a) → x ∈ s') ↔ ∀ x ∈ s, ∀ ⦃x_1 : β⦄, x_1 ∈ t x → x_1 ∈ s'
state_after: no goals
Theorem: Filter.disjoint_map
File: Mathlib/Order/Filter/Basic.lean

tactic: simp only [disjoint_iff, ← map_inf hm, map_eq_bot_iff]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l : Filter α
m : α → β
hm : Injective m
f₁ f₂ : Filter α
⊢ Disjoint (map m f₁) (map m f₂) ↔ Disjoint f₁ f₂
state_after: no goals
Theorem: Finset.mem_disjSups
File: Mathlib/Data/Finset/Sups.lean

tactic: simp [disjSups, and_assoc]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq β
inst✝² : SemilatticeSup α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s s₁ s₂ t t₁ t₂ u : Finset α
a b c : α
⊢ c ∈ s ○ t ↔ ∃ a ∈ s, ∃ b ∈ t, Disjoint a b ∧ a ⊔ b = c
state_after: no goals
Theorem: Mathlib.Meta.NormNum.IsRat.to_raw_eq
File: Mathlib/Tactic/NormNum/Result.lean

tactic: simp [div_eq_mul_inv]
state_before: α : Type u_1
n : ℤ
d : ℕ
inst✝ : DivisionRing α
inv : Invertible ↑d
⊢ ↑n * ⅟↑d = Rat.rawCast n d
state_after: no goals
Theorem: infIrred_iff_not_isMax
File: Mathlib/Order/Irreducible.lean

tactic: simpa only [inf_eq_min, min_eq_iff] using Or.imp And.left And.left
state_before: ι : Type u_1
α : Type u_2
inst✝ : LinearOrder α
a x✝¹ x✝ : α
⊢ x✝¹ ⊓ x✝ = a → x✝¹ = a ∨ x✝ = a
state_after: no goals
Theorem: EqualCharZero.pnatCast_eq_natCast
File: Mathlib/Algebra/CharP/MixedCharZero.lean

tactic: change ((PNat.isUnit_natCast (R := R) n).unit : R) = ↑n
state_before: R : Type u_1
inst✝¹ : CommRing R
inst✝ : Fact (∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I))
n : ℕ+
⊢ ↑↑n = ↑↑n
state_after: R : Type u_1
inst✝¹ : CommRing R
inst✝ : Fact (∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I))
n : ℕ+
⊢ ↑⋯.unit = ↑↑n

tactic: simp only [IsUnit.unit_spec]
state_before: R : Type u_1
inst✝¹ : CommRing R
inst✝ : Fact (∀ (I : Ideal R), I ≠ ⊤ → CharZero (R ⧸ I))
n : ℕ+
⊢ ↑⋯.unit = ↑↑n
state_after: no goals
Theorem: Function.comp_iterate_pred_of_pos
File: Mathlib/Logic/Function/Iterate.lean

tactic: rw [← iterate_succ', Nat.succ_pred_eq_of_pos hn]
state_before: α : Type u
β : Type v
f : α → α
n : ℕ
hn : 0 < n
⊢ f ∘ f^[n.pred] = f^[n]
state_after: no goals
Theorem: LinearMap.rank_add_le
File: Mathlib/LinearAlgebra/Dimension/LinearMap.lean

tactic: refine rank_le_of_submodule _ _ ?_
state_before: K : Type u
V V₁ : Type v
V' V'₁ : Type v'
V'' : Type v''
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V'
inst✝ : Module K V'
f g : V →ₗ[K] V'
⊢ (f + g).rank ≤ Module.rank K ↥(range f ⊔ range g)
state_after: K : Type u
V V₁ : Type v
V' V'₁ : Type v'
V'' : Type v''
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V'
inst✝ : Module K V'
f g : V →ₗ[K] V'
⊢ range (f + g) ≤ range f ⊔ range g

tactic: exact LinearMap.range_le_iff_comap.2 <| eq_top_iff'.2 fun x =>
  show f x + g x ∈ (LinearMap.range f ⊔ LinearMap.range g : Submodule K V') from
  mem_sup.2 ⟨_, ⟨x, rfl⟩, _, ⟨x, rfl⟩, rfl⟩
state_before: K : Type u
V V₁ : Type v
V' V'₁ : Type v'
V'' : Type v''
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V'
inst✝ : Module K V'
f g : V →ₗ[K] V'
⊢ range (f + g) ≤ range f ⊔ range g
state_after: no goals
Theorem: AffineMap.lineMap_same_apply
File: Mathlib/LinearAlgebra/AffineSpace/AffineMap.lean

tactic: simp [lineMap_apply]
state_before: k : Type u_1
V1 : Type u_2
P1 : Type u_3
V2 : Type u_4
P2 : Type u_5
V3 : Type u_6
P3 : Type u_7
V4 : Type u_8
P4 : Type u_9
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V1
inst✝¹⁰ : Module k V1
inst✝⁹ : AffineSpace V1 P1
inst✝⁸ : AddCommGroup V2
inst✝⁷ : Module k V2
inst✝⁶ : AffineSpace V2 P2
inst✝⁵ : AddCommGroup V3
inst✝⁴ : Module k V3
inst✝³ : AffineSpace V3 P3
inst✝² : AddCommGroup V4
inst✝¹ : Module k V4
inst✝ : AffineSpace V4 P4
p : P1
c : k
⊢ (lineMap p p) c = p
state_after: no goals
Theorem: CategoryTheory.ShortComplex.mapHomologyIso'_inv_naturality
File: Mathlib/Algebra/Homology/ShortComplex/PreservesHomology.lean

tactic: rw [← cancel_epi (S₁.mapHomologyIso' F).hom, ← mapHomologyIso'_hom_naturality_assoc,
  Iso.hom_inv_id, comp_id, Iso.hom_inv_id_assoc]
state_before: C : Type u_1
D : Type u_2
inst✝¹¹ : Category.{u_3, u_1} C
inst✝¹⁰ : Category.{u_4, u_2} D
inst✝⁹ : HasZeroMorphisms C
inst✝⁸ : HasZeroMorphisms D
S : ShortComplex C
h₁✝ : S.LeftHomologyData
h₂✝ : S.RightHomologyData
F✝ : C ⥤ D
inst✝⁷ : F✝.PreservesZeroMorphisms
hl : S.LeftHomologyData
hr : S.RightHomologyData
S₁ S₂ : ShortComplex C
φ : S₁ ⟶ S₂
hl₁ : S₁.LeftHomologyData
hr₁ : S₁.RightHomologyData
hl₂ : S₂.LeftHomologyData
hr₂ : S₂.RightHomologyData
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
F : C ⥤ D
inst✝⁶ : F.PreservesZeroMorphisms
inst✝⁵ : S₁.HasHomology
inst✝⁴ : S₂.HasHomology
inst✝³ : (S₁.map F).HasHomology
inst✝² : (S₂.map F).HasHomology
inst✝¹ : F.PreservesRightHomologyOf S₁
inst✝ : F.PreservesRightHomologyOf S₂
⊢ F.map (homologyMap φ) ≫ (S₂.mapHomologyIso' F).inv =
    (S₁.mapHomologyIso' F).inv ≫ homologyMap (F.mapShortComplex.map φ)
state_after: no goals
Theorem: CategoryTheory.Preadditive.mono_iff_injective'
File: Mathlib/Algebra/Homology/ShortComplex/ConcreteCategory.lean

tactic: simp only [mono_iff_injective, ← CategoryTheory.mono_iff_injective]
state_before: C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : ConcreteCategory C
inst✝⁴ : HasForget₂ C Ab
inst✝³ : Preadditive C
inst✝² : (forget₂ C Ab).Additive
inst✝¹ : (forget₂ C Ab).PreservesHomology
inst✝ : HasZeroObject C
S : ShortComplex C
X Y : C
f : X ⟶ Y
⊢ Mono f ↔ Function.Injective ((forget C).map f)
state_after: C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : ConcreteCategory C
inst✝⁴ : HasForget₂ C Ab
inst✝³ : Preadditive C
inst✝² : (forget₂ C Ab).Additive
inst✝¹ : (forget₂ C Ab).PreservesHomology
inst✝ : HasZeroObject C
S : ShortComplex C
X Y : C
f : X ⟶ Y
⊢ Mono ⇑((forget₂ C Ab).map f) ↔ Mono ((forget C).map f)

tactic: apply (MorphismProperty.RespectsIso.monomorphisms (Type w)).arrow_mk_iso_iff
state_before: C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : ConcreteCategory C
inst✝⁴ : HasForget₂ C Ab
inst✝³ : Preadditive C
inst✝² : (forget₂ C Ab).Additive
inst✝¹ : (forget₂ C Ab).PreservesHomology
inst✝ : HasZeroObject C
S : ShortComplex C
X Y : C
f : X ⟶ Y
⊢ Mono ⇑((forget₂ C Ab).map f) ↔ Mono ((forget C).map f)
state_after: C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : ConcreteCategory C
inst✝⁴ : HasForget₂ C Ab
inst✝³ : Preadditive C
inst✝² : (forget₂ C Ab).Additive
inst✝¹ : (forget₂ C Ab).PreservesHomology
inst✝ : HasZeroObject C
S : ShortComplex C
X Y : C
f : X ⟶ Y
⊢ Arrow.mk ⇑((forget₂ C Ab).map f) ≅ Arrow.mk ((forget C).map f)

tactic: have e : forget₂ C Ab ⋙ forget Ab ≅ forget C := eqToIso (HasForget₂.forget_comp)
state_before: C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : ConcreteCategory C
inst✝⁴ : HasForget₂ C Ab
inst✝³ : Preadditive C
inst✝² : (forget₂ C Ab).Additive
inst✝¹ : (forget₂ C Ab).PreservesHomology
inst✝ : HasZeroObject C
S : ShortComplex C
X Y : C
f : X ⟶ Y
⊢ Arrow.mk ⇑((forget₂ C Ab).map f) ≅ Arrow.mk ((forget C).map f)
state_after: C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : ConcreteCategory C
inst✝⁴ : HasForget₂ C Ab
inst✝³ : Preadditive C
inst✝² : (forget₂ C Ab).Additive
inst✝¹ : (forget₂ C Ab).PreservesHomology
inst✝ : HasZeroObject C
S : ShortComplex C
X Y : C
f : X ⟶ Y
e : forget₂ C Ab ⋙ forget Ab ≅ forget C
⊢ Arrow.mk ⇑((forget₂ C Ab).map f) ≅ Arrow.mk ((forget C).map f)

tactic: exact Arrow.isoOfNatIso e (Arrow.mk f)
state_before: C : Type u
inst✝⁶ : Category.{v, u} C
inst✝⁵ : ConcreteCategory C
inst✝⁴ : HasForget₂ C Ab
inst✝³ : Preadditive C
inst✝² : (forget₂ C Ab).Additive
inst✝¹ : (forget₂ C Ab).PreservesHomology
inst✝ : HasZeroObject C
S : ShortComplex C
X Y : C
f : X ⟶ Y
e : forget₂ C Ab ⋙ forget Ab ≅ forget C
⊢ Arrow.mk ⇑((forget₂ C Ab).map f) ≅ Arrow.mk ((forget C).map f)
state_after: no goals
Theorem: MeasureTheory.continuous_diracProba
File: Mathlib/MeasureTheory/Measure/DiracProba.lean

tactic: rw [continuous_iff_continuousAt]
state_before: X : Type u_1
inst✝² : MeasurableSpace X
inst✝¹ : TopologicalSpace X
inst✝ : OpensMeasurableSpace X
⊢ Continuous fun x => diracProba x
state_after: X : Type u_1
inst✝² : MeasurableSpace X
inst✝¹ : TopologicalSpace X
inst✝ : OpensMeasurableSpace X
⊢ ∀ (x : X), ContinuousAt (fun x => diracProba x) x

tactic: apply fun x ↦ ProbabilityMeasure.tendsto_iff_forall_lintegral_tendsto.mpr fun f ↦ ?_
state_before: X : Type u_1
inst✝² : MeasurableSpace X
inst✝¹ : TopologicalSpace X
inst✝ : OpensMeasurableSpace X
⊢ ∀ (x : X), ContinuousAt (fun x => diracProba x) x
state_after: X : Type u_1
inst✝² : MeasurableSpace X
inst✝¹ : TopologicalSpace X
inst✝ : OpensMeasurableSpace X
x : X
f : X →ᵇ ℝ≥0
⊢ Tendsto (fun i => ∫⁻ (ω : X), ↑(f ω) ∂↑(diracProba i)) (𝓝 x) (𝓝 (∫⁻ (ω : X), ↑(f ω) ∂↑(diracProba x)))

tactic: have f_mble : Measurable (fun X ↦ (f X : ℝ≥0∞)) :=
  measurable_coe_nnreal_ennreal_iff.mpr f.continuous.measurable
state_before: X : Type u_1
inst✝² : MeasurableSpace X
inst✝¹ : TopologicalSpace X
inst✝ : OpensMeasurableSpace X
x : X
f : X →ᵇ ℝ≥0
⊢ Tendsto (fun i => ∫⁻ (ω : X), ↑(f ω) ∂↑(diracProba i)) (𝓝 x) (𝓝 (∫⁻ (ω : X), ↑(f ω) ∂↑(diracProba x)))
state_after: X : Type u_1
inst✝² : MeasurableSpace X
inst✝¹ : TopologicalSpace X
inst✝ : OpensMeasurableSpace X
x : X
f : X →ᵇ ℝ≥0
f_mble : Measurable fun X_1 => ↑(f X_1)
⊢ Tendsto (fun i => ∫⁻ (ω : X), ↑(f ω) ∂↑(diracProba i)) (𝓝 x) (𝓝 (∫⁻ (ω : X), ↑(f ω) ∂↑(diracProba x)))

tactic: simp only [diracProba, ProbabilityMeasure.coe_mk, lintegral_dirac' _ f_mble]
state_before: X : Type u_1
inst✝² : MeasurableSpace X
inst✝¹ : TopologicalSpace X
inst✝ : OpensMeasurableSpace X
x : X
f : X →ᵇ ℝ≥0
f_mble : Measurable fun X_1 => ↑(f X_1)
⊢ Tendsto (fun i => ∫⁻ (ω : X), ↑(f ω) ∂↑(diracProba i)) (𝓝 x) (𝓝 (∫⁻ (ω : X), ↑(f ω) ∂↑(diracProba x)))
state_after: X : Type u_1
inst✝² : MeasurableSpace X
inst✝¹ : TopologicalSpace X
inst✝ : OpensMeasurableSpace X
x : X
f : X →ᵇ ℝ≥0
f_mble : Measurable fun X_1 => ↑(f X_1)
⊢ Tendsto (fun i => ↑(f i)) (𝓝 x) (𝓝 ↑(f x))

tactic: exact (ENNReal.continuous_coe.comp f.continuous).continuousAt
state_before: X : Type u_1
inst✝² : MeasurableSpace X
inst✝¹ : TopologicalSpace X
inst✝ : OpensMeasurableSpace X
x : X
f : X →ᵇ ℝ≥0
f_mble : Measurable fun X_1 => ↑(f X_1)
⊢ Tendsto (fun i => ↑(f i)) (𝓝 x) (𝓝 ↑(f x))
state_after: no goals
Theorem: IsCoprime.exists_SL2_col
File: Mathlib/LinearAlgebra/Matrix/SpecialLinearGroup.lean

tactic: obtain ⟨u, v, h⟩ := hab
state_before: R : Type u_1
inst✝ : CommRing R
a b : R
hab : IsCoprime a b
j : Fin 2
⊢ ∃ g, ↑g 0 j = a ∧ ↑g 1 j = b
state_after: case intro.intro
R : Type u_1
inst✝ : CommRing R
a b : R
j : Fin 2
u v : R
h : u * a + v * b = 1
⊢ ∃ g, ↑g 0 j = a ∧ ↑g 1 j = b

tactic: rw [Matrix.det_fin_two_of, ← h]
state_before: case intro.intro.refine_2
R : Type u_1
inst✝ : CommRing R
a b : R
j : Fin 2
u v : R
h : u * a + v * b = 1
⊢ (of ![![v, a], ![-u, b]]).det = 1
state_after: case intro.intro.refine_2
R : Type u_1
inst✝ : CommRing R
a b : R
j : Fin 2
u v : R
h : u * a + v * b = 1
⊢ v * b - a * -u = u * a + v * b

tactic: ring
state_before: case intro.intro.refine_2
R : Type u_1
inst✝ : CommRing R
a b : R
j : Fin 2
u v : R
h : u * a + v * b = 1
⊢ v * b - a * -u = u * a + v * b
state_after: no goals
Theorem: IsDedekindDomain.exists_forall_sub_mem_ideal
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

tactic: obtain ⟨y, hy⟩ :=
  IsDedekindDomain.exists_representative_mod_finset P e prime coprime fun i =>
    Ideal.Quotient.mk _ (x i)
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K
inst✝ : IsDedekindDomain R
ι : Type u_4
s : Finset ι
P : ι → Ideal R
e : ι → ℕ
prime : ∀ i ∈ s, Prime (P i)
coprime : ∀ i ∈ s, ∀ j ∈ s, i ≠ j → P i ≠ P j
x : { x // x ∈ s } → R
⊢ ∃ y, ∀ (i : ι) (hi : i ∈ s), y - x ⟨i, hi⟩ ∈ P i ^ e i
state_after: case intro
R : Type u_1
A : Type u_2
K : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K
inst✝ : IsDedekindDomain R
ι : Type u_4
s : Finset ι
P : ι → Ideal R
e : ι → ℕ
prime : ∀ i ∈ s, Prime (P i)
coprime : ∀ i ∈ s, ∀ j ∈ s, i ≠ j → P i ≠ P j
x : { x // x ∈ s } → R
y : R
hy :
  ∀ (i : ι) (hi : i ∈ s), (Ideal.Quotient.mk (P i ^ e i)) y = (Ideal.Quotient.mk (P ↑⟨i, hi⟩ ^ e ↑⟨i, hi⟩)) (x ⟨i, hi⟩)
⊢ ∃ y, ∀ (i : ι) (hi : i ∈ s), y - x ⟨i, hi⟩ ∈ P i ^ e i

tactic: exact ⟨y, fun i hi => Ideal.Quotient.eq.mp (hy i hi)⟩
state_before: case intro
R : Type u_1
A : Type u_2
K : Type u_3
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Field K
inst✝ : IsDedekindDomain R
ι : Type u_4
s : Finset ι
P : ι → Ideal R
e : ι → ℕ
prime : ∀ i ∈ s, Prime (P i)
coprime : ∀ i ∈ s, ∀ j ∈ s, i ≠ j → P i ≠ P j
x : { x // x ∈ s } → R
y : R
hy :
  ∀ (i : ι) (hi : i ∈ s), (Ideal.Quotient.mk (P i ^ e i)) y = (Ideal.Quotient.mk (P ↑⟨i, hi⟩ ^ e ↑⟨i, hi⟩)) (x ⟨i, hi⟩)
⊢ ∃ y, ∀ (i : ι) (hi : i ∈ s), y - x ⟨i, hi⟩ ∈ P i ^ e i
state_after: no goals