## linear function

A recursive function is linear if it is of the form

f x = if p x then q x else h f x

where h is a "linear functional" which means that

(1) for all functions, a, b c and some function ht

h (if a then b else c) = if ht a then h b else h c

Function ht is known as the "predicate transformer" of h.

(2) If for some x,

h (\ y . bottom) x /= bottom

then

for all g, ht g x = True.

I.e. if h g x terminates despite g x not terminating then ht g x doesn't depend on g.

See also linear argument.