0
$\begingroup$

Edit: fixed misaligned indentation for "Update x and y by", below. I also had two little ideas that might help.

  1. consider first the case where the digit 7 is not allowed, simplifying the algorithm as then there are no signed_distance changes in the algorithm.
  2. digit traversal: to prove e.g. the action of (12) is equivalent to the action $\sigma_K$, track the movement of a random number through the algorithm and and consider where we land when we encounter a 1 and where we would land instead if it were a 2. This should be symmetrical to the K-axis.

Introduction to the Problem:

I'm investigating the equivalence between two distinct group actions on a particular algebra over the reals $ A(F_n)$, where $F_n$ is defined as the set of numbers whose octal representation consists of $ n $ digits chosen from the set $ \{1, 2, 4, 7\} $. Each element of $ F_n $ uniquely corresponds to the centroid of a subtriangle in a tiling of an equilateral triangle. These numbers exhibit a group structure known as "floretions", however, for the restricted question posed below, we will never need to actually perfom this multiplication.

Algorithm to Place Centroid of a Number:

To associate each element $ b $ in $ F_n $ with a unique centroid of a subtriangle in the tiling of an equilateral triangle, we can use the following algorithm:

  1. Initialize $ (x, y) $ coordinates at (0,0) in the plane or at the center of a canvas of dimensions $ \text{height} \times \text{width} $.
  2. Initialize a variable $ \text{distance} = \text{height} $ and $ \text{sign_distance} = -1 $.
  3. For each octal digit $ d $ in $ b $, starting from the most significant digit and to the least significant digit:
    • If $ d = 7 $, multiply $ \text{sign_distance} $ by $ -1 $.
    • Otherwise, set angle $ \theta $ based on $ d $ as follows:
      • $ d = 1 $: $ \theta = 210^\circ $
      • $ d = 2 $: $ \theta = 90^\circ $
      • $ d = 4 $: $ \theta = 330^\circ $
      • Update $ x $ and $ y $ by:
        $x = x + \cos(\theta) \times \text{distance} \times \text{sign_distance}$, $y = y + \sin(\theta) \times \text{distance} \times \text{sign_distance}$
    • Halve $ \text{distance} $ for the next iteration.
  4. The final $ (x, y) $ coordinates and $ 2 \times \text{distance} $ give the centroid and height of the associated subtriangle, respectively.

In Python


 def place_base_vecs(base_vector):  
 
       # For each base vector of a given order, returns the 
       # coordinates of the center (centroid) of the
       # equilateral triangle associated with it, along
       # with the final distance that determines 
       # the triangle height.
       # Args:
       #     base_vector (str): 
       #     The base vector in octal representation.
       # Returns:
       #     tuple: x, y coordinates, final distance 
      
        # place x and y in the middle of the canvas 
        x, y = self.height // 2, self.width // 2

        distance = self.height 
        sign_distance = -1

        # starts with most significant digit
        for digit in base_vector:

            if digit == '7':
                sign_distance *= -1
            else:
                if digit == '1':
                    angle = 210

                elif digit == '2':
                    angle = 90

                elif digit == '4':
                    angle = 330
                else:
                    print(f"Invalid digit {digit}")
                    return

                x += np.cos(np.radians(angle)) * distance * sign_distance
                y += np.sin(np.radians(angle)) * distance * sign_distance

 
            distance /= 2  # Halve the distance for the next iteration
 
        return x, y, 2 * distance 

Definitions and Notation:

  • Dihedral Group $ D_3 $: $ \{ R_0, R_{120}, R_{240}, \sigma_I, \sigma_J, \sigma_K \} $ (rotations and reflections).
  • Symmetric Group $ S_3 $: $ \{ (12), (24), (41), (124), (142), (7) \} $

Problem Statement:

Consider two group actions on $ A(F_n) $:

  1. Group Action 1: $ D_3 \times A(F_n) \rightarrow A(F_n) $ (Rotation and reflection of the corresponding centroids in the plane). For $n=3$, $\sigma_K $ is a flip along the axis below (consisting of all tiles with digits 7 and 4 only)

enter image description here

  1. Group Action 2: $ S_3 \times A(F_n) \rightarrow A(F_n) $ (Permutation of the octal digits). E.g. (12).(741 + 221) = 742 + 112

Is it possible to show that these two group actions are essentially the same by analysing the algorithm?

Example for $ n = 3 $ and x = 111 + 222:

  • Stabilizer under $ D_3 $: $ \text{Stab}_{D3}(x) = \{ \text{id}, \sigma_K \} $
  • Stabilizer under $ S_3 $: $ \text{Stab}_{S3}(x) = \{ (7), (12) \} $
$\endgroup$

1 Answer 1

0
$\begingroup$

Equivalence of Group Actions $D_3$​ and $S_3$​ on Floretion Algebra $A(F_n)$

I propose a visual and algorithmic approach to demonstrate the equivalence of two group actions on the algebra over the reals $A(F_n)$, where $F_n$ is a set of numbers with octal representations from the set {1,2,4,7}. Each element of $F_n$ uniquely corresponds to the centroid of a subtriangle in an equilateral triangle tiling.

Group Actions:

$D_3 \times A(F_n) \rightarrow A(F_n)$: Rotation and reflection of centroids. Example: $\sigma_K \cdot (741 + 221) = 742 + 112$.

$S_3 \times A(F_n) \rightarrow A(F_n)$: Permutation of octal digits. Example: $(12) \cdot (741 + 221) = 742 + 112$.

Generators: $D_3$ is generated by $\langle \sigma_K, \sigma_I \rangle$, while $S_3$ is generated by $\langle (12), (24) \rangle$. Establishing that $\sigma_K$ acts equivalently to $(12)$ on a base vector $b$ will suffice for our proof, as the action of $\sigma_I$ can be similarly shown to be equivalent to $(24)$.

Algorithm Inspection: By inspecting the "place_triangle" algorithm, we can track the centroids' placement iteratively for a base vector $b$ and its image under $(12)$. We observe that $b$ and $\sigma_K(b)$ are consistently mirrored across the K-axis, implying the equivalence of $\sigma_K$ from $D_3$ to $(12)$ from $S_3$.

Visualization: The accompanying plot visually represents the paths of base vector $b = 17214$ and its image under $(12)$, depicted in light blue and dark green, respectively. The paths validate that the reflection across the K-axis by $\sigma_K$ corresponds to the permutation by $(12)$, as both result in mirrored placements across the K-axis.

Code Snippet in R:

# set working directory 
setwd("your_working_dir")

library(units)

# Setup angles
I_deg = as_units(210, "degrees")
J_deg = as_units(90, "degrees")
K_deg = as_units(330, "degrees")

I_rad <- as.numeric(set_units(I_deg, "radians"))
J_rad <- as.numeric(set_units(J_deg, "radians"))
K_rad <- as.numeric(set_units(K_deg, "radians"))

# Function to place triangle
place_triangle <- function(base_vec) {
  distance = 2
  x_coords = c(0)
  y_coords = c(0)
  sign_distance = 1
  
  x_coord = 0
  y_coord = 0
  
  digits = unlist(strsplit(base_vec,""))
  for (digit in digits) {
    if (digit == '7') {
      sign_distance = -1 * sign_distance
    } else {
      if (digit == '1') {
        angle = I_rad
      } else if (digit == '2') {
        angle = J_rad
      } else if (digit == '4') {
        angle = K_rad
      } else {
        print("Invalid digit!")
        return(NULL)
      }
      x_coord = x_coord + cos(angle) * distance * sign_distance
      y_coord = y_coord + sin(angle) * distance * sign_distance
      
      x_coords = append(x_coords, x_coord)
      y_coords = append(y_coords, y_coord)
    }
    distance = distance / 2
  }
  data.frame(x = x_coords, y = y_coords, height = distance*2)
}

# Function for sigma_K transformation
sigma_K <- function(x) {
  x = gsub("1", "8", x)
  x = gsub("2", "1", x)
  x = gsub("8", "2", x)
  x
}

# Base vector
base_vec = "17214"
#base_vec = "11111"
# Placing triangles
result <- place_triangle(base_vec)
result_sigma_K <- place_triangle(sigma_K(base_vec))

# Axis lines
I_axis = data.frame(x = c(4*cos(I_rad), -4*cos(I_rad)), y = c(4*sin(I_rad), -4*sin(I_rad)))
J_axis = data.frame(x = c(4*cos(J_rad), -4*cos(J_rad)), y = c(4*sin(J_rad), -4*sin(J_rad)))
K_axis = data.frame(x = c(4*cos(K_rad), -4*cos(K_rad)), y = c(4*sin(K_rad), -4*sin(K_rad)))

png(filename = paste(base_vec, ".png", sep = ""),   # Save plot to this file
    width = 3000,            # Width of the plot in pixels
    height = 3000,           # Height of the plot in pixels
    res = 330)   

# Plotting
plot(result$x, result$y, xlim = c(-4,4), ylim = c(-4,4), col = "light blue", type = "l",
     main = paste("Triangle Placement for base_vec =", base_vec),
     xlab = "X-axis", ylab = "Y-axis")

points(I_axis, type = "l", col = "blue", lwd = 2)
points(J_axis, type = "l", col = "orange", lwd = 2)
points(K_axis, type = "l", col = "red", lwd = 2)

points(result$x, result$y, col = "dodgerblue", type = "b", lty = 1, lwd = 2)
points(result_sigma_K$x, result_sigma_K$y, col = "darkgreen", lty = 1, type = "b", lwd = 2)
legend(-3.5,4, legend=c(paste("base_vec = ", base_vec),
                        paste("base_vec.(12) = ", sigma_K(base_vec))), 
                        lty=2, col = c("dodgerblue", "darkgreen"), lwd = 5)
 
text(-2.5, -2, "I-axis", col = "blue")
text(2.5, -2, "K-axis", col = "red")
text(.4, 3.5, "J-axis", col = "orange")
grid()

dev.off()
 

Conclusion: The visual and algorithmic evidence suggests an equivalence of group actions for positive base vectors, which, due to the linearity of group actions, extends to the entire space $A(F_n)$. If the positive base vectors are shown to transform equivalently under both $D_3$ and $S_3$, then the actions of these groups on $A(F_n)$ are also equivalent.

Figure reference: enter image description here

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .