YES

We show the termination of the TRS R:

  perfectp(|0|()) -> false()
  perfectp(s(x)) -> f(x,s(|0|()),s(x),s(x))
  f(|0|(),y,|0|(),u) -> true()
  f(|0|(),y,s(z),u) -> false()
  f(s(x),|0|(),z,u) -> f(x,u,minus(z,s(x)),u)
  f(s(x),s(y),z,u) -> if(le(x,y),f(s(x),minus(y,x),z,u),f(x,u,z,u))

-- SCC decomposition.

Consider the dependency pair problem (P, R), where P consists of

p1: perfectp#(s(x)) -> f#(x,s(|0|()),s(x),s(x))
p2: f#(s(x),|0|(),z,u) -> f#(x,u,minus(z,s(x)),u)
p3: f#(s(x),s(y),z,u) -> f#(s(x),minus(y,x),z,u)
p4: f#(s(x),s(y),z,u) -> f#(x,u,z,u)

and R consists of:

r1: perfectp(|0|()) -> false()
r2: perfectp(s(x)) -> f(x,s(|0|()),s(x),s(x))
r3: f(|0|(),y,|0|(),u) -> true()
r4: f(|0|(),y,s(z),u) -> false()
r5: f(s(x),|0|(),z,u) -> f(x,u,minus(z,s(x)),u)
r6: f(s(x),s(y),z,u) -> if(le(x,y),f(s(x),minus(y,x),z,u),f(x,u,z,u))

The estimated dependency graph contains the following SCCs:

  {p2, p4}


-- Reduction pair.

Consider the dependency pair problem (P, R), where P consists of

p1: f#(s(x),|0|(),z,u) -> f#(x,u,minus(z,s(x)),u)
p2: f#(s(x),s(y),z,u) -> f#(x,u,z,u)

and R consists of:

r1: perfectp(|0|()) -> false()
r2: perfectp(s(x)) -> f(x,s(|0|()),s(x),s(x))
r3: f(|0|(),y,|0|(),u) -> true()
r4: f(|0|(),y,s(z),u) -> false()
r5: f(s(x),|0|(),z,u) -> f(x,u,minus(z,s(x)),u)
r6: f(s(x),s(y),z,u) -> if(le(x,y),f(s(x),minus(y,x),z,u),f(x,u,z,u))

The set of usable rules consists of

  (no rules)

Take the reduction pair:

  lexicographic combination of reduction pairs:
  
    1. lexicographic path order with precedence:
    
      precedence:
      
        minus > f# > s > |0|
      
      argument filter:
    
        pi(f#) = [1, 4]
        pi(s) = [1]
        pi(|0|) = []
        pi(minus) = [1, 2]
    
    2. lexicographic path order with precedence:
    
      precedence:
      
        minus > s > f# > |0|
      
      argument filter:
    
        pi(f#) = 4
        pi(s) = [1]
        pi(|0|) = []
        pi(minus) = [1, 2]
    
    3. lexicographic path order with precedence:
    
      precedence:
      
        minus > s > f# > |0|
      
      argument filter:
    
        pi(f#) = []
        pi(s) = [1]
        pi(|0|) = []
        pi(minus) = [1, 2]
    

The next rules are strictly ordered:

  p1, p2

We remove them from the problem.  Then no dependency pair remains.