1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: memPartitionSet_succ
File: Mathlib/Data/Set/MemPartition.lean

tactic: simp [memPartitionSet]
state_before: α : Type u_1
f : ℕ → Set α
n : ℕ
a : α
inst✝ : Decidable (a ∈ f n)
⊢ memPartitionSet f (n + 1) a = if a ∈ f n then memPartitionSet f n a ∩ f n else memPartitionSet f n a \ f n
state_after: α : Type u_1
f : ℕ → Set α
n : ℕ
a : α
inst✝ : Decidable (a ∈ f n)
⊢ (if a ∈ f n then memPartitionSet f n a ∩ f n else memPartitionSet f n a \ f n) =
    if a ∈ f n then memPartitionSet f n a ∩ f n else memPartitionSet f n a \ f n

tactic: congr
state_before: α : Type u_1
f : ℕ → Set α
n : ℕ
a : α
inst✝ : Decidable (a ∈ f n)
⊢ (if a ∈ f n then memPartitionSet f n a ∩ f n else memPartitionSet f n a \ f n) =
    if a ∈ f n then memPartitionSet f n a ∩ f n else memPartitionSet f n a \ f n
state_after: no goals
Theorem: IsGδ.biInter
File: Mathlib/Topology/GDelta.lean

tactic: rw [biInter_eq_iInter]
state_before: X : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝ : TopologicalSpace X
s : Set ι
hs : s.Countable
t : (i : ι) → i ∈ s → Set X
ht : ∀ (i : ι) (hi : i ∈ s), IsGδ (t i hi)
⊢ IsGδ (⋂ i, ⋂ (h : i ∈ s), t i h)
state_after: X : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝ : TopologicalSpace X
s : Set ι
hs : s.Countable
t : (i : ι) → i ∈ s → Set X
ht : ∀ (i : ι) (hi : i ∈ s), IsGδ (t i hi)
⊢ IsGδ (⋂ x, t ↑x ⋯)

tactic: haveI := hs.to_subtype
state_before: X : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝ : TopologicalSpace X
s : Set ι
hs : s.Countable
t : (i : ι) → i ∈ s → Set X
ht : ∀ (i : ι) (hi : i ∈ s), IsGδ (t i hi)
⊢ IsGδ (⋂ x, t ↑x ⋯)
state_after: X : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝ : TopologicalSpace X
s : Set ι
hs : s.Countable
t : (i : ι) → i ∈ s → Set X
ht : ∀ (i : ι) (hi : i ∈ s), IsGδ (t i hi)
this : Countable ↑s
⊢ IsGδ (⋂ x, t ↑x ⋯)

tactic: exact .iInter fun x => ht x x.2
state_before: X : Type u_1
Y : Type u_2
ι : Type u_3
ι' : Sort u_4
inst✝ : TopologicalSpace X
s : Set ι
hs : s.Countable
t : (i : ι) → i ∈ s → Set X
ht : ∀ (i : ι) (hi : i ∈ s), IsGδ (t i hi)
this : Countable ↑s
⊢ IsGδ (⋂ x, t ↑x ⋯)
state_after: no goals
Theorem: PNat.exists_eq_succ_of_ne_one
File: Mathlib/Data/PNat/Basic.lean

tactic: simp
state_before: n : ℕ
property✝ : 0 < n + 2
x✝ : ⟨n + 2, property✝⟩ ≠ 1
⊢ 0 < n + 1
state_after: no goals
Theorem: ZMod.nontrivial_iff
File: Mathlib/Data/ZMod/Basic.lean

tactic: rw [← not_subsingleton_iff_nontrivial, subsingleton_iff]
state_before: n : ℕ
⊢ Nontrivial (ZMod n) ↔ n ≠ 1
state_after: no goals
Theorem: List.getElem?_scanl_zero
File: Mathlib/Data/List/Basic.lean

tactic: cases l
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f : β → α → β
b : β
a : α
l : List α
⊢ (scanl f b l)[0]? = some b
state_after: case nil
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f : β → α → β
b : β
a : α
⊢ (scanl f b [])[0]? = some b

case cons
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f : β → α → β
b : β
a head✝ : α
tail✝ : List α
⊢ (scanl f b (head✝ :: tail✝))[0]? = some b

tactic: simp [scanl_nil]
state_before: case nil
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f : β → α → β
b : β
a : α
⊢ (scanl f b [])[0]? = some b
state_after: no goals

tactic: simp [scanl_cons, singleton_append]
state_before: case cons
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f : β → α → β
b : β
a head✝ : α
tail✝ : List α
⊢ (scanl f b (head✝ :: tail✝))[0]? = some b
state_after: no goals
Theorem: MeasureTheory.lintegral_count
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: rw [count, lintegral_sum_measure]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
⊢ ∫⁻ (a : α), f a ∂count = ∑' (a : α), f a
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
⊢ ∑' (i : α), ∫⁻ (a : α), f a ∂dirac i = ∑' (a : α), f a

tactic: congr
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
⊢ ∑' (i : α), ∫⁻ (a : α), f a ∂dirac i = ∑' (a : α), f a
state_after: case e_f
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
⊢ (fun i => ∫⁻ (a : α), f a ∂dirac i) = fun a => f a

tactic: exact funext fun a => lintegral_dirac a f
state_before: case e_f
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
⊢ (fun i => ∫⁻ (a : α), f a ∂dirac i) = fun a => f a
state_after: no goals
Theorem: Language.kstar_eq_iSup_pow
File: Mathlib/Computability/Language.lean

tactic: ext x
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
l✝ m : Language α
a b x : List α
l : Language α
⊢ l∗ = ⨆ i, l ^ i
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
l✝ m : Language α
a b x✝ : List α
l : Language α
x : List α
⊢ x ∈ l∗ ↔ x ∈ ⨆ i, l ^ i

tactic: simp only [mem_kstar, mem_iSup, mem_pow]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
l✝ m : Language α
a b x✝ : List α
l : Language α
x : List α
⊢ x ∈ l∗ ↔ x ∈ ⨆ i, l ^ i
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
l✝ m : Language α
a b x✝ : List α
l : Language α
x : List α
⊢ (∃ L, x = L.join ∧ ∀ y ∈ L, y ∈ l) ↔ ∃ i S, x = S.join ∧ S.length = i ∧ ∀ y ∈ S, y ∈ l

tactic: constructor
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
l✝ m : Language α
a b x✝ : List α
l : Language α
x : List α
⊢ (∃ L, x = L.join ∧ ∀ y ∈ L, y ∈ l) ↔ ∃ i S, x = S.join ∧ S.length = i ∧ ∀ y ∈ S, y ∈ l
state_after: case h.mp
α : Type u_1
β : Type u_2
γ : Type u_3
l✝ m : Language α
a b x✝ : List α
l : Language α
x : List α
⊢ (∃ L, x = L.join ∧ ∀ y ∈ L, y ∈ l) → ∃ i S, x = S.join ∧ S.length = i ∧ ∀ y ∈ S, y ∈ l

case h.mpr
α : Type u_1
β : Type u_2
γ : Type u_3
l✝ m : Language α
a b x✝ : List α
l : Language α
x : List α
⊢ (∃ i S, x = S.join ∧ S.length = i ∧ ∀ y ∈ S, y ∈ l) → ∃ L, x = L.join ∧ ∀ y ∈ L, y ∈ l

tactic: rintro ⟨S, rfl, hS⟩
state_before: case h.mp
α : Type u_1
β : Type u_2
γ : Type u_3
l✝ m : Language α
a b x✝ : List α
l : Language α
x : List α
⊢ (∃ L, x = L.join ∧ ∀ y ∈ L, y ∈ l) → ∃ i S, x = S.join ∧ S.length = i ∧ ∀ y ∈ S, y ∈ l
state_after: case h.mp.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
l✝ m : Language α
a b x : List α
l : Language α
S : List (List α)
hS : ∀ y ∈ S, y ∈ l
⊢ ∃ i S_1, S.join = S_1.join ∧ S_1.length = i ∧ ∀ y ∈ S_1, y ∈ l

tactic: exact ⟨_, S, rfl, rfl, hS⟩
state_before: case h.mp.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
l✝ m : Language α
a b x : List α
l : Language α
S : List (List α)
hS : ∀ y ∈ S, y ∈ l
⊢ ∃ i S_1, S.join = S_1.join ∧ S_1.length = i ∧ ∀ y ∈ S_1, y ∈ l
state_after: no goals

tactic: rintro ⟨_, S, rfl, rfl, hS⟩
state_before: case h.mpr
α : Type u_1
β : Type u_2
γ : Type u_3
l✝ m : Language α
a b x✝ : List α
l : Language α
x : List α
⊢ (∃ i S, x = S.join ∧ S.length = i ∧ ∀ y ∈ S, y ∈ l) → ∃ L, x = L.join ∧ ∀ y ∈ L, y ∈ l
state_after: case h.mpr.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
l✝ m : Language α
a b x : List α
l : Language α
S : List (List α)
hS : ∀ y ∈ S, y ∈ l
⊢ ∃ L, S.join = L.join ∧ ∀ y ∈ L, y ∈ l

tactic: exact ⟨S, rfl, hS⟩
state_before: case h.mpr.intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
l✝ m : Language α
a b x : List α
l : Language α
S : List (List α)
hS : ∀ y ∈ S, y ∈ l
⊢ ∃ L, S.join = L.join ∧ ∀ y ∈ L, y ∈ l
state_after: no goals
Theorem: MulAction.isBlock_empty
File: Mathlib/GroupTheory/GroupAction/Blocks.lean

tactic: simp [IsBlock.def, Set.bot_eq_empty, Set.smul_set_empty]
state_before: G : Type u_1
X : Type u_2
inst✝ : SMul G X
⊢ IsBlock G ⊥
state_after: no goals
Theorem: Nat.cast_factorial
File: Mathlib/Data/Nat/Factorial/Cast.lean

tactic: rw [← one_ascFactorial, cast_ascFactorial, cast_one]
state_before: S : Type u_1
inst✝ : Semiring S
a b : ℕ
⊢ ↑a ! = Polynomial.eval 1 (ascPochhammer S a)
state_after: no goals
Theorem: LinearMapClass.ker_eq_bot
File: Mathlib/Algebra/Module/Submodule/Ker.lean

tactic: simpa [disjoint_iff_inf_le] using disjoint_ker' (f := f) (p := ⊤)
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
R₃ : Type u_4
K : Type u_5
M : Type u_6
M₁ : Type u_7
M₂ : Type u_8
M₃ : Type u_9
V : Type u_10
V₂ : Type u_11
inst✝¹¹ : Ring R
inst✝¹⁰ : Ring R₂
inst✝⁹ : Ring R₃
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M₂
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R M
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
τ₁₂ : R →+* R₂
τ₂₃ : R₂ →+* R₃
τ₁₃ : R →+* R₃
inst✝² : RingHomCompTriple τ₁₂ τ₂₃ τ₁₃
F : Type u_12
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F τ₁₂ M M₂
f : F
⊢ ker f = ⊥ ↔ Injective ⇑f
state_after: no goals
Theorem: Polynomial.mirror_trailingCoeff
File: Mathlib/Algebra/Polynomial/Mirror.lean

tactic: rw [leadingCoeff, trailingCoeff, mirror_natTrailingDegree, coeff_mirror,
  revAt_le (Nat.le_add_left _ _), add_tsub_cancel_right]
state_before: R : Type u_1
inst✝ : Semiring R
p q : R[X]
⊢ p.mirror.trailingCoeff = p.leadingCoeff
state_after: no goals
Theorem: MeasureTheory.SignedMeasure.rnDeriv_add
File: Mathlib/MeasureTheory/Decomposition/SignedLebesgue.lean

tactic: refine
  Integrable.ae_eq_of_withDensityᵥ_eq (integrable_rnDeriv _ _)
    ((integrable_rnDeriv _ _).add (integrable_rnDeriv _ _)) ?_
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t✝ s t : SignedMeasure α
μ : Measure α
inst✝² : s.HaveLebesgueDecomposition μ
inst✝¹ : t.HaveLebesgueDecomposition μ
inst✝ : (s + t).HaveLebesgueDecomposition μ
⊢ (s + t).rnDeriv μ =ᶠ[ae μ] s.rnDeriv μ + t.rnDeriv μ
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t✝ s t : SignedMeasure α
μ : Measure α
inst✝² : s.HaveLebesgueDecomposition μ
inst✝¹ : t.HaveLebesgueDecomposition μ
inst✝ : (s + t).HaveLebesgueDecomposition μ
⊢ μ.withDensityᵥ ((s + t).rnDeriv μ) = μ.withDensityᵥ (s.rnDeriv μ + t.rnDeriv μ)

tactic: rw [← add_right_inj ((s + t).singularPart μ), singularPart_add_withDensity_rnDeriv_eq,
  withDensityᵥ_add (integrable_rnDeriv _ _) (integrable_rnDeriv _ _), singularPart_add,
  add_assoc, add_comm (t.singularPart μ), add_assoc, add_comm _ (t.singularPart μ),
  singularPart_add_withDensity_rnDeriv_eq, ← add_assoc,
  singularPart_add_withDensity_rnDeriv_eq]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t✝ s t : SignedMeasure α
μ : Measure α
inst✝² : s.HaveLebesgueDecomposition μ
inst✝¹ : t.HaveLebesgueDecomposition μ
inst✝ : (s + t).HaveLebesgueDecomposition μ
⊢ μ.withDensityᵥ ((s + t).rnDeriv μ) = μ.withDensityᵥ (s.rnDeriv μ + t.rnDeriv μ)
state_after: no goals
Theorem: LinearMap.dualMap_injective_iff
File: Mathlib/LinearAlgebra/Dual.lean

tactic: refine ⟨Function.mtr fun not_surj inj ↦ ?_, dualMap_injective_of_surjective⟩
state_before: K : Type uK
inst✝⁴ : Field K
V₁ : Type uV₁
V₂ : Type uV₂
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V₂
inst✝ : Module K V₂
f : V₁ →ₗ[K] V₂
⊢ Function.Injective ⇑f.dualMap ↔ Function.Surjective ⇑f
state_after: K : Type uK
inst✝⁴ : Field K
V₁ : Type uV₁
V₂ : Type uV₂
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V₂
inst✝ : Module K V₂
f : V₁ →ₗ[K] V₂
not_surj : ¬Function.Surjective ⇑f
inj : Function.Injective ⇑f.dualMap
⊢ False

tactic: rw [← range_eq_top, ← Ne, ← lt_top_iff_ne_top] at not_surj
state_before: K : Type uK
inst✝⁴ : Field K
V₁ : Type uV₁
V₂ : Type uV₂
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V₂
inst✝ : Module K V₂
f : V₁ →ₗ[K] V₂
not_surj : ¬Function.Surjective ⇑f
inj : Function.Injective ⇑f.dualMap
⊢ False
state_after: K : Type uK
inst✝⁴ : Field K
V₁ : Type uV₁
V₂ : Type uV₂
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V₂
inst✝ : Module K V₂
f : V₁ →ₗ[K] V₂
not_surj : range f < ⊤
inj : Function.Injective ⇑f.dualMap
⊢ False

tactic: obtain ⟨φ, φ0, range_le_ker⟩ := (range f).exists_le_ker_of_lt_top not_surj
state_before: K : Type uK
inst✝⁴ : Field K
V₁ : Type uV₁
V₂ : Type uV₂
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V₂
inst✝ : Module K V₂
f : V₁ →ₗ[K] V₂
not_surj : range f < ⊤
inj : Function.Injective ⇑f.dualMap
⊢ False
state_after: case intro.intro
K : Type uK
inst✝⁴ : Field K
V₁ : Type uV₁
V₂ : Type uV₂
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V₂
inst✝ : Module K V₂
f : V₁ →ₗ[K] V₂
not_surj : range f < ⊤
inj : Function.Injective ⇑f.dualMap
φ : V₂ →ₗ[K] K
φ0 : φ ≠ 0
range_le_ker : range f ≤ ker φ
⊢ False

tactic: exact φ0 (inj <| ext fun x ↦ range_le_ker ⟨x, rfl⟩)
state_before: case intro.intro
K : Type uK
inst✝⁴ : Field K
V₁ : Type uV₁
V₂ : Type uV₂
inst✝³ : AddCommGroup V₁
inst✝² : Module K V₁
inst✝¹ : AddCommGroup V₂
inst✝ : Module K V₂
f : V₁ →ₗ[K] V₂
not_surj : range f < ⊤
inj : Function.Injective ⇑f.dualMap
φ : V₂ →ₗ[K] K
φ0 : φ ≠ 0
range_le_ker : range f ≤ ker φ
⊢ False
state_after: no goals
Theorem: ProbabilityTheory.cdf_eq_toReal
File: Mathlib/Probability/Cdf.lean

tactic: rw [← ofReal_cdf μ x, ENNReal.toReal_ofReal (cdf_nonneg μ x)]
state_before: μ : Measure ℝ
inst✝ : IsProbabilityMeasure μ
x : ℝ
⊢ ↑(cdf μ) x = (μ (Iic x)).toReal
state_after: no goals
Theorem: Nat.binomial_eq_choose
File: Mathlib/Data/Nat/Choose/Multinomial.lean

tactic: simp [binomial_eq h, choose_eq_factorial_div_factorial (Nat.le_add_right _ _)]
state_before: α : Type u_1
s : Finset α
f : α → ℕ
a b : α
n : ℕ
inst✝ : DecidableEq α
h : a ≠ b
⊢ multinomial {a, b} f = (f a + f b).choose (f a)
state_after: no goals
Theorem: Subring.toNonUnitalSubring_toSubring
File: Mathlib/Algebra/Algebra/Subalgebra/Unitization.lean

tactic: cases S
state_before: R : Type u_1
inst✝ : Ring R
S : Subring R
⊢ S.toNonUnitalSubring.toSubring ⋯ = S
state_after: case mk
R : Type u_1
inst✝ : Ring R
toSubsemiring✝ : Subsemiring R
neg_mem'✝ : ∀ {x : R}, x ∈ toSubsemiring✝.carrier → -x ∈ toSubsemiring✝.carrier
⊢ { toSubsemiring := toSubsemiring✝, neg_mem' := neg_mem'✝ }.toNonUnitalSubring.toSubring ⋯ =
    { toSubsemiring := toSubsemiring✝, neg_mem' := neg_mem'✝ }

tactic: rfl
state_before: case mk
R : Type u_1
inst✝ : Ring R
toSubsemiring✝ : Subsemiring R
neg_mem'✝ : ∀ {x : R}, x ∈ toSubsemiring✝.carrier → -x ∈ toSubsemiring✝.carrier
⊢ { toSubsemiring := toSubsemiring✝, neg_mem' := neg_mem'✝ }.toNonUnitalSubring.toSubring ⋯ =
    { toSubsemiring := toSubsemiring✝, neg_mem' := neg_mem'✝ }
state_after: no goals
Theorem: covariant_le_of_covariant_lt
File: Mathlib/Algebra/Order/Monoid/Unbundled/Defs.lean

tactic: intro h a b c bc
state_before: M : Type u_1
N : Type u_2
μ : M → N → N
r : N → N → Prop
inst✝ : PartialOrder N
⊢ (Covariant M N μ fun x x_1 => x < x_1) → Covariant M N μ fun x x_1 => x ≤ x_1
state_after: M : Type u_1
N : Type u_2
μ : M → N → N
r : N → N → Prop
inst✝ : PartialOrder N
h : Covariant M N μ fun x x_1 => x < x_1
a : M
b c : N
bc : b ≤ c
⊢ μ a b ≤ μ a c

tactic: rcases bc.eq_or_lt with (rfl | bc)
state_before: M : Type u_1
N : Type u_2
μ : M → N → N
r : N → N → Prop
inst✝ : PartialOrder N
h : Covariant M N μ fun x x_1 => x < x_1
a : M
b c : N
bc : b ≤ c
⊢ μ a b ≤ μ a c
state_after: case inl
M : Type u_1
N : Type u_2
μ : M → N → N
r : N → N → Prop
inst✝ : PartialOrder N
h : Covariant M N μ fun x x_1 => x < x_1
a : M
b : N
bc : b ≤ b
⊢ μ a b ≤ μ a b

case inr
M : Type u_1
N : Type u_2
μ : M → N → N
r : N → N → Prop
inst✝ : PartialOrder N
h : Covariant M N μ fun x x_1 => x < x_1
a : M
b c : N
bc✝ : b ≤ c
bc : b < c
⊢ μ a b ≤ μ a c

tactic: exact le_rfl
state_before: case inl
M : Type u_1
N : Type u_2
μ : M → N → N
r : N → N → Prop
inst✝ : PartialOrder N
h : Covariant M N μ fun x x_1 => x < x_1
a : M
b : N
bc : b ≤ b
⊢ μ a b ≤ μ a b
state_after: no goals

tactic: exact (h _ bc).le
state_before: case inr
M : Type u_1
N : Type u_2
μ : M → N → N
r : N → N → Prop
inst✝ : PartialOrder N
h : Covariant M N μ fun x x_1 => x < x_1
a : M
b c : N
bc✝ : b ≤ c
bc : b < c
⊢ μ a b ≤ μ a c
state_after: no goals
Theorem: Nat.coprime_one_right_iff
File: Mathlib/Data/Nat/GCD/Basic.lean

tactic: simp [Coprime]
state_before: n : ℕ
⊢ n.Coprime 1 ↔ True
state_after: no goals
Theorem: Orientation.oangle_map_complex
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

tactic: rw [← Complex.oangle, ← hf, o.oangle_map]
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
f : V ≃ₗᵢ[ℝ] ℂ
hf : (map (Fin 2) f.toLinearEquiv) o = Complex.orientation
x y : V
⊢ o.oangle x y = ↑((starRingEnd ℂ) (f x) * f y).arg
state_after: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
f : V ≃ₗᵢ[ℝ] ℂ
hf : (map (Fin 2) f.toLinearEquiv) o = Complex.orientation
x y : V
⊢ o.oangle x y = o.oangle (f.symm (f x)) (f.symm (f y))

tactic: iterate 2 rw [LinearIsometryEquiv.symm_apply_apply]
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
f : V ≃ₗᵢ[ℝ] ℂ
hf : (map (Fin 2) f.toLinearEquiv) o = Complex.orientation
x y : V
⊢ o.oangle x y = o.oangle (f.symm (f x)) (f.symm (f y))
state_after: no goals

tactic: rw [LinearIsometryEquiv.symm_apply_apply]
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
f : V ≃ₗᵢ[ℝ] ℂ
hf : (map (Fin 2) f.toLinearEquiv) o = Complex.orientation
x y : V
⊢ o.oangle x y = o.oangle x (f.symm (f y))
state_after: no goals
Theorem: le_update_self_iff
File: Mathlib/Order/Basic.lean

tactic: simp [le_update_iff]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → Preorder (π i)
x y : (i : ι) → π i
i : ι
a b : π i
⊢ x ≤ update x i a ↔ x i ≤ a
state_after: no goals
Theorem: Subspace.dualRestrict_comp_dualLift
File: Mathlib/LinearAlgebra/Dual.lean

tactic: ext φ x
state_before: K : Type u
V : Type v
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
W✝ W : Subspace K V
⊢ dualRestrict W ∘ₗ W.dualLift = 1
state_after: case h.h
K : Type u
V : Type v
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
W✝ W : Subspace K V
φ : Module.Dual K ↥W
x : ↥W
⊢ ((dualRestrict W ∘ₗ W.dualLift) φ) x = (1 φ) x

tactic: simp
state_before: case h.h
K : Type u
V : Type v
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
W✝ W : Subspace K V
φ : Module.Dual K ↥W
x : ↥W
⊢ ((dualRestrict W ∘ₗ W.dualLift) φ) x = (1 φ) x
state_after: no goals
Theorem: QuotientMap.continuous_lift_prod_right
File: Mathlib/Topology/CompactOpen.lean

tactic: have : Continuous fun p : X₀ × Y => g ((Prod.swap p).1, f (Prod.swap p).2) :=
  hg.comp continuous_swap
state_before: X₀ : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝⁴ : TopologicalSpace X₀
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : LocallyCompactSpace Y
f : X₀ → X
hf : QuotientMap f
g : Y × X → Z
hg : Continuous fun p => g (p.1, f p.2)
⊢ Continuous g
state_after: X₀ : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝⁴ : TopologicalSpace X₀
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : LocallyCompactSpace Y
f : X₀ → X
hf : QuotientMap f
g : Y × X → Z
hg : Continuous fun p => g (p.1, f p.2)
this : Continuous fun p => g (p.swap.1, f p.swap.2)
⊢ Continuous g

tactic: have : Continuous fun p : X₀ × Y => (g ∘ Prod.swap) (f p.1, p.2) := this
state_before: X₀ : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝⁴ : TopologicalSpace X₀
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : LocallyCompactSpace Y
f : X₀ → X
hf : QuotientMap f
g : Y × X → Z
hg : Continuous fun p => g (p.1, f p.2)
this : Continuous fun p => g (p.swap.1, f p.swap.2)
⊢ Continuous g
state_after: X₀ : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝⁴ : TopologicalSpace X₀
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : LocallyCompactSpace Y
f : X₀ → X
hf : QuotientMap f
g : Y × X → Z
hg : Continuous fun p => g (p.1, f p.2)
this✝ : Continuous fun p => g (p.swap.1, f p.swap.2)
this : Continuous fun p => (g ∘ Prod.swap) (f p.1, p.2)
⊢ Continuous g

tactic: exact (hf.continuous_lift_prod_left this).comp continuous_swap
state_before: X₀ : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝⁴ : TopologicalSpace X₀
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : LocallyCompactSpace Y
f : X₀ → X
hf : QuotientMap f
g : Y × X → Z
hg : Continuous fun p => g (p.1, f p.2)
this✝ : Continuous fun p => g (p.swap.1, f p.swap.2)
this : Continuous fun p => (g ∘ Prod.swap) (f p.1, p.2)
⊢ Continuous g
state_after: no goals
Theorem: List.takeD_succ
File: .lake/packages/batteries/Batteries/Data/List/Basic.lean

tactic: simp [takeD]
state_before: α : Type u_1
n : Nat
l : List α
a : α
⊢ takeD (n + 1) l a = l.head?.getD a :: takeD n l.tail a
state_after: no goals
Theorem: Filter.tendsto_cocompact_mul_left
File: Mathlib/Topology/Algebra/Monoid.lean

tactic: refine Filter.Tendsto.of_tendsto_comp ?_ (Filter.comap_cocompact_le (continuous_mul_left b))
state_before: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace M
inst✝¹ : Monoid M
inst✝ : ContinuousMul M
a b : M
ha : b * a = 1
⊢ Tendsto (fun x => a * x) (cocompact M) (cocompact M)
state_after: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace M
inst✝¹ : Monoid M
inst✝ : ContinuousMul M
a b : M
ha : b * a = 1
⊢ Tendsto ((fun b_1 => b * b_1) ∘ fun x => a * x) (cocompact M) (cocompact M)

tactic: convert Filter.tendsto_id
state_before: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace M
inst✝¹ : Monoid M
inst✝ : ContinuousMul M
a b : M
ha : b * a = 1
⊢ Tendsto ((fun b_1 => b * b_1) ∘ fun x => a * x) (cocompact M) (cocompact M)
state_after: case h.e'_3
ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace M
inst✝¹ : Monoid M
inst✝ : ContinuousMul M
a b : M
ha : b * a = 1
⊢ ((fun b_1 => b * b_1) ∘ fun x => a * x) = id

tactic: ext x
state_before: case h.e'_3
ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace M
inst✝¹ : Monoid M
inst✝ : ContinuousMul M
a b : M
ha : b * a = 1
⊢ ((fun b_1 => b * b_1) ∘ fun x => a * x) = id
state_after: case h.e'_3.h
ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace M
inst✝¹ : Monoid M
inst✝ : ContinuousMul M
a b : M
ha : b * a = 1
x : M
⊢ ((fun b_1 => b * b_1) ∘ fun x => a * x) x = id x

tactic: simp [← mul_assoc, ha]
state_before: case h.e'_3.h
ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace M
inst✝¹ : Monoid M
inst✝ : ContinuousMul M
a b : M
ha : b * a = 1
x : M
⊢ ((fun b_1 => b * b_1) ∘ fun x => a * x) x = id x
state_after: no goals