Peer relations

Equal peers on a triangle or a square, joined by declared relations. The letters, and what each relation means, belong to the instance.

Instances

A beats S, S beats K, K beats A: the arrows run clockwise, the order the letters read. The square keeps a directed perimeter and makes the two opposite pairs neutral, so every letter beats one, loses to one and ties the letter across from it.

Instance // triangle
Instance // square, neutral opposites

The square // neutral opposites beside the all-directed square

The all-directed square declares all six pairs as directed. Each letter meets three others, and three directed relations cannot split evenly into outgoing and incoming: O and V beat two letters, L and E one. The neutral-opposites square keeps the four perimeter directions and makes the two diagonals neutral. A quarter-turn then carries the relation pattern onto itself, and every letter has the same standing.

Read as a game, with +1 for a win, −1 for a loss and 0 for a tie, the all-directed square's unique equilibrium plays E, O and V equally and L never. V weakly dominates L: replacing L with V never worsens the result, though against an opponent who always plays E, L wins just as V does. In the neutral-opposites square every mix (a, ½ − a, a, ½ − a) in L, E, O, V order, for 0 ≤ a ≤ ½, is an equilibrium: all four equally at a = ¼, or an equal mix of one opposite pair at either end. Every letter has the same standing, without all four being required in play.

Comparison // the all-directed square
Primary // neutral opposites

Templates

Each template is a relation source with numbered slots, listed clockwise from the top of the triangle or the upper left of the square. Both instances are these templates with their labels replaced. R-S-P shows the triangle carrying rock, paper, scissors, with R at the top and the arrows clockwise.

Template // triangle
Template // square
Relabeling // R-S-P

Checks // computed from the relations

The engine derives every row from the declared relations when the page loads. An unspecified pair is declared as open, and it is never a neutral one.

SpecValidPairs Each node // out, in, neutralRotational symmetry

Use

Replace diagram-static-peer.source.js with your own relation sources and this page's words with your own. export-peer.mjs writes each plate as a standalone SVG in both themes, as an art plate and with its key, and as a PNG on request. The README carries the contract.