# Uniform Circle Formation for Fully, Semi-, and Asynchronous Opaque Robots with Lights
## 6 The Algorithm for the Semi-Synchronous Mode
Precisely, **case a**--_pivot_s1_ is used to light the pivots in a configuration with an odd number of robots and one robot on the symmetry axis, **case b**--_pivot_s2_ is used for an even number of robots and no robots on the symmetry axis, and **case c**--_pivot_s3_ is used for an even number of robots and two robots on the symmetry axis. As in the fsynch mode, robots can agree on an _upper_ and a _lower_ part of the main diameter, and so of the SEC, by considering the half-SEC angle-strings. As stated before, more angle robots in each half-SEC must be fixed, so that at least three robots on the SEC are always visible to the robots which have to travel towards the safe diameters. Note that only pivots on the axis can be hidden from the robots on the SEC, whereas _pivot_s2_ and angle robots are always visible to them. So, in this **first epoch**, for **cases a** and **c**, the robots on the symmetry axis immediately assume the color _pivot_s1_ and _pivot_s3_, respectively, and stay still. For **case b**, just two robots are elected such that they are symmetrical to the axis, one for each half-SEC, and set their lights with the color _placeholder_. To elect the placeholders, the closest robot (per each half-SEC) to the upper endpoint of the main diameter can be chosen. The two placeholders fix the initial axis of symmetry (in fact, given two points on a circle there exists just one symmetry axis dividing them) which is necessary in the second epoch where the pivots set themselves properly. Now, the **second epoch** comes: two regular tuples centered around the two opposite endpoints of the main diameter are set, by moving some robots on the \(n\)-gon vertices. Placeholders stay still. So, in **case a**, a _regular 3-tuple_ (_angle_, _pivot_s1_, _angle_) is formed in the upper part of the SEC, and a _regular 4-tuple_ (_angle_, _angle_, _angle_, _angle_) in the lower part. For **case b**, a _regular 4-tuple_ (_angle_, _pivot_s2_, _pivot_s2_, _angle_) is formed in the upper part of the SEC (by moving both angles and pivots), and a _regular 2-tuple_ (_angle_, _angle_) in the lower part. For **case c**, a _regular 3-tuple_ (_angle_, _pivot_s3_, _angle_) is formed in the upper part of the SEC, and a _regular 5-tuple_ (_angle_, _angle_, _pivot_s3_, _angle_, _angle_) in the lower part. It is important to note that in all these cases, no more than three robots per half-SEC move to reach their final destinations. Hence, by Theorem 2, no collisions exist. In the **third epoch**, as in the FSynch mode, robots not forming the regular tuples can set safe diameters and move onto them on the orthogonal projections of the \(n\)-gon vertices, updating their color as _internal_. It is worth mentioning that during this epoch, in all three **cases a**, b, and c at least three pivot or angle robots are always visible, so that the SEC can be safely reconstructed. At this point, in the **fourth epoch**, internal robots return to the SEC by leaving perpendicularly from safe diameters. **Rotational symmetry. ** This case presents four different sub-cases which are dealt with distinctly. In particular, specific colors for the pivots _pivot_r1_, _pivot_r2_, _pivot_r3_, _and pivot_r4_ will be adopted to signal the initial geometric pattern along the whole computation. A first strategy discriminant is given by the existence of _a unique main class of symmetry_ or _two main classes of symmetry_. One main class of symmetry. In the **first epoch**, only those robots which will act as pivots light them with a specific color to store needed information about the initial rotational pattern. Let \(k\) be the number of rotational symmetry sectors. For \(k>2\), the following epochs basically take place as in the FSynch mode. During the **second epoch**, \(k\)_regular 3-tuples_ (_angle_, _pivot_r1_, _angle_) are set; in the **third epoch**, robots drop down to the safe chords; in the **fourth epoch**, all internal robots return to the SEC at polygon vertex positions.