tasksource/leandojo huggingface dataset:
Theorem: EuclideanGeometry.dist_orthogonalProjection_eq_zero_iff
File: Mathlib/Geometry/Euclidean/Basic.lean

tactic: rw [dist_comm, dist_eq_zero, orthogonalProjection_eq_self_iff]
state_before: V : Type u_1
P : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : MetricSpace P
inst✝² : NormedAddTorsor V P
s : AffineSubspace ℝ P
inst✝¹ : Nonempty { x // x ∈ s }
inst✝ : CompleteSpace { x // x ∈ direction s }
p : P
⊢ dist p ↑(↑(orthogonalProjection s) p) = 0 ↔ p ∈ s
Theorem: Set.image2_insert_right
File: Mathlib/Data/Set/NAry.lean

tactic: rw [insert_eq, image2_union_right, image2_singleton_right]
state_before: α : Type u_2
α' : Type ?u.28640
β : Type u_3
β' : Type ?u.28646
γ : Type u_1
γ' : Type ?u.28652
δ : Type ?u.28655
δ' : Type ?u.28658
ε : Type ?u.28661
ε' : Type ?u.28664
ζ : Type ?u.28667
ζ' : Type ?u.28670
ν : Type ?u.28673
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
⊢ image2 f s (insert b t) = (fun a => f a b) '' s ∪ image2 f s t
Theorem: divp_eq_div
File: Mathlib/Algebra/Hom/Units.lean

tactic: rw [div_eq_mul_inv, divp, u.val_inv_eq_inv_val]
state_before: α : Type u_1
M : Type u
N : Type v
P : Type w
inst✝³ : Monoid M
inst✝² : Monoid N
inst✝¹ : Monoid P
inst✝ : DivisionMonoid α
a : α
u : αˣ
⊢ a /ₚ u = a / ↑u
Theorem: Finset.centerMass_segment'
File: Mathlib/Analysis/Convex/Combination.lean

tactic: rw [s.centerMass_eq_of_sum_1 _ hws, t.centerMass_eq_of_sum_1 _ hwt, smul_sum, smul_sum, ←
  Finset.sum_sum_elim, Finset.centerMass_eq_of_sum_1]
state_before: R : Type u_3
E : Type u_4
F : Type ?u.41233
ι : Type u_1
ι' : Type u_2
α : Type ?u.41242
inst✝⁷ : LinearOrderedField R
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s✝ : Set E
i j : ι
c : R
t✝ : Finset ι
w : ι → R
z : ι → E
s : Finset ι
t : Finset ι'
ws : ι → R
zs : ι → E
wt : ι' → R
zt : ι' → E
hws : ∑ i in s, ws i = 1
hwt : ∑ i in t, wt i = 1
a b : R
hab : a + b = 1
⊢ a • centerMass s ws zs + b • centerMass t wt zt =
    centerMass (disjSum s t) (Sum.elim (fun i => a * ws i) fun j => b * wt j) (Sum.elim zs zt)

tactic: congr with ⟨⟩ <;> simp only [Sum.elim_inl, Sum.elim_inr, mul_smul]
state_before: R : Type u_3
E : Type u_4
F : Type ?u.41233
ι : Type u_1
ι' : Type u_2
α : Type ?u.41242
inst✝⁷ : LinearOrderedField R
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s✝ : Set E
i j : ι
c : R
t✝ : Finset ι
w : ι → R
z : ι → E
s : Finset ι
t : Finset ι'
ws : ι → R
zs : ι → E
wt : ι' → R
zt : ι' → E
hws : ∑ i in s, ws i = 1
hwt : ∑ i in t, wt i = 1
a b : R
hab : a + b = 1
⊢ ∑ x in disjSum s t, Sum.elim (fun x => a • ws x • zs x) (fun x => b • wt x • zt x) x =
    ∑ i in disjSum s t, Sum.elim (fun i => a * ws i) (fun j => b * wt j) i • Sum.elim zs zt i

tactic: rw [sum_sum_elim, ← mul_sum, ← mul_sum, hws, hwt, mul_one, mul_one, hab]
state_before: case hw
R : Type u_3
E : Type u_4
F : Type ?u.41233
ι : Type u_1
ι' : Type u_2
α : Type ?u.41242
inst✝⁷ : LinearOrderedField R
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s✝ : Set E
i j : ι
c : R
t✝ : Finset ι
w : ι → R
z : ι → E
s : Finset ι
t : Finset ι'
ws : ι → R
zs : ι → E
wt : ι' → R
zt : ι' → E
hws : ∑ i in s, ws i = 1
hwt : ∑ i in t, wt i = 1
a b : R
hab : a + b = 1
⊢ ∑ i in disjSum s t, Sum.elim (fun i => a * ws i) (fun j => b * wt j) i = 1
Theorem: Matrix.cons_val_succ
File: Mathlib/Data/Fin/VecNotation.lean

tactic: simp [vecCons]
state_before: α : Type u
m n o : ℕ
m' : Type ?u.14351
n' : Type ?u.14354
o' : Type ?u.14357
x : α
u : Fin m → α
i : Fin m
⊢ vecCons x u (Fin.succ i) = u i
Theorem: Dfinsupp.addHom_ext
File: Mathlib/Data/Dfinsupp/Basic.lean

tactic: refine' AddMonoidHom.eq_of_eqOn_denseM add_closure_iUnion_range_single fun f hf => _
state_before: ι : Type u
γ✝ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
γ : Type w
inst✝ : AddZeroClass γ
f g : (Π₀ (i : ι), β i) →+ γ
H : ∀ (i : ι) (y : β i), ↑f (single i y) = ↑g (single i y)
⊢ f = g

tactic: simp only [Set.mem_iUnion, Set.mem_range] at hf
state_before: ι : Type u
γ✝ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
γ : Type w
inst✝ : AddZeroClass γ
f✝ g : (Π₀ (i : ι), β i) →+ γ
H : ∀ (i : ι) (y : β i), ↑f✝ (single i y) = ↑g (single i y)
f : Π₀ (i : ι), β i
hf : f ∈ ⋃ (i : ι), Set.range (single i)
⊢ ↑f✝ f = ↑g f

tactic: rcases hf with ⟨x, y, rfl⟩
state_before: ι : Type u
γ✝ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
γ : Type w
inst✝ : AddZeroClass γ
f✝ g : (Π₀ (i : ι), β i) →+ γ
H : ∀ (i : ι) (y : β i), ↑f✝ (single i y) = ↑g (single i y)
f : Π₀ (i : ι), β i
hf : ∃ i y, single i y = f
⊢ ↑f✝ f = ↑g f

tactic: apply H
state_before: case intro.intro
ι : Type u
γ✝ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
γ : Type w
inst✝ : AddZeroClass γ
f g : (Π₀ (i : ι), β i) →+ γ
H : ∀ (i : ι) (y : β i), ↑f (single i y) = ↑g (single i y)
x : ι
y : β x
⊢ ↑f (single x y) = ↑g (single x y)
Theorem: SimpleGraph.sdiff_eq_deleteEdges
File: Mathlib/Combinatorics/SimpleGraph/Basic.lean

tactic: ext
state_before: ι : Sort ?u.154284
𝕜 : Type ?u.154287
V : Type u
W : Type v
X : Type w
G✝ : SimpleGraph V
G'✝ : SimpleGraph W
a b c u v w : V
e : Sym2 V
G G' : SimpleGraph V
⊢ G \ G' = deleteEdges G (edgeSet G')

tactic: simp
state_before: case Adj.h.h.a
ι : Sort ?u.154284
𝕜 : Type ?u.154287
V : Type u
W : Type v
X : Type w
G✝ : SimpleGraph V
G'✝ : SimpleGraph W
a b c u v w : V
e : Sym2 V
G G' : SimpleGraph V
x✝¹ x✝ : V
⊢ Adj (G \ G') x✝¹ x✝ ↔ Adj (deleteEdges G (edgeSet G')) x✝¹ x✝
Theorem: Polynomial.iterate_derivative_map
File: Mathlib/Data/Polynomial/Derivative.lean

tactic: induction' k with k ih generalizing p
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
f : R →+* S
k : ℕ
⊢ (↑derivative^[k]) (map f p) = map f ((↑derivative^[k]) p)

tactic: simp
state_before: case zero
R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝¹ : Semiring R
inst✝ : Semiring S
p✝ : R[X]
f : R →+* S
p : R[X]
⊢ (↑derivative^[Nat.zero]) (map f p) = map f ((↑derivative^[Nat.zero]) p)

tactic: simp only [ih, Function.iterate_succ, Polynomial.derivative_map, Function.comp_apply]
state_before: case succ
R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝¹ : Semiring R
inst✝ : Semiring S
p✝ : R[X]
f : R →+* S
k : ℕ
ih : ∀ (p : R[X]), (↑derivative^[k]) (map f p) = map f ((↑derivative^[k]) p)
p : R[X]
⊢ (↑derivative^[Nat.succ k]) (map f p) = map f ((↑derivative^[Nat.succ k]) p)
Theorem: InnerProductGeometry.angle_comm
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Basic.lean

tactic: unfold angle
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
⊢ angle x y = angle y x

tactic: rw [real_inner_comm, mul_comm]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
⊢ arccos (inner x y / (‖x‖ * ‖y‖)) = arccos (inner y x / (‖y‖ * ‖x‖))
Theorem: Nat.coe_int_ofDigits
File: Mathlib/Data/Nat/Digits.lean

tactic: induction' L with d L _
state_before: n b : ℕ
L : List ℕ
⊢ ↑(ofDigits b L) = ofDigits (↑b) L

tactic: rfl
state_before: case nil
n b : ℕ
⊢ ↑(ofDigits b []) = ofDigits ↑b []

tactic: dsimp [ofDigits]
state_before: case cons
n b d : ℕ
L : List ℕ
tail_ih✝ : ↑(ofDigits b L) = ofDigits (↑b) L
⊢ ↑(ofDigits b (d :: L)) = ofDigits (↑b) (d :: L)

tactic: push_cast
state_before: case cons
n b d : ℕ
L : List ℕ
tail_ih✝ : ↑(ofDigits b L) = ofDigits (↑b) L
⊢ ↑(d + b * ofDigits b L) = ↑d + ↑b * ofDigits (↑b) L

tactic: simp only
state_before: case cons
n b d : ℕ
L : List ℕ
tail_ih✝ : ↑(ofDigits b L) = ofDigits (↑b) L
⊢ ↑d + ↑b * ofDigits (↑b) L = ↑d + ↑b * ofDigits (↑b) L
Theorem: symmDiff_comm
File: Mathlib/Order/SymmDiff.lean

tactic: simp only [symmDiff, sup_comm]
state_before: ι : Type ?u.17458
α : Type u_1
β : Type ?u.17464
π : ι → Type ?u.17469
inst✝ : GeneralizedCoheytingAlgebra α
a b c d : α
⊢ a ∆ b = b ∆ a
Theorem: le_or_le_of_mul_le_mul
File: Mathlib/Algebra/Order/Monoid/MinMax.lean

tactic: contrapose!
state_before: α : Type u_1
β : Type ?u.6020
inst✝³ : LinearOrder α
inst✝² : Mul α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a₁ a₂ b₁ b₂ : α
⊢ a₁ * b₁ ≤ a₂ * b₂ → a₁ ≤ a₂ ∨ b₁ ≤ b₂

tactic: exact fun h => mul_lt_mul_of_lt_of_lt h.1 h.2
state_before: α : Type u_1
β : Type ?u.6020
inst✝³ : LinearOrder α
inst✝² : Mul α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a₁ a₂ b₁ b₂ : α
⊢ a₂ < a₁ ∧ b₂ < b₁ → a₂ * b₂ < a₁ * b₁
Theorem: Submodule.prod_map_fst
File: Mathlib/LinearAlgebra/Prod.lean

tactic: ext x
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.304347
M₆ : Type ?u.304350
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₂
⊢ map (fst R M M₂) (prod p q) = p

tactic: simp [(⟨0, zero_mem _⟩ : ∃ x, x ∈ q)]
state_before: case h
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.304347
M₆ : Type ?u.304350
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₂
x : M
⊢ x ∈ map (fst R M M₂) (prod p q) ↔ x ∈ p
Theorem: Finset.isUnit_coe
File: Mathlib/Data/Finset/Pointwise.lean

tactic: simp_rw [isUnit_iff, Set.isUnit_iff, coe_eq_singleton]
state_before: F : Type ?u.568854
α : Type u_1
β : Type ?u.568860
γ : Type ?u.568863
inst✝² : DecidableEq α
inst✝¹ : DecidableEq β
inst✝ : DivisionMonoid α
s t : Finset α
⊢ IsUnit ↑s ↔ IsUnit s
Theorem: Function.IsFixedPt.perm_pow
File: Mathlib/Dynamics/FixedPoints/Basic.lean

tactic: rw [Equiv.Perm.coe_pow]
state_before: α : Type u
β : Type v
f fa g : α → α
x y : α
fb : β → β
m n✝ k : ℕ
e : Perm α
h : IsFixedPt (↑e) x
n : ℕ
⊢ IsFixedPt (↑(e ^ n)) x

tactic: exact h.iterate _
state_before: α : Type u
β : Type v
f fa g : α → α
x y : α
fb : β → β
m n✝ k : ℕ
e : Perm α
h : IsFixedPt (↑e) x
n : ℕ
⊢ IsFixedPt (↑e^[n]) x
Theorem: expChar_is_prime_or_one
File: Mathlib/Algebra/CharP/ExpChar.lean

tactic: cases hq
state_before: R : Type u
inst✝² : Semiring R
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
q : ℕ
hq : ExpChar R q
⊢ Nat.Prime q ∨ q = 1

tactic: case zero => exact .inr rfl
state_before: case zero
R : Type u
inst✝³ : Semiring R
inst✝² : Nontrivial R
inst✝¹ : NoZeroDivisors R
inst✝ : CharZero R
⊢ Nat.Prime 1 ∨ 1 = 1

case prime
R : Type u
inst✝² : Semiring R
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
q : ℕ
hprime✝ : Nat.Prime q
hchar✝ : CharP R q
⊢ Nat.Prime q ∨ q = 1

tactic: case prime hp _ => exact .inl hp
state_before: case prime
R : Type u
inst✝² : Semiring R
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
q : ℕ
hprime✝ : Nat.Prime q
hchar✝ : CharP R q
⊢ Nat.Prime q ∨ q = 1

tactic: exact .inr rfl
state_before: R : Type u
inst✝³ : Semiring R
inst✝² : Nontrivial R
inst✝¹ : NoZeroDivisors R
inst✝ : CharZero R
⊢ Nat.Prime 1 ∨ 1 = 1

tactic: exact .inl hp
state_before: R : Type u
inst✝² : Semiring R
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
q : ℕ
hp : Nat.Prime q
hchar✝ : CharP R q
⊢ Nat.Prime q ∨ q = 1
Theorem: norm_of_subsingleton'
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: rw [Subsingleton.elim a 1, norm_one']
state_before: 𝓕 : Type ?u.74246
𝕜 : Type ?u.74249
α : Type ?u.74252
ι : Type ?u.74255
κ : Type ?u.74258
E : Type u_1
F : Type ?u.74264
G : Type ?u.74267
inst✝³ : SeminormedGroup E
inst✝² : SeminormedGroup F
inst✝¹ : SeminormedGroup G
s : Set E
a✝ a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
inst✝ : Subsingleton E
a : E
⊢ ‖a‖ = 0
Theorem: Fintype.linearIndependent_iff
File: Mathlib/LinearAlgebra/LinearIndependent.lean

tactic: refine'
  ⟨fun H g => by simpa using linearIndependent_iff'.1 H Finset.univ g, fun H =>
    linearIndependent_iff''.2 fun s g hg hs i => H _ _ _⟩
state_before: ι : Type u'
ι' : Type ?u.29646
R : Type u_1
K : Type ?u.29652
M : Type u_2
M' : Type ?u.29658
M'' : Type ?u.29661
V : Type u
V' : Type ?u.29666
v : ι → M
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Fintype ι
⊢ LinearIndependent R v ↔ ∀ (g : ι → R), ∑ i : ι, g i • v i = 0 → ∀ (i : ι), g i = 0

tactic: rw [← hs]
state_before: ι : Type u'
ι' : Type ?u.29646
R : Type u_1
K : Type ?u.29652
M : Type u_2
M' : Type ?u.29658
M'' : Type ?u.29661
V : Type u
V' : Type ?u.29666
v : ι → M
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Fintype ι
H : ∀ (g : ι → R), ∑ i : ι, g i • v i = 0 → ∀ (i : ι), g i = 0
s : Finset ι
g : ι → R
hg : ∀ (i : ι), ¬i ∈ s → g i = 0
hs : ∑ i in s, g i • v i = 0
i : ι
⊢ ∑ i : ι, g i • v i = 0

tactic: refine' (Finset.sum_subset (Finset.subset_univ _) fun i _ hi => _).symm
state_before: ι : Type u'
ι' : Type ?u.29646
R : Type u_1
K : Type ?u.29652
M : Type u_2
M' : Type ?u.29658
M'' : Type ?u.29661
V : Type u
V' : Type ?u.29666
v : ι → M
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Fintype ι
H : ∀ (g : ι → R), ∑ i : ι, g i • v i = 0 → ∀ (i : ι), g i = 0
s : Finset ι
g : ι → R
hg : ∀ (i : ι), ¬i ∈ s → g i = 0
hs : ∑ i in s, g i • v i = 0
i : ι
⊢ ∑ i : ι, g i • v i = ∑ i in s, g i • v i

tactic: rw [hg i hi, zero_smul]
state_before: ι : Type u'
ι' : Type ?u.29646
R : Type u_1
K : Type ?u.29652
M : Type u_2
M' : Type ?u.29658
M'' : Type ?u.29661
V : Type u
V' : Type ?u.29666
v : ι → M
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Fintype ι
H : ∀ (g : ι → R), ∑ i : ι, g i • v i = 0 → ∀ (i : ι), g i = 0
s : Finset ι
g : ι → R
hg : ∀ (i : ι), ¬i ∈ s → g i = 0
hs : ∑ i in s, g i • v i = 0
i✝ i : ι
x✝ : i ∈ Finset.univ
hi : ¬i ∈ s
⊢ g i • v i = 0

tactic: simpa using linearIndependent_iff'.1 H Finset.univ g
state_before: ι : Type u'
ι' : Type ?u.29646
R : Type u_1
K : Type ?u.29652
M : Type u_2
M' : Type ?u.29658
M'' : Type ?u.29661
V : Type u
V' : Type ?u.29666
v : ι → M
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : AddCommMonoid M''
inst✝³ : Module R M
inst✝² : Module R M'
inst✝¹ : Module R M''
a b : R
x y : M
inst✝ : Fintype ι
H : LinearIndependent R v
g : ι → R
⊢ ∑ i : ι, g i • v i = 0 → ∀ (i : ι), g i = 0
Theorem: padicValNat.zero
File: Mathlib/NumberTheory/Padics/PadicVal.lean

tactic: simp [padicValNat]
state_before: p : ℕ
⊢ padicValNat p 0 = 0
Theorem: CategoryTheory.types_ext
File: Mathlib/CategoryTheory/Types.lean

tactic: funext x
state_before: α β : Type u
f g : α ⟶ β
h : ∀ (a : α), f a = g a
⊢ f = g

tactic: exact h x
state_before: case h
α β : Type u
f g : α ⟶ β
h : ∀ (a : α), f a = g a
x : α
⊢ f x = g x
Theorem: dist_div_eq_dist_mul_left
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: rw [← dist_mul_right _ _ b, div_mul_cancel']
state_before: 𝓕 : Type ?u.58803
𝕜 : Type ?u.58806
α : Type ?u.58809
ι : Type ?u.58812
κ : Type ?u.58815
E : Type u_1
F : Type ?u.58821
G : Type ?u.58824
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a✝ a₁ a₂ b✝ b₁ b₂ : E
r r₁ r₂ : ℝ
a b c : E
⊢ dist (a / b) c = dist a (c * b)
Theorem: ZMod.inv_coe_unit
File: Mathlib/Data/ZMod/Basic.lean

tactic: have := congr_arg ((↑) : ℕ → ZMod n) (val_coe_unit_coprime u)
state_before: n : ℕ
u : (ZMod n)ˣ
⊢ (↑u)⁻¹ = ↑u⁻¹

tactic: rw [← mul_inv_eq_gcd, Nat.cast_one] at this
state_before: n : ℕ
u : (ZMod n)ˣ
this : ↑(Nat.gcd (val ↑u) n) = ↑1
⊢ (↑u)⁻¹ = ↑u⁻¹

tactic: let u' : (ZMod n)ˣ := ⟨u, (u : ZMod n)⁻¹, this, by rwa [mul_comm]⟩
state_before: n : ℕ
u : (ZMod n)ˣ
this : ↑u * (↑u)⁻¹ = 1
⊢ (↑u)⁻¹ = ↑u⁻¹

tactic: have h : u = u' := by
  apply Units.ext
  rfl
state_before: n : ℕ
u : (ZMod n)ˣ
this : ↑u * (↑u)⁻¹ = 1
u' : (ZMod n)ˣ := { val := ↑u, inv := (↑u)⁻¹, val_inv := this, inv_val := (_ : (↑u)⁻¹ * ↑u = 1) }
⊢ (↑u)⁻¹ = ↑u⁻¹

tactic: rw [h]
state_before: n : ℕ
u : (ZMod n)ˣ
this : ↑u * (↑u)⁻¹ = 1
u' : (ZMod n)ˣ := { val := ↑u, inv := (↑u)⁻¹, val_inv := this, inv_val := (_ : (↑u)⁻¹ * ↑u = 1) }
h : u = u'
⊢ (↑u)⁻¹ = ↑u⁻¹

tactic: rfl
state_before: n : ℕ
u : (ZMod n)ˣ
this : ↑u * (↑u)⁻¹ = 1
u' : (ZMod n)ˣ := { val := ↑u, inv := (↑u)⁻¹, val_inv := this, inv_val := (_ : (↑u)⁻¹ * ↑u = 1) }
h : u = u'
⊢ (↑u')⁻¹ = ↑u'⁻¹

tactic: rwa [mul_comm]
state_before: n : ℕ
u : (ZMod n)ˣ
this : ↑u * (↑u)⁻¹ = 1
⊢ (↑u)⁻¹ * ↑u = 1

tactic: apply Units.ext
state_before: n : ℕ
u : (ZMod n)ˣ
this : ↑u * (↑u)⁻¹ = 1
u' : (ZMod n)ˣ := { val := ↑u, inv := (↑u)⁻¹, val_inv := this, inv_val := (_ : (↑u)⁻¹ * ↑u = 1) }
⊢ u = u'

tactic: rfl
state_before: case a
n : ℕ
u : (ZMod n)ˣ
this : ↑u * (↑u)⁻¹ = 1
u' : (ZMod n)ˣ := { val := ↑u, inv := (↑u)⁻¹, val_inv := this, inv_val := (_ : (↑u)⁻¹ * ↑u = 1) }
⊢ ↑u = ↑u'
Theorem: Zsqrtd.gcd_eq_zero_iff
File: Mathlib/NumberTheory/Zsqrtd/Basic.lean

tactic: simp only [Int.gcd_eq_zero_iff, ext, eq_self_iff_true, zero_im, zero_re]
state_before: d : ℤ
a : ℤ√d
⊢ Int.gcd a.re a.im = 0 ↔ a = 0
Theorem: MeasureTheory.JordanDecomposition.toSignedMeasure_neg
File: Mathlib/MeasureTheory/Decomposition/Jordan.lean

tactic: ext1 i hi
state_before: α : Type u_1
β : Type ?u.17598
inst✝ : MeasurableSpace α
j : JordanDecomposition α
⊢ toSignedMeasure (-j) = -toSignedMeasure j

tactic: rw [neg_apply, toSignedMeasure, toSignedMeasure, toSignedMeasure_sub_apply hi,
  toSignedMeasure_sub_apply hi, neg_sub, neg_posPart, neg_negPart]
state_before: case h
α : Type u_1
β : Type ?u.17598
inst✝ : MeasurableSpace α
j : JordanDecomposition α
i : Set α
hi : MeasurableSet i
⊢ ↑(toSignedMeasure (-j)) i = ↑(-toSignedMeasure j) i
Theorem: ContDiffWithinAt.contDiffBump
File: Mathlib/Analysis/Calculus/BumpFunctionInner.lean

tactic: change ContDiffWithinAt ℝ n (uncurry (someContDiffBumpBase E).toFun ∘ fun x : X =>
  ((f x).rOut / (f x).rIn, (f x).rIn⁻¹ • (g x - c x))) s x
state_before: E : Type u_2
X : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c✝ : E
f✝ : ContDiffBump c✝
x✝ : E
n : ℕ∞
c g : X → E
s : Set X
f : (x : X) → ContDiffBump (c x)
x : X
hc : ContDiffWithinAt ℝ n c s x
hr : ContDiffWithinAt ℝ n (fun x => (f x).rIn) s x
hR : ContDiffWithinAt ℝ n (fun x => (f x).rOut) s x
hg : ContDiffWithinAt ℝ n g s x
⊢ ContDiffWithinAt ℝ n (fun x => ↑(f x) (g x)) s x

tactic: refine (((someContDiffBumpBase E).smooth.contDiffAt ?_).of_le le_top).comp_contDiffWithinAt x ?_
state_before: E : Type u_2
X : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c✝ : E
f✝ : ContDiffBump c✝
x✝ : E
n : ℕ∞
c g : X → E
s : Set X
f : (x : X) → ContDiffBump (c x)
x : X
hc : ContDiffWithinAt ℝ n c s x
hr : ContDiffWithinAt ℝ n (fun x => (f x).rIn) s x
hR : ContDiffWithinAt ℝ n (fun x => (f x).rOut) s x
hg : ContDiffWithinAt ℝ n g s x
⊢ ContDiffWithinAt ℝ n
    (uncurry (someContDiffBumpBase E).toFun ∘ fun x => ((f x).rOut / (f x).rIn, (f x).rIn⁻¹ • (g x - c x))) s x

tactic: exact prod_mem_nhds (Ioi_mem_nhds (f x).one_lt_rOut_div_rIn) univ_mem
state_before: case refine_1
E : Type u_2
X : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c✝ : E
f✝ : ContDiffBump c✝
x✝ : E
n : ℕ∞
c g : X → E
s : Set X
f : (x : X) → ContDiffBump (c x)
x : X
hc : ContDiffWithinAt ℝ n c s x
hr : ContDiffWithinAt ℝ n (fun x => (f x).rIn) s x
hR : ContDiffWithinAt ℝ n (fun x => (f x).rOut) s x
hg : ContDiffWithinAt ℝ n g s x
⊢ Ioi 1 ×ˢ univ ∈ 𝓝 ((f x).rOut / (f x).rIn, (f x).rIn⁻¹ • (g x - c x))

tactic: exact (hR.div hr (f x).rIn_pos.ne').prod ((hr.inv (f x).rIn_pos.ne').smul (hg.sub hc))
state_before: case refine_2
E : Type u_2
X : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c✝ : E
f✝ : ContDiffBump c✝
x✝ : E
n : ℕ∞
c g : X → E
s : Set X
f : (x : X) → ContDiffBump (c x)
x : X
hc : ContDiffWithinAt ℝ n c s x
hr : ContDiffWithinAt ℝ n (fun x => (f x).rIn) s x
hR : ContDiffWithinAt ℝ n (fun x => (f x).rOut) s x
hg : ContDiffWithinAt ℝ n g s x
⊢ ContDiffWithinAt ℝ n (fun x => ((f x).rOut / (f x).rIn, (f x).rIn⁻¹ • (g x - c x))) s x
Theorem: LieHom.map_le_idealRange
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: rw [f.idealRange_eq_map]
state_before: R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I : LieIdeal R L
J : LieIdeal R L'
⊢ LieIdeal.map f I ≤ idealRange f

tactic: exact LieIdeal.map_mono le_top
state_before: R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I : LieIdeal R L
J : LieIdeal R L'
⊢ LieIdeal.map f I ≤ LieIdeal.map f ⊤
Theorem: QuotientGroup.comap_comap_center
File: Mathlib/GroupTheory/QuotientGroup.lean

tactic: ext x
state_before: G : Type u
inst✝³ : Group G
N : Subgroup G
nN : Subgroup.Normal N
H : Type v
inst✝² : Group H
φ : G →* H
H₁ : Subgroup G
inst✝¹ : Subgroup.Normal H₁
H₂ : Subgroup (G ⧸ H₁)
inst✝ : Subgroup.Normal H₂
⊢ Subgroup.comap (mk' H₁) (Subgroup.comap (mk' H₂) (Subgroup.center ((G ⧸ H₁) ⧸ H₂))) =
    Subgroup.comap (mk' (Subgroup.comap (mk' H₁) H₂)) (Subgroup.center (G ⧸ Subgroup.comap (mk' H₁) H₂))

tactic: simp only [mk'_apply, Subgroup.mem_comap, Subgroup.mem_center_iff, forall_mk, ← mk_mul,
  eq_iff_div_mem, mk_div]
state_before: case h
G : Type u
inst✝³ : Group G
N : Subgroup G
nN : Subgroup.Normal N
H : Type v
inst✝² : Group H
φ : G →* H
H₁ : Subgroup G
inst✝¹ : Subgroup.Normal H₁
H₂ : Subgroup (G ⧸ H₁)
inst✝ : Subgroup.Normal H₂
x : G
⊢ x ∈ Subgroup.comap (mk' H₁) (Subgroup.comap (mk' H₂) (Subgroup.center ((G ⧸ H₁) ⧸ H₂))) ↔
    x ∈ Subgroup.comap (mk' (Subgroup.comap (mk' H₁) H₂)) (Subgroup.center (G ⧸ Subgroup.comap (mk' H₁) H₂))
Theorem: Nat.factorization_pow
File: Mathlib/Data/Nat/Factorization/Basic.lean

tactic: induction' k with k ih
state_before: n k : ℕ
⊢ factorization (n ^ k) = k • factorization n

tactic: rcases eq_or_ne n 0 with (rfl | hn)
state_before: case succ
n k : ℕ
ih : factorization (n ^ k) = k • factorization n
⊢ factorization (n ^ succ k) = succ k • factorization n

tactic: rw [pow_succ, mul_comm, factorization_mul hn (pow_ne_zero _ hn), ih, succ_eq_one_add, add_smul,
 one_smul]
state_before: case succ.inr
n k : ℕ
ih : factorization (n ^ k) = k • factorization n
hn : n ≠ 0
⊢ factorization (n ^ succ k) = succ k • factorization n

tactic: simp
state_before: case zero
n : ℕ
⊢ factorization (n ^ zero) = zero • factorization n

tactic: simp
state_before: case succ.inl
k : ℕ
ih : factorization (0 ^ k) = k • factorization 0
⊢ factorization (0 ^ succ k) = succ k • factorization 0