Для повышения читабельности листинга программисты обычно загоняют каждую сущность в "свою" переменную, не обращая внимания на образующуюся избыточность: многие переменные либо полностью дублируются, либо связаны друг с другом несложным математическим соотношением и для экономии памяти их можно сократить алгебраическим путем.
В англоязычной литературе данный примем называется "размножением копий" ("copy propagation"), что на первый взгляд не совсем логично, но если задуматься, то все проясняется: да, мы сокращаем переменные, размножая копии, хранящихся в них значений, что наглядно продемонстрировано в следующем примере:
main(int n, char** v)
{
int a, b;
…
a
= n+1;
b
= 1-a; // избавляется от переменной a: (1 – (n + 1));
return a-b; // избавляется от переменной b: ((n + 1) – (1 – (n + 1)));
}