tasksource/leandojo huggingface dataset:
Theorem: FreeAlgebra.ι_injective
File: Mathlib/Algebra/FreeAlgebra.lean

tactic: classical exact fun hxy : x ≠ y ↦
    let f : FreeAlgebra R X →ₐ[R] R := lift R fun z ↦ if x = z then (1 : R) else 0
    have hfx1 : f (ι R x) = 1 := (lift_ι_apply _ _).trans <| if_pos rfl
    have hfy1 : f (ι R y) = 1 := hoxy ▸ hfx1
    have hfy0 : f (ι R y) = 0 := (lift_ι_apply _ _).trans <| if_neg hxy
    one_ne_zero <| hfy1.symm.trans hfy0
state_before: R : Type u_1
inst✝³ : CommSemiring R
X : Type u_2
A : Type ?u.688668
inst✝² : Semiring A
inst✝¹ : Algebra R A
inst✝ : Nontrivial R
x y : X
hoxy : ι R x = ι R y
⊢ ¬x = y → False

tactic: exact fun hxy : x ≠ y ↦
let f : FreeAlgebra R X →ₐ[R] R := lift R fun z ↦ if x = z then (1 : R) else 0
have hfx1 : f (ι R x) = 1 := (lift_ι_apply _ _).trans <| if_pos rfl
have hfy1 : f (ι R y) = 1 := hoxy ▸ hfx1
have hfy0 : f (ι R y) = 0 := (lift_ι_apply _ _).trans <| if_neg hxy
one_ne_zero <| hfy1.symm.trans hfy0
state_before: R : Type u_1
inst✝³ : CommSemiring R
X : Type u_2
A : Type ?u.688668
inst✝² : Semiring A
inst✝¹ : Algebra R A
inst✝ : Nontrivial R
x y : X
hoxy : ι R x = ι R y
⊢ ¬x = y → False
Theorem: MulAction.card_orbit_mul_card_stabilizer_eq_card_group
File: Mathlib/GroupTheory/GroupAction/Quotient.lean

tactic: rw [← Fintype.card_prod, Fintype.card_congr (orbitProdStabilizerEquivGroup α b)]
state_before: α : Type u
β : Type v
γ : Type w
inst✝⁵ inst✝⁴ : Group α
inst✝³ : MulAction α β
x b : β
inst✝² : Fintype α
inst✝¹ : Fintype ↑(orbit α b)
inst✝ : Fintype { x // x ∈ stabilizer α b }
⊢ Fintype.card ↑(orbit α b) * Fintype.card { x // x ∈ stabilizer α b } = Fintype.card α
Theorem: Ultrafilter.comap_comap
File: Mathlib/Order/Filter/Ultrafilter.lean

tactic: rw [range_comp]
state_before: α : Type u
β : Type v
γ : Type ?u.19128
f✝ g : Ultrafilter α
s t : Set α
p q : α → Prop
f : Ultrafilter γ
m : α → β
n : β → γ
inj₀ : Injective n
large₀ : range n ∈ f
inj₁ : Injective m
large₁ : range m ∈ comap f inj₀ large₀
inj₂ : optParam (Injective (n ∘ m)) (_ : Injective (n ∘ m))
⊢ range (n ∘ m) ∈ f

tactic: exact image_mem_of_mem_comap large₀ large₁
state_before: α : Type u
β : Type v
γ : Type ?u.19128
f✝ g : Ultrafilter α
s t : Set α
p q : α → Prop
f : Ultrafilter γ
m : α → β
n : β → γ
inj₀ : Injective n
large₀ : range n ∈ f
inj₁ : Injective m
large₁ : range m ∈ comap f inj₀ large₀
inj₂ : optParam (Injective (n ∘ m)) (_ : Injective (n ∘ m))
⊢ n '' range m ∈ f
Theorem: Set.Nontrivial.infsep_of_fintype
File: Mathlib/Topology/MetricSpace/Infsep.lean

tactic: simpa
state_before: α : Type ?u.68548
β : Type ?u.68551
inst✝² : PseudoMetricSpace α
x y z : α
s t : Set α
inst✝¹ : DecidableEq α
inst✝ : Fintype ↑s
hs : Set.Nontrivial s
⊢ Finset.Nonempty (toFinset (offDiag s))

tactic: classical rw [Set.infsep_of_fintype, dif_pos hs]
state_before: α : Type u_1
β : Type ?u.68551
inst✝² : PseudoMetricSpace α
x y z : α
s t : Set α
inst✝¹ : DecidableEq α
inst✝ : Fintype ↑s
hs : Set.Nontrivial s
⊢ infsep s = Finset.inf' (toFinset (offDiag s)) (_ : Finset.Nonempty (toFinset (offDiag s))) (uncurry dist)

tactic: rw [Set.infsep_of_fintype, dif_pos hs]
state_before: α : Type u_1
β : Type ?u.68551
inst✝² : PseudoMetricSpace α
x y z : α
s t : Set α
inst✝¹ : DecidableEq α
inst✝ : Fintype ↑s
hs : Set.Nontrivial s
⊢ infsep s = Finset.inf' (toFinset (offDiag s)) (_ : Finset.Nonempty (toFinset (offDiag s))) (uncurry dist)
Theorem: FinVec.sum_eq
File: Mathlib/Data/Fin/Tuple/Reflection.lean

tactic: rw [Fin.sum_univ_castSucc, sum, sum_eq]
state_before: m n✝ : ℕ
α : Type u_1
β : Type ?u.11237
γ : Type ?u.11240
inst✝ : AddCommMonoid α
n : ℕ
a : Fin (n + 2) → α
⊢ sum a = ∑ i : Fin (n + 2), a i
Theorem: Complex.ofReal_cpow_of_nonpos
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rcases hx.eq_or_lt with (rfl | hlt)
state_before: x : ℝ
hx : x ≤ 0
y : ℂ
⊢ ↑x ^ y = (-↑x) ^ y * exp (↑π * I * y)

tactic: have hne : (x : ℂ) ≠ 0 := ofReal_ne_zero.mpr hlt.ne
state_before: case inr
x : ℝ
hx : x ≤ 0
y : ℂ
hlt : x < 0
⊢ ↑x ^ y = (-↑x) ^ y * exp (↑π * I * y)

tactic: rw [cpow_def_of_ne_zero hne, cpow_def_of_ne_zero (neg_ne_zero.2 hne), ← exp_add, ← add_mul, log,
  log, abs.map_neg, arg_ofReal_of_neg hlt, ← ofReal_neg,
  arg_ofReal_of_nonneg (neg_nonneg.2 hx), ofReal_zero, MulZeroClass.zero_mul, add_zero]
state_before: case inr
x : ℝ
hx : x ≤ 0
y : ℂ
hlt : x < 0
hne : ↑x ≠ 0
⊢ ↑x ^ y = (-↑x) ^ y * exp (↑π * I * y)

tactic: rcases eq_or_ne y 0 with (rfl | hy) <;> simp [*]
state_before: case inl
y : ℂ
hx : 0 ≤ 0
⊢ ↑0 ^ y = (-↑0) ^ y * exp (↑π * I * y)
Theorem: Asymptotics.IsLittleO.tendsto_div_nhds_zero
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: calc
  (fun x => f x / g x) =o[l] fun x => g x / g x := by
    simpa only [div_eq_mul_inv] using h.mul_isBigO (isBigO_refl _ _)
  _ =O[l] fun _x => (1 : 𝕜) := isBigO_of_le _ fun x => by simp [div_self_le_one]
state_before: α : Type u_1
β : Type ?u.598952
E : Type ?u.598955
F : Type ?u.598958
G : Type ?u.598961
E' : Type ?u.598964
F' : Type ?u.598967
G' : Type ?u.598970
E'' : Type ?u.598973
F'' : Type ?u.598976
G'' : Type ?u.598979
R : Type ?u.598982
R' : Type ?u.598985
𝕜 : Type u_2
𝕜' : Type ?u.598991
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c c' c₁ c₂ : ℝ
f✝ : α → E
g✝ : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
f g : α → 𝕜
h : f =o[l] g
⊢ (fun x => f x / g x) =o[l] fun _x => 1

tactic: simpa only [div_eq_mul_inv] using h.mul_isBigO (isBigO_refl _ _)
state_before: α : Type u_1
β : Type ?u.598952
E : Type ?u.598955
F : Type ?u.598958
G : Type ?u.598961
E' : Type ?u.598964
F' : Type ?u.598967
G' : Type ?u.598970
E'' : Type ?u.598973
F'' : Type ?u.598976
G'' : Type ?u.598979
R : Type ?u.598982
R' : Type ?u.598985
𝕜 : Type u_2
𝕜' : Type ?u.598991
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c c' c₁ c₂ : ℝ
f✝ : α → E
g✝ : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
f g : α → 𝕜
h : f =o[l] g
⊢ (fun x => f x / g x) =o[l] fun x => g x / g x

tactic: simp [div_self_le_one]
state_before: α : Type u_1
β : Type ?u.598952
E : Type ?u.598955
F : Type ?u.598958
G : Type ?u.598961
E' : Type ?u.598964
F' : Type ?u.598967
G' : Type ?u.598970
E'' : Type ?u.598973
F'' : Type ?u.598976
G'' : Type ?u.598979
R : Type ?u.598982
R' : Type ?u.598985
𝕜 : Type u_2
𝕜' : Type ?u.598991
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c c' c₁ c₂ : ℝ
f✝ : α → E
g✝ : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
f g : α → 𝕜
h : f =o[l] g
x : α
⊢ ‖g x / g x‖ ≤ ‖1‖
Theorem: Sylow.characteristic_of_normal
File: Mathlib/GroupTheory/Sylow.lean

tactic: haveI := Sylow.subsingleton_of_normal P h
state_before: G : Type u
α : Type v
β : Type w
inst✝² : Group G
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : Finite (Sylow p G)
P : Sylow p G
h : Normal ↑P
⊢ Characteristic ↑P

tactic: rw [characteristic_iff_map_eq]
state_before: G : Type u
α : Type v
β : Type w
inst✝² : Group G
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : Finite (Sylow p G)
P : Sylow p G
h : Normal ↑P
this : Subsingleton (Sylow p G)
⊢ Characteristic ↑P

tactic: intro Φ
state_before: G : Type u
α : Type v
β : Type w
inst✝² : Group G
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : Finite (Sylow p G)
P : Sylow p G
h : Normal ↑P
this : Subsingleton (Sylow p G)
⊢ ∀ (ϕ : G ≃* G), Subgroup.map (MulEquiv.toMonoidHom ϕ) ↑P = ↑P

tactic: show (Φ • P).toSubgroup = P.toSubgroup
state_before: G : Type u
α : Type v
β : Type w
inst✝² : Group G
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : Finite (Sylow p G)
P : Sylow p G
h : Normal ↑P
this : Subsingleton (Sylow p G)
Φ : G ≃* G
⊢ Subgroup.map (MulEquiv.toMonoidHom Φ) ↑P = ↑P

tactic: congr
state_before: G : Type u
α : Type v
β : Type w
inst✝² : Group G
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : Finite (Sylow p G)
P : Sylow p G
h : Normal ↑P
this : Subsingleton (Sylow p G)
Φ : G ≃* G
⊢ ↑(Φ • P) = ↑P

tactic: simp
state_before: case e_self
G : Type u
α : Type v
β : Type w
inst✝² : Group G
p : ℕ
inst✝¹ : Fact (Nat.Prime p)
inst✝ : Finite (Sylow p G)
P : Sylow p G
h : Normal ↑P
this : Subsingleton (Sylow p G)
Φ : G ≃* G
⊢ Φ • P = P
Theorem: Ordinal.add_le_add_iff_right
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simp
state_before: α : Type ?u.75944
β : Type ?u.75947
γ : Type ?u.75950
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
⊢ a + ↑0 ≤ b + ↑0 ↔ a ≤ b

tactic: simp only [nat_cast_succ, add_succ, add_succ, succ_le_succ_iff, add_le_add_iff_right]
state_before: α : Type ?u.75944
β : Type ?u.75947
γ : Type ?u.75950
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
n : ℕ
⊢ a + ↑(n + 1) ≤ b + ↑(n + 1) ↔ a ≤ b
Theorem: Option.mem_pmem
File: Mathlib/Data/Option/Basic.lean

tactic: rw [mem_def] at ha ⊢
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.7041
δ : Type ?u.7044
p : α → Prop
f : (a : α) → p a → β
x : Option α
a : α
h : ∀ (a : α), a ∈ x → p a
ha : a ∈ x
⊢ f a (_ : p a) ∈ pmap f x h

tactic: subst ha
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.7041
δ : Type ?u.7044
p : α → Prop
f : (a : α) → p a → β
x : Option α
a : α
h : ∀ (a : α), a ∈ x → p a
ha✝ : a ∈ x
ha : x = some a
⊢ pmap f x h = some (f a (_ : p a))

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.7041
δ : Type ?u.7044
p : α → Prop
f : (a : α) → p a → β
a : α
h : ∀ (a_1 : α), a_1 ∈ some a → p a_1
ha : a ∈ some a
⊢ pmap f (some a) h = some (f a (_ : p a))
Theorem: MeasureTheory.Measure.restrict_iUnion_apply_ae
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: simp only [restrict_apply, ht, inter_iUnion]
state_before: α : Type u_2
β : Type ?u.302552
γ : Type ?u.302555
δ : Type ?u.302558
ι : Type u_1
R : Type ?u.302564
R' : Type ?u.302567
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
inst✝ : Countable ι
s : ι → Set α
hd : Pairwise (AEDisjoint μ on s)
hm : ∀ (i : ι), NullMeasurableSet (s i)
t : Set α
ht : MeasurableSet t
⊢ ↑↑(restrict μ (⋃ (i : ι), s i)) t = ∑' (i : ι), ↑↑(restrict μ (s i)) t

tactic: exact
  measure_iUnion₀ (hd.mono fun i j h => h.mono (inter_subset_right _ _) (inter_subset_right _ _))
    fun i => ht.nullMeasurableSet.inter (hm i)
state_before: α : Type u_2
β : Type ?u.302552
γ : Type ?u.302555
δ : Type ?u.302558
ι : Type u_1
R : Type ?u.302564
R' : Type ?u.302567
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
inst✝ : Countable ι
s : ι → Set α
hd : Pairwise (AEDisjoint μ on s)
hm : ∀ (i : ι), NullMeasurableSet (s i)
t : Set α
ht : MeasurableSet t
⊢ ↑↑μ (⋃ (i : ι), t ∩ s i) = ∑' (i : ι), ↑↑μ (t ∩ s i)
Theorem: List.takeD_succ
File: Std/Data/List/Basic.lean

tactic: simp [takeD]
state_before: α : Type u_1
n : Nat
l : List α
a : α
⊢ takeD (n + 1) l a = Option.getD (head? l) a :: takeD n (tail l) a
Theorem: Nat.SOM.Expr.toPoly_denote
File: src/lean/Init/Data/Nat/SOM.lean

tactic: induction e with
| num k =>
  simp!; by_cases h : k == 0 <;> simp! [*]
  simp [eq_of_beq h]
| var v => simp!
| add a b => simp! [Poly.add_denote, *]
| mul a b => simp! [Poly.mul_denote, *]
state_before: ctx : Context
e : Expr
⊢ Poly.denote ctx (toPoly e) = denote ctx e

tactic: simp!
state_before: case num
ctx : Context
k : Nat
⊢ Poly.denote ctx (toPoly (num k)) = denote ctx (num k)

tactic: by_cases h : k == 0 <;> simp! [*]
state_before: case num
ctx : Context
k : Nat
⊢ Poly.denote ctx (bif k == 0 then [] else [(k, [])]) = k

tactic: simp [eq_of_beq h]
state_before: case num.inl
ctx : Context
k : Nat
h : (k == 0) = true
⊢ 0 = k

tactic: simp!
state_before: case var
ctx : Context
v : Var
⊢ Poly.denote ctx (toPoly (var v)) = denote ctx (var v)

tactic: simp! [Poly.add_denote, *]
state_before: case add
ctx : Context
a b : Expr
a_ih✝ : Poly.denote ctx (toPoly a) = denote ctx a
b_ih✝ : Poly.denote ctx (toPoly b) = denote ctx b
⊢ Poly.denote ctx (toPoly (add a b)) = denote ctx (add a b)

tactic: simp! [Poly.mul_denote, *]
state_before: case mul
ctx : Context
a b : Expr
a_ih✝ : Poly.denote ctx (toPoly a) = denote ctx a
b_ih✝ : Poly.denote ctx (toPoly b) = denote ctx b
⊢ Poly.denote ctx (toPoly (mul a b)) = denote ctx (mul a b)
Theorem: Set.insert_subset
File: Mathlib/Data/Set/Basic.lean

tactic: simp only [subset_def, mem_insert_iff, or_imp, forall_and, forall_eq]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s s₁ s₂ t t₁ t₂ u : Set α
⊢ insert a s ⊆ t ↔ a ∈ t ∧ s ⊆ t
Theorem: Turing.Tape.map_mk'
File: Mathlib/Computability/TuringMachine.lean

tactic: simp only [Tape.mk', Tape.map, ListBlank.head_map, eq_self_iff_true, and_self_iff,
  ListBlank.tail_map]
state_before: Γ : Type u_1
Γ' : Type u_2
inst✝¹ : Inhabited Γ
inst✝ : Inhabited Γ'
f : PointedMap Γ Γ'
L R : ListBlank Γ
⊢ map f (mk' L R) = mk' (ListBlank.map f L) (ListBlank.map f R)
Theorem: Submodule.map_op_mul
File: Mathlib/Algebra/Algebra/Operations.lean

tactic: apply le_antisymm
state_before: ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
⊢ map (↑(opLinearEquiv R)) (M * N) = map (↑(opLinearEquiv R)) N * map (↑(opLinearEquiv R)) M

tactic: simp_rw [map_le_iff_le_comap]
state_before: case a
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
⊢ map (↑(opLinearEquiv R)) (M * N) ≤ map (↑(opLinearEquiv R)) N * map (↑(opLinearEquiv R)) M

tactic: refine' mul_le.2 fun m hm n hn => _
state_before: case a
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
⊢ M * N ≤ comap (↑(opLinearEquiv R)) (map (↑(opLinearEquiv R)) N * map (↑(opLinearEquiv R)) M)

tactic: rw [mem_comap, map_equiv_eq_comap_symm, map_equiv_eq_comap_symm]
state_before: case a
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m✝ n✝ m : A
hm : m ∈ M
n : A
hn : n ∈ N
⊢ m * n ∈ comap (↑(opLinearEquiv R)) (map (↑(opLinearEquiv R)) N * map (↑(opLinearEquiv R)) M)

tactic: show op n * op m ∈ _
state_before: case a
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m✝ n✝ m : A
hm : m ∈ M
n : A
hn : n ∈ N
⊢ ↑↑(opLinearEquiv R) (m * n) ∈
    comap (↑(LinearEquiv.symm (opLinearEquiv R))) N * comap (↑(LinearEquiv.symm (opLinearEquiv R))) M

tactic: exact mul_mem_mul hn hm
state_before: case a
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m✝ n✝ m : A
hm : m ∈ M
n : A
hn : n ∈ N
⊢ op n * op m ∈ comap (↑(LinearEquiv.symm (opLinearEquiv R))) N * comap (↑(LinearEquiv.symm (opLinearEquiv R))) M

tactic: refine' mul_le.2 (MulOpposite.rec' fun m hm => MulOpposite.rec' fun n hn => _)
state_before: case a
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
⊢ map (↑(opLinearEquiv R)) N * map (↑(opLinearEquiv R)) M ≤ map (↑(opLinearEquiv R)) (M * N)

tactic: rw [Submodule.mem_map_equiv] at hm hn⊢
state_before: case a
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m✝ n✝ m : A
hm : op m ∈ map (↑(opLinearEquiv R)) N
n : A
hn : op n ∈ map (↑(opLinearEquiv R)) M
⊢ op m * op n ∈ map (↑(opLinearEquiv R)) (M * N)

tactic: exact mul_mem_mul hn hm
state_before: case a
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m✝ n✝ m : A
hm : ↑(LinearEquiv.symm (opLinearEquiv R)) (op m) ∈ N
n : A
hn : ↑(LinearEquiv.symm (opLinearEquiv R)) (op n) ∈ M
⊢ ↑(LinearEquiv.symm (opLinearEquiv R)) (op m * op n) ∈ M * N
Theorem: Real.cos_eq_one_iff
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: rwa [← mul_assoc, ← @Int.cast_two ℝ, ← Int.cast_mul,
  Int.ediv_mul_cancel ((Int.dvd_iff_emod_eq_zero _ _).2 hn0)]
state_before: x : ℝ
h : cos x = 1
n : ℤ
hn : ↑n * π = x
hn0 : n % 2 = 0
⊢ ↑(n / 2) * (2 * π) = x

tactic: rw [← Int.emod_add_ediv n 2, hn1, Int.cast_add, Int.cast_one, add_mul, one_mul, add_comm,
      mul_comm (2 : ℤ), Int.cast_mul, mul_assoc, Int.cast_two] at hn
state_before: x : ℝ
h : cos x = 1
n : ℤ
hn : ↑n * π = x
hn1 : n % 2 = 1
⊢ ↑(n / 2) * (2 * π) = x

tactic: rw [← hn, cos_int_mul_two_pi_add_pi] at h
state_before: x : ℝ
h : cos x = 1
n : ℤ
hn : ↑(n / 2) * (2 * π) + π = x
hn1 : n % 2 = 1
⊢ ↑(n / 2) * (2 * π) = x

tactic: exact absurd h (by norm_num)
state_before: x : ℝ
n : ℤ
h : -1 = 1
hn : ↑(n / 2) * (2 * π) + π = x
hn1 : n % 2 = 1
⊢ ↑(n / 2) * (2 * π) = x

tactic: norm_num
state_before: x : ℝ
n : ℤ
h : -1 = 1
hn : ↑(n / 2) * (2 * π) + π = x
hn1 : n % 2 = 1
⊢ ¬-1 = 1
Theorem: Int.min_eq_right
File: Std/Data/Int/Lemmas.lean

tactic: rw [Int.min_comm a b]
state_before: a b : Int
h : b ≤ a
⊢ min a b = b

tactic: exact Int.min_eq_left h
state_before: a b : Int
h : b ≤ a
⊢ min b a = b
Theorem: MeasureTheory.integral_target_eq_integral_abs_det_fderiv_smul
File: Mathlib/MeasureTheory/Function/Jacobian.lean

tactic: have : f '' f.source = f.target := LocalEquiv.image_source_eq_target f.toLocalEquiv
state_before: E : Type u_2
F : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : FiniteDimensional ℝ E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
s : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
μ : Measure E
inst✝¹ : IsAddHaarMeasure μ
inst✝ : CompleteSpace F
f : LocalHomeomorph E E
hf' : ∀ (x : E), x ∈ f.source → HasFDerivAt (↑f) (f' x) x
g : E → F
⊢ (∫ (x : E) in f.target, g x ∂μ) = ∫ (x : E) in f.source, abs (ContinuousLinearMap.det (f' x)) • g (↑f x) ∂μ

tactic: rw [← this]
state_before: E : Type u_2
F : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : FiniteDimensional ℝ E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
s : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
μ : Measure E
inst✝¹ : IsAddHaarMeasure μ
inst✝ : CompleteSpace F
f : LocalHomeomorph E E
hf' : ∀ (x : E), x ∈ f.source → HasFDerivAt (↑f) (f' x) x
g : E → F
this : ↑f '' f.source = f.target
⊢ (∫ (x : E) in f.target, g x ∂μ) = ∫ (x : E) in f.source, abs (ContinuousLinearMap.det (f' x)) • g (↑f x) ∂μ

tactic: apply integral_image_eq_integral_abs_det_fderiv_smul μ f.open_source.measurableSet _ f.injOn
state_before: E : Type u_2
F : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : FiniteDimensional ℝ E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
s : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
μ : Measure E
inst✝¹ : IsAddHaarMeasure μ
inst✝ : CompleteSpace F
f : LocalHomeomorph E E
hf' : ∀ (x : E), x ∈ f.source → HasFDerivAt (↑f) (f' x) x
g : E → F
this : ↑f '' f.source = f.target
⊢ (∫ (x : E) in ↑f '' f.source, g x ∂μ) = ∫ (x : E) in f.source, abs (ContinuousLinearMap.det (f' x)) • g (↑f x) ∂μ

tactic: intro x hx
state_before: E : Type u_2
F : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : FiniteDimensional ℝ E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
s : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
μ : Measure E
inst✝¹ : IsAddHaarMeasure μ
inst✝ : CompleteSpace F
f : LocalHomeomorph E E
hf' : ∀ (x : E), x ∈ f.source → HasFDerivAt (↑f) (f' x) x
g : E → F
this : ↑f '' f.source = f.target
⊢ ∀ (x : E), x ∈ f.source → HasFDerivWithinAt (↑f) (f' x) f.source x

tactic: exact (hf' x hx).hasFDerivWithinAt
state_before: E : Type u_2
F : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : FiniteDimensional ℝ E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
s : Set E
f✝ : E → E
f' : E → E →L[ℝ] E
inst✝³ : MeasurableSpace E
inst✝² : BorelSpace E
μ : Measure E
inst✝¹ : IsAddHaarMeasure μ
inst✝ : CompleteSpace F
f : LocalHomeomorph E E
hf' : ∀ (x : E), x ∈ f.source → HasFDerivAt (↑f) (f' x) x
g : E → F
this : ↑f '' f.source = f.target
x : E
hx : x ∈ f.source
⊢ HasFDerivWithinAt (↑f) (f' x) f.source x
Theorem: SemiconjBy.one_right
File: Mathlib/Algebra/Group/Semiconj.lean

tactic: rw [SemiconjBy, mul_one, one_mul]
state_before: M : Type u_1
inst✝ : MulOneClass M
a : M
⊢ SemiconjBy a 1 1
Theorem: CategoryTheory.GradedObject.comapEq_symm
File: Mathlib/CategoryTheory/GradedObject.lean

tactic: aesop_cat
state_before: C : Type u
inst✝ : Category C
β γ : Type w
f g : β → γ
h : f = g
⊢ comapEq C (_ : g = f) = (comapEq C h).symm
Theorem: Fintype.card_finset_len
File: Mathlib/Data/Fintype/Powerset.lean

tactic: simp [Fintype.subtype_card, Finset.card_univ]
state_before: α : Type u_1
inst✝ : Fintype α
k : ℕ
⊢ card { s // Finset.card s = k } = Nat.choose (card α) k
Theorem: PadicInt.exists_pow_neg_lt_rat
File: Mathlib/NumberTheory/Padics/PadicIntegers.lean

tactic: obtain ⟨k, hk⟩ := @exists_pow_neg_lt p _ ε (by exact_mod_cast hε)
state_before: p : ℕ
hp : Fact (Nat.Prime p)
ε : ℚ
hε : 0 < ε
⊢ ∃ k, ↑p ^ (-↑k) < ε

tactic: use k
state_before: case intro
p : ℕ
hp : Fact (Nat.Prime p)
ε : ℚ
hε : 0 < ε
k : ℕ
hk : ↑p ^ (-↑k) < ↑ε
⊢ ∃ k, ↑p ^ (-↑k) < ε

tactic: rw [show (p : ℝ) = (p : ℚ) by simp] at hk
state_before: case intro
p : ℕ
hp : Fact (Nat.Prime p)
ε : ℚ
hε : 0 < ε
k : ℕ
hk : ↑p ^ (-↑k) < ↑ε
⊢ ↑p ^ (-↑k) < ε

tactic: exact_mod_cast hk
state_before: case intro
p : ℕ
hp : Fact (Nat.Prime p)
ε : ℚ
hε : 0 < ε
k : ℕ
hk : ↑↑p ^ (-↑k) < ↑ε
⊢ ↑p ^ (-↑k) < ε

tactic: exact_mod_cast hε
state_before: p : ℕ
hp : Fact (Nat.Prime p)
ε : ℚ
hε : 0 < ε
⊢ 0 < ↑ε

tactic: simp
state_before: p : ℕ
hp : Fact (Nat.Prime p)
ε : ℚ
hε : 0 < ε
k : ℕ
hk : ↑p ^ (-↑k) < ↑ε
⊢ ↑p = ↑↑p
Theorem: Polynomial.zero_comp
File: Mathlib/Data/Polynomial/Eval.lean

tactic: rw [← C_0, C_comp]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
⊢ comp 0 p = 0
Theorem: expNegInvGlue.zero_of_nonpos
File: Mathlib/Analysis/Calculus/BumpFunctionInner.lean

tactic: simp [expNegInvGlue, hx]
state_before: x : ℝ
hx : x ≤ 0
⊢ expNegInvGlue x = 0
Theorem: AddCommGroup.nsmul_modEq_nsmul
File: Mathlib/Algebra/ModEq.lean

tactic: rw [← smul_sub, smul_comm, smul_right_inj hn]
state_before: α : Type u_1
inst✝¹ : AddCommGroup α
p a a₁ a₂ b b₁ b₂ c : α
n : ℕ
z : ℤ
inst✝ : NoZeroSMulDivisors ℕ α
hn : n ≠ 0
m : ℤ
⊢ n • b - n • a = m • n • p ↔ b - a = m • p