TRS:
 {    f(x, y) -> g1(x, x, y),
      f(x, y) -> g1(y, x, x),
      f(x, y) -> g2(x, y, y),
      f(x, y) -> g2(y, y, x),
  g1(x, x, y) -> h(x, y),
  g1(y, x, x) -> h(x, y),
  g2(x, y, y) -> h(x, y),
  g2(y, y, x) -> h(x, y),
      h(x, x) -> x}
 POP* + Boolean Semantic Labelling:
  Normal positions:
  pi(h_sl=1) = [1,2], pi(g2_sl=1) = [1,2,3], pi(g2_sl=0) = [2], pi(f_sl=1) = [1,2], pi(f_sl=0) = [1,2], pi(g1_sl=1) = [1,2,3], pi(g1_sl=0) = [1,2,3]
  
Safe positions:
   pi(h_sl=0) = [1,2], pi(g2_sl=0) = [1,3]
  
Precedence:
   g2_sl=0 > h_sl=0, 
   g1_sl=0 > h_sl=0, 
   f_sl=0 > g2_sl=0, 
   f_sl=0 > g1_sl=0
   empty
  
Interpretation:
   g1^(3):
   000 | 0
   001 | 0
   010 | 0
   011 | 0
   100 | 0
   101 | 0
   110 | 0
   111 | 1
   f^(2):
   00 | 0
   01 | 0
   10 | 0
   11 | 1
   g2^(3):
   000 | 0
   001 | 0
   010 | 0
   011 | 0
   100 | 0
   101 | 0
   110 | 0
   111 | 1
   h^(2):
   00 | 0
   01 | 0
   10 | 0
   11 | 1
   
  
Labelling:
   g1^(3):
   000 | 0
   001 | 0
   010 | 0
   011 | 0
   100 | 0
   101 | 0
   110 | 0
   111 | 0
   f^(2):
   00 | 0
   01 | 0
   10 | 0
   11 | 0
   g2^(3):
   000 | 0
   001 | 0
   010 | 0
   011 | 0
   100 | 0
   101 | 0
   110 | 0
   111 | 0
   h^(2):
   00 | 0
   01 | 0
   10 | 0
   11 | 0
   
  
Labelled predicative System:
   {   f_sl=0(x,y;) -> g1_sl=0(x,x,y;),
       f_sl=0(x,y;) -> g1_sl=0(x,x,y;),
       f_sl=0(x,y;) -> g1_sl=0(x,x,y;),
       f_sl=0(x,y;) -> g1_sl=0(x,x,y;),
       f_sl=0(x,y;) -> g1_sl=0(y,x,x;),
       f_sl=0(x,y;) -> g1_sl=0(y,x,x;),
       f_sl=0(x,y;) -> g1_sl=0(y,x,x;),
       f_sl=0(x,y;) -> g1_sl=0(y,x,x;),
       f_sl=0(x,y;) -> g2_sl=0(y;x,y),
       f_sl=0(x,y;) -> g2_sl=0(y;x,y),
       f_sl=0(x,y;) -> g2_sl=0(y;x,y),
       f_sl=0(x,y;) -> g2_sl=0(y;x,y),
       f_sl=0(x,y;) -> g2_sl=0(y;y,x),
       f_sl=0(x,y;) -> g2_sl=0(y;y,x),
       f_sl=0(x,y;) -> g2_sl=0(y;y,x),
       f_sl=0(x,y;) -> g2_sl=0(y;y,x),
    g1_sl=0(x,x,y;) -> h_sl=0(;x,y),
    g1_sl=0(x,x,y;) -> h_sl=0(;x,y),
    g1_sl=0(x,x,y;) -> h_sl=0(;x,y),
    g1_sl=0(x,x,y;) -> h_sl=0(;x,y),
    g1_sl=0(y,x,x;) -> h_sl=0(;x,y),
    g1_sl=0(y,x,x;) -> h_sl=0(;x,y),
    g1_sl=0(y,x,x;) -> h_sl=0(;x,y),
    g1_sl=0(y,x,x;) -> h_sl=0(;x,y),
     g2_sl=0(y;x,y) -> h_sl=0(;x,y),
     g2_sl=0(y;x,y) -> h_sl=0(;x,y),
     g2_sl=0(y;x,y) -> h_sl=0(;x,y),
     g2_sl=0(y;x,y) -> h_sl=0(;x,y),
     g2_sl=0(y;y,x) -> h_sl=0(;x,y),
     g2_sl=0(y;y,x) -> h_sl=0(;x,y),
     g2_sl=0(y;y,x) -> h_sl=0(;x,y),
     g2_sl=0(y;y,x) -> h_sl=0(;x,y),
       h_sl=0(;x,x) -> x,
       h_sl=0(;x,x) -> x}
  

  Qed