PRODUCTG(1)

πŸ“¦
version 2.9.3 Β· 3 versions
, in fedora 43, fedora 44

πŸ’– PRODUCTG πŸ’–

okay bestie, gather round, because today we're talking about productg β€” yes, that's the manual page for productg 2.9.3, and it is lowkey iconic. 🫢


✨ SYNOPSIS ✨

productg [-u|-c|-l|-L|-k|-t|-a#] [infile [outfile]]

that's it. that's the whole vibe. one tool, two graphs, infinite slay. πŸ‘‘


🌸 DESCRIPTION 🌸

so here's the tea: productg reads two graphs in graph6/sparse6 format and writes their product β€” either in sparse6 or dreadnaut format. two graphs go in, one gloriously multiplied graph comes out. the way that works?? math. πŸ’…

and if you want to pick which kind of product, that's what the flags are for, bestie. every single one of them, coming right up:

  • -d β€” Dreadnaut format. (the default is sparse6, so only reach for this if you want the other flavour.) πŸ¦‹
  • -c β€” Cartesian product. ✨
  • -l β€” Lexicographic product, written as G1[G2]. πŸŽ€
  • -L β€” Lexicographic product, written as G2[G1]. (yeah, same product family, flipped order β€” capital L is the plot twist.) πŸŒ€
  • -t β€” Tensor product. also known as the Kronecker, categorical, or direct product. so many names for one little guy, we love a multi-hyphenate. πŸ”₯
  • -k β€” Complete product. also goes by strong or normal product. πŸ‘‘
  • -a# β€” the general case, where the argument is a 3-digit octal number. this is the build-your-own-product option and honestly? main character energy.
  • -u β€” Disjoint union. 🧚
  • -q β€” Suppress informative output. for when you want it to be quiet and mysterious. πŸ™ˆ

🌈 the -a# deep dive (iykyk)

okay so for -a# you add these values together and that sum gives you the condition for an edge. each digit position is a little vibe check between the two graphs, fr fr:

  • 400 β€” Graph1: same, Graph2: same
  • 200 β€” Graph1: same, Graph2: adj
  • 100 β€” Graph1: same, Graph2: nonadj
  • 040 β€” Graph1: adj, Graph2: same
  • 020 β€” Graph1: adj, Graph2: adj
  • 010 β€” Graph1: adj, Graph2: nonadj
  • 004 β€” Graph1: nonadj, Graph2: same
  • 002 β€” Graph1: nonadj, Graph2: adj
  • 001 β€” Graph1: nonadj, Graph2: nonadj

and the codes line up like this, in order, so you can literally just read across:

Code:    400   200   100   040   020   010   004   002   001
Graph1:  same  same  same  adj   adj   adj   nonadj nonadj nonadj
Graph2:  same  adj   nonadj same  adj   nonadj same  adj   nonadj
ngl bestie, don't guess at these β€” add the values you actually want and let the octal digits do the talking. the table above is the whole map. πŸ—ΊοΈ

and that's the page!! productg version 2.9.3, from September 2026, out here in the User Commands section being absolutely everything. go multiply some graphs, bestie. periodt. πŸ’œπŸŒΈβœ¨

πŸ“¦ where this page comes from
  • fedora 43: nauty 2.9.3-3.fc43 Β· Apache-2.0 AND LicenseRef-Fedora-Public-Domain AND Knuth-CTAN AND GPL-1.0-or-later
  • fedora 44: nauty 2.9.3-4.fc44 Β· Apache-2.0 AND LicenseRef-Fedora-Public-Domain AND Knuth-CTAN AND GPL-1.0-or-later
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms