TRS:
 {    sqr(0()) -> 0(),
     sqr(s(x)) -> +(sqr(x), s(double(x))),
   double(0()) -> 0(),
  double(s(x)) -> s(s(double(x))),
     +(x, 0()) -> x,
    +(x, s(y)) -> s(+(x, y)),
     sqr(s(x)) -> s(+(sqr(x), double(x)))}
 POP* + Boolean Semantic Labelling:
  Normal positions:
  pi(double_sl=1) = [1], pi(double_sl=0) = [1], pi(+_sl=1) = [1,2], pi(+_sl=0) = [2], pi(sqr_sl=1) = [1], pi(sqr_sl=0) = [1]
  
Safe positions:
   pi(s_sl=1) = [1], pi(s_sl=0) = [1], pi(+_sl=0) = [1]
  
Precedence:
   sqr_sl=0 > +_sl=0, 
   sqr_sl=0 > s_sl=0, 
   sqr_sl=0 > double_sl=0, 
   +_sl=0 > s_sl=0, 
   double_sl=0 > s_sl=0
   empty
  
Interpretation:
   0^(0):
    | 0
   sqr^(1):
   0 | 0
   1 | 0
   +^(2):
   00 | 0
   01 | 0
   10 | 1
   11 | 0
   s^(1):
   0 | 0
   1 | 1
   double^(1):
   0 | 0
   1 | 0
   
  
Labelling:
   0^(0):
    | 0
   sqr^(1):
   0 | 0
   1 | 0
   +^(2):
   00 | 0
   01 | 0
   10 | 0
   11 | 0
   s^(1):
   0 | 0
   1 | 0
   double^(1):
   0 | 0
   1 | 0
   
  
Labelled predicative System:
   {     sqr_sl=0(0_sl=0();) -> 0_sl=0(),
       sqr_sl=0(s_sl=0(;x);) -> +_sl=0(s_sl=0(;double_sl=0(x;));sqr_sl=0(x;)),
       sqr_sl=0(s_sl=0(;x);) -> +_sl=0(s_sl=0(;double_sl=0(x;));sqr_sl=0(x;)),
      double_sl=0(0_sl=0();) -> 0_sl=0(),
    double_sl=0(s_sl=0(;x);) -> s_sl=0(;s_sl=0(;double_sl=0(x;))),
    double_sl=0(s_sl=0(;x);) -> s_sl=0(;s_sl=0(;double_sl=0(x;))),
          +_sl=0(0_sl=0();x) -> x,
          +_sl=0(0_sl=0();x) -> x,
        +_sl=0(s_sl=0(;y);x) -> s_sl=0(;+_sl=0(y;x)),
        +_sl=0(s_sl=0(;y);x) -> s_sl=0(;+_sl=0(y;x)),
        +_sl=0(s_sl=0(;y);x) -> s_sl=0(;+_sl=0(y;x)),
        +_sl=0(s_sl=0(;y);x) -> s_sl=0(;+_sl=0(y;x)),
       sqr_sl=0(s_sl=0(;x);) -> s_sl=0(;+_sl=0(double_sl=0(x;);sqr_sl=0(x;))),
       sqr_sl=0(s_sl=0(;x);) -> s_sl=0(;+_sl=0(double_sl=0(x;);sqr_sl=0(x;)))}
  

  Qed