@@ -34,7 +34,7 @@ complements that is analogous to the fundamental group of the
3434exterior, and he showed that the quandle associated to an oriented
3535knot is invariant up to orientation-reversed mirror image. Racks were
3636used by Fenn and Rourke for framed codimension-2 knots and
37- links. [ FennRourke1992 ]
37+ links in [ FennRourke1992 ] . Unital shelves are discussed in [ crans2017 ] .
3838
3939The name "rack" came from wordplay by Conway and Wraith for the "wrack
4040and ruin" of forgetting everything but the conjugation operation for a
4343## Main definitions
4444
4545* `shelf` is a type with a self-distributive action
46+ * `unital_shelf` is a shelf with a left and right unit
4647* `rack` is a shelf whose action for each element is invertible
4748* `quandle` is a rack whose action for an element fixes that element
4849* `quandle.conj` defines a quandle of a group acting on itself by conjugation.
@@ -54,6 +55,11 @@ group.
5455* `rack.envel_group` is left adjoint to `quandle.conj` (`to_envel_group.map`).
5556 The universality statements are `to_envel_group.univ` and `to_envel_group.univ_uniq`.
5657
58+ ## Implementation notes
59+
60+ "Unital racks" are uninteresting (see `rack.assoc_iff_id`, `unital_shelf.assoc`), so we do not
61+ define them.
62+
5763## Notation
5864
5965The following notation is localized in `quandles`:
@@ -92,6 +98,14 @@ class shelf (α : Type u) :=
9298(act : α → α → α)
9399(self_distrib : ∀ {x y z : α}, act x (act y z) = act (act x y) (act x z))
94100
101+ /--
102+ A *unital shelf* is a shelf equipped with an element `1` such that, for all elements `x`,
103+ we have both `x ◃ 1` and `1 ◃ x` equal `x`.
104+ -/
105+ class unital_shelf (α : Type u) extends shelf α, has_one α :=
106+ (one_act : ∀ a : α, act 1 a = a)
107+ (act_one : ∀ a : α, act a 1 = a)
108+
95109/--
96110The type of homomorphisms between shelves.
97111This is also the notion of rack and quandle homomorphisms.
@@ -120,6 +134,38 @@ localized "infixr (name := shelf_hom) ` →◃ `:25 := shelf_hom" in quandles
120134
121135open_locale quandles
122136
137+ namespace unital_shelf
138+ open shelf
139+
140+ variables {S : Type *} [unital_shelf S]
141+
142+ /--
143+ A monoid is *graphic* if, for all `x` and `y`, the *graphic identity*
144+ `(x * y) * x = x * y` holds. For a unital shelf, this graphic
145+ identity holds.
146+ -/
147+ lemma act_act_self_eq (x y : S) : (x ◃ y) ◃ x = x ◃ y :=
148+ begin
149+ have h : (x ◃ y) ◃ x = (x ◃ y) ◃ (x ◃ 1 ) := by rw act_one,
150+ rw [h, ←shelf.self_distrib, act_one],
151+ end
152+
153+ lemma act_idem (x : S) : (x ◃ x) = x := by rw [←act_one x, ←shelf.self_distrib, act_one, act_one]
154+
155+ lemma act_self_act_eq (x y : S) : x ◃ (x ◃ y) = x ◃ y :=
156+ begin
157+ have h : x ◃ (x ◃ y) = (x ◃ 1 ) ◃ (x ◃ y) := by rw act_one,
158+ rw [h, ←shelf.self_distrib, one_act],
159+ end
160+
161+ /--
162+ The associativity of a unital shelf comes for free.
163+ -/
164+ lemma assoc (x y z : S) : (x ◃ y) ◃ z = x ◃ y ◃ z :=
165+ by rw [self_distrib, self_distrib, act_act_self_eq, act_self_act_eq]
166+
167+ end unital_shelf
168+
123169namespace rack
124170variables {R : Type *} [rack R]
125171
0 commit comments