let rec pp_term = function
| AttributedTerm (`Href _, term) when print_attributes ->
let rec pp_term = function
| AttributedTerm (`Href _, term) when print_attributes ->
| Sqrt t -> sprintf "\\SQRT %s" (pp_term t)
| Root (arg, index) ->
sprintf "\\ROOT %s \\OF %s" (pp_term index) (pp_term arg)
| Sqrt t -> sprintf "\\SQRT %s" (pp_term t)
| Root (arg, index) ->
sprintf "\\ROOT %s \\OF %s" (pp_term index) (pp_term arg)
(* | Space -> "\\SPACE" *)
| Box (box_spec, terms) ->
sprintf "\\%s [%s]" (pp_box_spec box_spec)
(String.concat " " (List.map pp_term terms))
(* | Space -> "\\SPACE" *)
| Box (box_spec, terms) ->
sprintf "\\%s [%s]" (pp_box_spec box_spec)
(String.concat " " (List.map pp_term terms))
(pp_fold_kind k) (pp_term p_base) acc (pp_term p_rec)
| Default (p_some, p_none) ->
sprintf "\\DEFAULT \\[%s\\] \\[%s\\]" (pp_term p_some) (pp_term p_none)
(pp_fold_kind k) (pp_term p_base) acc (pp_term p_rec)
| Default (p_some, p_none) ->
sprintf "\\DEFAULT \\[%s\\] \\[%s\\]" (pp_term p_some) (pp_term p_none)