tasksource/leandojo huggingface dataset:
Theorem: SeparationQuotient.tendsto_lift₂_nhds
File: Mathlib/Topology/Inseparable.lean

tactic: rw [← map_prod_map_mk_nhds, tendsto_map'_iff]
state_before: X : Type u_1
Y : Type u_2
Z : Type ?u.106593
α : Type u_3
ι : Type ?u.106599
π : ι → Type ?u.106604
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x✝ y✝ z : X
s : Set X
f✝ : X → Y
t : Set (SeparationQuotient X)
f : X → Y → α
hf : ∀ (a : X) (b : Y) (c : X) (d : Y), (a ~ᵢ c) → (b ~ᵢ d) → f a b = f c d
x : X
y : Y
l : Filter α
⊢ Tendsto (uncurry (lift₂ f hf)) (𝓝 (mk x, mk y)) l ↔ Tendsto (uncurry f) (𝓝 (x, y)) l

tactic: rfl
state_before: X : Type u_1
Y : Type u_2
Z : Type ?u.106593
α : Type u_3
ι : Type ?u.106599
π : ι → Type ?u.106604
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x✝ y✝ z : X
s : Set X
f✝ : X → Y
t : Set (SeparationQuotient X)
f : X → Y → α
hf : ∀ (a : X) (b : Y) (c : X) (d : Y), (a ~ᵢ c) → (b ~ᵢ d) → f a b = f c d
x : X
y : Y
l : Filter α
⊢ Tendsto (uncurry (lift₂ f hf) ∘ Prod.map mk mk) (𝓝 (x, y)) l ↔ Tendsto (uncurry f) (𝓝 (x, y)) l
Theorem: Function.extend_smul
File: Mathlib/GroupTheory/GroupAction/Pi.lean

tactic: haveI : Decidable (∃ a : α, f a = x) := Classical.propDecidable _
state_before: I : Type u
f✝ : I → Type v
x✝ y : (i : I) → f✝ i
i : I
R : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : SMul R γ
r : R
f : α → β
g : α → γ
e : β → γ
x : β
⊢ extend f (r • g) (r • e) x = (r • extend f g e) x

tactic: rw [extend_def, Pi.smul_apply, Pi.smul_apply, extend_def]
state_before: I : Type u
f✝ : I → Type v
x✝ y : (i : I) → f✝ i
i : I
R : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : SMul R γ
r : R
f : α → β
g : α → γ
e : β → γ
x : β
this : Decidable (∃ a, f a = x)
⊢ extend f (r • g) (r • e) x = (r • extend f g e) x

tactic: split_ifs <;>
rfl
state_before: I : Type u
f✝ : I → Type v
x✝ y : (i : I) → f✝ i
i : I
R : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : SMul R γ
r : R
f : α → β
g : α → γ
e : β → γ
x : β
this : Decidable (∃ a, f a = x)
⊢ (if h : ∃ a, f a = x then (r • g) (Classical.choose h) else r • e x) =
    r • if h : ∃ a, f a = x then g (Classical.choose h) else e x
Theorem: Complex.eq_zero_cpow_iff
File: Mathlib/Analysis/SpecialFunctions/Pow/Complex.lean

tactic: rw [← zero_cpow_eq_iff, eq_comm]
state_before: x a : ℂ
⊢ a = 0 ^ x ↔ x ≠ 0 ∧ a = 0 ∨ x = 0 ∧ a = 1
Theorem: Subgroup.comap_lt_comap_of_surjective
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: simp_rw [lt_iff_le_not_le, comap_le_comap_of_surjective hf]
state_before: G : Type u_1
G' : Type ?u.577797
inst✝³ : Group G
inst✝² : Group G'
A : Type ?u.577806
inst✝¹ : AddGroup A
N : Type u_2
inst✝ : Group N
f✝ f : G →* N
K L : Subgroup N
hf : Surjective ↑f
⊢ comap f K < comap f L ↔ K < L
Theorem: MeasureTheory.Measure.exists_isOpen_measure_lt_top
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: simpa only [exists_prop, and_assoc] using
  (μ.finiteAt_nhds x).exists_mem_basis (nhds_basis_opens x)
state_before: α : Type u_1
β : Type ?u.828734
γ : Type ?u.828737
δ : Type ?u.828740
ι : Type ?u.828743
R : Type ?u.828746
R' : Type ?u.828749
m0 : MeasurableSpace α
inst✝³ : MeasurableSpace β
inst✝² : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
inst✝¹ : TopologicalSpace α
μ : Measure α
inst✝ : IsLocallyFiniteMeasure μ
x : α
⊢ ∃ s, x ∈ s ∧ IsOpen s ∧ ↑↑μ s < ⊤
Theorem: SimplexCategory.eq_id_of_epi
File: Mathlib/AlgebraicTopology/SimplexCategory.lean

tactic: suffices IsIso i by
  haveI := this
  apply eq_id_of_isIso
state_before: x : SimplexCategory
i : x ⟶ x
inst✝ : Epi i
⊢ i = 𝟙 x

tactic: apply isIso_of_bijective
state_before: x : SimplexCategory
i : x ⟶ x
inst✝ : Epi i
⊢ IsIso i

tactic: dsimp
state_before: case hf
x : SimplexCategory
i : x ⟶ x
inst✝ : Epi i
⊢ Function.Bijective ↑(Hom.toOrderHom i)

tactic: rw [Fintype.bijective_iff_surjective_and_card i.toOrderHom, ← epi_iff_surjective,
  eq_self_iff_true, and_true_iff]
state_before: case hf
x : SimplexCategory
i : x ⟶ x
inst✝ : Epi i
⊢ Function.Bijective ↑(Hom.toOrderHom i)

tactic: infer_instance
state_before: case hf
x : SimplexCategory
i : x ⟶ x
inst✝ : Epi i
⊢ Epi i

tactic: haveI := this
state_before: x : SimplexCategory
i : x ⟶ x
inst✝ : Epi i
this : IsIso i
⊢ i = 𝟙 x

tactic: apply eq_id_of_isIso
state_before: x : SimplexCategory
i : x ⟶ x
inst✝ : Epi i
this✝ this : IsIso i
⊢ i = 𝟙 x
Theorem: Set.image_neg_Ioo
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
⊢ Neg.neg '' Ioo a b = Ioo (-b) (-a)
Theorem: CategoryTheory.shiftComm_hom_comp
File: Mathlib/CategoryTheory/Shift/Basic.lean

tactic: rw [shiftComm', ← shiftComm_symm, Iso.symm_hom, Iso.inv_hom_id_assoc]
state_before: C : Type u
A : Type u_1
inst✝² : Category C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
X Y : C
f : X ⟶ Y
i j : A
⊢ (shiftComm X i j).hom ≫ (shiftFunctor C i).map ((shiftFunctor C j).map f) =
    (shiftFunctor C j).map ((shiftFunctor C i).map f) ≫ (shiftComm Y i j).hom
Theorem: Primrec.subtype_val
File: Mathlib/Computability/Primrec.lean

tactic: letI := Primcodable.subtype hp
state_before: α : Type u_1
β : Type ?u.353649
γ : Type ?u.353652
σ : Type ?u.353655
inst✝⁴ : Primcodable α
inst✝³ : Primcodable β
inst✝² : Primcodable γ
inst✝¹ : Primcodable σ
p : α → Prop
inst✝ : DecidablePred p
hp : PrimrecPred p
⊢ Primrec Subtype.val

tactic: refine' (@Primcodable.prim (Subtype p)).of_eq fun n => _
state_before: α : Type u_1
β : Type ?u.353649
γ : Type ?u.353652
σ : Type ?u.353655
inst✝⁴ : Primcodable α
inst✝³ : Primcodable β
inst✝² : Primcodable γ
inst✝¹ : Primcodable σ
p : α → Prop
inst✝ : DecidablePred p
hp : PrimrecPred p
this : Primcodable (Subtype p) := Primcodable.subtype hp
⊢ Primrec Subtype.val

tactic: rcases @decode (Subtype p) _ n with (_ | ⟨a, h⟩) <;> rfl
state_before: α : Type u_1
β : Type ?u.353649
γ : Type ?u.353652
σ : Type ?u.353655
inst✝⁴ : Primcodable α
inst✝³ : Primcodable β
inst✝² : Primcodable γ
inst✝¹ : Primcodable σ
p : α → Prop
inst✝ : DecidablePred p
hp : PrimrecPred p
this : Primcodable (Subtype p) := Primcodable.subtype hp
n : ℕ
⊢ encode (decode n) = encode (Option.map Subtype.val (decode n))
Theorem: Polynomial.eval₂_at_nat_cast
File: Mathlib/Data/Polynomial/Eval.lean

tactic: convert eval₂_at_apply (p := p) f n
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]
x : R
S : Type u_1
inst✝ : Semiring S
f : R →+* S
n : ℕ
⊢ eval₂ f (↑n) p = ↑f (eval (↑n) p)

tactic: simp
state_before: case h.e'_2.h.e'_6
R : Type u
S✝ : Type v
T : Type w
ι : Type y
a b : R
m n✝ : ℕ
inst✝¹ : Semiring R
p q r : R[X]
x : R
S : Type u_1
inst✝ : Semiring S
f : R →+* S
n : ℕ
⊢ ↑n = ↑f ↑n
Theorem: SimpleGraph.Walk.length_reverse
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: simp [reverse]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
p : Walk G u v
⊢ length (reverse p) = length p
Theorem: SimpleGraph.Walk.mem_verts_toSubgraph
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: induction' p with _ x y z h p' ih
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w : V
p : Walk G u v
⊢ w ∈ (Walk.toSubgraph p).verts ↔ w ∈ support p

tactic: simp
state_before: case nil
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w u✝ : V
⊢ w ∈ (Walk.toSubgraph nil).verts ↔ w ∈ support nil

tactic: have : w = y ∨ w ∈ p'.support ↔ w ∈ p'.support :=
  ⟨by rintro (rfl | h) <;> simp [*], by simp (config := { contextual := true })⟩
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x y z : V
h : Adj G x y
p' : Walk G y z
ih : w ∈ (Walk.toSubgraph p').verts ↔ w ∈ support p'
⊢ w ∈ (Walk.toSubgraph (cons h p')).verts ↔ w ∈ support (cons h p')

tactic: simp [ih, or_assoc, this]
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x y z : V
h : Adj G x y
p' : Walk G y z
ih : w ∈ (Walk.toSubgraph p').verts ↔ w ∈ support p'
this : w = y ∨ w ∈ support p' ↔ w ∈ support p'
⊢ w ∈ (Walk.toSubgraph (cons h p')).verts ↔ w ∈ support (cons h p')

tactic: rintro (rfl | h) <;> simp [*]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x y z : V
h : Adj G x y
p' : Walk G y z
ih : w ∈ (Walk.toSubgraph p').verts ↔ w ∈ support p'
⊢ w = y ∨ w ∈ support p' → w ∈ support p'

tactic: simp (config := { contextual := true })
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x y z : V
h : Adj G x y
p' : Walk G y z
ih : w ∈ (Walk.toSubgraph p').verts ↔ w ∈ support p'
⊢ w ∈ support p' → w = y ∨ w ∈ support p'
Theorem: Polynomial.geom_sum_X_comp_X_add_one_eq_sum
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: ext i
state_before: R : Type u
S : Type ?u.49481
inst✝ : Semiring R
n : ℕ
⊢ comp (∑ i in range n, X ^ i) (X + 1) = ∑ i in range n, ↑(Nat.choose n (i + 1)) * X ^ i

tactic: trans (n.choose (i + 1) : R)
state_before: case a
R : Type u
S : Type ?u.49481
inst✝ : Semiring R
n i : ℕ
⊢ coeff (comp (∑ i in range n, X ^ i) (X + 1)) i = coeff (∑ i in range n, ↑(Nat.choose n (i + 1)) * X ^ i) i

tactic: swap
state_before: R : Type u
S : Type ?u.49481
inst✝ : Semiring R
n i : ℕ
⊢ coeff (comp (∑ i in range n, X ^ i) (X + 1)) i = ↑(Nat.choose n (i + 1))

R : Type u
S : Type ?u.49481
inst✝ : Semiring R
n i : ℕ
⊢ ↑(Nat.choose n (i + 1)) = coeff (∑ i in range n, ↑(Nat.choose n (i + 1)) * X ^ i) i

tactic: induction' n with n ih generalizing i
state_before: R : Type u
S : Type ?u.49481
inst✝ : Semiring R
n i : ℕ
⊢ coeff (comp (∑ i in range n, X ^ i) (X + 1)) i = ↑(Nat.choose n (i + 1))

tactic: simp only [finset_sum_coeff, ← C_eq_nat_cast, coeff_C_mul_X_pow]
state_before: R : Type u
S : Type ?u.49481
inst✝ : Semiring R
n i : ℕ
⊢ ↑(Nat.choose n (i + 1)) = coeff (∑ i in range n, ↑(Nat.choose n (i + 1)) * X ^ i) i

tactic: rw [Finset.sum_eq_single i, if_pos rfl]
state_before: R : Type u
S : Type ?u.49481
inst✝ : Semiring R
n i : ℕ
⊢ ↑(Nat.choose n (i + 1)) = ∑ x in range n, if i = x then ↑(Nat.choose n (x + 1)) else 0

tactic: simp (config := { contextual := true }) only [@eq_comm _ i, if_false, eq_self_iff_true,
  imp_true_iff]
state_before: case h₀
R : Type u
S : Type ?u.49481
inst✝ : Semiring R
n i : ℕ
⊢ ∀ (b : ℕ), b ∈ range n → b ≠ i → (if i = b then ↑(Nat.choose n (b + 1)) else 0) = 0

tactic: simp (config := { contextual := true }) only [Nat.lt_add_one_iff, Nat.choose_eq_zero_of_lt,
  Nat.cast_zero, Finset.mem_range, not_lt, eq_self_iff_true, if_true, imp_true_iff]
state_before: case h₁
R : Type u
S : Type ?u.49481
inst✝ : Semiring R
n i : ℕ
⊢ ¬i ∈ range n → (if i = i then ↑(Nat.choose n (i + 1)) else 0) = 0

tactic: dsimp
state_before: case zero
R : Type u
S : Type ?u.49481
inst✝ : Semiring R
i✝ i : ℕ
⊢ coeff (comp (∑ i in range Nat.zero, X ^ i) (X + 1)) i = ↑(Nat.choose Nat.zero (i + 1))

tactic: simp only [zero_comp, coeff_zero, Nat.cast_zero]
state_before: case zero
R : Type u
S : Type ?u.49481
inst✝ : Semiring R
i✝ i : ℕ
⊢ coeff (comp 0 (X + 1)) i = ↑0

tactic: dsimp
state_before: case succ
R : Type u
S : Type ?u.49481
inst✝ : Semiring R
i✝ n : ℕ
ih : ∀ (i : ℕ), coeff (comp (∑ i in range n, X ^ i) (X + 1)) i = ↑(Nat.choose n (i + 1))
i : ℕ
⊢ coeff (comp (∑ i in range (Nat.succ n), X ^ i) (X + 1)) i = ↑(Nat.choose (Nat.succ n) (i + 1))

tactic: simp only [geom_sum_succ', ih, add_comp, X_pow_comp, coeff_add, Nat.choose_succ_succ,
Nat.cast_add, coeff_X_add_one_pow]
state_before: case succ
R : Type u
S : Type ?u.49481
inst✝ : Semiring R
i✝ n : ℕ
ih : ∀ (i : ℕ), coeff (comp (∑ i in range n, X ^ i) (X + 1)) i = ↑(Nat.choose n (i + 1))
i : ℕ
⊢ coeff (comp (∑ i in range (Nat.succ n), X ^ i) (X + 1)) i = ↑(Nat.choose (Nat.succ n) (i + 1))
Theorem: Submodule.FG.map
File: Mathlib/RingTheory/Finiteness.lean

tactic: rw [span_image, ht.2]
state_before: R : Type u_1
M : Type u_2
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
P : Type u_3
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
f : M →ₗ[R] P
N : Submodule R M
hs : FG N
t : Set M
ht : Set.Finite t ∧ span R t = N
⊢ span R (↑f '' t) = Submodule.map f N
Theorem: Nat.add_factorial_succ_le_factorial_add_succ
File: Mathlib/Data/Nat/Factorial/Basic.lean

tactic: cases (le_or_lt (2 : ℕ) i)
state_before: m n✝ i n : ℕ
⊢ i + (n + 1)! ≤ (i + (n + 1))!

tactic: rw [← add_assoc]
state_before: case inl
m n✝ i n : ℕ
h✝ : 2 ≤ i
⊢ i + (n + 1)! ≤ (i + (n + 1))!

tactic: apply Nat.le_of_lt
state_before: case inl
m n✝ i n : ℕ
h✝ : 2 ≤ i
⊢ i + (n + 1)! ≤ (i + n + 1)!

tactic: apply add_factorial_succ_lt_factorial_add_succ
state_before: case inl.h
m n✝ i n : ℕ
h✝ : 2 ≤ i
⊢ i + (n + 1)! < (i + n + 1)!

tactic: assumption
state_before: case inl.h.hi
m n✝ i n : ℕ
h✝ : 2 ≤ i
⊢ 2 ≤ i

tactic: simp
state_before: m n✝ i n : ℕ
h✝ : 0 < 2
⊢ 0 + (n + 1)! ≤ (0 + (n + 1))!

tactic: rw [← add_assoc, ← Nat.succ_eq_add_one (1 + n), factorial_succ (1 + n),
  add_mul, one_mul, add_comm 1 n, add_le_add_iff_right]
state_before: m n✝ i n : ℕ
h✝ : 1 < 2
⊢ 1 + (n + 1)! ≤ (1 + (n + 1))!

tactic: apply one_le_mul
state_before: m n✝ i n : ℕ
h✝ : 1 < 2
⊢ 1 ≤ (n + 1) * (n + 1)!

tactic: apply Nat.le_add_left
state_before: case ha
m n✝ i n : ℕ
h✝ : 1 < 2
⊢ 1 ≤ n + 1

tactic: apply factorial_pos
state_before: case hb
m n✝ i n : ℕ
h✝ : 1 < 2
⊢ 1 ≤ (n + 1)!

tactic: contradiction
state_before: m n✝¹ i n✝ n : ℕ
h✝ : succ (succ n) < 2
⊢ succ (succ n) + (n✝ + 1)! ≤ (succ (succ n) + (n✝ + 1))!
Theorem: Nat.one_add_div_two_mul_two_of_odd
File: Mathlib/Data/Nat/Parity.lean

tactic: rw [← odd_iff.mp h, mod_add_div']
state_before: m n : ℕ
h : Odd n
⊢ 1 + n / 2 * 2 = n
Theorem: CategoryTheory.Functor.triangle
File: Mathlib/CategoryTheory/Whiskering.lean

tactic: aesop_cat
state_before: A : Type u₁
inst✝³ : Category A
B : Type u₂
inst✝² : Category B
C : Type u₃
inst✝¹ : Category C
D : Type u₄
inst✝ : Category D
F : A ⥤ B
G : B ⥤ C
⊢ (associator F (𝟭 B) G).hom ≫ whiskerLeft F (leftUnitor G).hom = whiskerRight (rightUnitor F).hom G
Theorem: LipschitzWith.norm_div_le_of_le
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: gcongr
state_before: 𝓕 : Type ?u.196007
𝕜 : Type ?u.196010
α : Type ?u.196013
ι : Type ?u.196016
κ : Type ?u.196019
E : Type u_1
F : Type u_2
G : Type ?u.196028
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
f : E → F
C : ℝ≥0
h : LipschitzWith C f
hr : ‖a / b‖ ≤ r
⊢ ↑C * ‖a / b‖ ≤ ↑C * r
Theorem: IsLinearMap.isLinearMap_smul
File: Mathlib/Algebra/Module/LinearMap.lean

tactic: refine' IsLinearMap.mk (smul_add c) _
state_before: R✝ : Type ?u.325967
R₁ : Type ?u.325970
R₂ : Type ?u.325973
R₃ : Type ?u.325976
k : Type ?u.325979
S : Type ?u.325982
S₃ : Type ?u.325985
T : Type ?u.325988
M✝ : Type ?u.325991
M₁ : Type ?u.325994
M₂ : Type ?u.325997
M₃ : Type ?u.326000
N₁ : Type ?u.326003
N₂ : Type ?u.326006
N₃ : Type ?u.326009
ι : Type ?u.326012
inst✝⁷ : Semiring R✝
inst✝⁶ : AddCommMonoid M✝
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R✝ M✝
inst✝³ : Module R✝ M₂
R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
c : R
⊢ IsLinearMap R fun z => c • z

tactic: intro _ _
state_before: R✝ : Type ?u.325967
R₁ : Type ?u.325970
R₂ : Type ?u.325973
R₃ : Type ?u.325976
k : Type ?u.325979
S : Type ?u.325982
S₃ : Type ?u.325985
T : Type ?u.325988
M✝ : Type ?u.325991
M₁ : Type ?u.325994
M₂ : Type ?u.325997
M₃ : Type ?u.326000
N₁ : Type ?u.326003
N₂ : Type ?u.326006
N₃ : Type ?u.326009
ι : Type ?u.326012
inst✝⁷ : Semiring R✝
inst✝⁶ : AddCommMonoid M✝
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R✝ M✝
inst✝³ : Module R✝ M₂
R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
c : R
⊢ ∀ (c_1 : R) (x : M), c • c_1 • x = c_1 • c • x

tactic: simp only [smul_smul, mul_comm]
state_before: R✝ : Type ?u.325967
R₁ : Type ?u.325970
R₂ : Type ?u.325973
R₃ : Type ?u.325976
k : Type ?u.325979
S : Type ?u.325982
S₃ : Type ?u.325985
T : Type ?u.325988
M✝ : Type ?u.325991
M₁ : Type ?u.325994
M₂ : Type ?u.325997
M₃ : Type ?u.326000
N₁ : Type ?u.326003
N₂ : Type ?u.326006
N₃ : Type ?u.326009
ι : Type ?u.326012
inst✝⁷ : Semiring R✝
inst✝⁶ : AddCommMonoid M✝
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R✝ M✝
inst✝³ : Module R✝ M₂
R : Type u_1
M : Type u_2
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
c c✝ : R
x✝ : M
⊢ c • c✝ • x✝ = c✝ • c • x✝
Theorem: sameRay_neg_smul_right_iff
File: Mathlib/LinearAlgebra/Ray.lean

tactic: rw [← sameRay_neg_iff, neg_neg, ← neg_smul, sameRay_smul_right_iff, neg_nonneg]
state_before: R : Type u_1
inst✝³ : LinearOrderedCommRing R
M : Type u_2
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
v : M
r : R
⊢ SameRay R (-v) (r • v) ↔ r ≤ 0 ∨ v = 0
Theorem: Finset.inf_congr
File: Mathlib/Data/Finset/Lattice.lean

tactic: subst hs
state_before: F : Type ?u.108630
α : Type u_2
β : Type u_1
γ : Type ?u.108639
ι : Type ?u.108642
κ : Type ?u.108645
inst✝¹ : SemilatticeInf α
inst✝ : OrderTop α
s s₁ s₂ : Finset β
f✝ g✝ : β → α
a : α
f g : β → α
hs : s₁ = s₂
hfg : ∀ (a : β), a ∈ s₂ → f a = g a
⊢ inf s₁ f = inf s₂ g

tactic: exact Finset.fold_congr hfg
state_before: F : Type ?u.108630
α : Type u_2
β : Type u_1
γ : Type ?u.108639
ι : Type ?u.108642
κ : Type ?u.108645
inst✝¹ : SemilatticeInf α
inst✝ : OrderTop α
s s₁ : Finset β
f✝ g✝ : β → α
a : α
f g : β → α
hfg : ∀ (a : β), a ∈ s₁ → f a = g a
⊢ inf s₁ f = inf s₁ g
Theorem: StrictConvex.linear_preimage
File: Mathlib/Analysis/Convex/Strict.lean

tactic: intro x hx y hy hxy a b ha hb hab
state_before: 𝕜 : Type u_2
𝕝 : Type ?u.28655
E : Type u_3
F : Type u_1
β : Type ?u.28664
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalSpace F
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s✝ : Set E
s : Set F
hs : StrictConvex 𝕜 s
f : E →ₗ[𝕜] F
hf : Continuous ↑f
hfinj : Injective ↑f
⊢ StrictConvex 𝕜 (↑f ⁻¹' s)

tactic: refine' preimage_interior_subset_interior_preimage hf _
state_before: 𝕜 : Type u_2
𝕝 : Type ?u.28655
E : Type u_3
F : Type u_1
β : Type ?u.28664
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalSpace F
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s✝ : Set E
s : Set F
hs : StrictConvex 𝕜 s
f : E →ₗ[𝕜] F
hf : Continuous ↑f
hfinj : Injective ↑f
x : E
hx : x ∈ ↑f ⁻¹' s
y : E
hy : y ∈ ↑f ⁻¹' s
hxy : x ≠ y
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ a • x + b • y ∈ interior (↑f ⁻¹' s)

tactic: rw [mem_preimage, f.map_add, f.map_smul, f.map_smul]
state_before: 𝕜 : Type u_2
𝕝 : Type ?u.28655
E : Type u_3
F : Type u_1
β : Type ?u.28664
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalSpace F
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s✝ : Set E
s : Set F
hs : StrictConvex 𝕜 s
f : E →ₗ[𝕜] F
hf : Continuous ↑f
hfinj : Injective ↑f
x : E
hx : x ∈ ↑f ⁻¹' s
y : E
hy : y ∈ ↑f ⁻¹' s
hxy : x ≠ y
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ a • x + b • y ∈ ↑f ⁻¹' interior s

tactic: exact hs hx hy (hfinj.ne hxy) ha hb hab
state_before: 𝕜 : Type u_2
𝕝 : Type ?u.28655
E : Type u_3
F : Type u_1
β : Type ?u.28664
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : TopologicalSpace E
inst✝⁴ : TopologicalSpace F
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s✝ : Set E
s : Set F
hs : StrictConvex 𝕜 s
f : E →ₗ[𝕜] F
hf : Continuous ↑f
hfinj : Injective ↑f
x : E
hx : x ∈ ↑f ⁻¹' s
y : E
hy : y ∈ ↑f ⁻¹' s
hxy : x ≠ y
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ a • ↑f x + b • ↑f y ∈ interior s
Theorem: Basis.le_span''
File: Mathlib/LinearAlgebra/Dimension.lean

tactic: fapply card_le_of_surjective' R
state_before: K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.301145
R : Type u
inst✝⁵ : Ring R
inst✝⁴ : RankCondition R
M : Type v
inst✝³ : AddCommGroup M
inst✝² : Module R M
ι : Type u_1
inst✝¹ : Fintype ι
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ Fintype.card ι ≤ Fintype.card ↑w

tactic: exact b.repr.toLinearMap.comp (Finsupp.total w M R (↑))
state_before: case f
K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.301145
R : Type u
inst✝⁵ : Ring R
inst✝⁴ : RankCondition R
M : Type v
inst✝³ : AddCommGroup M
inst✝² : Module R M
ι : Type u_1
inst✝¹ : Fintype ι
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ (↑w →₀ R) →ₗ[R] ι →₀ R

tactic: apply Surjective.comp (g := b.repr.toLinearMap)
state_before: case i
K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.301145
R : Type u
inst✝⁵ : Ring R
inst✝⁴ : RankCondition R
M : Type v
inst✝³ : AddCommGroup M
inst✝² : Module R M
ι : Type u_1
inst✝¹ : Fintype ι
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ Surjective ↑(LinearMap.comp (↑b.repr) (Finsupp.total (↑w) M R Subtype.val))

tactic: apply LinearEquiv.surjective
state_before: case i.hg
K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.301145
R : Type u
inst✝⁵ : Ring R
inst✝⁴ : RankCondition R
M : Type v
inst✝³ : AddCommGroup M
inst✝² : Module R M
ι : Type u_1
inst✝¹ : Fintype ι
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ Surjective ↑↑b.repr

case i.hf
K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.301145
R : Type u
inst✝⁵ : Ring R
inst✝⁴ : RankCondition R
M : Type v
inst✝³ : AddCommGroup M
inst✝² : Module R M
ι : Type u_1
inst✝¹ : Fintype ι
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ Surjective fun x => ↑(Finsupp.total (↑w) M R Subtype.val) x

tactic: rw [← LinearMap.range_eq_top, Finsupp.range_total]
state_before: case i.hf
K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.301145
R : Type u
inst✝⁵ : Ring R
inst✝⁴ : RankCondition R
M : Type v
inst✝³ : AddCommGroup M
inst✝² : Module R M
ι : Type u_1
inst✝¹ : Fintype ι
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ Surjective fun x => ↑(Finsupp.total (↑w) M R Subtype.val) x

tactic: simpa using s
state_before: case i.hf
K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.301145
R : Type u
inst✝⁵ : Ring R
inst✝⁴ : RankCondition R
M : Type v
inst✝³ : AddCommGroup M
inst✝² : Module R M
ι : Type u_1
inst✝¹ : Fintype ι
b : Basis ι R M
w : Set M
inst✝ : Fintype ↑w
s : span R w = ⊤
⊢ span R (range Subtype.val) = ⊤
Theorem: FirstOrder.Language.Structure.FG.range
File: Mathlib/ModelTheory/FinitelyGenerated.lean

tactic: rw [Hom.range_eq_map]
state_before: L : Language
M : Type u_4
inst✝¹ : Structure L M
N : Type u_1
inst✝ : Structure L N
h : FG L M
f : M →[L] N
⊢ Substructure.FG (Hom.range f)

tactic: exact (fg_def.1 h).map f
state_before: L : Language
M : Type u_4
inst✝¹ : Structure L M
N : Type u_1
inst✝ : Structure L N
h : FG L M
f : M →[L] N
⊢ Substructure.FG (map f ⊤)
Theorem: Int.ediv_self
File: Std/Data/Int/DivMod.lean

tactic: have := Int.mul_ediv_cancel 1 H
state_before: a : Int
H : a ≠ 0
⊢ a / a = 1

tactic: rwa [Int.one_mul] at this
state_before: a : Int
H : a ≠ 0
this : 1 * a / a = 1
⊢ a / a = 1