anchor.diff:    | SBlock ss -> notImplemented "block"
     | SQuickBlock _ -> internalErr "quick_block"
     | SIfElse (_, e, ss1, ss2) ->
  -      ps.PrintLine ("if " + (string_of_exp e) + " then");
  +      ps.PrintLine ("if " + (string_of_exp90 e) + " then");
         emit_block ps "" outs ss1;
         ps.PrintLine ("else");
         emit_block ps (match outs with None -> ";" | Some _ -> "") outs ss2
  
positive.code:     ps.PrintLine ("(requires " + (string_of_exp rs) + ")");
      let sprets = String.concat ", " (List.map (fun (x, _, _, _, _) -> sid x) p.prets) in
      let sDep = if isDependent then "|" else "" in
      ps.PrintLine ("(ensures (" + (match p.prets with [] -> "" | _ -> "fun (" + sDep + sprets + sDep + ") -> ") + (string_of_exp es) + "))");
      ps.Unindent ();
      in
    let dArgs = match decreaseExps with Some es -> es | None -> List.map (fun (x, _) -> EVar x) args in
  
negative.code:     | EString s -> ("\"" + s.Replace("\\", "\\\\") + "\"", 99)
      | EOp (Uop (UCall CallGhost), [e]) -> (r prec e, prec)
      | EOp (Uop UReveal, [EApply (x, _, es)]) -> (r prec (vaApp "reveal_opaque" [eapply (transparent_id x) es]), prec)
      | EOp (Uop UReveal, [EVar x]) -> ("reveal_opaque " + (sid x), 90)
      | EOp (Uop (UNot BpBool), [e]) -> ("not " + (r 99 e), 90)
      | EOp (Uop (UNot BpProp), [e]) -> ("~" + (r 99 e), 90)
      | EOp (Uop UNeg, [e]) -> ("-" + (r 99 e), 0)
  