tasksource/leandojo huggingface dataset:
Theorem: SimpleGraph.Walk.support_bypass_subset
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: simp!
state_before: case nil
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
inst✝ : DecidableEq V
u v u✝ : V
⊢ support (bypass nil) ⊆ support nil

tactic: simp! only
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
inst✝ : DecidableEq V
u v u✝ v✝ w✝ : V
h✝ : Adj G u✝ v✝
p✝ : Walk G v✝ w✝
ih : support (bypass p✝) ⊆ support p✝
⊢ support (bypass (cons h✝ p✝)) ⊆ support (cons h✝ p✝)

tactic: split_ifs
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
inst✝ : DecidableEq V
u v u✝ v✝ w✝ : V
h✝ : Adj G u✝ v✝
p✝ : Walk G v✝ w✝
ih : support (bypass p✝) ⊆ support p✝
⊢ support (if hs : u✝ ∈ support (bypass p✝) then dropUntil (bypass p✝) u✝ hs else cons h✝ (bypass p✝)) ⊆
    u✝ :: support p✝

tactic: apply List.Subset.trans (support_dropUntil_subset _ _)
state_before: case cons.inl
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
inst✝ : DecidableEq V
u v u✝ v✝ w✝ : V
h✝¹ : Adj G u✝ v✝
p✝ : Walk G v✝ w✝
ih : support (bypass p✝) ⊆ support p✝
h✝ : u✝ ∈ support (bypass p✝)
⊢ support (dropUntil (bypass p✝) u✝ h✝) ⊆ u✝ :: support p✝

tactic: apply List.subset_cons_of_subset
state_before: case cons.inl
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
inst✝ : DecidableEq V
u v u✝ v✝ w✝ : V
h✝¹ : Adj G u✝ v✝
p✝ : Walk G v✝ w✝
ih : support (bypass p✝) ⊆ support p✝
h✝ : u✝ ∈ support (bypass p✝)
⊢ support (bypass p✝) ⊆ u✝ :: support p✝

tactic: assumption
state_before: case cons.inl.a
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
inst✝ : DecidableEq V
u v u✝ v✝ w✝ : V
h✝¹ : Adj G u✝ v✝
p✝ : Walk G v✝ w✝
ih : support (bypass p✝) ⊆ support p✝
h✝ : u✝ ∈ support (bypass p✝)
⊢ support (bypass p✝) ⊆ support p✝

tactic: rw [support_cons]
state_before: case cons.inr
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
inst✝ : DecidableEq V
u v u✝ v✝ w✝ : V
h✝¹ : Adj G u✝ v✝
p✝ : Walk G v✝ w✝
ih : support (bypass p✝) ⊆ support p✝
h✝ : ¬u✝ ∈ support (bypass p✝)
⊢ support (cons h✝¹ (bypass p✝)) ⊆ u✝ :: support p✝

tactic: apply List.cons_subset_cons
state_before: case cons.inr
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
inst✝ : DecidableEq V
u v u✝ v✝ w✝ : V
h✝¹ : Adj G u✝ v✝
p✝ : Walk G v✝ w✝
ih : support (bypass p✝) ⊆ support p✝
h✝ : ¬u✝ ∈ support (bypass p✝)
⊢ u✝ :: support (bypass p✝) ⊆ u✝ :: support p✝

tactic: assumption
state_before: case cons.inr.s
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
inst✝ : DecidableEq V
u v u✝ v✝ w✝ : V
h✝¹ : Adj G u✝ v✝
p✝ : Walk G v✝ w✝
ih : support (bypass p✝) ⊆ support p✝
h✝ : ¬u✝ ∈ support (bypass p✝)
⊢ support (bypass p✝) ⊆ support p✝
Theorem: Set.Ioc_diff_Ioi
File: Mathlib/Data/Set/Intervals/Basic.lean

tactic: simp (config := { contextual := true }) [iff_def]
state_before: α : Type u_1
β : Type ?u.197772
inst✝¹ : LinearOrder α
inst✝ : LinearOrder β
f : α → β
a a₁ a₂ b b₁ b₂ c d : α
⊢ ∀ (x : α), x ∈ Ioc a b \ Ioi c ↔ x ∈ Ioc a (min b c)
Theorem: CategoryTheory.Subobject.mk_le_of_comm
File: Mathlib/CategoryTheory/Subobject/Basic.lean

tactic: simp [w]
state_before: C : Type u₁
inst✝² : Category C
X✝ Y Z : C
D : Type u₂
inst✝¹ : Category D
B A : C
X : Subobject B
f : A ⟶ B
inst✝ : Mono f
g : A ⟶ underlying.obj X
w : g ≫ arrow X = f
⊢ ((underlyingIso f).hom ≫ g) ≫ arrow X = arrow (mk f)
Theorem: Stream'.mem_interleave_right
File: Mathlib/Data/Stream/Init.lean

tactic: rw [h, nth_interleave_right]
state_before: α : Type u
β : Type v
δ : Type w
a : α
s₁ s₂ : Stream' α
x✝ : a ∈ s₂
n : ℕ
h : (fun b => a = b) (nth s₂ n)
⊢ (fun b => a = b) (nth (s₁ ⋈ s₂) (2 * n + 1))
Theorem: Finsupp.some_add
File: Mathlib/Data/Finsupp/Basic.lean

tactic: ext
state_before: α : Type u_2
β : Type ?u.319969
γ : Type ?u.319972
ι : Type ?u.319975
M : Type u_1
M' : Type ?u.319981
N : Type ?u.319984
P : Type ?u.319987
G : Type ?u.319990
H : Type ?u.319993
R : Type ?u.319996
S : Type ?u.319999
inst✝ : AddCommMonoid M
f g : Option α →₀ M
⊢ some (f + g) = some f + some g

tactic: simp
state_before: case h
α : Type u_2
β : Type ?u.319969
γ : Type ?u.319972
ι : Type ?u.319975
M : Type u_1
M' : Type ?u.319981
N : Type ?u.319984
P : Type ?u.319987
G : Type ?u.319990
H : Type ?u.319993
R : Type ?u.319996
S : Type ?u.319999
inst✝ : AddCommMonoid M
f g : Option α →₀ M
a✝ : α
⊢ ↑(some (f + g)) a✝ = ↑(some f + some g) a✝
Theorem: List.head!_mem_head?
File: Mathlib/Data/List/Basic.lean

tactic: contradiction
state_before: ι : Type ?u.44039
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
inst✝ : Inhabited α
h : [] ≠ []
⊢ head! [] ∈ head? []
Theorem: PolyEquivTensor.toFunLinear_mul_tmul_mul_aux_2
File: Mathlib/RingTheory/PolynomialAlgebra.lean

tactic: simp_rw [mul_assoc, Algebra.commutes, ← Finset.mul_sum, mul_assoc, ← Finset.mul_sum]
state_before: R : Type u_1
A : Type u_2
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
k : ℕ
a₁ a₂ : A
p₁ p₂ : R[X]
⊢ a₁ * a₂ * ↑(algebraMap R A) (coeff (p₁ * p₂) k) =
    Finset.sum (Finset.Nat.antidiagonal k) fun x =>
      a₁ * ↑(algebraMap R A) (coeff p₁ x.fst) * (a₂ * ↑(algebraMap R A) (coeff p₂ x.snd))

tactic: congr
state_before: R : Type u_1
A : Type u_2
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
k : ℕ
a₁ a₂ : A
p₁ p₂ : R[X]
⊢ a₁ * (a₂ * ↑(algebraMap R A) (coeff (p₁ * p₂) k)) =
    a₁ *
      (a₂ *
        Finset.sum (Finset.Nat.antidiagonal k) fun x =>
          ↑(algebraMap R A) (coeff p₂ x.snd) * ↑(algebraMap R A) (coeff p₁ x.fst))

tactic: simp_rw [Algebra.commutes (coeff p₂ _), coeff_mul, map_sum, RingHom.map_mul]
state_before: case e_a.e_a
R : Type u_1
A : Type u_2
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
k : ℕ
a₁ a₂ : A
p₁ p₂ : R[X]
⊢ ↑(algebraMap R A) (coeff (p₁ * p₂) k) =
    Finset.sum (Finset.Nat.antidiagonal k) fun x =>
      ↑(algebraMap R A) (coeff p₂ x.snd) * ↑(algebraMap R A) (coeff p₁ x.fst)
Theorem: SignType.neg_eq_self_iff
File: Mathlib/Data/Sign.lean

tactic: cases a <;> decide
state_before: a : SignType
⊢ -a = a ↔ a = 0
Theorem: CategoryTheory.Subobject.factors_add
File: Mathlib/CategoryTheory/Subobject/FactorThru.lean

tactic: simp
state_before: C : Type u₁
inst✝² : Category C
X✝ Y✝ Z : C
D : Type u₂
inst✝¹ : Category D
inst✝ : Preadditive C
X Y : C
P : Subobject Y
f g : X ⟶ Y
wf : Factors P f
wg : Factors P g
⊢ (factorThru P f wf + factorThru P g wg) ≫ MonoOver.arrow (representative.obj P) = f + g
Theorem: Finset.all_card_le_biUnion_card_iff_existsInjective'
File: Mathlib/Combinatorics/Hall/Finite.lean

tactic: constructor
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Finite ι
inst✝ : DecidableEq α
t : ι → Finset α
⊢ (∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)) ↔ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x

tactic: exact HallMarriageTheorem.hall_hard_inductive
state_before: case mp
ι : Type u_1
α : Type u_2
inst✝¹ : Finite ι
inst✝ : DecidableEq α
t : ι → Finset α
⊢ (∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)) → ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x

tactic: rintro ⟨f, hf₁, hf₂⟩ s
state_before: case mpr
ι : Type u_1
α : Type u_2
inst✝¹ : Finite ι
inst✝ : DecidableEq α
t : ι → Finset α
⊢ (∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x) → ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)

tactic: rw [← card_image_of_injective s hf₁]
state_before: case mpr.intro.intro
ι : Type u_1
α : Type u_2
inst✝¹ : Finite ι
inst✝ : DecidableEq α
t : ι → Finset α
f : ι → α
hf₁ : Function.Injective f
hf₂ : ∀ (x : ι), f x ∈ t x
s : Finset ι
⊢ card s ≤ card (Finset.biUnion s t)

tactic: apply card_le_of_subset
state_before: case mpr.intro.intro
ι : Type u_1
α : Type u_2
inst✝¹ : Finite ι
inst✝ : DecidableEq α
t : ι → Finset α
f : ι → α
hf₁ : Function.Injective f
hf₂ : ∀ (x : ι), f x ∈ t x
s : Finset ι
⊢ card (image f s) ≤ card (Finset.biUnion s t)

tactic: intro
state_before: case mpr.intro.intro.a
ι : Type u_1
α : Type u_2
inst✝¹ : Finite ι
inst✝ : DecidableEq α
t : ι → Finset α
f : ι → α
hf₁ : Function.Injective f
hf₂ : ∀ (x : ι), f x ∈ t x
s : Finset ι
⊢ image f s ⊆ Finset.biUnion s t

tactic: rw [mem_image, mem_biUnion]
state_before: case mpr.intro.intro.a
ι : Type u_1
α : Type u_2
inst✝¹ : Finite ι
inst✝ : DecidableEq α
t : ι → Finset α
f : ι → α
hf₁ : Function.Injective f
hf₂ : ∀ (x : ι), f x ∈ t x
s : Finset ι
a✝ : α
⊢ a✝ ∈ image f s → a✝ ∈ Finset.biUnion s t

tactic: rintro ⟨x, hx, rfl⟩
state_before: case mpr.intro.intro.a
ι : Type u_1
α : Type u_2
inst✝¹ : Finite ι
inst✝ : DecidableEq α
t : ι → Finset α
f : ι → α
hf₁ : Function.Injective f
hf₂ : ∀ (x : ι), f x ∈ t x
s : Finset ι
a✝ : α
⊢ (∃ a, a ∈ s ∧ f a = a✝) → ∃ a, a ∈ s ∧ a✝ ∈ t a

tactic: exact ⟨x, hx, hf₂ x⟩
state_before: case mpr.intro.intro.a.intro.intro
ι : Type u_1
α : Type u_2
inst✝¹ : Finite ι
inst✝ : DecidableEq α
t : ι → Finset α
f : ι → α
hf₁ : Function.Injective f
hf₂ : ∀ (x : ι), f x ∈ t x
s : Finset ι
x : ι
hx : x ∈ s
⊢ ∃ a, a ∈ s ∧ f x ∈ t a
Theorem: zero_le_mul_right
File: Mathlib/Algebra/Order/Ring/Defs.lean

tactic: simpa using (mul_le_mul_right h : 0 * c ≤ b * c ↔ 0 ≤ b)
state_before: α : Type u
β : Type ?u.104443
inst✝ : LinearOrderedSemiring α
a b c d : α
h : 0 < c
⊢ 0 ≤ b * c ↔ 0 ≤ b
Theorem: CompleteLattice.SetIndependent.disjoint_sSup
File: Mathlib/Order/SupIndep.lean

tactic: have := (hs.mono <| insert_subset.mpr ⟨hx, hy⟩) (mem_insert x _)
state_before: α : Type u_1
β : Type ?u.26451
ι : Type ?u.26454
ι' : Type ?u.26457
inst✝ : CompleteLattice α
s : Set α
hs : SetIndependent s
x : α
y : Set α
hx : x ∈ s
hy : y ⊆ s
hxy : ¬x ∈ y
⊢ Disjoint x (sSup y)

tactic: rw [insert_diff_of_mem _ (mem_singleton _), diff_singleton_eq_self hxy] at this
state_before: α : Type u_1
β : Type ?u.26451
ι : Type ?u.26454
ι' : Type ?u.26457
inst✝ : CompleteLattice α
s : Set α
hs : SetIndependent s
x : α
y : Set α
hx : x ∈ s
hy : y ⊆ s
hxy : ¬x ∈ y
this : Disjoint x (sSup (insert x y \ {x}))
⊢ Disjoint x (sSup y)

tactic: exact this
state_before: α : Type u_1
β : Type ?u.26451
ι : Type ?u.26454
ι' : Type ?u.26457
inst✝ : CompleteLattice α
s : Set α
hs : SetIndependent s
x : α
y : Set α
hx : x ∈ s
hy : y ⊆ s
hxy : ¬x ∈ y
this : Disjoint x (sSup y)
⊢ Disjoint x (sSup y)
Theorem: AffineSubspace.eq_univ_of_subsingleton_span_eq_top
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: obtain ⟨p, hp⟩ := AffineSubspace.nonempty_of_affineSpan_eq_top k V P h₂
state_before: k : Type u_2
V : Type u_3
P : Type u_1
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s : Set P
h₁ : Set.Subsingleton s
h₂ : affineSpan k s = ⊤
⊢ s = univ

tactic: have : s = {p} := Subset.antisymm (fun q hq => h₁ hq hp) (by simp [hp])
state_before: case intro
k : Type u_2
V : Type u_3
P : Type u_1
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s : Set P
h₁ : Set.Subsingleton s
h₂ : affineSpan k s = ⊤
p : P
hp : p ∈ s
⊢ s = univ

tactic: rw [this, eq_comm, ← subsingleton_iff_singleton (mem_univ p), subsingleton_univ_iff]
state_before: case intro
k : Type u_2
V : Type u_3
P : Type u_1
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s : Set P
h₁ : Set.Subsingleton s
h₂ : affineSpan k s = ⊤
p : P
hp : p ∈ s
this : s = {p}
⊢ s = univ

tactic: exact subsingleton_of_subsingleton_span_eq_top h₁ h₂
state_before: case intro
k : Type u_2
V : Type u_3
P : Type u_1
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s : Set P
h₁ : Set.Subsingleton s
h₂ : affineSpan k s = ⊤
p : P
hp : p ∈ s
this : s = {p}
⊢ Subsingleton P

tactic: simp [hp]
state_before: k : Type u_2
V : Type u_3
P : Type u_1
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
p₁ p₂ : P
s : Set P
h₁ : Set.Subsingleton s
h₂ : affineSpan k s = ⊤
p : P
hp : p ∈ s
⊢ {p} ⊆ s
Theorem: Stream'.WSeq.productive_congr
File: Mathlib/Data/Seq/WSeq.lean

tactic: simp only [productive_iff]
state_before: α : Type u
β : Type v
γ : Type w
s t : WSeq α
h : s ~ʷ t
⊢ Productive s ↔ Productive t

tactic: exact forall_congr' fun n => terminates_congr <| get?_congr h _
state_before: α : Type u
β : Type v
γ : Type w
s t : WSeq α
h : s ~ʷ t
⊢ (∀ (n : ℕ), Terminates (get? s n)) ↔ ∀ (n : ℕ), Terminates (get? t n)
Theorem: MeasureTheory.nndist_integral_add_measure_le_lintegral
File: Mathlib/MeasureTheory/Integral/Bochner.lean

tactic: rw [integral_add_measure h₁ h₂, nndist_comm, nndist_eq_nnnorm, add_sub_cancel']
state_before: α : Type u_2
E : Type u_1
F : Type ?u.1315198
𝕜 : Type ?u.1315201
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace ℝ E
inst✝⁸ : CompleteSpace E
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
f g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type ?u.1317892
inst✝¹ : TopologicalSpace X
inst✝ : FirstCountableTopology X
ν : Measure α
h₁ : Integrable f
h₂ : Integrable f
⊢ ↑(nndist (∫ (x : α), f x ∂μ) (∫ (x : α), f x ∂μ + ν)) ≤ ∫⁻ (x : α), ↑‖f x‖₊ ∂ν

tactic: exact ennnorm_integral_le_lintegral_ennnorm _
state_before: α : Type u_2
E : Type u_1
F : Type ?u.1315198
𝕜 : Type ?u.1315201
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace ℝ E
inst✝⁸ : CompleteSpace E
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : SMulCommClass ℝ 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
f g : α → E
m : MeasurableSpace α
μ : Measure α
X : Type ?u.1317892
inst✝¹ : TopologicalSpace X
inst✝ : FirstCountableTopology X
ν : Measure α
h₁ : Integrable f
h₂ : Integrable f
⊢ ↑‖∫ (x : α), f x ∂ν‖₊ ≤ ∫⁻ (x : α), ↑‖f x‖₊ ∂ν
Theorem: Set.image_update_Ioo_right
File: Mathlib/Data/Set/Intervals/Pi.lean

tactic: simpa using image_update_Ioo f i (f i) b
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → PartialOrder (α i)
f : (i : ι) → α i
i : ι
b : α i
⊢ update f i '' Ioo (f i) b = Ioo f (update f i b)
Theorem: SubMulAction.smul_of_tower_mem
File: Mathlib/GroupTheory/GroupAction/SubMulAction.lean

tactic: rw [← one_smul R x, ← smul_assoc]
state_before: S : Type u'
T : Type u''
R : Type u
M : Type v
inst✝⁴ : Monoid R
inst✝³ : MulAction R M
inst✝² : SMul S R
inst✝¹ : SMul S M
inst✝ : IsScalarTower S R M
p : SubMulAction R M
s : S
x : M
h : x ∈ p
⊢ s • x ∈ p

tactic: exact p.smul_mem _ h
state_before: S : Type u'
T : Type u''
R : Type u
M : Type v
inst✝⁴ : Monoid R
inst✝³ : MulAction R M
inst✝² : SMul S R
inst✝¹ : SMul S M
inst✝ : IsScalarTower S R M
p : SubMulAction R M
s : S
x : M
h : x ∈ p
⊢ (s • 1) • x ∈ p
Theorem: isAtomistic_dual_iff_isCoatomistic
File: Mathlib/Order/Atoms.lean

tactic: apply h.eq_sSup_atoms
state_before: α : Type u_1
β : Type ?u.18041
inst✝ : CompleteLattice α
h : IsAtomistic αᵒᵈ
b : α
⊢ ∃ s, b = sInf s ∧ ∀ (a : α), a ∈ s → IsCoatom a

tactic: apply h.eq_sInf_coatoms
state_before: α : Type u_1
β : Type ?u.18041
inst✝ : CompleteLattice α
h : IsCoatomistic α
b : αᵒᵈ
⊢ ∃ s, b = sSup s ∧ ∀ (a : αᵒᵈ), a ∈ s → IsAtom a
Theorem: Stream'.WSeq.exists_of_mem_bind
File: Mathlib/Data/Seq/WSeq.lean

tactic: rwa [e]
state_before: α : Type u
β : Type v
γ : Type w
s : WSeq α
f : α → WSeq β
b : β
h : b ∈ bind s f
t : WSeq β
tm : t ∈ map f s
bt : b ∈ t
a : α
as : a ∈ s
e : f a = t
⊢ b ∈ f a
Theorem: isometry_iff_nndist_eq
File: Mathlib/Topology/MetricSpace/Isometry.lean

tactic: simp only [Isometry, edist_nndist, ENNReal.coe_eq_coe]
state_before: ι : Type ?u.88
α : Type u
β : Type v
γ : Type w
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
f : α → β
⊢ Isometry f ↔ ∀ (x y : α), nndist (f x) (f y) = nndist x y
Theorem: Filter.top_mul_of_one_le
File: Mathlib/Order/Filter/Pointwise.lean

tactic: refine' top_le_iff.1 fun s => _
state_before: F : Type ?u.264796
α : Type u_1
β : Type ?u.264802
γ : Type ?u.264805
δ : Type ?u.264808
ε : Type ?u.264811
inst✝ : Monoid α
f g : Filter α
s : Set α
a : α
m n : ℕ
hf : 1 ≤ f
⊢ ⊤ * f = ⊤

tactic: simp only [mem_mul, mem_top, exists_and_left, exists_eq_left]
state_before: F : Type ?u.264796
α : Type u_1
β : Type ?u.264802
γ : Type ?u.264805
δ : Type ?u.264808
ε : Type ?u.264811
inst✝ : Monoid α
f g : Filter α
s✝ : Set α
a : α
m n : ℕ
hf : 1 ≤ f
s : Set α
⊢ s ∈ ⊤ * f → s ∈ ⊤

tactic: rintro ⟨t, ht, hs⟩
state_before: F : Type ?u.264796
α : Type u_1
β : Type ?u.264802
γ : Type ?u.264805
δ : Type ?u.264808
ε : Type ?u.264811
inst✝ : Monoid α
f g : Filter α
s✝ : Set α
a : α
m n : ℕ
hf : 1 ≤ f
s : Set α
⊢ (∃ x, x ∈ f ∧ univ * x ⊆ s) → s = univ

tactic: rwa [univ_mul_of_one_mem (mem_one.1 <| hf ht), univ_subset_iff] at hs
state_before: case intro.intro
F : Type ?u.264796
α : Type u_1
β : Type ?u.264802
γ : Type ?u.264805
δ : Type ?u.264808
ε : Type ?u.264811
inst✝ : Monoid α
f g : Filter α
s✝ : Set α
a : α
m n : ℕ
hf : 1 ≤ f
s t : Set α
ht : t ∈ f
hs : univ * t ⊆ s
⊢ s = univ
Theorem: FirstOrder.Language.ElementaryEmbedding.map_sentence
File: Mathlib/ModelTheory/ElementaryMaps.lean

tactic: rw [Sentence.Realize, Sentence.Realize, ← f.map_formula, Unique.eq_default (f ∘ default)]
state_before: L : Language
M : Type u_3
N : Type u_4
P : Type ?u.239981
Q : Type ?u.239984
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
inst✝ : Structure L Q
f : M ↪ₑ[L] N
φ : Sentence L
⊢ M ⊨ φ ↔ N ⊨ φ
Theorem: IsGroupHom.trivial_ker_of_injective
File: Mathlib/Deprecated/Subgroup.lean

tactic: suffices f x = f 1 by simpa using h this
state_before: G : Type u_1
H : Type u_2
A : Type ?u.113567
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
h : Injective f
x : G
hx : x ∈ ker f
⊢ x ∈ IsSubgroup.trivial G

tactic: simp [hf.map_one]
state_before: G : Type u_1
H : Type u_2
A : Type ?u.113567
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
h : Injective f
x : G
hx : x ∈ ker f
⊢ f x = f 1

tactic: rwa [mem_ker] at hx
state_before: G : Type u_1
H : Type u_2
A : Type ?u.113567
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
h : Injective f
x : G
hx : x ∈ ker f
⊢ f x = 1

tactic: simpa using h this
state_before: G : Type u_1
H : Type u_2
A : Type ?u.113567
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
h : Injective f
x : G
hx : x ∈ ker f
this : f x = f 1
⊢ x ∈ IsSubgroup.trivial G

tactic: simp (config := { contextual := true }) [mem_ker, hf.map_one]
state_before: G : Type u_1
H : Type u_2
A : Type ?u.113567
a a₁ a₂ b c : G
inst✝¹ : Group G
inst✝ : Group H
f : G → H
hf : IsGroupHom f
h : Injective f
x : G
⊢ x ∈ IsSubgroup.trivial G → x ∈ ker f
Theorem: Set.image_iInter₂
File: Mathlib/Data/Set/Lattice.lean

tactic: simp_rw [image_iInter hf]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.191070
ι : Sort u_3
ι' : Sort ?u.191076
ι₂ : Sort ?u.191079
κ : ι → Sort u_4
κ₁ : ι → Sort ?u.191089
κ₂ : ι → Sort ?u.191094
κ' : ι' → Sort ?u.191099
f : α → β
hf : Bijective f
s : (i : ι) → κ i → Set α
⊢ (f '' ⋂ (i : ι) (j : κ i), s i j) = ⋂ (i : ι) (j : κ i), f '' s i j
Theorem: Finset.pimage_empty
File: Mathlib/Data/Finset/PImage.lean

tactic: ext
state_before: α : Type u_2
β : Type u_1
inst✝² : DecidableEq β
f g : α →. β
inst✝¹ : (x : α) → Decidable (f x).Dom
inst✝ : (x : α) → Decidable (g x).Dom
s t : Finset α
b : β
⊢ pimage f ∅ = ∅

tactic: simp
state_before: case a
α : Type u_2
β : Type u_1
inst✝² : DecidableEq β
f g : α →. β
inst✝¹ : (x : α) → Decidable (f x).Dom
inst✝ : (x : α) → Decidable (g x).Dom
s t : Finset α
b a✝ : β
⊢ a✝ ∈ pimage f ∅ ↔ a✝ ∈ ∅
Theorem: Fintype.card_subtype_or_disjoint
File: Mathlib/Data/Fintype/Sum.lean

tactic: classical
  convert Fintype.card_congr (subtypeOrEquiv p q h)
  simp
state_before: α : Type u_1
β : Type ?u.15359
p q : α → Prop
h : Disjoint p q
inst✝² : Fintype { x // p x }
inst✝¹ : Fintype { x // q x }
inst✝ : Fintype { x // p x ∨ q x }
⊢ card { x // p x ∨ q x } = card { x // p x } + card { x // q x }

tactic: convert Fintype.card_congr (subtypeOrEquiv p q h)
state_before: α : Type u_1
β : Type ?u.15359
p q : α → Prop
h : Disjoint p q
inst✝² : Fintype { x // p x }
inst✝¹ : Fintype { x // q x }
inst✝ : Fintype { x // p x ∨ q x }
⊢ card { x // p x ∨ q x } = card { x // p x } + card { x // q x }

tactic: simp
state_before: case h.e'_3
α : Type u_1
β : Type ?u.15359
p q : α → Prop
h : Disjoint p q
inst✝² : Fintype { x // p x }
inst✝¹ : Fintype { x // q x }
inst✝ : Fintype { x // p x ∨ q x }
⊢ card { x // p x } + card { x // q x } = card ({ x // p x } ⊕ { x // q x })
Theorem: ContinuousLinearEquiv.comp_right_differentiableOn_iff
File: Mathlib/Analysis/Calculus/FDeriv/Equiv.lean

tactic: refine' ⟨fun H y hy => _, fun H y hy => iso.comp_right_differentiableWithinAt_iff.2 (H _ hy)⟩
state_before: 𝕜 : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_1
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.174165
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s✝ t : Set E
L L₁ L₂ : Filter E
iso : E ≃L[𝕜] F
f : F → G
s : Set F
⊢ DifferentiableOn 𝕜 (f ∘ ↑iso) (↑iso ⁻¹' s) ↔ DifferentiableOn 𝕜 f s

tactic: rw [← iso.apply_symm_apply y, ← comp_right_differentiableWithinAt_iff]
state_before: 𝕜 : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_1
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.174165
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s✝ t : Set E
L L₁ L₂ : Filter E
iso : E ≃L[𝕜] F
f : F → G
s : Set F
H : DifferentiableOn 𝕜 (f ∘ ↑iso) (↑iso ⁻¹' s)
y : F
hy : y ∈ s
⊢ DifferentiableWithinAt 𝕜 f s y

tactic: apply H
state_before: 𝕜 : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_1
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.174165
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s✝ t : Set E
L L₁ L₂ : Filter E
iso : E ≃L[𝕜] F
f : F → G
s : Set F
H : DifferentiableOn 𝕜 (f ∘ ↑iso) (↑iso ⁻¹' s)
y : F
hy : y ∈ s
⊢ DifferentiableWithinAt 𝕜 (f ∘ ↑iso) (↑iso ⁻¹' s) (↑(ContinuousLinearEquiv.symm iso) y)

tactic: simpa only [mem_preimage, apply_symm_apply] using hy
state_before: case a
𝕜 : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_3
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_1
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.174165
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s✝ t : Set E
L L₁ L₂ : Filter E
iso : E ≃L[𝕜] F
f : F → G
s : Set F
H : DifferentiableOn 𝕜 (f ∘ ↑iso) (↑iso ⁻¹' s)
y : F
hy : y ∈ s
⊢ ↑(ContinuousLinearEquiv.symm iso) y ∈ ↑iso ⁻¹' s
Theorem: Matrix.mulVec_neg
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type ?u.909484
m : Type u_2
n : Type u_1
o : Type ?u.909493
m' : o → Type ?u.909498
n' : o → Type ?u.909503
R : Type ?u.909506
S : Type ?u.909509
α : Type v
β : Type w
γ : Type ?u.909516
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : Fintype n
v : n → α
A : Matrix m n α
⊢ mulVec A (-v) = -mulVec A v

tactic: apply dotProduct_neg
state_before: case h
l : Type ?u.909484
m : Type u_2
n : Type u_1
o : Type ?u.909493
m' : o → Type ?u.909498
n' : o → Type ?u.909503
R : Type ?u.909506
S : Type ?u.909509
α : Type v
β : Type w
γ : Type ?u.909516
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : Fintype n
v : n → α
A : Matrix m n α
x✝ : m
⊢ mulVec A (-v) x✝ = (-mulVec A v) x✝