1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Mathlib.Meta.NormNum.jacobiSymNat.even_odd₅
File: Mathlib/Tactic/NormNum/LegendreSymbol.lean

tactic: simp only [jacobiSymNat, ← hr, ← hc, Int.ofNat_ediv, Nat.cast_ofNat]
state_before: a b c : ℕ
r : ℤ
ha : a % 2 = 0
hb : b % 8 = 5
hc : a / 2 = c
hr : jacobiSymNat c b = r
⊢ jacobiSymNat a b = -r
state_after: a b c : ℕ
r : ℤ
ha : a % 2 = 0
hb : b % 8 = 5
hc : a / 2 = c
hr : jacobiSymNat c b = r
⊢ jacobiSym (↑a) b = -jacobiSym (↑a / 2) b

tactic: rw [← jacobiSym.even_odd (mod_cast ha), if_pos (by simp [hb])]
state_before: a b c : ℕ
r : ℤ
ha : a % 2 = 0
hb : b % 8 = 5
hc : a / 2 = c
hr : jacobiSymNat c b = r
⊢ jacobiSym (↑a) b = -jacobiSym (↑a / 2) b
state_after: a b c : ℕ
r : ℤ
ha : a % 2 = 0
hb : b % 8 = 5
hc : a / 2 = c
hr : jacobiSymNat c b = r
⊢ b % 2 = 1

tactic: rw [← Nat.mod_mod_of_dvd, hb]
state_before: a b c : ℕ
r : ℤ
ha : a % 2 = 0
hb : b % 8 = 5
hc : a / 2 = c
hr : jacobiSymNat c b = r
⊢ b % 2 = 1
state_after: case h
a b c : ℕ
r : ℤ
ha : a % 2 = 0
hb : b % 8 = 5
hc : a / 2 = c
hr : jacobiSymNat c b = r
⊢ 2 ∣ 8

tactic: norm_num
state_before: case h
a b c : ℕ
r : ℤ
ha : a % 2 = 0
hb : b % 8 = 5
hc : a / 2 = c
hr : jacobiSymNat c b = r
⊢ 2 ∣ 8
state_after: no goals

tactic: simp [hb]
state_before: a b c : ℕ
r : ℤ
ha : a % 2 = 0
hb : b % 8 = 5
hc : a / 2 = c
hr : jacobiSymNat c b = r
⊢ b % 8 = 3 ∨ b % 8 = 5
state_after: no goals
Theorem: List.sublist_singleton
File: Mathlib/Data/List/Basic.lean

tactic: constructor <;> rintro (_ | _) <;> aesop
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ l : List α
a : α
⊢ l <+ [a] ↔ l = [] ∨ l = [a]
state_after: no goals
Theorem: MeasureTheory.AEEqFun.comp₂_eq_mk
File: Mathlib/MeasureTheory/Function/AEEqFun.lean

tactic: rw [comp₂_eq_pair, pair_eq_mk, comp_mk]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
g : β → γ → δ
hg : Continuous (uncurry g)
f₁ : α →ₘ[μ] β
f₂ : α →ₘ[μ] γ
⊢ comp₂ g hg f₁ f₂ = mk (fun a => g (↑f₁ a) (↑f₂ a)) ⋯
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
g : β → γ → δ
hg : Continuous (uncurry g)
f₁ : α →ₘ[μ] β
f₂ : α →ₘ[μ] γ
⊢ mk (uncurry g ∘ fun x => (↑f₁ x, ↑f₂ x)) ⋯ = mk (fun a => g (↑f₁ a) (↑f₂ a)) ⋯

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
g : β → γ → δ
hg : Continuous (uncurry g)
f₁ : α →ₘ[μ] β
f₂ : α →ₘ[μ] γ
⊢ mk (uncurry g ∘ fun x => (↑f₁ x, ↑f₂ x)) ⋯ = mk (fun a => g (↑f₁ a) (↑f₂ a)) ⋯
state_after: no goals
Theorem: lp.sum_rpow_le_norm_rpow
File: Mathlib/Analysis/NormedSpace/lpSpace.lean

tactic: rw [lp.norm_rpow_eq_tsum hp f]
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝ : (i : α) → NormedAddCommGroup (E i)
hp : 0 < p.toReal
f : ↥(lp E p)
s : Finset α
⊢ ∑ i ∈ s, ‖↑f i‖ ^ p.toReal ≤ ‖f‖ ^ p.toReal
state_after: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝ : (i : α) → NormedAddCommGroup (E i)
hp : 0 < p.toReal
f : ↥(lp E p)
s : Finset α
⊢ ∑ i ∈ s, ‖↑f i‖ ^ p.toReal ≤ ∑' (i : α), ‖↑f i‖ ^ p.toReal

tactic: have : ∀ i, 0 ≤ ‖f i‖ ^ p.toReal := fun i => Real.rpow_nonneg (norm_nonneg _) _
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝ : (i : α) → NormedAddCommGroup (E i)
hp : 0 < p.toReal
f : ↥(lp E p)
s : Finset α
⊢ ∑ i ∈ s, ‖↑f i‖ ^ p.toReal ≤ ∑' (i : α), ‖↑f i‖ ^ p.toReal
state_after: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝ : (i : α) → NormedAddCommGroup (E i)
hp : 0 < p.toReal
f : ↥(lp E p)
s : Finset α
this : ∀ (i : α), 0 ≤ ‖↑f i‖ ^ p.toReal
⊢ ∑ i ∈ s, ‖↑f i‖ ^ p.toReal ≤ ∑' (i : α), ‖↑f i‖ ^ p.toReal

tactic: refine sum_le_tsum _ (fun i _ => this i) ?_
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝ : (i : α) → NormedAddCommGroup (E i)
hp : 0 < p.toReal
f : ↥(lp E p)
s : Finset α
this : ∀ (i : α), 0 ≤ ‖↑f i‖ ^ p.toReal
⊢ ∑ i ∈ s, ‖↑f i‖ ^ p.toReal ≤ ∑' (i : α), ‖↑f i‖ ^ p.toReal
state_after: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝ : (i : α) → NormedAddCommGroup (E i)
hp : 0 < p.toReal
f : ↥(lp E p)
s : Finset α
this : ∀ (i : α), 0 ≤ ‖↑f i‖ ^ p.toReal
⊢ Summable fun i => ‖↑f i‖ ^ p.toReal

tactic: exact (lp.memℓp f).summable hp
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝ : (i : α) → NormedAddCommGroup (E i)
hp : 0 < p.toReal
f : ↥(lp E p)
s : Finset α
this : ∀ (i : α), 0 ≤ ‖↑f i‖ ^ p.toReal
⊢ Summable fun i => ‖↑f i‖ ^ p.toReal
state_after: no goals
Theorem: Order.succ_top
File: Mathlib/Order/SuccPred/Basic.lean

tactic: rw [succ_eq_iff_isMax, isMax_iff_eq_top]
state_before: α : Type u_1
β : Type u_2
inst✝² : PartialOrder α
inst✝¹ : SuccOrder α
a b : α
inst✝ : OrderTop α
⊢ succ ⊤ = ⊤
state_after: no goals
Theorem: riemannZeta_one_ne_zero
File: Mathlib/NumberTheory/Harmonic/ZetaAsymp.lean

tactic: suffices (γ - (4 * π).log) / 2 ≠ 0 by
  simpa only [riemannZeta_one, ← ofReal_ne_zero, ofReal_log (by positivity : 0 ≤ 4 * π),
    push_cast]
state_before: ⊢ riemannZeta 1 ≠ 0
state_after: ⊢ (γ - Real.log (4 * π)) / 2 ≠ 0

tactic: refine div_ne_zero (sub_lt_zero.mpr (lt_trans ?_ ?_ (b := 1))).ne two_ne_zero
state_before: ⊢ (γ - Real.log (4 * π)) / 2 ≠ 0
state_after: case refine_1

⊢ γ < 1

case refine_2

⊢ 1 < Real.log (4 * π)

tactic: simpa only [riemannZeta_one, ← ofReal_ne_zero, ofReal_log (by positivity : 0 ≤ 4 * π),
  push_cast]
state_before: this : (γ - Real.log (4 * π)) / 2 ≠ 0
⊢ riemannZeta 1 ≠ 0
state_after: no goals

tactic: positivity
state_before: this : (γ - Real.log (4 * π)) / 2 ≠ 0
⊢ 0 ≤ 4 * π
state_after: no goals

tactic: exact Real.eulerMascheroniConstant_lt_two_thirds.trans (by norm_num)
state_before: case refine_1

⊢ γ < 1
state_after: no goals

tactic: norm_num
state_before: ⊢ 2 / 3 < 1
state_after: no goals

tactic: rw [lt_log_iff_exp_lt (by positivity)]
state_before: case refine_2

⊢ 1 < Real.log (4 * π)
state_after: case refine_2

⊢ rexp 1 < 4 * π

tactic: exact (lt_trans Real.exp_one_lt_d9 (by norm_num)).trans_le
  <| mul_le_mul_of_nonneg_left two_le_pi (by norm_num)
state_before: case refine_2

⊢ rexp 1 < 4 * π
state_after: no goals

tactic: positivity
state_before: ⊢ 0 < 4 * π
state_after: no goals

tactic: norm_num
state_before: ⊢ 2.7182818286 < 4 * 2
state_after: no goals

tactic: norm_num
state_before: ⊢ 0 ≤ 4
state_after: no goals
Theorem: Asymptotics.isLittleO_pow_pow_atTop_of_lt
File: Mathlib/Analysis/Asymptotics/SpecificAsymptotics.lean

tactic: refine (isLittleO_iff_tendsto' ?_).mpr (tendsto_pow_div_pow_atTop_zero hpq)
state_before: 𝕜 : Type u_1
inst✝¹ : NormedLinearOrderedField 𝕜
inst✝ : OrderTopology 𝕜
p q : ℕ
hpq : p < q
⊢ (fun x => x ^ p) =o[atTop] fun x => x ^ q
state_after: 𝕜 : Type u_1
inst✝¹ : NormedLinearOrderedField 𝕜
inst✝ : OrderTopology 𝕜
p q : ℕ
hpq : p < q
⊢ ∀ᶠ (x : 𝕜) in atTop, x ^ q = 0 → x ^ p = 0

tactic: exact (eventually_gt_atTop 0).mono fun x hx hxq => (pow_ne_zero q hx.ne' hxq).elim
state_before: 𝕜 : Type u_1
inst✝¹ : NormedLinearOrderedField 𝕜
inst✝ : OrderTopology 𝕜
p q : ℕ
hpq : p < q
⊢ ∀ᶠ (x : 𝕜) in atTop, x ^ q = 0 → x ^ p = 0
state_after: no goals
Theorem: Set.ordT5Nhd_mem_nhdsSet
File: Mathlib/Topology/Order/T5.lean

tactic: rw [← mem_interior_iff_mem_nhds, interior_compl]
state_before: X : Type u_1
inst✝² : LinearOrder X
inst✝¹ : TopologicalSpace X
inst✝ : OrderTopology X
a b c : X
s t : Set X
hd : Disjoint s (closure t)
x : X
hx : x ∈ s
⊢ tᶜ ∈ 𝓝 x
state_after: X : Type u_1
inst✝² : LinearOrder X
inst✝¹ : TopologicalSpace X
inst✝ : OrderTopology X
a b c : X
s t : Set X
hd : Disjoint s (closure t)
x : X
hx : x ∈ s
⊢ x ∈ (closure t)ᶜ

tactic: exact disjoint_left.1 hd hx
state_before: X : Type u_1
inst✝² : LinearOrder X
inst✝¹ : TopologicalSpace X
inst✝ : OrderTopology X
a b c : X
s t : Set X
hd : Disjoint s (closure t)
x : X
hx : x ∈ s
⊢ x ∈ (closure t)ᶜ
state_after: no goals
Theorem: Finite.card_le_one_iff_subsingleton
File: Mathlib/Data/Finite/Card.lean

tactic: haveI := Fintype.ofFinite α
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
⊢ Nat.card α ≤ 1 ↔ Subsingleton α
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
this : Fintype α
⊢ Nat.card α ≤ 1 ↔ Subsingleton α

tactic: simp only [Nat.card_eq_fintype_card, Fintype.card_le_one_iff_subsingleton]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
this : Fintype α
⊢ Nat.card α ≤ 1 ↔ Subsingleton α
state_after: no goals
Theorem: Submodule.range_fst
File: Mathlib/LinearAlgebra/Prod.lean

tactic: rw [range_eq_map, ← prod_top, prod_map_fst]
state_before: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
M₅ : Type u_1
M₆ : Type u_2
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid M₂
inst✝¹ : Module R M
inst✝ : Module R M₂
p : Submodule R M
q : Submodule R M₂
⊢ range (fst R M M₂) = ⊤
state_after: no goals
Theorem: unitary.map_mem
File: Mathlib/Algebra/Star/Unitary.lean

tactic: rw [unitary.mem_iff] at hr
state_before: R✝ : Type u_1
F : Type u_2
R : Type u_3
S : Type u_4
inst✝⁶ : Monoid R
inst✝⁵ : StarMul R
inst✝⁴ : Monoid S
inst✝³ : StarMul S
inst✝² : FunLike F R S
inst✝¹ : StarHomClass F R S
inst✝ : MonoidHomClass F R S
f : F
r : R
hr : r ∈ unitary R
⊢ f r ∈ unitary S
state_after: R✝ : Type u_1
F : Type u_2
R : Type u_3
S : Type u_4
inst✝⁶ : Monoid R
inst✝⁵ : StarMul R
inst✝⁴ : Monoid S
inst✝³ : StarMul S
inst✝² : FunLike F R S
inst✝¹ : StarHomClass F R S
inst✝ : MonoidHomClass F R S
f : F
r : R
hr : star r * r = 1 ∧ r * star r = 1
⊢ f r ∈ unitary S

tactic: simpa [map_star, map_mul] using And.intro congr(f $(hr.1)) congr(f $(hr.2))
state_before: R✝ : Type u_1
F : Type u_2
R : Type u_3
S : Type u_4
inst✝⁶ : Monoid R
inst✝⁵ : StarMul R
inst✝⁴ : Monoid S
inst✝³ : StarMul S
inst✝² : FunLike F R S
inst✝¹ : StarHomClass F R S
inst✝ : MonoidHomClass F R S
f : F
r : R
hr : star r * r = 1 ∧ r * star r = 1
⊢ f r ∈ unitary S
state_after: no goals
Theorem: Nat.bit1_le_bit0_iff
File: Mathlib/Data/Nat/Bits.lean

tactic: rwa [m.bit1_eq_succ_bit0, Nat.succ_le_iff, Nat.bit0_lt_bit0] at h
state_before: m n : ℕ
h : bit1 m ≤ bit0 n
⊢ m < n
state_after: no goals
Theorem: ZFSet.mem_pair
File: Mathlib/SetTheory/ZFC/Basic.lean

tactic: simp
state_before: x y z : ZFSet
⊢ x ∈ {y, z} ↔ x = y ∨ x = z
state_after: no goals
Theorem: CategoryTheory.Limits.kernelSubobject_comp_le
File: Mathlib/CategoryTheory/Subobject/Limits.lean

tactic: simp
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
X Y Z✝ : C
inst✝³ : HasZeroMorphisms C
f✝ : X ⟶ Y
inst✝² : HasKernel f✝
f : X ⟶ Y
inst✝¹ : HasKernel f
Z : C
h : Y ⟶ Z
inst✝ : HasKernel (f ≫ h)
⊢ (kernelSubobject f).arrow ≫ f ≫ h = 0
state_after: no goals
Theorem: Fin.insertNth_extractNth
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: simp [Fin.extractNth, Fin.insertNth_eq_iff]
state_before: m n : ℕ
α : Fin (n + 1) → Type u
β : Type v
inst✝ : (i : Fin (n + 1)) → Preorder (α i)
i : Fin (n + 1)
f : (j : Fin (n + 1)) → α j
⊢ i.insertNth (i.extractNth f).1 (i.extractNth f).2 = f
state_after: no goals
Theorem: List.length_splitWrtCompositionAux
File: Mathlib/Combinatorics/Enumerative/Composition.lean

tactic: induction ns generalizing l
state_before: n : ℕ
α : Type u_1
l : List α
ns : List ℕ
⊢ (l.splitWrtCompositionAux ns).length = ns.length
state_after: case nil
n : ℕ
α : Type u_1
l : List α
⊢ (l.splitWrtCompositionAux []).length = [].length

case cons
n : ℕ
α : Type u_1
head✝ : ℕ
tail✝ : List ℕ
tail_ih✝ : ∀ (l : List α), (l.splitWrtCompositionAux tail✝).length = tail✝.length
l : List α
⊢ (l.splitWrtCompositionAux (head✝ :: tail✝)).length = (head✝ :: tail✝).length

tactic: simp [splitWrtCompositionAux, *]
state_before: case nil
n : ℕ
α : Type u_1
l : List α
⊢ (l.splitWrtCompositionAux []).length = [].length
state_after: no goals

tactic: simp [*]
state_before: case cons
n : ℕ
α : Type u_1
head✝ : ℕ
tail✝ : List ℕ
tail_ih✝ : ∀ (l : List α), (l.splitWrtCompositionAux tail✝).length = tail✝.length
l : List α
⊢ (l.splitWrtCompositionAux (head✝ :: tail✝)).length = (head✝ :: tail✝).length
state_after: no goals
Theorem: CircleDeg1Lift.translationNumber_translate
File: Mathlib/Dynamics/Circle/RotationNumber/TranslationNumber.lean

tactic: simp only [translate_iterate, translate_apply, add_zero, Nat.cast_succ,
  mul_div_cancel_left₀ (M₀ := ℝ) _ (Nat.cast_add_one_ne_zero _), tendsto_const_nhds]
state_before: f g : CircleDeg1Lift
x : ℝ
⊢ Tendsto (fun n => (⇑↑(translate (Multiplicative.ofAdd x)))^[n + 1] 0 / (↑n + 1)) atTop (𝓝 x)
state_after: no goals
Theorem: Cardinal.lift_lt_aleph0
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [← lift_aleph0.{v, u}, lift_lt]
state_before: α β : Type u
c : Cardinal.{u}
⊢ lift.{v, u} c < ℵ₀ ↔ c < ℵ₀
state_after: no goals
Theorem: Polynomial.Gal.restrictComp_surjective
File: Mathlib/FieldTheory/PolynomialGaloisGroup.lean

tactic: haveI : Fact (Splits (algebraMap F (SplittingField (comp p q))) p) :=
  ⟨splits_in_splittingField_of_comp p q hq⟩
state_before: F : Type u_1
inst✝² : Field F
p q : F[X]
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
hq : q.natDegree ≠ 0
⊢ Function.Surjective ⇑(restrictComp p q hq)
state_after: F : Type u_1
inst✝² : Field F
p q : F[X]
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
hq : q.natDegree ≠ 0
this : Fact (Splits (algebraMap F (p.comp q).SplittingField) p)
⊢ Function.Surjective ⇑(restrictComp p q hq)

tactic: rw [restrictComp]
state_before: F : Type u_1
inst✝² : Field F
p q : F[X]
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
hq : q.natDegree ≠ 0
this : Fact (Splits (algebraMap F (p.comp q).SplittingField) p)
⊢ Function.Surjective ⇑(restrictComp p q hq)
state_after: F : Type u_1
inst✝² : Field F
p q : F[X]
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
hq : q.natDegree ≠ 0
this : Fact (Splits (algebraMap F (p.comp q).SplittingField) p)
⊢ Function.Surjective
    ⇑(let h := ⋯;
      restrict p (p.comp q).SplittingField)

tactic: exact restrict_surjective _ _
state_before: F : Type u_1
inst✝² : Field F
p q : F[X]
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
hq : q.natDegree ≠ 0
this : Fact (Splits (algebraMap F (p.comp q).SplittingField) p)
⊢ Function.Surjective
    ⇑(let h := ⋯;
      restrict p (p.comp q).SplittingField)
state_after: no goals
Theorem: Complex.abs_im_le_abs
File: Mathlib/Data/Complex/Abs.lean

tactic: rw [normSq_apply, ← sq, ← sq]
state_before: z : ℂ
⊢ z.im ^ 2 ≤ normSq z
state_after: z : ℂ
⊢ z.im ^ 2 ≤ z.re ^ 2 + z.im ^ 2

tactic: exact le_add_of_nonneg_left (sq_nonneg _)
state_before: z : ℂ
⊢ z.im ^ 2 ≤ z.re ^ 2 + z.im ^ 2
state_after: no goals
Theorem: NoBotOrder.to_noMinOrder
File: Mathlib/Order/Max.lean

tactic: simpa [not_le] using exists_not_ge a
state_before: α✝ : Type u_1
β : Type u_2
α : Type u_3
inst✝¹ : LinearOrder α
inst✝ : NoBotOrder α
a : α
⊢ ∃ b, b < a
state_after: no goals
Theorem: Real.logb_lt_logb_iff_of_base_lt_one
File: Mathlib/Analysis/SpecialFunctions/Log/Base.lean

tactic: rw [logb, logb, div_lt_div_right_of_neg (log_neg b_pos b_lt_one)]
state_before: b x y : ℝ
b_pos : 0 < b
b_lt_one : b < 1
hx : 0 < x
hy : 0 < y
⊢ logb b x < logb b y ↔ y < x
state_after: b x y : ℝ
b_pos : 0 < b
b_lt_one : b < 1
hx : 0 < x
hy : 0 < y
⊢ log y < log x ↔ y < x

tactic: exact log_lt_log_iff hy hx
state_before: b x y : ℝ
b_pos : 0 < b
b_lt_one : b < 1
hx : 0 < x
hy : 0 < y
⊢ log y < log x ↔ y < x
state_after: no goals
Theorem: antivary_inv_right
File: Mathlib/Algebra/Order/Monovary.lean

tactic: simpa [Monovary, Antivary] using forall_swap
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : OrderedCommGroup α
inst✝ : OrderedCommGroup β
s : Set ι
f f₁ f₂ : ι → α
g g₁ g₂ : ι → β
⊢ Antivary f g⁻¹ ↔ Monovary f g
state_after: no goals
Theorem: MonoidAlgebra.single_one_mul_apply
File: Mathlib/Algebra/MonoidAlgebra/Basic.lean

tactic: rw [one_mul]
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝¹ : Semiring k
inst✝ : MulOneClass G
f : MonoidAlgebra k G
r : k
x a : G
⊢ 1 * a = x ↔ a = x
state_after: no goals
Theorem: LocalizedModule.algebraMap_mk'
File: Mathlib/Algebra/Module/LocalizedModule.lean

tactic: rw [Algebra.algebraMap_eq_smul_one]
state_before: R : Type u
inst✝⁷ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
T : Type u_1
inst✝⁴ : CommSemiring T
inst✝³ : Algebra R T
inst✝² : IsLocalization S T
A : Type u_2
inst✝¹ : Semiring A
inst✝ : Algebra R A
a : R
s : ↥S
⊢ (algebraMap T (LocalizedModule S A)) (IsLocalization.mk' T a s) = mk ((algebraMap R A) a) s
state_after: R : Type u
inst✝⁷ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
T : Type u_1
inst✝⁴ : CommSemiring T
inst✝³ : Algebra R T
inst✝² : IsLocalization S T
A : Type u_2
inst✝¹ : Semiring A
inst✝ : Algebra R A
a : R
s : ↥S
⊢ IsLocalization.mk' T a s • 1 = mk ((algebraMap R A) a) s

tactic: change _ • mk _ _ = _
state_before: R : Type u
inst✝⁷ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
T : Type u_1
inst✝⁴ : CommSemiring T
inst✝³ : Algebra R T
inst✝² : IsLocalization S T
A : Type u_2
inst✝¹ : Semiring A
inst✝ : Algebra R A
a : R
s : ↥S
⊢ IsLocalization.mk' T a s • 1 = mk ((algebraMap R A) a) s
state_after: R : Type u
inst✝⁷ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
T : Type u_1
inst✝⁴ : CommSemiring T
inst✝³ : Algebra R T
inst✝² : IsLocalization S T
A : Type u_2
inst✝¹ : Semiring A
inst✝ : Algebra R A
a : R
s : ↥S
⊢ IsLocalization.mk' T a s • mk 1 1 = mk ((algebraMap R A) a) s

tactic: rw [mk'_smul_mk, Algebra.algebraMap_eq_smul_one, mul_one]
state_before: R : Type u
inst✝⁷ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
T : Type u_1
inst✝⁴ : CommSemiring T
inst✝³ : Algebra R T
inst✝² : IsLocalization S T
A : Type u_2
inst✝¹ : Semiring A
inst✝ : Algebra R A
a : R
s : ↥S
⊢ IsLocalization.mk' T a s • mk 1 1 = mk ((algebraMap R A) a) s
state_after: no goals
Theorem: Matrix.star_dotProduct
File: Mathlib/Data/Matrix/Basic.lean

tactic: simp [dotProduct]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : NonUnitalSemiring α
inst✝ : StarRing α
v w : m → α
⊢ star v ⬝ᵥ w = star (star w ⬝ᵥ v)
state_after: no goals
Theorem: AlgebraicGeometry.MorphismProperty.topologically_iso_le
File: Mathlib/AlgebraicGeometry/Morphisms/Constructors.lean

tactic: intro X Y e (he : IsIso e)
state_before: P : {α β : Type u} → [inst : TopologicalSpace α] → [inst : TopologicalSpace β] → (α → β) → Prop
hP : ∀ {α β : Type u} [inst : TopologicalSpace α] [inst_1 : TopologicalSpace β] (f : α ≃ₜ β), P ⇑f
⊢ MorphismProperty.isomorphisms Scheme ≤ topologically fun {α β} [TopologicalSpace α] [TopologicalSpace β] => P
state_after: P : {α β : Type u} → [inst : TopologicalSpace α] → [inst : TopologicalSpace β] → (α → β) → Prop
hP : ∀ {α β : Type u} [inst : TopologicalSpace α] [inst_1 : TopologicalSpace β] (f : α ≃ₜ β), P ⇑f
X Y : Scheme
e : X ⟶ Y
he : IsIso e
⊢ topologically (fun {α β} [TopologicalSpace α] [TopologicalSpace β] => P) e

tactic: have : IsIso e := he
state_before: P : {α β : Type u} → [inst : TopologicalSpace α] → [inst : TopologicalSpace β] → (α → β) → Prop
hP : ∀ {α β : Type u} [inst : TopologicalSpace α] [inst_1 : TopologicalSpace β] (f : α ≃ₜ β), P ⇑f
X Y : Scheme
e : X ⟶ Y
he : IsIso e
⊢ topologically (fun {α β} [TopologicalSpace α] [TopologicalSpace β] => P) e
state_after: P : {α β : Type u} → [inst : TopologicalSpace α] → [inst : TopologicalSpace β] → (α → β) → Prop
hP : ∀ {α β : Type u} [inst : TopologicalSpace α] [inst_1 : TopologicalSpace β] (f : α ≃ₜ β), P ⇑f
X Y : Scheme
e : X ⟶ Y
he this : IsIso e
⊢ topologically (fun {α β} [TopologicalSpace α] [TopologicalSpace β] => P) e

tactic: exact hP (TopCat.homeoOfIso (asIso e.val.base))
state_before: P : {α β : Type u} → [inst : TopologicalSpace α] → [inst : TopologicalSpace β] → (α → β) → Prop
hP : ∀ {α β : Type u} [inst : TopologicalSpace α] [inst_1 : TopologicalSpace β] (f : α ≃ₜ β), P ⇑f
X Y : Scheme
e : X ⟶ Y
he this : IsIso e
⊢ topologically (fun {α β} [TopologicalSpace α] [TopologicalSpace β] => P) e
state_after: no goals
Theorem: nhdsWithin_univ
File: Mathlib/Topology/ContinuousOn.lean

tactic: rw [nhdsWithin, principal_univ, inf_top_eq]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : TopologicalSpace α
a : α
⊢ 𝓝[univ] a = 𝓝 a
state_after: no goals
Theorem: Set.toFinset_nonempty
File: Mathlib/Data/Fintype/Basic.lean

tactic: rw [← Finset.coe_nonempty, coe_toFinset]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s✝ t s : Set α
inst✝ : Fintype ↑s
⊢ s.toFinset.Nonempty ↔ s.Nonempty
state_after: no goals
Theorem: Nat.testBit_two_pow
File: Mathlib/Data/Nat/Bitwise.lean

tactic: by_cases h : n = m
state_before: n m : ℕ
⊢ ((2 ^ n).testBit m = true) = (n = m)
state_after: case pos
n m : ℕ
h : n = m
⊢ ((2 ^ n).testBit m = true) = (n = m)

case neg
n m : ℕ
h : ¬n = m
⊢ ((2 ^ n).testBit m = true) = (n = m)

tactic: cases h
state_before: case pos
n m : ℕ
h : n = m
⊢ ((2 ^ n).testBit m = true) = (n = m)
state_after: case pos.refl
n : ℕ
⊢ ((2 ^ n).testBit n = true) = (n = n)

tactic: simp
state_before: case pos.refl
n : ℕ
⊢ ((2 ^ n).testBit n = true) = (n = n)
state_after: no goals

tactic: rw [testBit_two_pow_of_ne h]
state_before: case neg
n m : ℕ
h : ¬n = m
⊢ ((2 ^ n).testBit m = true) = (n = m)
state_after: case neg
n m : ℕ
h : ¬n = m
⊢ (false = true) = (n = m)

tactic: simp [h]
state_before: case neg
n m : ℕ
h : ¬n = m
⊢ (false = true) = (n = m)
state_after: no goals
Theorem: ArithmeticFunction.moebius_apply_prime_pow
File: Mathlib/NumberTheory/ArithmeticFunction.lean

tactic: split_ifs with h
state_before: R : Type u_1
p k : ℕ
hp : Nat.Prime p
hk : k ≠ 0
⊢ μ (p ^ k) = if k = 1 then -1 else 0
state_after: case pos
R : Type u_1
p k : ℕ
hp : Nat.Prime p
hk : k ≠ 0
h : k = 1
⊢ μ (p ^ k) = -1

case neg
R : Type u_1
p k : ℕ
hp : Nat.Prime p
hk : k ≠ 0
h : ¬k = 1
⊢ μ (p ^ k) = 0

tactic: rw [moebius_eq_zero_of_not_squarefree]
state_before: case neg
R : Type u_1
p k : ℕ
hp : Nat.Prime p
hk : k ≠ 0
h : ¬k = 1
⊢ μ (p ^ k) = 0
state_after: case neg
R : Type u_1
p k : ℕ
hp : Nat.Prime p
hk : k ≠ 0
h : ¬k = 1
⊢ ¬Squarefree (p ^ k)

tactic: rw [squarefree_pow_iff hp.ne_one hk, not_and_or]
state_before: case neg
R : Type u_1
p k : ℕ
hp : Nat.Prime p
hk : k ≠ 0
h : ¬k = 1
⊢ ¬Squarefree (p ^ k)
state_after: case neg
R : Type u_1
p k : ℕ
hp : Nat.Prime p
hk : k ≠ 0
h : ¬k = 1
⊢ ¬Squarefree p ∨ ¬k = 1

tactic: exact Or.inr h
state_before: case neg
R : Type u_1
p k : ℕ
hp : Nat.Prime p
hk : k ≠ 0
h : ¬k = 1
⊢ ¬Squarefree p ∨ ¬k = 1
state_after: no goals

tactic: rw [h, pow_one, moebius_apply_prime hp]
state_before: case pos
R : Type u_1
p k : ℕ
hp : Nat.Prime p
hk : k ≠ 0
h : k = 1
⊢ μ (p ^ k) = -1
state_after: no goals
Theorem: TruncatedWittVector.truncateFun_out
File: Mathlib/RingTheory/WittVector/Truncated.lean

tactic: simp only [WittVector.truncateFun, coeff_out, mk_coeff]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
x : TruncatedWittVector p n R
⊢ WittVector.truncateFun n x.out = x
state_after: no goals
Theorem: ZMod.frobenius_zmod
File: Mathlib/FieldTheory/Finite/Basic.lean

tactic: ext a
state_before: K : Type u_1
R : Type u_2
p : ℕ
inst✝ : Fact (Nat.Prime p)
⊢ frobenius (ZMod p) p = RingHom.id (ZMod p)
state_after: case a
K : Type u_1
R : Type u_2
p : ℕ
inst✝ : Fact (Nat.Prime p)
a : ZMod p
⊢ (frobenius (ZMod p) p) a = (RingHom.id (ZMod p)) a

tactic: rw [frobenius_def, ZMod.pow_card, RingHom.id_apply]
state_before: case a
K : Type u_1
R : Type u_2
p : ℕ
inst✝ : Fact (Nat.Prime p)
a : ZMod p
⊢ (frobenius (ZMod p) p) a = (RingHom.id (ZMod p)) a
state_after: no goals