Zulip Chat Archive

Stream: Is there code for X?

Topic: word length in a free group


Julian Berman (Apr 01 2022 at 14:30):

I see a few discussions which are possibly relevant but no conclusion -- just to be sure I'm not missing it, can I do induction on the length of a word in a free group? Not quite yet right, we don't have word length?

Floris van Doorn (Apr 01 2022 at 14:34):

It seems like we have docs#free_group.to_word, and you can then do structural induction on the list, or even induction on the length of the list.

Julian Berman (Apr 01 2022 at 14:36):

I was trying the latter, let me try again maybe I made some simple mistake.

Reid Barton (Apr 01 2022 at 14:42):

Note that some arguments "by induction on the length of a word" might really just be arguments by induction on the construction of an element

Reid Barton (Apr 01 2022 at 14:45):

which makes sense even when reduced words do not (if you don't have decidable equality on the generators)

Julian Berman (Apr 01 2022 at 14:49):

So I'm sure there's some math I don't know as well, I'm not sure I even understand your suggestion sorry :/, but I see things complain at me about decidability already -- I'm here:

import group_theory.is_free_group

variables {G : Type*} [group G] [is_free_group G]

/-- A cyclically reduced word is a word where every cyclic conjugate is reduced. -/
def is_cyclically_red (w : G) :=  u v : G, w = u * v * u⁻¹  w = v

/-- Inverses of cyclically reduced words are cyclically reduced. -/
lemma is_cyclically_red.inv {w : G} (h : is_cyclically_red w) : is_cyclically_red w⁻¹ :=
λ u v huv, inv_eq_iff_inv_eq.mp $ (h u v⁻¹ $ inv_inv w  conj_inv.rec (inv_inj.symm.mp huv)).symm

/-- A word is cyclically reduced iff its inverse is cyclically reduced. -/
@[simp] lemma is_cyclically_red_inv_iff {w : G} : is_cyclically_red w⁻¹  is_cyclically_red w :=
λ h, inv_inv w  h.inv, is_cyclically_red.inv

/-- The (unique) cyclic reduction of a word. -/
def cyclic_red (w : G) [decidable_eq (is_free_group.generators G)] :  (r : G × G), w = r.1 * r.2 * r.1⁻¹  is_cyclically_red r.2 := begin
  simp only [prod.exists],
  set n := list.length (free_group.to_word ((is_free_group.to_free_group G) w)),
end

and I wanted to induct on how long w is -- hopefully I'm not already off track. A hint would definitely be appreciated.

Reid Barton (Apr 01 2022 at 15:47):

I take it cyclic_red is meant to be a lemma?

Julian Berman (Apr 01 2022 at 16:57):

Er, indeed


Last updated: Dec 20 2023 at 11:08 UTC