1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: SuccOrder.limitRecOn_limit
File: Mathlib/Order/SuccPred/Limit.lean

tactic: rw [SuccOrder.limitRecOn, WellFounded.fix_eq, dif_pos ha]
state_before: α : Type u_1
inst✝² : PartialOrder α
inst✝¹ : SuccOrder α
a b : α
C : α → Sort u_2
inst✝ : WellFoundedLT α
H_succ : (a : α) → ¬IsMax a → C a → C (succ a)
H_lim : (a : α) → IsSuccLimit a → ((b : α) → b < a → C b) → C a
ha : IsSuccLimit a
⊢ SuccOrder.limitRecOn a H_succ H_lim = H_lim a ha fun x x_1 => SuccOrder.limitRecOn x H_succ H_lim
state_after: α : Type u_1
inst✝² : PartialOrder α
inst✝¹ : SuccOrder α
a b : α
C : α → Sort u_2
inst✝ : WellFoundedLT α
H_succ : (a : α) → ¬IsMax a → C a → C (succ a)
H_lim : (a : α) → IsSuccLimit a → ((b : α) → b < a → C b) → C a
ha : IsSuccLimit a
⊢ (H_lim a ha fun y x =>
      ⋯.fix
        (fun a IH =>
          if h : IsSuccLimit a then H_lim a h IH
          else
            let x := Classical.indefiniteDescription (fun x => ¬IsMax x ∧ succ x = a) ⋯;
            ⋯ ▸ H_succ ↑x ⋯ (IH ↑x ⋯))
        y) =
    H_lim a ha fun x x_1 => SuccOrder.limitRecOn x H_succ H_lim

tactic: rfl
state_before: α : Type u_1
inst✝² : PartialOrder α
inst✝¹ : SuccOrder α
a b : α
C : α → Sort u_2
inst✝ : WellFoundedLT α
H_succ : (a : α) → ¬IsMax a → C a → C (succ a)
H_lim : (a : α) → IsSuccLimit a → ((b : α) → b < a → C b) → C a
ha : IsSuccLimit a
⊢ (H_lim a ha fun y x =>
      ⋯.fix
        (fun a IH =>
          if h : IsSuccLimit a then H_lim a h IH
          else
            let x := Classical.indefiniteDescription (fun x => ¬IsMax x ∧ succ x = a) ⋯;
            ⋯ ▸ H_succ ↑x ⋯ (IH ↑x ⋯))
        y) =
    H_lim a ha fun x x_1 => SuccOrder.limitRecOn x H_succ H_lim
state_after: no goals
Theorem: List.rdrop_zero
File: Mathlib/Data/List/DropRight.lean

tactic: simp [rdrop]
state_before: α : Type u_1
p : α → Bool
l : List α
n : ℕ
⊢ l.rdrop 0 = l
state_after: no goals
Theorem: ProbabilityTheory.kernel.tendsto_densityProcess_limitProcess
File: Mathlib/Probability/Kernel/Disintegration/Density.lean

tactic: refine Submartingale.ae_tendsto_limitProcess (martingale_densityProcess hκν a hs).submartingale
  (R := (ν a univ).toNNReal) (fun n ↦ ?_)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
hκν : fst κ ≤ ν
inst✝ : IsFiniteKernel ν
a : α
s : Set β
hs : MeasurableSet s
⊢ ∀ᵐ (x : γ) ∂ν a,
    Tendsto (fun n => densityProcess κ ν n a x s) atTop
      (𝓝 (Filtration.limitProcess (fun n x => densityProcess κ ν n a x s) (countableFiltration γ) (ν a) x))
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
hκν : fst κ ≤ ν
inst✝ : IsFiniteKernel ν
a : α
s : Set β
hs : MeasurableSet s
n : ℕ
⊢ snorm (fun x => densityProcess κ ν n a x s) 1 (ν a) ≤ ↑((ν a) univ).toNNReal

tactic: refine (snorm_densityProcess_le hκν n a s).trans_eq ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
hκν : fst κ ≤ ν
inst✝ : IsFiniteKernel ν
a : α
s : Set β
hs : MeasurableSet s
n : ℕ
⊢ snorm (fun x => densityProcess κ ν n a x s) 1 (ν a) ≤ ↑((ν a) univ).toNNReal
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
hκν : fst κ ≤ ν
inst✝ : IsFiniteKernel ν
a : α
s : Set β
hs : MeasurableSet s
n : ℕ
⊢ (ν a) univ = ↑((ν a) univ).toNNReal

tactic: rw [ENNReal.coe_toNNReal]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
hκν : fst κ ≤ ν
inst✝ : IsFiniteKernel ν
a : α
s : Set β
hs : MeasurableSet s
n : ℕ
⊢ (ν a) univ = ↑((ν a) univ).toNNReal
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
hκν : fst κ ≤ ν
inst✝ : IsFiniteKernel ν
a : α
s : Set β
hs : MeasurableSet s
n : ℕ
⊢ (ν a) univ ≠ ⊤

tactic: exact measure_ne_top _ _
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
hκν : fst κ ≤ ν
inst✝ : IsFiniteKernel ν
a : α
s : Set β
hs : MeasurableSet s
n : ℕ
⊢ (ν a) univ ≠ ⊤
state_after: no goals
Theorem: MeasureTheory.laverage_mem_openSegment_compl_self
File: Mathlib/MeasureTheory/Integral/Average.lean

tactic: simpa only [union_compl_self, restrict_univ] using
  laverage_union_mem_openSegment aedisjoint_compl_right hs.compl hs₀ hsc₀ (measure_ne_top _ _)
    (measure_ne_top _ _)
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 t : Set α
f g : α → ℝ≥0∞
inst✝ : IsFiniteMeasure μ
hs : NullMeasurableSet s μ
hs₀ : μ s ≠ 0
hsc₀ : μ sᶜ ≠ 0
⊢ ⨍⁻ (x : α), f x ∂μ ∈ openSegment ℝ≥0∞ (⨍⁻ (x : α) in s, f x ∂μ) (⨍⁻ (x : α) in sᶜ, f x ∂μ)
state_after: no goals
Theorem: IsClosed.isGδ
File: Mathlib/Topology/GDelta.lean

tactic: rcases (@uniformity_hasBasis_open X _).exists_antitone_subbasis with ⟨U, hUo, hU, -⟩
state_before: X✝ : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : UniformSpace X
inst✝ : (𝓤 X).IsCountablyGenerated
s : Set X
hs : IsClosed s
⊢ IsGδ s
state_after: case intro.intro.mk
X✝ : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : UniformSpace X
inst✝ : (𝓤 X).IsCountablyGenerated
s : Set X
hs : IsClosed s
U : ℕ → Set (X × X)
hUo : ∀ (i : ℕ), U i ∈ 𝓤 X ∧ IsOpen (U i)
hU : (𝓤 X).HasBasis (fun x => True) fun i => id (U i)
⊢ IsGδ s

tactic: rw [← hs.closure_eq, ← hU.biInter_biUnion_ball]
state_before: case intro.intro.mk
X✝ : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : UniformSpace X
inst✝ : (𝓤 X).IsCountablyGenerated
s : Set X
hs : IsClosed s
U : ℕ → Set (X × X)
hUo : ∀ (i : ℕ), U i ∈ 𝓤 X ∧ IsOpen (U i)
hU : (𝓤 X).HasBasis (fun x => True) fun i => id (U i)
⊢ IsGδ s
state_after: case intro.intro.mk
X✝ : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : UniformSpace X
inst✝ : (𝓤 X).IsCountablyGenerated
s : Set X
hs : IsClosed s
U : ℕ → Set (X × X)
hUo : ∀ (i : ℕ), U i ∈ 𝓤 X ∧ IsOpen (U i)
hU : (𝓤 X).HasBasis (fun x => True) fun i => id (U i)
⊢ IsGδ (⋂ i, ⋂ (_ : True), ⋃ x ∈ s, UniformSpace.ball x (id (U i)))

tactic: refine .biInter (to_countable _) fun n _ => IsOpen.isGδ ?_
state_before: case intro.intro.mk
X✝ : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : UniformSpace X
inst✝ : (𝓤 X).IsCountablyGenerated
s : Set X
hs : IsClosed s
U : ℕ → Set (X × X)
hUo : ∀ (i : ℕ), U i ∈ 𝓤 X ∧ IsOpen (U i)
hU : (𝓤 X).HasBasis (fun x => True) fun i => id (U i)
⊢ IsGδ (⋂ i, ⋂ (_ : True), ⋃ x ∈ s, UniformSpace.ball x (id (U i)))
state_after: case intro.intro.mk
X✝ : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : UniformSpace X
inst✝ : (𝓤 X).IsCountablyGenerated
s : Set X
hs : IsClosed s
U : ℕ → Set (X × X)
hUo : ∀ (i : ℕ), U i ∈ 𝓤 X ∧ IsOpen (U i)
hU : (𝓤 X).HasBasis (fun x => True) fun i => id (U i)
n : ℕ
x✝ : n ∈ fun i => True
⊢ IsOpen (⋃ x ∈ s, UniformSpace.ball x (id (U n)))

tactic: exact isOpen_biUnion fun x _ => UniformSpace.isOpen_ball _ (hUo _).2
state_before: case intro.intro.mk
X✝ : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : UniformSpace X
inst✝ : (𝓤 X).IsCountablyGenerated
s : Set X
hs : IsClosed s
U : ℕ → Set (X × X)
hUo : ∀ (i : ℕ), U i ∈ 𝓤 X ∧ IsOpen (U i)
hU : (𝓤 X).HasBasis (fun x => True) fun i => id (U i)
n : ℕ
x✝ : n ∈ fun i => True
⊢ IsOpen (⋃ x ∈ s, UniformSpace.ball x (id (U n)))
state_after: no goals
Theorem: PiTensorProduct.mapL_add
File: Mathlib/Analysis/NormedSpace/PiTensorProduct/InjectiveSeminorm.lean

tactic: ext x
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝⁴ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝³ : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝² : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝¹ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
inst✝ : DecidableEq ι
i : ι
u v : E i →L[𝕜] E' i
⊢ mapL (update f i (u + v)) = mapL (update f i u) + mapL (update f i v)
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝⁴ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝³ : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝² : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝¹ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
inst✝ : DecidableEq ι
i : ι
u v : E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
⊢ (mapL (update f i (u + v))) x = (mapL (update f i u) + mapL (update f i v)) x

tactic: simp only [mapL_apply, mapL_add_smul_aux, ContinuousLinearMap.coe_add, PiTensorProduct.map_add,
  LinearMap.add_apply, ContinuousLinearMap.add_apply]
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
E' : ι → Type u_1
E'' : ι → Type u_2
inst✝⁴ : (i : ι) → SeminormedAddCommGroup (E' i)
inst✝³ : (i : ι) → NormedSpace 𝕜 (E' i)
inst✝² : (i : ι) → SeminormedAddCommGroup (E'' i)
inst✝¹ : (i : ι) → NormedSpace 𝕜 (E'' i)
g : (i : ι) → E' i →L[𝕜] E'' i
f : (i : ι) → E i →L[𝕜] E' i
inst✝ : DecidableEq ι
i : ι
u v : E i →L[𝕜] E' i
x : ⨂[𝕜] (i : ι), E i
⊢ (mapL (update f i (u + v))) x = (mapL (update f i u) + mapL (update f i v)) x
state_after: no goals
Theorem: MvPolynomial.C_eq_smul_one
File: Mathlib/Algebra/MvPolynomial/Basic.lean

tactic: rw [← C_mul', mul_one]
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S₁
p q : MvPolynomial σ R
⊢ C a = a • 1
state_after: no goals
Theorem: finrank_le_one_iff
File: Mathlib/LinearAlgebra/Dimension/FreeAndStrongRankCondition.lean

tactic: rw [← rank_le_one_iff, ← finrank_eq_rank, ← natCast_le, Nat.cast_one]
state_before: K : Type u
V : Type v
inst✝⁵ : Ring K
inst✝⁴ : StrongRankCondition K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : Module.Free K V
inst✝ : Module.Finite K V
⊢ finrank K V ≤ 1 ↔ ∃ v, ∀ (w : V), ∃ c, c • v = w
state_after: no goals
Theorem: MonoidHom.map_zpowers
File: Mathlib/Algebra/Group/Subgroup/ZPowers.lean

tactic: rw [Subgroup.zpowers_eq_closure, Subgroup.zpowers_eq_closure, f.map_closure, Set.image_singleton]
state_before: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
N : Type u_3
inst✝ : Group N
f : G →* N
x : G
⊢ Subgroup.map f (Subgroup.zpowers x) = Subgroup.zpowers (f x)
state_after: no goals
Theorem: Cardinal.mk_univ_quaternionAlgebra_of_infinite
File: Mathlib/Algebra/Quaternion.lean

tactic: rw [mk_univ_quaternionAlgebra, pow_four]
state_before: R : Type u_1
c₁ c₂ : R
inst✝ : Infinite R
⊢ #↑Set.univ = #R
state_after: no goals
Theorem: hasSum_geometric_two
File: Mathlib/Analysis/SpecificLimits/Basic.lean

tactic: convert hasSum_geometric_of_lt_one _ _ <;> norm_num
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
⊢ HasSum (fun n => (1 / 2) ^ n) 2
state_after: no goals
Theorem: Nat.mod_two_of_bodd
File: Mathlib/Data/Nat/Bits.lean

tactic: have := congr_arg bodd (mod_add_div n 2)
state_before: m n✝ n : ℕ
⊢ n % 2 = bif n.bodd then 1 else 0
state_after: m n✝ n : ℕ
this : (n % 2 + 2 * (n / 2)).bodd = n.bodd
⊢ n % 2 = bif n.bodd then 1 else 0

tactic: simp? [not] at this says
  simp only [bodd_add, bodd_mul, bodd_succ, not, bodd_zero, Bool.false_and, Bool.bne_false]
    at this
state_before: m n✝ n : ℕ
this : (n % 2 + 2 * (n / 2)).bodd = n.bodd
⊢ n % 2 = bif n.bodd then 1 else 0
state_after: m n✝ n : ℕ
this : (n % 2).bodd = n.bodd
⊢ n % 2 = bif n.bodd then 1 else 0

tactic: have _ : ∀ b, and false b = false := by
  intro b
  cases b <;> rfl
state_before: m n✝ n : ℕ
this : (n % 2).bodd = n.bodd
⊢ n % 2 = bif n.bodd then 1 else 0
state_after: m n✝ n : ℕ
this : (n % 2).bodd = n.bodd
x✝ : ∀ (b : Bool), (false && b) = false
⊢ n % 2 = bif n.bodd then 1 else 0

tactic: have _ : ∀ b, bxor b false = b := by
  intro b
  cases b <;> rfl
state_before: m n✝ n : ℕ
this : (n % 2).bodd = n.bodd
x✝ : ∀ (b : Bool), (false && b) = false
⊢ n % 2 = bif n.bodd then 1 else 0
state_after: m n✝ n : ℕ
this : (n % 2).bodd = n.bodd
x✝¹ : ∀ (b : Bool), (false && b) = false
x✝ : ∀ (b : Bool), bxor b false = b
⊢ n % 2 = bif n.bodd then 1 else 0

tactic: rw [← this]
state_before: m n✝ n : ℕ
this : (n % 2).bodd = n.bodd
x✝¹ : ∀ (b : Bool), (false && b) = false
x✝ : ∀ (b : Bool), bxor b false = b
⊢ n % 2 = bif n.bodd then 1 else 0
state_after: m n✝ n : ℕ
this : (n % 2).bodd = n.bodd
x✝¹ : ∀ (b : Bool), (false && b) = false
x✝ : ∀ (b : Bool), bxor b false = b
⊢ n % 2 = bif (n % 2).bodd then 1 else 0

tactic: cases' mod_two_eq_zero_or_one n with h h <;> rw [h] <;> rfl
state_before: m n✝ n : ℕ
this : (n % 2).bodd = n.bodd
x✝¹ : ∀ (b : Bool), (false && b) = false
x✝ : ∀ (b : Bool), bxor b false = b
⊢ n % 2 = bif (n % 2).bodd then 1 else 0
state_after: no goals

tactic: simp only [bodd_add, bodd_mul, bodd_succ, not, bodd_zero, Bool.false_and, Bool.bne_false]
  at this
state_before: m n✝ n : ℕ
this : (n % 2 + 2 * (n / 2)).bodd = n.bodd
⊢ n % 2 = bif n.bodd then 1 else 0
state_after: m n✝ n : ℕ
this : (n % 2).bodd = n.bodd
⊢ n % 2 = bif n.bodd then 1 else 0

tactic: intro b
state_before: m n✝ n : ℕ
this : (n % 2).bodd = n.bodd
⊢ ∀ (b : Bool), (false && b) = false
state_after: m n✝ n : ℕ
this : (n % 2).bodd = n.bodd
b : Bool
⊢ (false && b) = false

tactic: cases b <;> rfl
state_before: m n✝ n : ℕ
this : (n % 2).bodd = n.bodd
b : Bool
⊢ (false && b) = false
state_after: no goals

tactic: intro b
state_before: m n✝ n : ℕ
this : (n % 2).bodd = n.bodd
x✝ : ∀ (b : Bool), (false && b) = false
⊢ ∀ (b : Bool), bxor b false = b
state_after: m n✝ n : ℕ
this : (n % 2).bodd = n.bodd
x✝ : ∀ (b : Bool), (false && b) = false
b : Bool
⊢ bxor b false = b

tactic: cases b <;> rfl
state_before: m n✝ n : ℕ
this : (n % 2).bodd = n.bodd
x✝ : ∀ (b : Bool), (false && b) = false
b : Bool
⊢ bxor b false = b
state_after: no goals
Theorem: Rat.mkRat_mul_right
File: .lake/packages/batteries/Batteries/Data/Rat/Lemmas.lean

tactic: rw [← mkRat_mul_left (d := d) a0]
state_before: n : Int
d a : Nat
a0 : a ≠ 0
⊢ mkRat (n * ↑a) (d * a) = mkRat n d
state_after: n : Int
d a : Nat
a0 : a ≠ 0
⊢ mkRat (n * ↑a) (d * a) = mkRat (↑a * n) (a * d)

tactic: congr 1 <;> [apply Int.mul_comm; apply Nat.mul_comm]
state_before: n : Int
d a : Nat
a0 : a ≠ 0
⊢ mkRat (n * ↑a) (d * a) = mkRat (↑a * n) (a * d)
state_after: no goals
Theorem: Cardinal.iInf_eq_zero_iff
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: simp [iInf, sInf_eq_zero_iff]
state_before: α β : Type u
ι : Sort u_1
f : ι → Cardinal.{u_2}
⊢ ⨅ i, f i = 0 ↔ IsEmpty ι ∨ ∃ i, f i = 0
state_after: no goals
Theorem: Multiset.nodup_sup_iff
File: Mathlib/Data/Multiset/Lattice.lean

tactic: induction' m using Multiset.induction_on with _ _ h
state_before: α✝ : Type u_1
inst✝³ : SemilatticeSup α✝
inst✝² : OrderBot α✝
inst✝¹ : DecidableEq α✝
α : Type u_2
inst✝ : DecidableEq α
m : Multiset (Multiset α)
⊢ m.sup.Nodup ↔ ∀ a ∈ m, a.Nodup
state_after: case empty
α✝ : Type u_1
inst✝³ : SemilatticeSup α✝
inst✝² : OrderBot α✝
inst✝¹ : DecidableEq α✝
α : Type u_2
inst✝ : DecidableEq α
⊢ (sup 0).Nodup ↔ ∀ a ∈ 0, a.Nodup

case cons
α✝ : Type u_1
inst✝³ : SemilatticeSup α✝
inst✝² : OrderBot α✝
inst✝¹ : DecidableEq α✝
α : Type u_2
inst✝ : DecidableEq α
a✝ : Multiset α
s✝ : Multiset (Multiset α)
h : s✝.sup.Nodup ↔ ∀ a ∈ s✝, a.Nodup
⊢ (a✝ ::ₘ s✝).sup.Nodup ↔ ∀ a ∈ a✝ ::ₘ s✝, a.Nodup

tactic: simp
state_before: case empty
α✝ : Type u_1
inst✝³ : SemilatticeSup α✝
inst✝² : OrderBot α✝
inst✝¹ : DecidableEq α✝
α : Type u_2
inst✝ : DecidableEq α
⊢ (sup 0).Nodup ↔ ∀ a ∈ 0, a.Nodup
state_after: no goals

tactic: simp [h]
state_before: case cons
α✝ : Type u_1
inst✝³ : SemilatticeSup α✝
inst✝² : OrderBot α✝
inst✝¹ : DecidableEq α✝
α : Type u_2
inst✝ : DecidableEq α
a✝ : Multiset α
s✝ : Multiset (Multiset α)
h : s✝.sup.Nodup ↔ ∀ a ∈ s✝, a.Nodup
⊢ (a✝ ::ₘ s✝).sup.Nodup ↔ ∀ a ∈ a✝ ::ₘ s✝, a.Nodup
state_after: no goals
Theorem: MeasureTheory.IntegrableAtFilter.smul
File: Mathlib/MeasureTheory/Integral/IntegrableOn.lean

tactic: rcases hf with ⟨s, sl, hs⟩
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝⁴ : MeasurableSpace α
inst✝³ : NormedAddCommGroup E
f✝ g : α → E
s t : Set α
μ ν : Measure α
l l' : Filter α
𝕜 : Type u_5
inst✝² : NormedAddCommGroup 𝕜
inst✝¹ : SMulZeroClass 𝕜 E
inst✝ : BoundedSMul 𝕜 E
f : α → E
hf : IntegrableAtFilter f l μ
c : 𝕜
⊢ IntegrableAtFilter (c • f) l μ
state_after: case intro.intro
α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝⁴ : MeasurableSpace α
inst✝³ : NormedAddCommGroup E
f✝ g : α → E
s✝ t : Set α
μ ν : Measure α
l l' : Filter α
𝕜 : Type u_5
inst✝² : NormedAddCommGroup 𝕜
inst✝¹ : SMulZeroClass 𝕜 E
inst✝ : BoundedSMul 𝕜 E
f : α → E
c : 𝕜
s : Set α
sl : s ∈ l
hs : IntegrableOn f s μ
⊢ IntegrableAtFilter (c • f) l μ

tactic: exact ⟨s, sl, hs.smul c⟩
state_before: case intro.intro
α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝⁴ : MeasurableSpace α
inst✝³ : NormedAddCommGroup E
f✝ g : α → E
s✝ t : Set α
μ ν : Measure α
l l' : Filter α
𝕜 : Type u_5
inst✝² : NormedAddCommGroup 𝕜
inst✝¹ : SMulZeroClass 𝕜 E
inst✝ : BoundedSMul 𝕜 E
f : α → E
c : 𝕜
s : Set α
sl : s ∈ l
hs : IntegrableOn f s μ
⊢ IntegrableAtFilter (c • f) l μ
state_after: no goals
Theorem: hasFDerivAt_tsum
File: Mathlib/Analysis/Calculus/SmoothSeries.lean

tactic: let A : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 _
state_before: α : Type u_1
β : Type u_2
𝕜 : Type u_3
E : Type u_4
F : Type u_5
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : CompleteSpace F
u : α → ℝ
inst✝ : NormedSpace 𝕜 F
f : α → E → F
f' : α → E → E →L[𝕜] F
g g' : α → 𝕜 → F
v : ℕ → α → ℝ
s : Set E
t : Set 𝕜
x₀ x✝ : E
y₀ y : 𝕜
N : ℕ∞
hu : Summable u
hf : ∀ (n : α) (x : E), HasFDerivAt (f n) (f' n x) x
hf' : ∀ (n : α) (x : E), ‖f' n x‖ ≤ u n
hf0 : Summable fun n => f n x₀
x : E
⊢ HasFDerivAt (fun y => ∑' (n : α), f n y) (∑' (n : α), f' n x) x
state_after: α : Type u_1
β : Type u_2
𝕜 : Type u_3
E : Type u_4
F : Type u_5
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : CompleteSpace F
u : α → ℝ
inst✝ : NormedSpace 𝕜 F
f : α → E → F
f' : α → E → E →L[𝕜] F
g g' : α → 𝕜 → F
v : ℕ → α → ℝ
s : Set E
t : Set 𝕜
x₀ x✝ : E
y₀ y : 𝕜
N : ℕ∞
hu : Summable u
hf : ∀ (n : α) (x : E), HasFDerivAt (f n) (f' n x) x
hf' : ∀ (n : α) (x : E), ‖f' n x‖ ≤ u n
hf0 : Summable fun n => f n x₀
x : E
A : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
⊢ HasFDerivAt (fun y => ∑' (n : α), f n y) (∑' (n : α), f' n x) x

tactic: exact hasFDerivAt_tsum_of_isPreconnected hu isOpen_univ isPreconnected_univ
  (fun n x _ => hf n x) (fun n x _ => hf' n x) (mem_univ _) hf0 (mem_univ _)
state_before: α : Type u_1
β : Type u_2
𝕜 : Type u_3
E : Type u_4
F : Type u_5
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : CompleteSpace F
u : α → ℝ
inst✝ : NormedSpace 𝕜 F
f : α → E → F
f' : α → E → E →L[𝕜] F
g g' : α → 𝕜 → F
v : ℕ → α → ℝ
s : Set E
t : Set 𝕜
x₀ x✝ : E
y₀ y : 𝕜
N : ℕ∞
hu : Summable u
hf : ∀ (n : α) (x : E), HasFDerivAt (f n) (f' n x) x
hf' : ∀ (n : α) (x : E), ‖f' n x‖ ≤ u n
hf0 : Summable fun n => f n x₀
x : E
A : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
⊢ HasFDerivAt (fun y => ∑' (n : α), f n y) (∑' (n : α), f' n x) x
state_after: no goals
Theorem: WeierstrassCurve.baseChange_ψ₂
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

tactic: rw [← map_ψ₂, map_baseChange]
state_before: R : Type r
S : Type s
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
W : WeierstrassCurve R
inst✝⁸ : Algebra R S
A : Type u
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
inst✝⁵ : Algebra S A
inst✝⁴ : IsScalarTower R S A
B : Type v
inst✝³ : CommRing B
inst✝² : Algebra R B
inst✝¹ : Algebra S B
inst✝ : IsScalarTower R S B
f : A →ₐ[S] B
⊢ (W.baseChange B).ψ₂ = Polynomial.map (mapRingHom ↑f) (W.baseChange A).ψ₂
state_after: no goals
Theorem: ProbabilityTheory.kernel.map_apply'
File: Mathlib/Probability/Kernel/Composition.lean

tactic: rw [map_apply, Measure.map_apply hf hs]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
δ : Type u_5
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : β → γ
g : γ → α
κ : ↥(kernel α β)
hf : Measurable f
a : α
s : Set γ
hs : MeasurableSet s
⊢ ((map κ f hf) a) s = (κ a) (f ⁻¹' s)
state_after: no goals
Theorem: Relation.map_id_id
File: Mathlib/Logic/Relation.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r✝ : α → β → Prop
f : α → γ
g : β → δ
c : γ
d : δ
r : α → β → Prop
⊢ Relation.Map r id id = r
state_after: case h.h.a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r✝ : α → β → Prop
f : α → γ
g : β → δ
c : γ
d : δ
r : α → β → Prop
x✝¹ : α
x✝ : β
⊢ Relation.Map r id id x✝¹ x✝ ↔ r x✝¹ x✝

tactic: simp [Relation.Map]
state_before: case h.h.a
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r✝ : α → β → Prop
f : α → γ
g : β → δ
c : γ
d : δ
r : α → β → Prop
x✝¹ : α
x✝ : β
⊢ Relation.Map r id id x✝¹ x✝ ↔ r x✝¹ x✝
state_after: no goals
Theorem: CochainComplex.mappingCone.inr_f_fst_v
File: Mathlib/Algebra/Homology/HomotopyCategory/MappingCone.lean

tactic: simp [inr, fst]
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
p q : ℤ
hpq : p + 1 = q
⊢ (inr φ).f p ≫ (↑(fst φ)).v p q hpq = 0
state_after: no goals
Theorem: EMetric.diam_pos_iff
File: Mathlib/Topology/EMetricSpace/Basic.lean

tactic: simp only [pos_iff_ne_zero, Ne, diam_eq_zero_iff, Set.not_subsingleton_iff]
state_before: α : Type u
β : Type v
X : Type u_1
inst✝¹ : PseudoEMetricSpace α
γ : Type w
inst✝ : EMetricSpace γ
s : Set γ
⊢ 0 < diam s ↔ s.Nontrivial
state_after: no goals
Theorem: Int.lcm_one_right
File: Mathlib/Data/Int/GCD.lean

tactic: rw [Int.lcm]
state_before: i : ℤ
⊢ i.lcm 1 = i.natAbs
state_after: i : ℤ
⊢ i.natAbs.lcm (natAbs 1) = i.natAbs

tactic: apply Nat.lcm_one_right
state_before: i : ℤ
⊢ i.natAbs.lcm (natAbs 1) = i.natAbs
state_after: no goals