# Increasing readability of piecewise interpolate function

This is a follow-up question to Ploting a Piecewise function obtained from linear interpolation of points, where I asked how to construct a piecewise function from a list of points.

I now have two following questions :

1) Is it possible to display the linear interpolation with linear functions $f_i(x) = a x + b$ ?

2) Is it possible to make h[x_] = Composition[g, g][x] more readable if g obtained from the previous question --- obviously the plot of h[x] is correct ?

Referring to your previous question: Why do you need the Piecewise construction. Pack it in one InterpolationFunction.

x := 1; y := 2;
x := 2; y := 3;
x := 3; y := 4;
x := 4; y := 1;
a = {x, y};
b = {x, y};
c = {x, y};
d = {x, y};

g[x_ /; 1 <= x <= 4] = Interpolation[{a, b, c, d}, InterpolationOrder -> 1][x]

h = Composition[g, g]

(*  Composition[InterpolatingFunction [{{1,4}},"<>"],
InterpolatingFunction [{{1,4}},"<>"]]  *)

{Plot[g[x], {x, 0, 5}], Plot[h[x], {x, 0, 5}]} Edit

Get functions

pts = {a, b, c, d}

tp = Transpose[{Rest[pts], Drop[pts, -1]}]

(*   {{{2, 3}, {1, 2}}, {{3, 4}, {2, 3}}, {{4, 1}, {3, 4}}}   *)

ip = InterpolatingPolynomial[#, x] & /@ tp

(*   {1 + x, 1 + x, 1 - 3 (-4 + x)}   *)

Show[Plot[g[x], {x, 0, 5}, PlotStyle -> {Thick, Red}],
Plot[ip, {x, 0, 5}, PlotStyle -> {Thin, Thin, Thin}],
PlotRange -> All] 