tasksource/leandojo huggingface dataset:
Theorem: List.formPerm_eq_of_isRotated
File: Mathlib/GroupTheory/Perm/List.lean

tactic: obtain ⟨n, rfl⟩ := h
state_before: α : Type u_1
β : Type ?u.774035
inst✝ : DecidableEq α
l✝ : List α
x : α
l l' : List α
hd : Nodup l
h : l ~r l'
⊢ formPerm l = formPerm l'

tactic: exact (formPerm_rotate l hd n).symm
state_before: case intro
α : Type u_1
β : Type ?u.774035
inst✝ : DecidableEq α
l✝ : List α
x : α
l : List α
hd : Nodup l
n : ℕ
⊢ formPerm l = formPerm (rotate l n)
Theorem: List.Func.get_map
File: Mathlib/Data/List/Func.lean

tactic: cases h
state_before: α : Type u
β : Type v
γ : Type w
a : α
as as1 as2 as3 : List α
inst✝¹ : Inhabited α
inst✝ : Inhabited β
f : α → β
x✝ : ℕ
h : x✝ < length []
⊢ get x✝ (map f []) = f (get x✝ [])

tactic: have h2 : n < length as := by
  rw [← Nat.succ_le_iff, ← Nat.lt_succ_iff]
  apply h1
state_before: α : Type u
β : Type v
γ : Type w
a : α
as✝ as1 as2 as3 : List α
inst✝¹ : Inhabited α
inst✝ : Inhabited β
f : α → β
n : ℕ
head✝ : α
as : List α
h1 : n + 1 < length (head✝ :: as)
⊢ get (n + 1) (map f (head✝ :: as)) = f (get (n + 1) (head✝ :: as))

tactic: apply get_map h2
state_before: α : Type u
β : Type v
γ : Type w
a : α
as✝ as1 as2 as3 : List α
inst✝¹ : Inhabited α
inst✝ : Inhabited β
f : α → β
n : ℕ
head✝ : α
as : List α
h1 : n + 1 < length (head✝ :: as)
h2 : n < length as
⊢ get (n + 1) (map f (head✝ :: as)) = f (get (n + 1) (head✝ :: as))

tactic: rw [← Nat.succ_le_iff, ← Nat.lt_succ_iff]
state_before: α : Type u
β : Type v
γ : Type w
a : α
as✝ as1 as2 as3 : List α
inst✝¹ : Inhabited α
inst✝ : Inhabited β
f : α → β
n : ℕ
head✝ : α
as : List α
h1 : n + 1 < length (head✝ :: as)
⊢ n < length as

tactic: apply h1
state_before: α : Type u
β : Type v
γ : Type w
a : α
as✝ as1 as2 as3 : List α
inst✝¹ : Inhabited α
inst✝ : Inhabited β
f : α → β
n : ℕ
head✝ : α
as : List α
h1 : n + 1 < length (head✝ :: as)
⊢ Nat.succ n < Nat.succ (length as)
Theorem: Real.add_one_le_exp
File: Mathlib/Data/Complex/Exponential.lean

tactic: cases' le_or_lt 0 x with h h
state_before: x : ℝ
⊢ x + 1 ≤ exp x

tactic: exact (add_one_lt_exp_of_neg h).le
state_before: case inr
x : ℝ
h : x < 0
⊢ x + 1 ≤ exp x

tactic: exact Real.add_one_le_exp_of_nonneg h
state_before: case inl
x : ℝ
h : 0 ≤ x
⊢ x + 1 ≤ exp x
Theorem: orthogonalProjection_mem_subspace_eq_self
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

tactic: ext
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.512356
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
v : { x // x ∈ K }
⊢ ↑(orthogonalProjection K) ↑v = v

tactic: apply eq_orthogonalProjection_of_mem_of_inner_eq_zero <;> simp
state_before: case a
𝕜 : Type u_2
E : Type u_1
F : Type ?u.512356
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
v : { x // x ∈ K }
⊢ ↑(↑(orthogonalProjection K) ↑v) = ↑v
Theorem: ZFSet.isTransitive_iff_sUnion_subset
File: Mathlib/SetTheory/ZFC/Ordinal.lean

tactic: rcases mem_sUnion.1 hy with ⟨z, hz, hz'⟩
state_before: x y✝ z : ZFSet
h : IsTransitive x
y : ZFSet
hy : y ∈ ⋃₀ x
⊢ y ∈ x

tactic: exact h.mem_trans hz' hz
state_before: case intro.intro
x y✝ z✝ : ZFSet
h : IsTransitive x
y : ZFSet
hy : y ∈ ⋃₀ x
z : ZFSet
hz : z ∈ x
hz' : y ∈ z
⊢ y ∈ x
Theorem: MeasureTheory.MeasurePreserving.set_lintegral_comp_emb
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: rw [← hg.set_lintegral_comp_preimage_emb hge, preimage_image_eq _ hge.injective]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.1688080
δ : Type ?u.1688083
m : MeasurableSpace α
μ ν✝ : Measure α
mb : MeasurableSpace β
ν : Measure β
g : α → β
hg : MeasurePreserving g
hge : MeasurableEmbedding g
f : β → ℝ≥0∞
s : Set α
⊢ (∫⁻ (a : α) in s, f (g a) ∂μ) = ∫⁻ (b : β) in g '' s, f b ∂ν
Theorem: StarConvex.smul_mem
File: Mathlib/Analysis/Convex/Star.lean

tactic: simpa using hs.add_smul_mem (by simpa using hx) ht₀ ht₁
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.110353
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y : E
s t✝ : Set E
hs : StarConvex 𝕜 0 s
hx : x ∈ s
t : 𝕜
ht₀ : 0 ≤ t
ht₁ : t ≤ 1
⊢ t • x ∈ s

tactic: simpa using hx
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.110353
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y : E
s t✝ : Set E
hs : StarConvex 𝕜 0 s
hx : x ∈ s
t : 𝕜
ht₀ : 0 ≤ t
ht₁ : t ≤ 1
⊢ 0 + x ∈ s
Theorem: Polynomial.trinomial_natDegree
File: Mathlib/Data/Polynomial/UnitTrinomial.lean

tactic: refine'
  natDegree_eq_of_degree_eq_some
    ((Finset.sup_le fun i h => _).antisymm <|
      le_degree_of_ne_zero <| by rwa [trinomial_leading_coeff' hkm hmn])
state_before: R : Type u_1
inst✝ : Semiring R
k m n : ℕ
u v w : R
hkm : k < m
hmn : m < n
hw : w ≠ 0
⊢ natDegree (trinomial k m n u v w) = n

tactic: replace h := support_trinomial' k m n u v w h
state_before: R : Type u_1
inst✝ : Semiring R
k m n : ℕ
u v w : R
hkm : k < m
hmn : m < n
hw : w ≠ 0
i : ℕ
h : i ∈ support (trinomial k m n u v w)
⊢ ↑i ≤ ↑n

tactic: rw [mem_insert, mem_insert, mem_singleton] at h
state_before: R : Type u_1
inst✝ : Semiring R
k m n : ℕ
u v w : R
hkm : k < m
hmn : m < n
hw : w ≠ 0
i : ℕ
h : i ∈ {k, m, n}
⊢ ↑i ≤ ↑n

tactic: rcases h with (rfl | rfl | rfl)
state_before: R : Type u_1
inst✝ : Semiring R
k m n : ℕ
u v w : R
hkm : k < m
hmn : m < n
hw : w ≠ 0
i : ℕ
h : i = k ∨ i = m ∨ i = n
⊢ ↑i ≤ ↑n

tactic: rwa [trinomial_leading_coeff' hkm hmn]
state_before: R : Type u_1
inst✝ : Semiring R
k m n : ℕ
u v w : R
hkm : k < m
hmn : m < n
hw : w ≠ 0
⊢ coeff (trinomial k m n u v w) n ≠ 0

tactic: exact WithBot.coe_le_coe.mpr (hkm.trans hmn).le
state_before: case inl
R : Type u_1
inst✝ : Semiring R
m n : ℕ
u v w : R
hmn : m < n
hw : w ≠ 0
i : ℕ
hkm : i < m
⊢ ↑i ≤ ↑n

tactic: exact WithBot.coe_le_coe.mpr hmn.le
state_before: case inr.inl
R : Type u_1
inst✝ : Semiring R
k n : ℕ
u v w : R
hw : w ≠ 0
i : ℕ
hkm : k < i
hmn : i < n
⊢ ↑i ≤ ↑n

tactic: exact le_rfl
state_before: case inr.inr
R : Type u_1
inst✝ : Semiring R
k m : ℕ
u v w : R
hkm : k < m
hw : w ≠ 0
i : ℕ
hmn : m < i
⊢ ↑i ≤ ↑i
Theorem: ZNum.zneg_zneg
File: Mathlib/Data/Num/Lemmas.lean

tactic: cases n <;> rfl
state_before: α : Type ?u.658241
n : ZNum
⊢ - -n = n
Theorem: Nat.dvd_of_factors_subperm
File: Mathlib/Data/Nat/Factors.lean

tactic: rcases b.eq_zero_or_pos with (rfl | hb)
state_before: a b : ℕ
ha : a ≠ 0
h : factors a <+~ factors b
⊢ a ∣ b

tactic: rcases a with (_ | _ | a)
state_before: case inr
a b : ℕ
ha : a ≠ 0
h : factors a <+~ factors b
hb : b > 0
⊢ a ∣ b

tactic: use (@List.diff _ instBEq b.factors a.succ.succ.factors).prod
state_before: case inr.succ.succ
b : ℕ
hb : b > 0
a : ℕ
ha : succ (succ a) ≠ 0
h : factors (succ (succ a)) <+~ factors b
⊢ succ (succ a) ∣ b

tactic: nth_rw 1 [← Nat.prod_factors ha]
state_before: case inr.succ.succ
b : ℕ
hb : b > 0
a : ℕ
ha : succ (succ a) ≠ 0
h : factors (succ (succ a)) <+~ factors b
⊢ b = succ (succ a) * prod (List.diff (factors b) (factors (succ (succ a))))

tactic: rw [← List.prod_append,
  List.Perm.prod_eq <| List.subperm_append_diff_self_of_count_le <| List.subperm_ext_iff.mp h,
  Nat.prod_factors hb.ne']
state_before: case inr.succ.succ
b : ℕ
hb : b > 0
a : ℕ
ha : succ (succ a) ≠ 0
h : factors (succ (succ a)) <+~ factors b
⊢ b = prod (factors (succ (succ a))) * prod (List.diff (factors b) (factors (succ (succ a))))

tactic: exact dvd_zero _
state_before: case inl
a : ℕ
ha : a ≠ 0
h : factors a <+~ factors 0
⊢ a ∣ 0

tactic: exact (ha rfl).elim
state_before: case inr.zero
b : ℕ
hb : b > 0
ha : zero ≠ 0
h : factors zero <+~ factors b
⊢ zero ∣ b

tactic: exact one_dvd _
state_before: case inr.succ.zero
b : ℕ
hb : b > 0
ha : succ zero ≠ 0
h : factors (succ zero) <+~ factors b
⊢ succ zero ∣ b
Theorem: Finset.toList_cons
File: Mathlib/Data/Finset/Basic.lean

tactic: simp [h, nodup_toList s]
state_before: α : Type u_1
β : Type ?u.481863
γ : Type ?u.481866
a : α
s : Finset α
h : ¬a ∈ s
⊢ List.Nodup (a :: toList s)

tactic: simp only [List.mem_cons, Finset.mem_toList, Finset.mem_cons]
state_before: α : Type u_1
β : Type ?u.481863
γ : Type ?u.481866
a : α
s : Finset α
h : ¬a ∈ s
x : α
⊢ x ∈ toList (cons a s h) ↔ x ∈ a :: toList s
Theorem: Set.restrict_extend_range
File: Mathlib/Data/Set/Function.lean

tactic: classical
exact restrict_dite _ _
state_before: α : Type u_3
β : Type u_1
γ : Type u_2
ι : Sort ?u.3473
π : α → Type ?u.3478
f : α → β
g : α → γ
g' : β → γ
⊢ restrict (range f) (extend f g g') = fun x => g (Exists.choose (_ : ↑x ∈ range f))

tactic: exact restrict_dite _ _
state_before: α : Type u_3
β : Type u_1
γ : Type u_2
ι : Sort ?u.3473
π : α → Type ?u.3478
f : α → β
g : α → γ
g' : β → γ
⊢ restrict (range f) (extend f g g') = fun x => g (Exists.choose (_ : ↑x ∈ range f))
Theorem: Polynomial.comp_eq_sum_left
File: Mathlib/Data/Polynomial/Eval.lean

tactic: rw [comp, eval₂_eq_sum]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
⊢ comp p q = sum p fun e a => ↑C a * q ^ e
Theorem: Polynomial.linearIndependent_powers_iff_aeval
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: rw [linearIndependent_iff]
state_before: R : Type u
S : Type ?u.665456
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : M →ₗ[R] M
v : M
⊢ (LinearIndependent R fun n => ↑(f ^ n) v) ↔ ∀ (p : R[X]), ↑(↑(aeval f) p) v = 0 → p = 0

tactic: simp only [Finsupp.total_apply, aeval_endomorphism, forall_iff_forall_finsupp, Sum, support,
  coeff, ofFinsupp_eq_zero]
state_before: R : Type u
S : Type ?u.665456
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : M →ₗ[R] M
v : M
⊢ (∀ (l : ℕ →₀ R), ↑(Finsupp.total ℕ ((fun x => M) v) R fun n => ↑(f ^ n) v) l = 0 → l = 0) ↔
    ∀ (p : R[X]), ↑(↑(aeval f) p) v = 0 → p = 0

tactic: exact Iff.rfl
state_before: R : Type u
S : Type ?u.665456
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : M →ₗ[R] M
v : M
⊢ (∀ (l : ℕ →₀ R), (Finsupp.sum l fun i a => a • ↑(f ^ i) v) = 0 → l = 0) ↔
    ∀ (q : AddMonoidAlgebra R ℕ), (sum { toFinsupp := q } fun n b => b • ↑(f ^ n) v) = 0 → q = 0
Theorem: Metric.closure_eq_iInter_thickening'
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: rw [← cthickening_zero]
state_before: ι : Sort ?u.144923
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ ε : ℝ
s✝ t : Set α
x : α
E : Set α
s : Set ℝ
hs₀ : s ⊆ Ioi 0
hs : ∀ (ε : ℝ), 0 < ε → Set.Nonempty (s ∩ Ioc 0 ε)
⊢ closure E = ⋂ (δ : ℝ) (_ : δ ∈ s), thickening δ E

tactic: apply cthickening_eq_iInter_thickening' le_rfl _ hs₀ hs
state_before: ι : Sort ?u.144923
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ ε : ℝ
s✝ t : Set α
x : α
E : Set α
s : Set ℝ
hs₀ : s ⊆ Ioi 0
hs : ∀ (ε : ℝ), 0 < ε → Set.Nonempty (s ∩ Ioc 0 ε)
⊢ cthickening 0 E = ⋂ (δ : ℝ) (_ : δ ∈ s), thickening δ E
Theorem: Polynomial.eval₂_sub
File: Mathlib/Data/Polynomial/Eval.lean

tactic: rw [sub_eq_add_neg, eval₂_add, eval₂_neg, sub_eq_add_neg]
state_before: R : Type u
S✝ : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : Ring R
p q r : R[X]
S : Type u_1
inst✝ : Ring S
f : R →+* S
x : S
⊢ eval₂ f x (p - q) = eval₂ f x p - eval₂ f x q
Theorem: zero_pow_eq
File: Mathlib/Algebra/GroupPower/Ring.lean

tactic: split_ifs with h
state_before: R : Type ?u.7555
S : Type ?u.7558
M : Type u_1
inst✝ : MonoidWithZero M
n : ℕ
⊢ 0 ^ n = if n = 0 then 1 else 0

tactic: rw [h, pow_zero]
state_before: case inl
R : Type ?u.7555
S : Type ?u.7558
M : Type u_1
inst✝ : MonoidWithZero M
n : ℕ
h : n = 0
⊢ 0 ^ n = 1

tactic: rw [zero_pow (Nat.pos_of_ne_zero h)]
state_before: case inr
R : Type ?u.7555
S : Type ?u.7558
M : Type u_1
inst✝ : MonoidWithZero M
n : ℕ
h : ¬n = 0
⊢ 0 ^ n = 0
Theorem: mulRothNumber_union_le
File: Mathlib/Combinatorics/Additive/SalemSpencer.lean

tactic: rw [← inter_distrib_left, (inter_eq_left_iff_subset _ _).2 hus]
state_before: F : Type ?u.136149
α : Type u_1
β : Type ?u.136155
𝕜 : Type ?u.136158
E : Type ?u.136161
inst✝³ : DecidableEq α
inst✝² : Monoid α
inst✝¹ : DecidableEq β
inst✝ : Monoid β
s✝ t✝ : Finset α
n : ℕ
s t u : Finset α
hus : u ⊆ s ∪ t
hcard : card u = ↑mulRothNumber (s ∪ t)
hu : MulSalemSpencer ↑u
⊢ card u = card (u ∩ s ∪ u ∩ t)
Theorem: Submodule.iSup_induction
File: Mathlib/LinearAlgebra/Span.lean

tactic: rw [← mem_toAddSubmonoid, iSup_toAddSubmonoid] at hx
state_before: R : Type u_2
R₂ : Type ?u.215996
K : Type ?u.215999
M : Type u_3
M₂ : Type ?u.216005
V : Type ?u.216008
S : Type ?u.216011
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝ : M
p✝ p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t : Set M
ι : Sort u_1
p : ι → Submodule R M
C : M → Prop
x : M
hx : x ∈ ⨆ (i : ι), p i
hp : ∀ (i : ι) (x : M), x ∈ p i → C x
h0 : C 0
hadd : ∀ (x y : M), C x → C y → C (x + y)
⊢ C x

tactic: exact AddSubmonoid.iSup_induction (x := x) _ hx hp h0 hadd
state_before: R : Type u_2
R₂ : Type ?u.215996
K : Type ?u.215999
M : Type u_3
M₂ : Type ?u.216005
V : Type ?u.216008
S : Type ?u.216011
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝ : M
p✝ p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t : Set M
ι : Sort u_1
p : ι → Submodule R M
C : M → Prop
x : M
hx : x ∈ ⨆ (i : ι), (p i).toAddSubmonoid
hp : ∀ (i : ι) (x : M), x ∈ p i → C x
h0 : C 0
hadd : ∀ (x y : M), C x → C y → C (x + y)
⊢ C x
Theorem: SeminormFamily.withSeminorms_of_nhds
File: Mathlib/Analysis/LocallyConvex/WithSeminorms.lean

tactic: refine'
  ⟨TopologicalAddGroup.ext inferInstance p.addGroupFilterBasis.isTopologicalAddGroup _⟩
state_before: 𝕜 : Type u_1
𝕜₂ : Type ?u.433245
𝕝 : Type ?u.433248
𝕝₂ : Type ?u.433251
E : Type u_2
F : Type ?u.433257
G : Type ?u.433260
ι : Type u_3
ι' : Type ?u.433266
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
t : TopologicalSpace E
inst✝ : TopologicalAddGroup E
p : SeminormFamily 𝕜 E ι
h : 𝓝 0 = FilterBasis.filter AddGroupFilterBasis.toFilterBasis
⊢ WithSeminorms p

tactic: rw [AddGroupFilterBasis.nhds_zero_eq]
state_before: 𝕜 : Type u_1
𝕜₂ : Type ?u.433245
𝕝 : Type ?u.433248
𝕝₂ : Type ?u.433251
E : Type u_2
F : Type ?u.433257
G : Type ?u.433260
ι : Type u_3
ι' : Type ?u.433266
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
t : TopologicalSpace E
inst✝ : TopologicalAddGroup E
p : SeminormFamily 𝕜 E ι
h : 𝓝 0 = FilterBasis.filter AddGroupFilterBasis.toFilterBasis
⊢ 𝓝 0 = 𝓝 0

tactic: exact h
state_before: 𝕜 : Type u_1
𝕜₂ : Type ?u.433245
𝕝 : Type ?u.433248
𝕝₂ : Type ?u.433251
E : Type u_2
F : Type ?u.433257
G : Type ?u.433260
ι : Type u_3
ι' : Type ?u.433266
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
t : TopologicalSpace E
inst✝ : TopologicalAddGroup E
p : SeminormFamily 𝕜 E ι
h : 𝓝 0 = FilterBasis.filter AddGroupFilterBasis.toFilterBasis
⊢ 𝓝 0 = FilterBasis.filter AddGroupFilterBasis.toFilterBasis
Theorem: nhds_le_of_le
File: Mathlib/Topology/Basic.lean

tactic: rw [nhds_def]
state_before: α : Type u
β : Type v
ι : Sort w
a✝ : α
s✝ s₁ s₂ t : Set α
p p₁ p₂ : α → Prop
inst✝ : TopologicalSpace α
f : Filter α
a : α
s : Set α
h : a ∈ s
o : IsOpen s
sf : 𝓟 s ≤ f
⊢ 𝓝 a ≤ f

tactic: exact iInf₂_le_of_le s ⟨h, o⟩ sf
state_before: α : Type u
β : Type v
ι : Sort w
a✝ : α
s✝ s₁ s₂ t : Set α
p p₁ p₂ : α → Prop
inst✝ : TopologicalSpace α
f : Filter α
a : α
s : Set α
h : a ∈ s
o : IsOpen s
sf : 𝓟 s ≤ f
⊢ (⨅ (s : Set α) (_ : s ∈ {s | a ∈ s ∧ IsOpen s}), 𝓟 s) ≤ f
Theorem: FirstOrder.Language.LHom.funext
File: Mathlib/ModelTheory/LanguageMap.lean

tactic: cases' F with Ff Fr
state_before: L : Language
L' : Language
M : Type w
inst✝ : Structure L M
ϕ : L →ᴸ L'
L'' : Language
F G : L →ᴸ L'
h_fun : F.onFunction = G.onFunction
h_rel : F.onRelation = G.onRelation
⊢ F = G

tactic: cases' G with Gf Gr
state_before: case mk
L : Language
L' : Language
M : Type w
inst✝ : Structure L M
ϕ : L →ᴸ L'
L'' : Language
G : L →ᴸ L'
Ff : ⦃n : ℕ⦄ → Functions L n → Functions L' n
Fr : ⦃n : ℕ⦄ → Relations L n → Relations L' n
h_fun : { onFunction := Ff, onRelation := Fr }.onFunction = G.onFunction
h_rel : { onFunction := Ff, onRelation := Fr }.onRelation = G.onRelation
⊢ { onFunction := Ff, onRelation := Fr } = G

tactic: simp only [mk.injEq]
state_before: case mk.mk
L : Language
L' : Language
M : Type w
inst✝ : Structure L M
ϕ : L →ᴸ L'
L'' : Language
Ff : ⦃n : ℕ⦄ → Functions L n → Functions L' n
Fr : ⦃n : ℕ⦄ → Relations L n → Relations L' n
Gf : ⦃n : ℕ⦄ → Functions L n → Functions L' n
Gr : ⦃n : ℕ⦄ → Relations L n → Relations L' n
h_fun : { onFunction := Ff, onRelation := Fr }.onFunction = { onFunction := Gf, onRelation := Gr }.onFunction
h_rel : { onFunction := Ff, onRelation := Fr }.onRelation = { onFunction := Gf, onRelation := Gr }.onRelation
⊢ { onFunction := Ff, onRelation := Fr } = { onFunction := Gf, onRelation := Gr }

tactic: exact And.intro h_fun h_rel
state_before: case mk.mk
L : Language
L' : Language
M : Type w
inst✝ : Structure L M
ϕ : L →ᴸ L'
L'' : Language
Ff : ⦃n : ℕ⦄ → Functions L n → Functions L' n
Fr : ⦃n : ℕ⦄ → Relations L n → Relations L' n
Gf : ⦃n : ℕ⦄ → Functions L n → Functions L' n
Gr : ⦃n : ℕ⦄ → Relations L n → Relations L' n
h_fun : { onFunction := Ff, onRelation := Fr }.onFunction = { onFunction := Gf, onRelation := Gr }.onFunction
h_rel : { onFunction := Ff, onRelation := Fr }.onRelation = { onFunction := Gf, onRelation := Gr }.onRelation
⊢ Ff = Gf ∧ Fr = Gr
Theorem: Matrix.Fin.circulant_isSymm_iff
File: Mathlib/LinearAlgebra/Matrix/Circulant.lean

tactic: simp [IsSymm.ext_iff, IsEmpty.forall_iff]
state_before: α : Type u_1
β : Type ?u.64581
m : Type ?u.64584
n : Type ?u.64587
R : Type ?u.64590
v✝ : Fin 0 → α
⊢ IsSymm (circulant v✝) ↔ ∀ (i : Fin 0), v✝ (-i) = v✝ i
Theorem: BoxIntegral.TaggedPrepartition.mem_iUnion
File: Mathlib/Analysis/BoxIntegral/Partition/Tagged.lean

tactic: convert Set.mem_iUnion₂
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π : TaggedPrepartition I
x : ι → ℝ
⊢ x ∈ iUnion π ↔ ∃ J, J ∈ π ∧ x ∈ J

tactic: rw [Box.mem_coe, mem_toPrepartition, exists_prop]
state_before: case h.e'_2.h.e'_2.h.a
ι : Type u_1
I J J₁ J₂ : Box ι
π : TaggedPrepartition I
x : ι → ℝ
x✝ : Box ι
⊢ x✝ ∈ π ∧ x ∈ x✝ ↔ ∃ j, x ∈ ↑x✝
Theorem: isEmpty_pprod
File: Mathlib/Logic/IsEmpty.lean

tactic: simp only [← not_nonempty_iff, nonempty_pprod, not_and_or]
state_before: α : Sort u_2
β : Sort u_1
γ : Sort ?u.3177
⊢ IsEmpty (PProd α β) ↔ IsEmpty α ∨ IsEmpty β
Theorem: Function.Antiperiodic.sub_eq
File: Mathlib/Algebra/Periodic.lean

tactic: simp only [← neg_eq_iff_eq_neg, ← h (x - c), sub_add_cancel]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.153445
f g : α → β
c c₁ c₂ x✝ : α
inst✝¹ : AddGroup α
inst✝ : InvolutiveNeg β
h : Antiperiodic f c
x : α
⊢ f (x - c) = -f x
Theorem: MeasureTheory.AEDisjoint.iUnion_left_iff
File: Mathlib/MeasureTheory/Measure/AEDisjoint.lean

tactic: simp only [AEDisjoint, iUnion_inter, measure_iUnion_null_iff]
state_before: ι : Type u_1
α : Type u_2
m : MeasurableSpace α
μ : Measure α
s✝ t u v : Set α
inst✝ : Countable ι
s : ι → Set α
⊢ AEDisjoint μ (⋃ (i : ι), s i) t ↔ ∀ (i : ι), AEDisjoint μ (s i) t
Theorem: Ordinal.card_eq_zero
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: haveI := Cardinal.mk_eq_zero_iff.1 h
state_before: α✝ : Type ?u.102030
β : Type ?u.102033
γ : Type ?u.102036
r✝ : α✝ → α✝ → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal
α : Type u_1
r : α → α → Prop
x✝ : IsWellOrder α r
h : card (type r) = 0
⊢ type r = 0

tactic: apply type_eq_zero_of_empty
state_before: α✝ : Type ?u.102030
β : Type ?u.102033
γ : Type ?u.102036
r✝ : α✝ → α✝ → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal
α : Type u_1
r : α → α → Prop
x✝ : IsWellOrder α r
h : card (type r) = 0
this : IsEmpty { α := α, r := r, wo := x✝ }.α
⊢ type r = 0

tactic: simp only [e, card_zero]
state_before: α : Type ?u.102030
β : Type ?u.102033
γ : Type ?u.102036
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal
e : o = 0
⊢ card o = 0
Theorem: hyperoperation_two
File: Mathlib/Data/Nat/Hyperoperation.lean

tactic: ext (m k)
state_before: ⊢ hyperoperation 2 = fun x x_1 => x * x_1

tactic: induction' k with bn bih
state_before: case h.h
m k : ℕ
⊢ hyperoperation 2 m k = m * k

tactic: rw [hyperoperation]
state_before: case h.h.zero
m : ℕ
⊢ hyperoperation 2 m Nat.zero = m * Nat.zero

tactic: exact (Nat.mul_zero m).symm
state_before: case h.h.zero
m : ℕ
⊢ 0 = m * Nat.zero

tactic: rw [hyperoperation_recursion, hyperoperation_one, bih]
state_before: case h.h.succ
m bn : ℕ
bih : hyperoperation 2 m bn = m * bn
⊢ hyperoperation 2 m (Nat.succ bn) = m * Nat.succ bn

tactic: dsimp only
state_before: case h.h.succ
m bn : ℕ
bih : hyperoperation 2 m bn = m * bn
⊢ (fun x x_1 => x + x_1) m (m * bn) = m * Nat.succ bn

tactic: nth_rewrite 1 [← mul_one m]
state_before: case h.h.succ
m bn : ℕ
bih : hyperoperation 2 m bn = m * bn
⊢ m + m * bn = m * Nat.succ bn

tactic: rw [← mul_add, add_comm, Nat.succ_eq_add_one]
state_before: case h.h.succ
m bn : ℕ
bih : hyperoperation 2 m bn = m * bn
⊢ m * 1 + m * bn = m * Nat.succ bn
Theorem: IsLeast.union
File: Mathlib/Order/Bounds/Basic.lean

tactic: cases' le_total a b with h h <;> simp [h, ha.1, hb.1]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s✝ t✝ : Set α
a✝ b✝ : α
inst✝ : LinearOrder γ
a b : γ
s t : Set γ
ha : IsLeast s a
hb : IsLeast t b
⊢ min a b ∈ s ∪ t
Theorem: Set.image_sub_const_Ioc
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [sub_eq_neg_add]
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
⊢ (fun x => x - a) '' Ioc b c = Ioc (b - a) (c - a)
Theorem: Complex.tan_mul_I
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [tan, sin_mul_I, cos_mul_I, mul_div_right_comm, tanh_eq_sinh_div_cosh]
state_before: x y : ℂ
⊢ tan (x * I) = tanh x * I
Theorem: LatticeOrderedCommGroup.neg_eq_one_iff
File: Mathlib/Algebra/Order/LatticeGroup.lean

tactic: rw [le_antisymm_iff, neg_le_one_iff, inv_le_one', and_iff_left (one_le_neg _)]
state_before: α : Type u
inst✝² : Lattice α
inst✝¹ : CommGroup α
inst✝ : CovariantClass α α Mul.mul LE.le
a : α
⊢ a⁻ = 1 ↔ 1 ≤ a
Theorem: Odd.neg_one_zpow
File: Mathlib/Algebra/Field/Power.lean

tactic: rw [h.neg_zpow, one_zpow]
state_before: α : Type u_1
inst✝ : DivisionRing α
n : ℤ
h : Odd n
⊢ (-1) ^ n = -1
Theorem: Option.liftOrGet_none_left
File: Std/Data/Option/Lemmas.lean

tactic: cases b <;> rfl
state_before: α : Type u_1
f : α → α → α
b : Option α
⊢ liftOrGet f none b = b
Theorem: Ordinal.mex_monotone
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: refine' mex_le_of_ne fun i hi => _
state_before: α✝ : Type ?u.377983
β✝ : Type ?u.377986
γ : Type ?u.377989
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α β : Type u
f : α → Ordinal
g : β → Ordinal
h : range f ⊆ range g
⊢ mex f ≤ mex g

tactic: cases' h ⟨i, rfl⟩ with j hj
state_before: α✝ : Type ?u.377983
β✝ : Type ?u.377986
γ : Type ?u.377989
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α β : Type u
f : α → Ordinal
g : β → Ordinal
h : range f ⊆ range g
i : α
hi : f i = mex g
⊢ False

tactic: rw [← hj] at hi
state_before: case intro
α✝ : Type ?u.377983
β✝ : Type ?u.377986
γ : Type ?u.377989
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α β : Type u
f : α → Ordinal
g : β → Ordinal
h : range f ⊆ range g
i : α
hi : f i = mex g
j : β
hj : g j = f i
⊢ False

tactic: exact ne_mex g j hi
state_before: case intro
α✝ : Type ?u.377983
β✝ : Type ?u.377986
γ : Type ?u.377989
r : α✝ → α✝ → Prop
s : β✝ → β✝ → Prop
t : γ → γ → Prop
α β : Type u
f : α → Ordinal
g : β → Ordinal
h : range f ⊆ range g
i : α
j : β
hi : g j = mex g
hj : g j = f i
⊢ False
Theorem: Polynomial.hom_eval₂
File: Mathlib/Data/Polynomial/Eval.lean

tactic: rw [← eval₂_map, eval₂_at_apply, eval_map]
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
inst✝ : Semiring T
f : R →+* S
g : S →+* T
x : S
⊢ ↑g (eval₂ f x p) = eval₂ (RingHom.comp g f) (↑g x) p