tasksource/leandojo huggingface dataset:
Theorem: Equiv.optionCongr_swap
File: Mathlib/GroupTheory/Perm/Option.lean

tactic: ext (_ | i)
state_before: α : Type u_1
inst✝ : DecidableEq α
x y : α
⊢ optionCongr (swap x y) = swap (some x) (some y)

tactic: simp [swap_apply_of_ne_of_ne]
state_before: case H.none.a
α : Type u_1
inst✝ : DecidableEq α
x y a✝ : α
⊢ a✝ ∈ ↑(optionCongr (swap x y)) none ↔ a✝ ∈ ↑(swap (some x) (some y)) none

tactic: by_cases hx : i = x
state_before: case H.some.a
α : Type u_1
inst✝ : DecidableEq α
x y i a✝ : α
⊢ a✝ ∈ ↑(optionCongr (swap x y)) (some i) ↔ a✝ ∈ ↑(swap (some x) (some y)) (some i)

tactic: simp [hx, swap_apply_of_ne_of_ne]
state_before: case pos
α : Type u_1
inst✝ : DecidableEq α
x y i a✝ : α
hx : i = x
⊢ a✝ ∈ ↑(optionCongr (swap x y)) (some i) ↔ a✝ ∈ ↑(swap (some x) (some y)) (some i)

case neg
α : Type u_1
inst✝ : DecidableEq α
x y i a✝ : α
hx : ¬i = x
⊢ a✝ ∈ ↑(optionCongr (swap x y)) (some i) ↔ a✝ ∈ ↑(swap (some x) (some y)) (some i)

tactic: by_cases hy : i = y <;> simp [hx, hy, swap_apply_of_ne_of_ne]
state_before: case neg
α : Type u_1
inst✝ : DecidableEq α
x y i a✝ : α
hx : ¬i = x
⊢ a✝ ∈ ↑(optionCongr (swap x y)) (some i) ↔ a✝ ∈ ↑(swap (some x) (some y)) (some i)
Theorem: Stream'.head_drop
File: Mathlib/Data/Stream/Init.lean

tactic: simp
state_before: α : Type u
β : Type v
δ : Type w
a : Stream' α
n : ℕ
⊢ head (drop n a) = nth a n
Theorem: Int.card_fintype_Ioc
File: Mathlib/Data/Int/Interval.lean

tactic: rw [← card_Ioc, Fintype.card_ofFinset]
state_before: a b : ℤ
⊢ Fintype.card ↑(Set.Ioc a b) = toNat (b - a)
Theorem: Set.image2_assoc
File: Mathlib/Data/Set/NAry.lean

tactic: simp only [image2_image2_left, image2_image2_right, h_assoc]
state_before: α : Type u_4
α' : Type ?u.39768
β : Type u_5
β' : Type ?u.39774
γ : Type u_3
γ' : Type ?u.39780
δ : Type u_2
δ' : Type ?u.39786
ε : Type u_1
ε' : Type u_6
ζ : Type ?u.39795
ζ' : Type ?u.39798
ν : Type ?u.39801
f✝ f'✝ : α → β → γ
g✝ g'✝ : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
f : δ → γ → ε
g : α → β → δ
f' : α → ε' → ε
g' : β → γ → ε'
h_assoc : ∀ (a : α) (b : β) (c : γ), f (g a b) c = f' a (g' b c)
⊢ image2 f (image2 g s t) u = image2 f' s (image2 g' t u)
Theorem: Fin.subsingleton_iff_le_one
File: Mathlib/Data/Fin/Basic.lean

tactic: rcases n with (_ | _ | n) <;>
simp [IsEmpty.instSubsingleton, Unique.instSubsingleton, ←Nat.one_eq_succ_zero, not_subsingleton]
state_before: n m : ℕ
⊢ Subsingleton (Fin n) ↔ n ≤ 1
Theorem: lt_mul_inv_iff_lt
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [← mul_lt_mul_iff_right b, one_mul, inv_mul_cancel_right]
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LT α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c : α
⊢ 1 < a * b⁻¹ ↔ b < a
Theorem: Dfinsupp.mapRange_comp
File: Mathlib/Data/Dfinsupp/Basic.lean

tactic: ext
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : (i : ι) → Zero (β i)
inst✝¹ : (i : ι) → Zero (β₁ i)
inst✝ : (i : ι) → Zero (β₂ i)
f : (i : ι) → β₁ i → β₂ i
f₂ : (i : ι) → β i → β₁ i
hf : ∀ (i : ι), f i 0 = 0
hf₂ : ∀ (i : ι), f₂ i 0 = 0
h : ∀ (i : ι), (f i ∘ f₂ i) 0 = 0
g : Π₀ (i : ι), β i
⊢ mapRange (fun i => f i ∘ f₂ i) h g = mapRange f hf (mapRange f₂ hf₂ g)

tactic: simp only [mapRange_apply]
state_before: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : (i : ι) → Zero (β i)
inst✝¹ : (i : ι) → Zero (β₁ i)
inst✝ : (i : ι) → Zero (β₂ i)
f : (i : ι) → β₁ i → β₂ i
f₂ : (i : ι) → β i → β₁ i
hf : ∀ (i : ι), f i 0 = 0
hf₂ : ∀ (i : ι), f₂ i 0 = 0
h : ∀ (i : ι), (f i ∘ f₂ i) 0 = 0
g : Π₀ (i : ι), β i
i✝ : ι
⊢ ↑(mapRange (fun i => f i ∘ f₂ i) h g) i✝ = ↑(mapRange f hf (mapRange f₂ hf₂ g)) i✝

tactic: rfl
state_before: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : (i : ι) → Zero (β i)
inst✝¹ : (i : ι) → Zero (β₁ i)
inst✝ : (i : ι) → Zero (β₂ i)
f : (i : ι) → β₁ i → β₂ i
f₂ : (i : ι) → β i → β₁ i
hf : ∀ (i : ι), f i 0 = 0
hf₂ : ∀ (i : ι), f₂ i 0 = 0
h : ∀ (i : ι), (f i ∘ f₂ i) 0 = 0
g : Π₀ (i : ι), β i
i✝ : ι
⊢ (f i✝ ∘ f₂ i✝) (↑g i✝) = f i✝ (f₂ i✝ (↑g i✝))
Theorem: Associates.factors_subsingleton
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: convert @factors_0 _ _ _ _ _
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝¹ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
inst✝ : Subsingleton α
a : Associates α
⊢ factors a = none
Theorem: iSup_apply
File: Mathlib/Order/CompleteLattice.lean

tactic: rw [iSup, sSup_apply, iSup, iSup, ← image_eq_range (fun f : ∀ i, β i => f a) (range f), ←
  range_comp]
state_before: α✝ : Type ?u.195005
β✝ : Type ?u.195008
β₂ : Type ?u.195011
γ : Type ?u.195014
ι✝ : Sort ?u.195017
ι' : Sort ?u.195020
κ : ι✝ → Sort ?u.195025
κ' : ι' → Sort ?u.195030
α : Type u_1
β : α → Type u_2
ι : Sort u_3
inst✝ : (i : α) → SupSet (β i)
f : ι → (a : α) → β a
a : α
⊢ iSup (fun i => f i) a = ⨆ (i : ι), f i a

tactic: rfl
state_before: α✝ : Type ?u.195005
β✝ : Type ?u.195008
β₂ : Type ?u.195011
γ : Type ?u.195014
ι✝ : Sort ?u.195017
ι' : Sort ?u.195020
κ : ι✝ → Sort ?u.195025
κ' : ι' → Sort ?u.195030
α : Type u_1
β : α → Type u_2
ι : Sort u_3
inst✝ : (i : α) → SupSet (β i)
f : ι → (a : α) → β a
a : α
⊢ sSup (range ((fun f => f a) ∘ f)) = sSup (range fun i => f i a)
Theorem: Dfinsupp.support_subtypeDomain
File: Mathlib/Data/Dfinsupp/Basic.lean

tactic: ext i
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
inst✝² : (i : ι) → Zero (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
p : ι → Prop
inst✝ : DecidablePred p
f : Π₀ (i : ι), β i
⊢ support (subtypeDomain p f) = Finset.subtype p (support f)

tactic: simp
state_before: case a
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
inst✝² : (i : ι) → Zero (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
p : ι → Prop
inst✝ : DecidablePred p
f : Π₀ (i : ι), β i
i : Subtype p
⊢ i ∈ support (subtypeDomain p f) ↔ i ∈ Finset.subtype p (support f)
Theorem: Ordinal.sub_zero
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simpa only [zero_add] using add_sub_cancel 0 a
state_before: α : Type ?u.131239
β : Type ?u.131242
γ : Type ?u.131245
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a : Ordinal
⊢ a - 0 = a
Theorem: PrimeSpectrum.mem_vanishingIdeal
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: rw [← SetLike.mem_coe, coe_vanishingIdeal, Set.mem_setOf_eq]
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
t : Set (PrimeSpectrum R)
f : R
⊢ f ∈ vanishingIdeal t ↔ ∀ (x : PrimeSpectrum R), x ∈ t → f ∈ x.asIdeal
Theorem: Real.logb_pos_iff_of_base_lt_one
File: Mathlib/Analysis/SpecialFunctions/Log/Base.lean

tactic: rw [← @logb_one b, logb_lt_logb_iff_of_base_lt_one b_pos b_lt_one zero_lt_one hx]
state_before: b x y : ℝ
b_pos : 0 < b
b_lt_one : b < 1
hx : 0 < x
⊢ 0 < logb b x ↔ x < 1
Theorem: Set.image_union_image_compl_eq_range
File: Mathlib/Data/Set/Image.lean

tactic: rw [← image_union, ← image_univ, ← union_compl_self]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.73141
ι : Sort ?u.73144
ι' : Sort ?u.73147
f✝ : ι → α
s t : Set α
f : α → β
⊢ f '' s ∪ f '' sᶜ = range f
Theorem: Subgroup.index_ne_zero_of_finite
File: Mathlib/GroupTheory/Index.lean

tactic: cases nonempty_fintype (G ⧸ H)
state_before: G : Type u_1
inst✝ : Group G
H K L : Subgroup G
hH : Finite (G ⧸ H)
⊢ index H ≠ 0

tactic: rw [index_eq_card]
state_before: case intro
G : Type u_1
inst✝ : Group G
H K L : Subgroup G
hH : Finite (G ⧸ H)
val✝ : Fintype (G ⧸ H)
⊢ index H ≠ 0

tactic: exact Fintype.card_ne_zero
state_before: case intro
G : Type u_1
inst✝ : Group G
H K L : Subgroup G
hH : Finite (G ⧸ H)
val✝ : Fintype (G ⧸ H)
⊢ Fintype.card (G ⧸ H) ≠ 0
Theorem: Decidable.exists_ne
File: Mathlib/Logic/Nontrivial.lean

tactic: rcases exists_pair_ne α with ⟨y, y', h⟩
state_before: α : Type u_1
β : Type ?u.142
inst✝¹ : Nontrivial α
inst✝ : DecidableEq α
x : α
⊢ ∃ y, y ≠ x

tactic: by_cases hx:x = y
state_before: case intro.intro
α : Type u_1
β : Type ?u.142
inst✝¹ : Nontrivial α
inst✝ : DecidableEq α
x y y' : α
h : y ≠ y'
⊢ ∃ y, y ≠ x

tactic: rw [← hx] at h
state_before: case pos
α : Type u_1
β : Type ?u.142
inst✝¹ : Nontrivial α
inst✝ : DecidableEq α
x y y' : α
h : y ≠ y'
hx : x = y
⊢ ∃ y, y ≠ x

tactic: exact ⟨y', h.symm⟩
state_before: case pos
α : Type u_1
β : Type ?u.142
inst✝¹ : Nontrivial α
inst✝ : DecidableEq α
x y y' : α
h : x ≠ y'
hx : x = y
⊢ ∃ y, y ≠ x

tactic: exact ⟨y, Ne.symm hx⟩
state_before: case neg
α : Type u_1
β : Type ?u.142
inst✝¹ : Nontrivial α
inst✝ : DecidableEq α
x y y' : α
h : y ≠ y'
hx : ¬x = y
⊢ ∃ y, y ≠ x
Theorem: nhds_le_uniformity
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: intro V V_in
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.84873
inst✝ : UniformSpace α
x : α
⊢ 𝓝 (x, x) ≤ 𝓤 α

tactic: rcases comp_symm_mem_uniformity_sets V_in with ⟨w, w_in, w_symm, w_sub⟩
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.84873
inst✝ : UniformSpace α
x : α
V : Set (α × α)
V_in : V ∈ 𝓤 α
⊢ V ∈ 𝓝 (x, x)

tactic: have : ball x w ×ˢ ball x w ∈ 𝓝 (x, x)
state_before: case intro.intro.intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.84873
inst✝ : UniformSpace α
x : α
V : Set (α × α)
V_in : V ∈ 𝓤 α
w : Set (α × α)
w_in : w ∈ 𝓤 α
w_symm : SymmetricRel w
w_sub : w ○ w ⊆ V
⊢ V ∈ 𝓝 (x, x)

tactic: apply mem_of_superset this
state_before: case intro.intro.intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.84873
inst✝ : UniformSpace α
x : α
V : Set (α × α)
V_in : V ∈ 𝓤 α
w : Set (α × α)
w_in : w ∈ 𝓤 α
w_symm : SymmetricRel w
w_sub : w ○ w ⊆ V
this : ball x w ×ˢ ball x w ∈ 𝓝 (x, x)
⊢ V ∈ 𝓝 (x, x)

tactic: rintro ⟨u, v⟩ ⟨u_in, v_in⟩
state_before: case intro.intro.intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.84873
inst✝ : UniformSpace α
x : α
V : Set (α × α)
V_in : V ∈ 𝓤 α
w : Set (α × α)
w_in : w ∈ 𝓤 α
w_symm : SymmetricRel w
w_sub : w ○ w ⊆ V
this : ball x w ×ˢ ball x w ∈ 𝓝 (x, x)
⊢ ball x w ×ˢ ball x w ⊆ V

tactic: exact w_sub (mem_comp_of_mem_ball w_symm u_in v_in)
state_before: case intro.intro.intro.mk.intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.84873
inst✝ : UniformSpace α
x : α
V : Set (α × α)
V_in : V ∈ 𝓤 α
w : Set (α × α)
w_in : w ∈ 𝓤 α
w_symm : SymmetricRel w
w_sub : w ○ w ⊆ V
this : ball x w ×ˢ ball x w ∈ 𝓝 (x, x)
u v : α
u_in : (u, v).fst ∈ ball x w
v_in : (u, v).snd ∈ ball x w
⊢ (u, v) ∈ V

tactic: rw [nhds_prod_eq]
state_before: case this
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.84873
inst✝ : UniformSpace α
x : α
V : Set (α × α)
V_in : V ∈ 𝓤 α
w : Set (α × α)
w_in : w ∈ 𝓤 α
w_symm : SymmetricRel w
w_sub : w ○ w ⊆ V
⊢ ball x w ×ˢ ball x w ∈ 𝓝 (x, x)

tactic: exact prod_mem_prod (ball_mem_nhds x w_in) (ball_mem_nhds x w_in)
state_before: case this
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.84873
inst✝ : UniformSpace α
x : α
V : Set (α × α)
V_in : V ∈ 𝓤 α
w : Set (α × α)
w_in : w ∈ 𝓤 α
w_symm : SymmetricRel w
w_sub : w ○ w ⊆ V
⊢ ball x w ×ˢ ball x w ∈ 𝓝 x ×ˢ 𝓝 x
Theorem: Multiset.rel_eq
File: Mathlib/Data/Multiset/Basic.lean

tactic: constructor
state_before: α : Type u_1
β : Type ?u.439191
γ : Type ?u.439194
δ : Type ?u.439197
r : α → β → Prop
p : γ → δ → Prop
s t : Multiset α
⊢ Rel (fun x x_1 => x = x_1) s t ↔ s = t

tactic: intro h
state_before: case mp
α : Type u_1
β : Type ?u.439191
γ : Type ?u.439194
δ : Type ?u.439197
r : α → β → Prop
p : γ → δ → Prop
s t : Multiset α
⊢ Rel (fun x x_1 => x = x_1) s t → s = t

tactic: induction h <;> simp [*]
state_before: case mp
α : Type u_1
β : Type ?u.439191
γ : Type ?u.439194
δ : Type ?u.439197
r : α → β → Prop
p : γ → δ → Prop
s t : Multiset α
h : Rel (fun x x_1 => x = x_1) s t
⊢ s = t

tactic: intro h
state_before: case mpr
α : Type u_1
β : Type ?u.439191
γ : Type ?u.439194
δ : Type ?u.439197
r : α → β → Prop
p : γ → δ → Prop
s t : Multiset α
⊢ s = t → Rel (fun x x_1 => x = x_1) s t

tactic: subst h
state_before: case mpr
α : Type u_1
β : Type ?u.439191
γ : Type ?u.439194
δ : Type ?u.439197
r : α → β → Prop
p : γ → δ → Prop
s t : Multiset α
h : s = t
⊢ Rel (fun x x_1 => x = x_1) s t

tactic: exact rel_eq_refl
state_before: case mpr
α : Type u_1
β : Type ?u.439191
γ : Type ?u.439194
δ : Type ?u.439197
r : α → β → Prop
p : γ → δ → Prop
s : Multiset α
⊢ Rel (fun x x_1 => x = x_1) s s
Theorem: CategoryTheory.Grothendieck.congr
File: Mathlib/CategoryTheory/Grothendieck.lean

tactic: subst h
state_before: C : Type ?u.16067
D : Type ?u.16070
inst✝¹ : Category C
inst✝ : Category D
F : C ⥤ Cat
X Y : Grothendieck F
f g : X ⟶ Y
h : f = g
⊢ (F.map f.base).obj X.fiber = (F.map g.base).obj X.fiber

tactic: rfl
state_before: C : Type ?u.16067
D : Type ?u.16070
inst✝¹ : Category C
inst✝ : Category D
F : C ⥤ Cat
X Y : Grothendieck F
f : X ⟶ Y
⊢ (F.map f.base).obj X.fiber = (F.map f.base).obj X.fiber

tactic: subst h
state_before: C : Type u_1
D : Type ?u.16070
inst✝¹ : Category C
inst✝ : Category D
F : C ⥤ Cat
X Y : Grothendieck F
f g : X ⟶ Y
h : f = g
⊢ f.fiber = eqToHom (_ : (F.map f.base).obj X.fiber = (F.map g.base).obj X.fiber) ≫ g.fiber

tactic: dsimp
state_before: C : Type u_1
D : Type ?u.16070
inst✝¹ : Category C
inst✝ : Category D
F : C ⥤ Cat
X Y : Grothendieck F
f : X ⟶ Y
⊢ f.fiber = eqToHom (_ : (F.map f.base).obj X.fiber = (F.map f.base).obj X.fiber) ≫ f.fiber

tactic: simp
state_before: C : Type u_1
D : Type ?u.16070
inst✝¹ : Category C
inst✝ : Category D
F : C ⥤ Cat
X Y : Grothendieck F
f : X ⟶ Y
⊢ f.fiber = 𝟙 ((F.map f.base).obj X.fiber) ≫ f.fiber
Theorem: FirstOrder.Language.Theory.ModelsBoundedFormula.realize_sentence
File: Mathlib/ModelTheory/Satisfiability.lean

tactic: rw [models_iff_not_satisfiable] at h
state_before: L : Language
T : Theory L
α : Type w
n : ℕ
φ : Sentence L
h : T ⊨ᵇ φ
M : Type u_1
inst✝² : Structure L M
inst✝¹ : M ⊨ T
inst✝ : Nonempty M
⊢ M ⊨ φ

tactic: contrapose! h
state_before: L : Language
T : Theory L
α : Type w
n : ℕ
φ : Sentence L
h : ¬IsSatisfiable (T ∪ {Formula.not φ})
M : Type u_1
inst✝² : Structure L M
inst✝¹ : M ⊨ T
inst✝ : Nonempty M
⊢ M ⊨ φ

tactic: have : M ⊨ T ∪ {Formula.not φ} := by
  simp only [Set.union_singleton, model_iff, Set.mem_insert_iff, forall_eq_or_imp,
    Sentence.realize_not]
  rw [← model_iff]
  exact ⟨h, inferInstance⟩
state_before: L : Language
T : Theory L
α : Type w
n : ℕ
φ : Sentence L
M : Type u_1
inst✝² : Structure L M
inst✝¹ : M ⊨ T
inst✝ : Nonempty M
h : ¬M ⊨ φ
⊢ IsSatisfiable (T ∪ {Formula.not φ})

tactic: exact Model.isSatisfiable M
state_before: L : Language
T : Theory L
α : Type w
n : ℕ
φ : Sentence L
M : Type u_1
inst✝² : Structure L M
inst✝¹ : M ⊨ T
inst✝ : Nonempty M
h : ¬M ⊨ φ
this : M ⊨ T ∪ {Formula.not φ}
⊢ IsSatisfiable (T ∪ {Formula.not φ})

tactic: simp only [Set.union_singleton, model_iff, Set.mem_insert_iff, forall_eq_or_imp,
  Sentence.realize_not]
state_before: L : Language
T : Theory L
α : Type w
n : ℕ
φ : Sentence L
M : Type u_1
inst✝² : Structure L M
inst✝¹ : M ⊨ T
inst✝ : Nonempty M
h : ¬M ⊨ φ
⊢ M ⊨ T ∪ {Formula.not φ}

tactic: rw [← model_iff]
state_before: L : Language
T : Theory L
α : Type w
n : ℕ
φ : Sentence L
M : Type u_1
inst✝² : Structure L M
inst✝¹ : M ⊨ T
inst✝ : Nonempty M
h : ¬M ⊨ φ
⊢ ¬M ⊨ φ ∧ ∀ (a : Sentence L), a ∈ T → M ⊨ a

tactic: exact ⟨h, inferInstance⟩
state_before: L : Language
T : Theory L
α : Type w
n : ℕ
φ : Sentence L
M : Type u_1
inst✝² : Structure L M
inst✝¹ : M ⊨ T
inst✝ : Nonempty M
h : ¬M ⊨ φ
⊢ ¬M ⊨ φ ∧ M ⊨ T
Theorem: Fin.castLE_succ
File: Mathlib/Data/Fin/Basic.lean

tactic: simp [Fin.eq_iff_veq]
state_before: n✝ m✝ m n : ℕ
h : m + 1 ≤ n + 1
i : Fin m
⊢ ↑(castLE h) (succ i) = succ (↑(castLE (_ : m ≤ n)) i)
Theorem: Antitone.map_max
File: Mathlib/Order/MinMax.lean

tactic: cases' le_total a b with h h <;> simp [h, hf h]
state_before: α : Type u
β : Type v
inst✝¹ : LinearOrder α
inst✝ : LinearOrder β
f : α → β
s : Set α
a b c d : α
hf : Antitone f
⊢ f (max a b) = min (f a) (f b)
Theorem: comp_symm_mem_uniformity_sets
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: obtain ⟨w, w_in, w_sub⟩ : ∃ w ∈ 𝓤 α, w ○ w ⊆ s := comp_mem_uniformity_sets hs
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.52621
inst✝ : UniformSpace α
s : Set (α × α)
hs : s ∈ 𝓤 α
⊢ ∃ t, t ∈ 𝓤 α ∧ SymmetricRel t ∧ t ○ t ⊆ s

tactic: use symmetrizeRel w, symmetrize_mem_uniformity w_in, symmetric_symmetrizeRel w
state_before: case intro.intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.52621
inst✝ : UniformSpace α
s : Set (α × α)
hs : s ∈ 𝓤 α
w : Set (α × α)
w_in : w ∈ 𝓤 α
w_sub : w ○ w ⊆ s
⊢ ∃ t, t ∈ 𝓤 α ∧ SymmetricRel t ∧ t ○ t ⊆ s

tactic: have : symmetrizeRel w ⊆ w := symmetrizeRel_subset_self w
state_before: case intro.intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.52621
inst✝ : UniformSpace α
s : Set (α × α)
hs : s ∈ 𝓤 α
w : Set (α × α)
w_in : w ∈ 𝓤 α
w_sub : w ○ w ⊆ s
⊢ symmetrizeRel w ○ symmetrizeRel w ⊆ s

tactic: exact (compRel_mono this this).trans w_sub
state_before: case intro.intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.52621
inst✝ : UniformSpace α
s : Set (α × α)
hs : s ∈ 𝓤 α
w : Set (α × α)
w_in : w ∈ 𝓤 α
w_sub : w ○ w ⊆ s
this : symmetrizeRel w ⊆ w
⊢ symmetrizeRel w ○ symmetrizeRel w ⊆ s
Theorem: CategoryTheory.Iso.comp_hom_eq_id
File: Mathlib/CategoryTheory/Iso.lean

tactic: rw [← eq_comp_inv, id_comp]
state_before: C : Type u
inst✝ : Category C
X Y Z : C
α : X ≅ Y
f : Y ⟶ X
⊢ f ≫ α.hom = 𝟙 Y ↔ f = α.inv
Theorem: Polynomial.eval₂_eq_sum
File: Mathlib/Data/Polynomial/Eval.lean

tactic: rw [eval₂_def]
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]
inst✝ : Semiring S
f✝ : R →+* S
x✝ : S
f : R →+* S
x : S
⊢ eval₂ f x p = sum p fun e a => ↑f a * x ^ e
Theorem: le_iff_exists_nonneg_add
File: Mathlib/Algebra/Order/Ring/Defs.lean

tactic: simp
state_before: α : Type u
β : Type ?u.48263
inst✝ : OrderedRing α
a✝ b✝ c d a b : α
h : a ≤ b
⊢ b = a + (b - a)

tactic: rw [h, le_add_iff_nonneg_right]
state_before: α : Type u
β : Type ?u.48263
inst✝ : OrderedRing α
a✝ b✝ c✝ d a b : α
x✝ : ∃ c, c ≥ 0 ∧ b = a + c
c : α
hc : c ≥ 0
h : b = a + c
⊢ a ≤ b

tactic: exact hc
state_before: α : Type u
β : Type ?u.48263
inst✝ : OrderedRing α
a✝ b✝ c✝ d a b : α
x✝ : ∃ c, c ≥ 0 ∧ b = a + c
c : α
hc : c ≥ 0
h : b = a + c
⊢ 0 ≤ c
Theorem: Real.cast_natAbs_eq_nnabs_cast
File: Mathlib/Data/Real/NNReal.lean

tactic: ext
state_before: n : ℤ
⊢ ↑(Int.natAbs n) = ↑nnabs ↑n

tactic: rw [NNReal.coe_nat_cast, Int.cast_natAbs, Real.coe_nnabs, Int.cast_abs]
state_before: case a
n : ℤ
⊢ ↑↑(Int.natAbs n) = ↑(↑nnabs ↑n)
Theorem: Polynomial.IsEisensteinAt.coeff_mem
File: Mathlib/RingTheory/Polynomial/Eisenstein/Basic.lean

tactic: cases' ne_iff_lt_or_gt.1 hn with h₁ h₂
state_before: R : Type u
inst✝ : CommSemiring R
𝓟 : Ideal R
f : R[X]
hf : IsEisensteinAt f 𝓟
n : ℕ
hn : n ≠ natDegree f
⊢ coeff f n ∈ 𝓟

tactic: exact hf.mem h₁
state_before: case inl
R : Type u
inst✝ : CommSemiring R
𝓟 : Ideal R
f : R[X]
hf : IsEisensteinAt f 𝓟
n : ℕ
hn : n ≠ natDegree f
h₁ : n < natDegree f
⊢ coeff f n ∈ 𝓟

tactic: rw [coeff_eq_zero_of_natDegree_lt h₂]
state_before: case inr
R : Type u
inst✝ : CommSemiring R
𝓟 : Ideal R
f : R[X]
hf : IsEisensteinAt f 𝓟
n : ℕ
hn : n ≠ natDegree f
h₂ : n > natDegree f
⊢ coeff f n ∈ 𝓟

tactic: exact Ideal.zero_mem _
state_before: case inr
R : Type u
inst✝ : CommSemiring R
𝓟 : Ideal R
f : R[X]
hf : IsEisensteinAt f 𝓟
n : ℕ
hn : n ≠ natDegree f
h₂ : n > natDegree f
⊢ 0 ∈ 𝓟
Theorem: Complex.interior_setOf_re_le
File: Mathlib/Analysis/Complex/ReImTopology.lean

tactic: simpa only [interior_Iic] using interior_preimage_re (Iic a)
state_before: a : ℝ
⊢ interior {z | z.re ≤ a} = {z | z.re < a}
Theorem: CategoryTheory.MonoidalCategory.dite_tensor
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: split_ifs <;> rfl
state_before: C✝ : Type u
𝒞 : Category C✝
inst✝³ : MonoidalCategory C✝
C : Type u
inst✝² : Category C
inst✝¹ : MonoidalCategory C
U V W✝ X✝ Y✝ Z✝ : C
P : Prop
inst✝ : Decidable P
W X Y Z : C
f : W ⟶ X
g : P → (Y ⟶ Z)
g' : ¬P → (Y ⟶ Z)
⊢ (if h : P then g h else g' h) ⊗ f = if h : P then g h ⊗ f else g' h ⊗ f
Theorem: Metric.closedBall_subset_cthickening
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: refine' (closedBall_subset_cthickening_singleton _ _).trans (cthickening_subset_of_subset _ _)
state_before: ι : Sort ?u.146423
α✝ : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α✝
δ✝ ε : ℝ
s t : Set α✝
x✝ : α✝
α : Type u_1
inst✝ : PseudoMetricSpace α
x : α
E : Set α
hx : x ∈ E
δ : ℝ
⊢ closedBall x δ ⊆ cthickening δ E

tactic: simpa using hx
state_before: ι : Sort ?u.146423
α✝ : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α✝
δ✝ ε : ℝ
s t : Set α✝
x✝ : α✝
α : Type u_1
inst✝ : PseudoMetricSpace α
x : α
E : Set α
hx : x ∈ E
δ : ℝ
⊢ {x} ⊆ E
Theorem: OrderedCommGroup.to_contravariantClass_right_le
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: simpa using mul_le_mul_right' bc a⁻¹
state_before: α✝ α : Type u
inst✝ : OrderedCommGroup α
a b c : α
bc : swap (fun x x_1 => x * x_1) a b ≤ swap (fun x x_1 => x * x_1) a c
⊢ b ≤ c
Theorem: List.dropLast_append_getLast?
File: Mathlib/Data/List/Basic.lean

tactic: rw [getLast?_cons_cons] at hc
state_before: ι : Type ?u.37180
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
a b : α
l : List α
c : α
hc : c ∈ getLast? (a :: b :: l)
⊢ dropLast (a :: b :: l) ++ [c] = a :: b :: l

tactic: rw [dropLast_cons_cons, cons_append, dropLast_append_getLast? _ hc]
state_before: ι : Type ?u.37180
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
a b : α
l : List α
c : α
hc : c ∈ getLast? (b :: l)
⊢ dropLast (a :: b :: l) ++ [c] = a :: b :: l
Theorem: max_def'
File: Mathlib/Order/Basic.lean

tactic: rw [max_def]
state_before: ι : Type ?u.6959
α : Type u
β : Type v
γ : Type w
π : ι → Type ?u.6970
r : α → α → Prop
inst✝ : LinearOrder α
a b : α
⊢ max a b = if b ≤ a then a else b

tactic: rcases lt_trichotomy a b with (lt | eq | gt)
state_before: ι : Type ?u.6959
α : Type u
β : Type v
γ : Type w
π : ι → Type ?u.6970
r : α → α → Prop
inst✝ : LinearOrder α
a b : α
⊢ (if a ≤ b then b else a) = if b ≤ a then a else b

tactic: rw [if_pos lt.le, if_neg (not_le.mpr lt)]
state_before: case inl
ι : Type ?u.6959
α : Type u
β : Type v
γ : Type w
π : ι → Type ?u.6970
r : α → α → Prop
inst✝ : LinearOrder α
a b : α
lt : a < b
⊢ (if a ≤ b then b else a) = if b ≤ a then a else b

tactic: rw [if_pos eq.le, if_pos eq.ge, eq]
state_before: case inr.inl
ι : Type ?u.6959
α : Type u
β : Type v
γ : Type w
π : ι → Type ?u.6970
r : α → α → Prop
inst✝ : LinearOrder α
a b : α
eq : a = b
⊢ (if a ≤ b then b else a) = if b ≤ a then a else b

tactic: rw [if_neg (not_le.mpr gt.gt), if_pos gt.le]
state_before: case inr.inr
ι : Type ?u.6959
α : Type u
β : Type v
γ : Type w
π : ι → Type ?u.6970
r : α → α → Prop
inst✝ : LinearOrder α
a b : α
gt : b < a
⊢ (if a ≤ b then b else a) = if b ≤ a then a else b