Today I learned that concolic

« previous post | next post »

… doesn't mean something like "having a shared case of colitis" (which was my first guess), but rather, as Wikipedia explains:

Concolic testing (a portmanteau of concrete and symbolic) is a hybrid software verification technique that performs symbolic execution, a classical technique that treats program variables as symbolic variables, along a concrete execution (testing on particular inputs) path. Symbolic execution is used in conjunction with an automated theorem prover or constraint solver based on constraint logic programming to generate new concrete inputs (test cases) with the aim of maximizing code coverage. Its main focus is finding bugs in real-world software, rather than demonstrating program correctness.

I learned this because of department-wide email congratulations sent to my Penn colleague Mayur Naik, whose paper "Automated concolic testing of smartphone apps" was selected for the ESEC/FSE 2022 Test of Time Award.

Concolic has made it into Wiktionary, but has not had its Word Induction Ceremony at Merriam-Webster or the OED, despite its 6,590 hits on Google Scholar.

My excuse for ignorance in this case is that software verification is not a field that I follow closely. But still, I should have known.



  1. languagehat said,

    October 26, 2022 @ 10:33 am

    I rarely say things like this — it's both unprofessional and pointless (language marches on!) — but man, that is one ugly-ass word, impossible to parse correctly without special explanation (which you will immediately forget unless it's part of your daily life). If "concrete symbolic testing" is really too long and a shorter expression is needed, why not "CS testing"? Or give it the name of some specialist who has something to do with it (e.g., "Naik testing"). Bah.

    [(myl) To give credit where credit is due, the term was coined in Sen, Koushik, Darko Marinov, and Gul Agha. "CUTE: A concolic unit testing engine for C." ACM SIGSOFT Software Engineering Notes 30, no. 5 (2005): 263-272.]

  2. mg said,

    October 26, 2022 @ 11:12 am

    @languagehat – it sounds like something you'd catch when you attend a big convention. "Boy, did I catch the worst case of concolic ever at DragonCon!"

  3. J.W. Brewer said,

    October 26, 2022 @ 11:32 am

    I think one specific problem with the portmanteau is that it is likely to get mentally parsed as con- + -colic rather than conc- + -olic, simply because conc- as a prefix is rare-to-unknown and it also feels intuitively that morpheme breaks ought by default match up with syllable breaks.

  4. Philip Taylor said,

    October 26, 2022 @ 12:01 pm

    I propose "concretic" as a more intuitively meaningful alternative.

  5. J.W. Brewer said,

    October 26, 2022 @ 1:05 pm

    It seems like either "symcrete" or "symbcrete" would better convey the components of intended portmanteau, although I'm not necessarily arguing that they wouldn't also be, to use languagehat's technical term, ugly-ass.

  6. Peter Taylor said,

    October 26, 2022 @ 1:19 pm

    The biggest problem with "concrete symbolic testing" isn't that it's too long but that it's almost entirely uninformative. "Automatic generation of coverage inputs" is a useful descriptor, and if a portmanteau is required then autocoverage or covgen can plausibly be analysed into their constituent parts.

  7. Bloix said,

    October 26, 2022 @ 4:18 pm

    JW Brewer said- "Conc- as a prefix is rare-to-unknown"

    Not only that – the "con" in concrete originates as a prefix: Latin con (together) plus crescere (to grow). Con is of course, a productive prefix in English, and -crete appears frequently in portmanteau words about concrete, typically in trade names (Redy-Crete, Handi-Crete, Liqui-Crete, Quikrete, etc ad nauseam).

    Interestingly (to me, anyway), the etymology of symbol, symbolic is analogous to that of concrete, only from Greek, not Latin – syn "together" plus bol "thrown." The division symb-olic is almost as odd as conc-rete.

    [(myl) And for langiappe, the Latin source of "conjecture" is a calque for the Greek source of "symbol"…]

  8. Rick Rubenstein said,

    October 26, 2022 @ 4:29 pm

    Much better than ColicCon, the convention for inexplicably crying and screaming babies.

  9. JPL said,

    October 26, 2022 @ 5:34 pm

    Well, in the spirit of the beer names, and in light of the above, I propose "concbolic". (Now looking forward to hearing it at the engineering conferences.) BTW, we do have "shambolic".

  10. Chas Belov said,

    October 28, 2022 @ 2:26 am

    @LanguageHat: I won't comment on the asthetics of "concolic" but, as someone who is acronym-challenged, I would strongly object to CS testing as it would suggest having something to do with cascading style sheets, which I suspect it does not.

    It's bad enough that ATM can stand for Automated Teller Machine, Asyncronous Transfer Mode, and the late Adobe Type Manager.

  11. Philip Taylor said,

    October 28, 2022 @ 4:51 am

    As somebody who works with cascading style sheets on a near-daily basis, "CS testing" would not suggest any connection with such to me — CS is, for me at least, an abbreviation of "Computer Science", whilst "CSS" is an abbreviation of "Cascading style sheets".

RSS feed for comments on this post