Bernhard Reinke writes:
I think I have a sketch for an example of a magma satisfying 206 but not 1648. I use the translation invariant approach, but for a non-commutative group: let $$ G $$ the free product of three cyclic groups of order 2. If we have the alphabet $$ A = \{a,b,c\} $$ then we can identify $$ G $$ with the reduced words in $$ A $$ that have no subwords of the form $$ aa, bb, cc $$.
Our magma will be defined on G and will satisfy
x ◇ y = x f(x^{-1}y)
where $$ f \colon G \rightarrow \{1, a, b, c\} $$.
Then the RHS of 206 is
(x ◇ (x ◇ y)) ◇ y = (x ◇ (x f(x^{-1}y)) ◇ y = (x f(f(x^{-1} y))) ◇ y = x f(f(x^{-1} y)) f( (f(f(x^{-1} y))^{-1} x^{-1} y)
Setting $$ z = x^{-1} y $$, we get that 206 is equivalent to $$ f(f(z)) f ( f(f(z))^{-1} z) = 1 $$. Under the assumption that $$f$$ maps to $$\{1, a, b, c\}$$ (so $$ f(z) = f(z)^{-1} $$), this simplifies to
f(f(z)) = f( f(f(z)) z)
I claim the following f satisfies this: we set
f(1) = 1, f(a) = b, f(b) = c, f(c) = a
now, if $$w$$ is a nonempty reduced word not starting in $$a$$, we set $$ f(aw) = a $$, cyclically symmetric for reduced words starting in b and and c. Let us check that this satisfies $$f(f(z)) = f( f(f(z)) z)$$:
It is clear that $$ f(f(1)) = f( f(f(1)) 1) = 1 $$.
We have $$ f(f(a)) = f(b) = c$$, and $$f(f(f(a))a) = f(ca) = c$$.
For $$w$$ is a nonempty reduced word not starting in $$a$$, we have $$ f(f(aw)) = f(a) = b, so f( f(f(aw)) aw) = f(baw) = b$$. The rest follows by symmetry.
I think 1648 translates to $$ f(z)f(f((f(z))^{-1} z)) = 1 $$ this is not satisfied, as $$ f(a) f(f( (f(a))^{-1} a) = b f(f(ba)) = b f(b) = bc \not= 1 $$.
I hope I haven't made any computational mistakes (this is in fact my second try, :sweat_smile: ), would someone like to check whether this makes sense? I don't think I would be able to formalize this in Lean myself.
Implementation notes #
This contains a self-contained development of the free product of three copies of the two-element group, by defining reduced words, a reduction function, and deriving enough API for it. In the end we define our magma of interest directly, so this free product group is not explicitly defined.
The development can easily be generalized to more than three copies if needed, just swap out Fin 3
.
Reduced words do not have the same element adjacent to each other
Equations
- ThreeC2.IsRed w = ∀ (i : ℕ) (h : i + 1 < List.length w), w[i] ≠ w[i + 1]
Instances For
The reduction function, nicely concrete and executable (for by decide
later) and somewhat
efficient (not that that matters).
Equations
- ThreeC2.red w = ThreeC2.red.go [] w
Instances For
Equations
- ThreeC2.red.go x [] = List.reverse x
- ThreeC2.red.go [] (x_2 :: xs) = ThreeC2.red.go [x_2] xs
- ThreeC2.red.go (y :: ys) (x_2 :: xs) = if x_2 = y then ThreeC2.red.go ys xs else ThreeC2.red.go (x_2 :: y :: ys) xs
Instances For
Equations
- ThreeC2.red.go_aux x✝ [] x = List.reverse x✝
- ThreeC2.red.go_aux [] (x_3 :: xs) x_4 = ThreeC2.red.go_aux [x_3] xs ⋯
- ThreeC2.red.go_aux (y :: ys) (x_3 :: xs) h = if heq : x_3 = y then ThreeC2.red.go_aux ys xs ⋯ else ThreeC2.red.go_aux (x_3 :: y :: ys) xs ⋯
Instances For
Instances For
We can reduce anywhere in a term. This is essentially a proof of confluence
The crucial step towards cancellation.
The crucial relation of that function
The magma instance
Equations
- One or more equations did not get rendered due to their size.
two variants of the main crucial relation
Equations
- ThreeC2.M2 = { x : ThreeC2.W × Bool // ThreeC2.IsRed x.1 }
Instances For
Equations
- One or more equations did not get rendered due to their size.