Often, the Kolmogorov complexity of some string $x$ is defined as the length of the shortest program producing $x$, for example on wikipedia. So to give this more formal meaning, define$$ K'(x) := |f| + |a_1| + \ldots |a_k|$$where $f(s_1, s_2,\ldots, s_k)$ is some function with $k$ arguments in some specific programming language (like C++ for example).How does this definition relates to Kolmogorov complexity? I mean this could not be the same, as with this definition we have$$  K'(xy) \le K'(x) + K'(y) + C$$with some constant $C$. For if $f(a_1, \ldots, a_k) = x$ and $g(b_1,\ldots, b_l) = y$ are functions to compute $x$ and $y$, thenh() {    return concat(f(a1, ..., ak), g(b1,...,bl));   }would be a function to compute $xy$ of complexity $|f| + |a1| + \ldots + |ak| + |g| + |b1| + \ldots |bl| + C$, where $C$ represents the bits needed to declare $h$, the parentheses, the return statement and to call concat (string concatentation function).Hence $K'(xy) \le K'(x) + K'(y) + C$.But as is well-know for the usual Kolmogorov complexity we do not have such an subadditivity?EDIT: This will also work if we just allow functions with a single parameter.
Where does the intuitive understanding of Kolmogorov complexity fails
fl.formal languages;computability;randomness;kolmogorov complexity;descriptive complexity
The issue in play here is whether you use a self-terminating encoding (like your C example) or not. If you use a self-terminating encoding, then the subadditivity property does hold. If you don't (as in the common definition), then you need to expend bits on delimiting encodings.Self-terminating encodings have other advantages, and even though real programming languages are always self-terminating, the pioneers of Kolmogorov complexity (Solomonoff, Kolmogorov and Chaitin) defined their notion of complexity with respect to non-self-terminating encodings. The classic monograph of Li and Vitanyi treats both variants.