| definition: |  
replaceHigherOrderInExp :: Expr -> Expr
replaceHigherOrderInExp =
  trExpr Var Lit updComb FC.Let Free Or Case Branch Typed
 where
  updComb ct qn args = case ct of
    FuncPartCall _ -> fcFailed
    ConsPartCall _ -> fcFailed
    FuncCall | qn == pre "apply" -> fcFailed
    _              -> Comb ct qn args | 
| demand: | no demanded arguments | 
| deterministic: | deterministic operation | 
| documentation: | Replace higher-order features, like occurrences of `Prelude.apply` and partial applications, by `Prelude.failed` in an expression since they cannot be handled by SMT. Later, occurrences of `Prelude.failed` in SMT terms are replaced by fresh variables so that they are unspecified values. | 
| failfree: | () | 
| indeterministic: | referentially transparent operation | 
| infix: | no fixity defined | 
| iotype: |  {() |-> {trExpr}} | 
| name: | replaceHigherOrderInExp | 
| precedence: | no precedence defined | 
| result-values: |  {trExpr} | 
| signature: | FlatCurry.Types.Expr -> FlatCurry.Types.Expr | 
| solution-complete: | operation might suspend on free variables | 
| terminating: | possibly non-terminating | 
| totally-defined: | reducible on all ground data terms |