ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Filter.hasBasis_cofinite
theorem hasBasis_cofinite : HasBasis cofinite (fun s : Set α => s.Finite) compl 
Arguments: {α : Type u_2}
Goal: Filter.cofinite.HasBasis (fun s => s.Finite) compl
-- Filter.cofinite_eq_bot_iff
@[simp]
theorem cofinite_eq_bot_iff : @cofinite α = ⊥ ↔ Finite α 
Arguments: {α : Type u_2}
Goal: Filter.cofinite = ⊥ ↔ Finite α
-- Filter.cofinite_eq_bot
@[simp]
theorem cofinite_eq_bot [Finite α] : @cofinite α = ⊥ 
Arguments: {α : Type u_2} [Finite α]
Goal: Filter.cofinite = ⊥
-- Filter.frequently_cofinite_iff_infinite
theorem frequently_cofinite_iff_infinite {p : α → Prop} :
    (∃ᶠ x in cofinite, p x) ↔ Set.Infinite { x | p x } 
Arguments: {α : Type u_2} {p : α → Prop}
Goal: (∃ᶠ (x : α) in Filter.cofinite, p x) ↔ {x | p x}.Infinite
-- Filter.frequently_cofinite_mem_iff_infinite
lemma frequently_cofinite_mem_iff_infinite {s : Set α} : (∃ᶠ x in cofinite, x ∈ s) ↔ s.Infinite 
Arguments: {α : Type u_2} {s : Set α}
Goal: (∃ᶠ (x : α) in Filter.cofinite, x ∈ s) ↔ s.Infinite
-- Filter.cofinite_inf_principal_neBot_iff
@[simp]
lemma cofinite_inf_principal_neBot_iff {s : Set α} : (cofinite ⊓ 𝓟 s).NeBot ↔ s.Infinite 
Arguments: {α : Type u_2} {s : Set α}
Goal: (Filter.cofinite ⊓ 𝓟 s).NeBot ↔ s.Infinite
-- Set.Finite.compl_mem_cofinite
theorem _root_.Set.Finite.compl_mem_cofinite {s : Set α} (hs : s.Finite) : sᶜ ∈ @cofinite α 
Arguments: {α : Type u_2} {s : Set α} (hs : s.Finite)
Goal: sᶜ ∈ Filter.cofinite
-- Set.Finite.eventually_cofinite_nmem
theorem _root_.Set.Finite.eventually_cofinite_nmem {s : Set α} (hs : s.Finite) :
    ∀ᶠ x in cofinite, x ∉ s 
Arguments: {α : Type u_2} {s : Set α} (hs : s.Finite)
Goal: ∀ᶠ (x : α) in Filter.cofinite, x ∉ s
-- Finset.eventually_cofinite_nmem
theorem _root_.Finset.eventually_cofinite_nmem (s : Finset α) : ∀ᶠ x in cofinite, x ∉ s 
Arguments: {α : Type u_2} (s : Finset α)
Goal: ∀ᶠ (x : α) in Filter.cofinite, x ∉ s
-- Set.infinite_iff_frequently_cofinite
theorem _root_.Set.infinite_iff_frequently_cofinite {s : Set α} :
    Set.Infinite s ↔ ∃ᶠ x in cofinite, x ∈ s 
Arguments: {α : Type u_2} {s : Set α}
Goal: s.Infinite ↔ ∃ᶠ (x : α) in Filter.cofinite, x ∈ s
-- Filter.eventually_cofinite_ne
theorem eventually_cofinite_ne (x : α) : ∀ᶠ a in cofinite, a ≠ x 
Arguments: {α : Type u_2} (x : α)
Goal: ∀ᶠ (a : α) in Filter.cofinite, a ≠ x
-- Filter.le_cofinite_iff_compl_singleton_mem
theorem le_cofinite_iff_compl_singleton_mem : l ≤ cofinite ↔ ∀ x, {x}ᶜ ∈ l 
Arguments: {α : Type u_2} {l : Filter α}
Goal: l ≤ Filter.cofinite ↔ ∀ (x : α), {x}ᶜ ∈ l
-- Filter.le_cofinite_iff_eventually_ne
theorem le_cofinite_iff_eventually_ne : l ≤ cofinite ↔ ∀ x, ∀ᶠ y in l, y ≠ x 
Arguments: {α : Type u_2} {l : Filter α}
Goal: l ≤ Filter.cofinite ↔ ∀ (x : α), ∀ᶠ (y : α) in l, y ≠ x
-- Filter.atTop_le_cofinite
theorem atTop_le_cofinite [Preorder α] [NoMaxOrder α] : (atTop : Filter α) ≤ cofinite 
Arguments: {α : Type u_2} [Preorder α] [NoMaxOrder α]
Goal: Filter.atTop ≤ Filter.cofinite
-- Filter.comap_cofinite_le
theorem comap_cofinite_le (f : α → β) : comap f cofinite ≤ cofinite 
Arguments: {α : Type u_2} {β : Type u_3} (f : α → β)
Goal: Filter.comap f Filter.cofinite ≤ Filter.cofinite
-- Filter.coprod_cofinite
theorem coprod_cofinite : (cofinite : Filter α).coprod (cofinite : Filter β) = cofinite 
Arguments: {α : Type u_2} {β : Type u_3}
Goal: Filter.cofinite.coprod Filter.cofinite = Filter.cofinite
-- Filter.coprodᵢ_cofinite
theorem coprodᵢ_cofinite {α : ι → Type*} [Finite ι] :
    (Filter.coprodᵢ fun i => (cofinite : Filter (α i))) = cofinite 
Arguments: {ι : Type u_1} {α : ι → Type u_4} [Finite ι]
Goal: (Filter.coprodᵢ fun i => Filter.cofinite) = Filter.cofinite
-- Filter.disjoint_cofinite_left
theorem disjoint_cofinite_left : Disjoint cofinite l ↔ ∃ s ∈ l, Set.Finite s 
Arguments: {α : Type u_2} {l : Filter α}
Goal: Disjoint Filter.cofinite l ↔ ∃ s ∈ l, s.Finite
-- Filter.disjoint_cofinite_right
theorem disjoint_cofinite_right : Disjoint l cofinite ↔ ∃ s ∈ l, Set.Finite s 
Arguments: {α : Type u_2} {l : Filter α}
Goal: Disjoint l Filter.cofinite ↔ ∃ s ∈ l, s.Finite
-- Filter.countable_compl_ker
theorem countable_compl_ker [l.IsCountablyGenerated] (h : cofinite ≤ l) : Set.Countable l.kerᶜ 
Arguments: {α : Type u_2} {l : Filter α} [l.IsCountablyGenerated] (h : Filter.cofinite ≤ l)
Goal: l.kerᶜ.Countable
-- Filter.Tendsto.countable_compl_preimage_ker
theorem Tendsto.countable_compl_preimage_ker {f : α → β}
    {l : Filter β} [l.IsCountablyGenerated] (h : Tendsto f cofinite l) :
    Set.Countable (f ⁻¹' l.ker)ᶜ 
Arguments: {α : Type u_2} {β : Type u_3} {f : α → β} {l : Filter β} [l.IsCountablyGenerated] (h : Filter.Tendsto f Filter.cofinite l)
Goal: (f ⁻¹' l.ker)ᶜ.Countable
-- Set.Finite.cofinite_inf_principal_compl
lemma Set.Finite.cofinite_inf_principal_compl {s : Set α} (hs : s.Finite) :
    cofinite ⊓ 𝓟 sᶜ = cofinite 
Arguments: {α : Type u_2} {s : Set α} (hs : s.Finite)
Goal: Filter.cofinite ⊓ 𝓟 sᶜ = Filter.cofinite
-- Set.Finite.cofinite_inf_principal_diff
lemma Set.Finite.cofinite_inf_principal_diff {s t : Set α} (ht : t.Finite) :
    cofinite ⊓ 𝓟 (s \ t) = cofinite ⊓ 𝓟 s 
Arguments: {α : Type u_2} {s t : Set α} (ht : t.Finite)
Goal: Filter.cofinite ⊓ 𝓟 (s \ t) = Filter.cofinite ⊓ 𝓟 s
-- Nat.cofinite_eq_atTop
theorem Nat.cofinite_eq_atTop : @cofinite ℕ = atTop 
Goal: Filter.cofinite = Filter.atTop
-- Nat.frequently_atTop_iff_infinite
theorem Nat.frequently_atTop_iff_infinite {p : ℕ → Prop} :
    (∃ᶠ n in atTop, p n) ↔ Set.Infinite { n | p n } 
Arguments: {p : ℕ → Prop}
Goal: (∃ᶠ (n : ℕ) in Filter.atTop, p n) ↔ {n | p n}.Infinite
-- Nat.eventually_pos
lemma Nat.eventually_pos : ∀ᶠ (k : ℕ) in Filter.atTop, 0 < k 
Goal: ∀ᶠ (k : ℕ) in Filter.atTop, 0 < k
-- Filter.Tendsto.exists_within_forall_le
theorem Filter.Tendsto.exists_within_forall_le {α β : Type*} [LinearOrder β] {s : Set α}
    (hs : s.Nonempty) {f : α → β} (hf : Filter.Tendsto f Filter.cofinite Filter.atTop) :
    ∃ a₀ ∈ s, ∀ a ∈ s, f a₀ ≤ f a 
Arguments: {α : Type u_4} {β : Type u_5} [LinearOrder β] {s : Set α} (hs : s.Nonempty) {f : α → β} (hf : Filter.Tendsto f Filter.cofinite Filter.atTop)
Goal: ∃ a₀ ∈ s, ∀ a ∈ s, f a₀ ≤ f a
-- Filter.Tendsto.exists_forall_le
theorem Filter.Tendsto.exists_forall_le [Nonempty α] [LinearOrder β] {f : α → β}
    (hf : Tendsto f cofinite atTop) : ∃ a₀, ∀ a, f a₀ ≤ f a 
Arguments: {α : Type u_2} {β : Type u_3} [Nonempty α] [LinearOrder β] {f : α → β} (hf : Filter.Tendsto f Filter.cofinite Filter.atTop)
Goal: ∃ a₀, ∀ (a : α), f a₀ ≤ f a
-- Filter.Tendsto.exists_within_forall_ge
theorem Filter.Tendsto.exists_within_forall_ge [LinearOrder β] {s : Set α} (hs : s.Nonempty)
    {f : α → β} (hf : Filter.Tendsto f Filter.cofinite Filter.atBot) :
    ∃ a₀ ∈ s, ∀ a ∈ s, f a ≤ f a₀ 
Arguments: {α : Type u_2} {β : Type u_3} [LinearOrder β] {s : Set α} (hs : s.Nonempty) {f : α → β} (hf : Filter.Tendsto f Filter.cofinite Filter.atBot)
Goal: ∃ a₀ ∈ s, ∀ a ∈ s, f a ≤ f a₀
-- Filter.Tendsto.exists_forall_ge
theorem Filter.Tendsto.exists_forall_ge [Nonempty α] [LinearOrder β] {f : α → β}
    (hf : Tendsto f cofinite atBot) : ∃ a₀, ∀ a, f a ≤ f a₀ 
Arguments: {α : Type u_2} {β : Type u_3} [Nonempty α] [LinearOrder β] {f : α → β} (hf : Filter.Tendsto f Filter.cofinite Filter.atBot)
Goal: ∃ a₀, ∀ (a : α), f a ≤ f a₀
-- Function.Surjective.le_map_cofinite
theorem Function.Surjective.le_map_cofinite {f : α → β} (hf : Surjective f) :
    cofinite ≤ map f cofinite 
Arguments: {α : Type u_2} {β : Type u_3} {f : α → β} (hf : Function.Surjective f)
Goal: Filter.cofinite ≤ Filter.map f Filter.cofinite
-- Function.Injective.tendsto_cofinite
theorem Function.Injective.tendsto_cofinite {f : α → β} (hf : Injective f) :
    Tendsto f cofinite cofinite 
Arguments: {α : Type u_2} {β : Type u_3} {f : α → β} (hf : Function.Injective f)
Goal: Filter.Tendsto f Filter.cofinite Filter.cofinite
-- Function.Injective.comap_cofinite_eq
theorem Function.Injective.comap_cofinite_eq {f : α → β} (hf : Injective f) :
    comap f cofinite = cofinite 
Arguments: {α : Type u_2} {β : Type u_3} {f : α → β} (hf : Function.Injective f)
Goal: Filter.comap f Filter.cofinite = Filter.cofinite
-- Function.Injective.nat_tendsto_atTop
theorem Function.Injective.nat_tendsto_atTop {f : ℕ → ℕ} (hf : Injective f) :
    Tendsto f atTop atTop 
Arguments: {f : ℕ → ℕ} (hf : Function.Injective f)
Goal: Filter.Tendsto f Filter.atTop Filter.atTop
-- Filter.sequence_mono
theorem sequence_mono : ∀ as bs : List (Filter α), Forall₂ (· ≤ ·) as bs → sequence as ≤ sequence bs
  
Arguments: {α : Type u} (as bs : List (Filter α))
Goal: List.Forall₂ (fun x x_1 => x ≤ x_1) as bs → sequence as ≤ sequence bs
-- Filter.mem_traverse
theorem mem_traverse :
    ∀ (fs : List β) (us : List γ),
      Forall₂ (fun b c => s c ∈ f b) fs us → traverse s us ∈ traverse f fs
  
Arguments: {α β γ : Type u} {f : β → Filter α} {s : γ → Set α} (fs : List β) (us : List γ)
Goal: List.Forall₂ (fun b c => s c ∈ f b) fs us → traverse s us ∈ traverse f fs
-- Filter.mem_traverse_iff
theorem mem_traverse_iff (fs : List β) (t : Set (List α)) :
    t ∈ traverse f fs ↔
      ∃ us : List (Set α), Forall₂ (fun b (s : Set α) => s ∈ f b) fs us ∧ sequence us ⊆ t 
Arguments: {α β : Type u} {f : β → Filter α} (fs : List β) (t : Set (List α))
Goal: t ∈ traverse f fs ↔ ∃ us, List.Forall₂ (fun b s => s ∈ f b) fs us ∧ sequence us ⊆ t
-- HNNExtension.t_mul_of
theorem t_mul_of (a : A) :
    t * (of (a : G) : HNNExtension G A B φ) = of (φ a : G) * t 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {φ : ↥A ≃* ↥B} (a : ↥A)
Goal: HNNExtension.t * HNNExtension.of ↑a = HNNExtension.of ↑(φ a) * HNNExtension.t
-- HNNExtension.of_mul_t
theorem of_mul_t (b : B) :
    (of (b : G) : HNNExtension G A B φ) * t = t * of (φ.symm b : G) 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {φ : ↥A ≃* ↥B} (b : ↥B)
Goal: HNNExtension.of ↑b * HNNExtension.t = HNNExtension.t * HNNExtension.of ↑(φ.symm b)
-- HNNExtension.equiv_eq_conj
theorem equiv_eq_conj (a : A) :
    (of (φ a : G) : HNNExtension G A B φ) = t * of (a : G) * t⁻¹ 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {φ : ↥A ≃* ↥B} (a : ↥A)
Goal: HNNExtension.of ↑(φ a) = HNNExtension.t * HNNExtension.of ↑a * HNNExtension.t⁻¹
-- HNNExtension.equiv_symm_eq_conj
theorem equiv_symm_eq_conj (b : B) :
    (of (φ.symm b : G) : HNNExtension G A B φ) = t⁻¹ * of (b : G) * t 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {φ : ↥A ≃* ↥B} (b : ↥B)
Goal: HNNExtension.of ↑(φ.symm b) = HNNExtension.t⁻¹ * HNNExtension.of ↑b * HNNExtension.t
-- HNNExtension.inv_t_mul_of
theorem inv_t_mul_of (b : B) :
    t⁻¹ * (of (b : G) : HNNExtension G A B φ) = of (φ.symm b : G) * t⁻¹ 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {φ : ↥A ≃* ↥B} (b : ↥B)
Goal: HNNExtension.t⁻¹ * HNNExtension.of ↑b = HNNExtension.of ↑(φ.symm b) * HNNExtension.t⁻¹
-- HNNExtension.of_mul_inv_t
theorem of_mul_inv_t (a : A) :
    (of (a : G) : HNNExtension G A B φ) * t⁻¹ = t⁻¹ * of (φ a : G) 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {φ : ↥A ≃* ↥B} (a : ↥A)
Goal: HNNExtension.of ↑a * HNNExtension.t⁻¹ = HNNExtension.t⁻¹ * HNNExtension.of ↑(φ a)
-- HNNExtension.lift_t
@[simp]
theorem lift_t (f : G →* H) (x : H) (hx : ∀ a : A, x * f ↑a = f (φ a : G) * x) :
    lift f x hx t = x 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {φ : ↥A ≃* ↥B} {H : Type u_2} [Group H] (f : G →* H) (x : H) (hx : ∀ (a : ↥A), x * f ↑a = f ↑(φ a) * x)
Goal: (HNNExtension.lift f x hx) HNNExtension.t = x
-- HNNExtension.lift_of
@[simp]
theorem lift_of (f : G →* H) (x : H) (hx : ∀ a : A, x * f ↑a = f (φ a : G) * x) (g : G) :
    lift f x hx (of g) = f g 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {φ : ↥A ≃* ↥B} {H : Type u_2} [Group H] (f : G →* H) (x : H) (hx : ∀ (a : ↥A), x * f ↑a = f ↑(φ a) * x) (g : G)
Goal: (HNNExtension.lift f x hx) (HNNExtension.of g) = f g
-- HNNExtension.hom_ext
@[ext high]
theorem hom_ext {f g : HNNExtension G A B φ →* M}
    (hg : f.comp of = g.comp of) (ht : f t = g t) : f = g 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {φ : ↥A ≃* ↥B} {M : Type u_3} [Monoid M] {f g : HNNExtension G A B φ →* M} (hg : f.comp HNNExtension.of = g.comp HNNExtension.of) (ht : f HNNExtension.t = g HNNExtension.t)
Goal: f = g
-- HNNExtension.induction_on
@[elab_as_elim]
theorem induction_on {motive : HNNExtension G A B φ → Prop}
    (x : HNNExtension G A B φ) (of : ∀ g, motive (of g))
    (t : motive t) (mul : ∀ x y, motive x → motive y → motive (x * y))
    (inv : ∀ x, motive x → motive x⁻¹) : motive x 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {φ : ↥A ≃* ↥B} {motive : HNNExtension G A B φ → Prop} (x : HNNExtension G A B φ) (of : ∀ (g : G), motive (HNNExtension.of g)) (t : motive HNNExtension.t) (mul : ∀ (x y : HNNExtension G A B φ), motive x → motive y → motive (x * y)) (inv : ∀ (x : HNNExtension G A B φ), motive x → motive x⁻¹)
Goal: motive x
-- HNNExtension.toSubgroup_one
@[simp]
theorem toSubgroup_one : toSubgroup A B 1 = A 
Arguments: {G : Type u_1} [Group G] (A B : Subgroup G)
Goal: HNNExtension.toSubgroup A B 1 = A
-- HNNExtension.toSubgroup_neg_one
@[simp]
theorem toSubgroup_neg_one : toSubgroup A B (-1) = B 
Arguments: {G : Type u_1} [Group G] (A B : Subgroup G)
Goal: HNNExtension.toSubgroup A B (-1) = B
-- HNNExtension.toSubgroupEquiv_one
@[simp]
theorem toSubgroupEquiv_one : toSubgroupEquiv φ 1 = φ 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} (φ : ↥A ≃* ↥B)
Goal: HNNExtension.toSubgroupEquiv φ 1 = φ
-- HNNExtension.toSubgroupEquiv_neg_one
@[simp]
theorem toSubgroupEquiv_neg_one : toSubgroupEquiv φ (-1) = φ.symm 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} (φ : ↥A ≃* ↥B)
Goal: HNNExtension.toSubgroupEquiv φ (-1) = φ.symm
-- HNNExtension.toSubgroupEquiv_neg_apply
@[simp]
theorem toSubgroupEquiv_neg_apply (u : ℤˣ) (a : toSubgroup A B u) :
    (toSubgroupEquiv φ (-u) (toSubgroupEquiv φ u a) : G) = a 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} (φ : ↥A ≃* ↥B) (u : ℤˣ) (a : ↥(HNNExtension.toSubgroup A B u))
Goal: ↑((HNNExtension.toSubgroupEquiv φ (-u)) ((HNNExtension.toSubgroupEquiv φ u) a)) = ↑a
-- HNNExtension.NormalWord.TransversalPair.compl
structure TransversalPair : Type _ :=
    set : ℤˣ → Set G
    compl : ∀ u, IsComplement (toSubgroup A B u : Subgroup G) (set u)
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} (self : HNNExtension.NormalWord.TransversalPair G A B) (u : ℤˣ)
Goal: Subgroup.IsComplement (↑(HNNExtension.toSubgroup A B u)) (self.set u)
-- HNNExtension.NormalWord.ReducedWord.chain
structure ReducedWord : Type _ :=
    head : G
    toList : List (ℤˣ × G)
    chain : toList.Chain' (fun a b => a.2 ∈ toSubgroup A B a.1 → a.1 = b.1)
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} (self : HNNExtension.NormalWord.ReducedWord G A B)
Goal: List.Chain' (fun a b => a.2 ∈ HNNExtension.toSubgroup A B a.1 → a.1 = b.1) self.toList
-- HNNExtension.NormalWord.ReducedWord.empty_head
@[simps]
def ReducedWord.empty : ReducedWord G A B 
Arguments: (G : Type u_1) [Group G] (A B : Subgroup G)
Goal: (HNNExtension.NormalWord.ReducedWord.empty G A B).head = 1
-- HNNExtension.NormalWord.ReducedWord.empty_toList
@[simps]
def ReducedWord.empty : ReducedWord G A B 
Arguments: (G : Type u_1) [Group G] (A B : Subgroup G)
Goal: (HNNExtension.NormalWord.ReducedWord.empty G A B).toList = []
-- HNNExtension.NormalWord.mem_set
structure _root_.HNNExtension.NormalWord (d : TransversalPair G A B)
    extends ReducedWord G A B : Type _ :=
    mem_set : ∀ (u : ℤˣ) (g : G), (u, g) ∈ toList → g ∈ d.set u
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {d : HNNExtension.NormalWord.TransversalPair G A B} (self : HNNExtension.NormalWord d) (u : ℤˣ) (g : G)
Goal: (u, g) ∈ self.toList → g ∈ d.set u
-- HNNExtension.NormalWord.ext
@[ext]
theorem ext {w w' : NormalWord d}
    (h1 : w.head = w'.head) (h2 : w.toList = w'.toList) : w = w' 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {d : HNNExtension.NormalWord.TransversalPair G A B} {w w' : HNNExtension.NormalWord d} (h1 : w.head = w'.head) (h2 : w.toList = w'.toList)
Goal: w = w'
-- HNNExtension.NormalWord.empty_toList
@[simps]
def empty : NormalWord d 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {d : HNNExtension.NormalWord.TransversalPair G A B}
Goal: HNNExtension.NormalWord.empty.toList = []
-- HNNExtension.NormalWord.empty_head
@[simps]
def empty : NormalWord d 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {d : HNNExtension.NormalWord.TransversalPair G A B}
Goal: HNNExtension.NormalWord.empty.head = 1
-- HNNExtension.NormalWord.ofGroup_head
@[simps]
def ofGroup (g : G) : NormalWord d 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {d : HNNExtension.NormalWord.TransversalPair G A B} (g : G)
Goal: (HNNExtension.NormalWord.ofGroup g).head = g
-- HNNExtension.NormalWord.ofGroup_toList
@[simps]
def ofGroup (g : G) : NormalWord d 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {d : HNNExtension.NormalWord.TransversalPair G A B} (g : G)
Goal: (HNNExtension.NormalWord.ofGroup g).toList = []
-- HNNExtension.NormalWord.group_smul_def
theorem group_smul_def (g : G) (w : NormalWord d) :
    g • w = { w with head := g * w.head } 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {d : HNNExtension.NormalWord.TransversalPair G A B} (g : G) (w : HNNExtension.NormalWord d)
Goal: g • w = { head := g * w.head, toList := w.toList, chain := ⋯, mem_set := ⋯ }
-- HNNExtension.NormalWord.group_smul_head
@[simp]
theorem group_smul_head (g : G) (w : NormalWord d) : (g • w).head = g * w.head 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {d : HNNExtension.NormalWord.TransversalPair G A B} (g : G) (w : HNNExtension.NormalWord d)
Goal: (g • w).head = g * w.head
-- HNNExtension.NormalWord.group_smul_toList
@[simp]
theorem group_smul_toList (g : G) (w : NormalWord d) : (g • w).toList = w.toList 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {d : HNNExtension.NormalWord.TransversalPair G A B} (g : G) (w : HNNExtension.NormalWord d)
Goal: (g • w).toList = w.toList
-- HNNExtension.NormalWord.cons_toList
@[simps]
def cons (g : G) (u : ℤˣ) (w : NormalWord d) (h1 : w.head ∈ d.set u)
    (h2 : ∀ u' ∈ Option.map Prod.fst w.toList.head?, w.head ∈ toSubgroup A B u → u = u') :
    NormalWord d 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {d : HNNExtension.NormalWord.TransversalPair G A B} (g : G) (u : ℤˣ) (w : HNNExtension.NormalWord d) (h1 : w.head ∈ d.set u) (h2 : ∀ u' ∈ Option.map Prod.fst w.toList.head?, w.head ∈ HNNExtension.toSubgroup A B u → u = u')
Goal: (HNNExtension.NormalWord.cons g u w h1 h2).toList = (u, w.head) :: w.toList
-- HNNExtension.NormalWord.cons_head
@[simps]
def cons (g : G) (u : ℤˣ) (w : NormalWord d) (h1 : w.head ∈ d.set u)
    (h2 : ∀ u' ∈ Option.map Prod.fst w.toList.head?, w.head ∈ toSubgroup A B u → u = u') :
    NormalWord d 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {d : HNNExtension.NormalWord.TransversalPair G A B} (g : G) (u : ℤˣ) (w : HNNExtension.NormalWord d) (h1 : w.head ∈ d.set u) (h2 : ∀ u' ∈ Option.map Prod.fst w.toList.head?, w.head ∈ HNNExtension.toSubgroup A B u → u = u')
Goal: (HNNExtension.NormalWord.cons g u w h1 h2).head = g
-- HNNExtension.NormalWord.consRecOn_ofGroup
@[simp]
theorem consRecOn_ofGroup {motive : NormalWord d → Sort*}
    (g : G) (ofGroup : ∀g, motive (ofGroup g))
    (cons : ∀ (g : G) (u : ℤˣ) (w : NormalWord d) (h1 : w.head ∈ d.set u)
      (h2 : ∀ u' ∈ Option.map Prod.fst w.toList.head?, w.head
        ∈ toSubgroup A B u → u = u'),
      motive w → motive (cons g u w h1 h2)) :
    consRecOn (.ofGroup g) ofGroup cons = ofGroup g 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {d : HNNExtension.NormalWord.TransversalPair G A B} {motive : HNNExtension.NormalWord d → Sort u_4} (g : G) (ofGroup : (g : G) → motive (HNNExtension.NormalWord.ofGroup g)) (cons :
  (g : G) →
    (u : ℤˣ) →
      (w : HNNExtension.NormalWord d) →
        (h1 : w.head ∈ d.set u) →
          (h2 : ∀ u' ∈ Option.map Prod.fst w.toList.head?, w.head ∈ HNNExtension.toSubgroup A B u → u = u') →
            motive w → motive (HNNExtension.NormalWord.cons g u w h1 h2))
Goal: HNNExtension.NormalWord.consRecOn (HNNExtension.NormalWord.ofGroup g) ofGroup cons = ofGroup g
-- HNNExtension.NormalWord.consRecOn_cons
@[simp]
theorem consRecOn_cons {motive : NormalWord d → Sort*}
    (g : G) (u : ℤˣ) (w : NormalWord d) (h1 : w.head ∈ d.set u)
    (h2 : ∀ u' ∈ Option.map Prod.fst w.toList.head?, w.head ∈ toSubgroup A B u → u = u')
    (ofGroup : ∀g, motive (ofGroup g))
    (cons : ∀ (g : G) (u : ℤˣ) (w : NormalWord d) (h1 : w.head ∈ d.set u)
      (h2 : ∀ u' ∈ Option.map Prod.fst w.toList.head?,
        w.head ∈ toSubgroup A B u → u = u'),
      motive w → motive (cons g u w h1 h2)) :
    consRecOn (.cons g u w h1 h2) ofGroup cons = cons g u w h1 h2
      (consRecOn w ofGroup cons) 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {d : HNNExtension.NormalWord.TransversalPair G A B} {motive : HNNExtension.NormalWord d → Sort u_4} (g : G) (u : ℤˣ) (w : HNNExtension.NormalWord d) (h1 : w.head ∈ d.set u) (h2 : ∀ u' ∈ Option.map Prod.fst w.toList.head?, w.head ∈ HNNExtension.toSubgroup A B u → u = u') (ofGroup : (g : G) → motive (HNNExtension.NormalWord.ofGroup g)) (cons :
  (g : G) →
    (u : ℤˣ) →
      (w : HNNExtension.NormalWord d) →
        (h1 : w.head ∈ d.set u) →
          (h2 : ∀ u' ∈ Option.map Prod.fst w.toList.head?, w.head ∈ HNNExtension.toSubgroup A B u → u = u') →
            motive w → motive (HNNExtension.NormalWord.cons g u w h1 h2))
Goal: HNNExtension.NormalWord.consRecOn (HNNExtension.NormalWord.cons g u w h1 h2) ofGroup cons =
  cons g u w h1 h2 (HNNExtension.NormalWord.consRecOn w ofGroup cons)
-- HNNExtension.NormalWord.smul_cons
@[simp]
theorem smul_cons (g₁ g₂ : G) (u : ℤˣ) (w : NormalWord d) (h1 : w.head ∈ d.set u)
    (h2 : ∀ u' ∈ Option.map Prod.fst w.toList.head?, w.head ∈ toSubgroup A B u → u = u') :
    g₁ • cons g₂ u w h1 h2 = cons (g₁ * g₂) u w h1 h2 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {d : HNNExtension.NormalWord.TransversalPair G A B} (g₁ g₂ : G) (u : ℤˣ) (w : HNNExtension.NormalWord d) (h1 : w.head ∈ d.set u) (h2 : ∀ u' ∈ Option.map Prod.fst w.toList.head?, w.head ∈ HNNExtension.toSubgroup A B u → u = u')
Goal: g₁ • HNNExtension.NormalWord.cons g₂ u w h1 h2 = HNNExtension.NormalWord.cons (g₁ * g₂) u w h1 h2
-- HNNExtension.NormalWord.smul_ofGroup
@[simp]
theorem smul_ofGroup (g₁ g₂ : G) :
    g₁ • (ofGroup g₂ : NormalWord d) = ofGroup (g₁ * g₂) 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {d : HNNExtension.NormalWord.TransversalPair G A B} (g₁ g₂ : G)
Goal: g₁ • HNNExtension.NormalWord.ofGroup g₂ = HNNExtension.NormalWord.ofGroup (g₁ * g₂)
-- HNNExtension.NormalWord.unitsSMulGroup_snd
theorem unitsSMulGroup_snd (u : ℤˣ) (g : G) :
    (unitsSMulGroup φ d u g).2 = ((d.compl u).equiv g).2 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} (φ : ↥A ≃* ↥B) (d : HNNExtension.NormalWord.TransversalPair G A B) (u : ℤˣ) (g : G)
Goal: (HNNExtension.NormalWord.unitsSMulGroup φ d u g).2 = (⋯.equiv g).2
-- HNNExtension.NormalWord.not_cancels_of_cons_hyp
theorem not_cancels_of_cons_hyp (u : ℤˣ) (w : NormalWord d)
    (h2 : ∀ u' ∈ Option.map Prod.fst w.toList.head?,
      w.head ∈ toSubgroup A B u → u = u') :
    ¬ Cancels u w 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} {d : HNNExtension.NormalWord.TransversalPair G A B} (u : ℤˣ) (w : HNNExtension.NormalWord d) (h2 : ∀ u' ∈ Option.map Prod.fst w.toList.head?, w.head ∈ HNNExtension.toSubgroup A B u → u = u')
Goal: ¬HNNExtension.NormalWord.Cancels u w
-- HNNExtension.NormalWord.unitsSMul_cancels_iff
theorem unitsSMul_cancels_iff (u : ℤˣ) (w : NormalWord d) :
    Cancels (-u) (unitsSMul φ u w) ↔ ¬ Cancels u w 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} (φ : ↥A ≃* ↥B) {d : HNNExtension.NormalWord.TransversalPair G A B} (u : ℤˣ) (w : HNNExtension.NormalWord d)
Goal: HNNExtension.NormalWord.Cancels (-u) (HNNExtension.NormalWord.unitsSMul φ u w) ↔ ¬HNNExtension.NormalWord.Cancels u w
-- HNNExtension.NormalWord.unitsSMul_neg
theorem unitsSMul_neg (u : ℤˣ) (w : NormalWord d) :
    unitsSMul φ (-u) (unitsSMul φ u w) = w 
Arguments: {G : Type u_1} [Group G] {A B : Subgroup G} (φ : ↥A ≃* ↥B) {d : HNNExtension.NormalWord.TransversalPair G A B} (u : ℤˣ) (w : HNNExtension.NormalWord d)
Goal: HNNExtension.NormalWord.unitsSMul φ (-u) (HNNExtension.NormalWord.unitsSMul φ u w) = w