Flattering (command: `flatter`) acts like `flatten` (cf.
subsection 3.2.2) but additionally replaces embedded
structures (both in the premises and in the head) by newly generated
variables and associates these with each other through preceding `
is`-calls.

For example, one can also employ `child`
as an undefined binary constructor
in structures like
`child[P,Q]`, just
**denoting** P and Q's children. An embedding of such
a denotative formula into an evaluative formula leaves the main formula
flat. Thus, the `cares`
body of the footened form

parental(P) :- cares(P,child[P,Q]) & true.in subsection 3.2.7 cannot be flattened but it can be flattered to

parental(P) :- _1 is child[P,Q], cares(P,_1) & true.

Sample dialog (equivalent to `flatten` followed by `flatter`
up to variable renaming):

rfi-p> az f(k[]) :- g(h()) & j(k[]). rfi-p> flatter rfi-p> listing f(_1) :- _1 is k[], _2 is h(), g(_2), _3 is k[] & j(_3).