PRODUCTG(1)
π 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 issparse6, so only reach for this if you want the other flavour.) π¦-cβ Cartesian product. β¨-lβ Lexicographic product, written asG1[G2]. π-Lβ Lexicographic product, written asG2[G1]. (yeah, same product family, flipped order β capitalLis 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: same200β Graph1: same, Graph2: adj100β Graph1: same, Graph2: nonadj040β Graph1: adj, Graph2: same020β Graph1: adj, Graph2: adj010β Graph1: adj, Graph2: nonadj004β Graph1: nonadj, Graph2: same002β Graph1: nonadj, Graph2: adj001β 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