let pp fmt s =
let name i = Format.fprintf fmt "\n%s:" (Th.to_string i) in
if not(U.S.is_empty s.u) then
(name Th.u; U.S.pp fmt s.u);
if not(La.S.is_empty s.la) then
(let name = Th.to_string Th.la in
Format.fprintf fmt "\n%s(r):" name; La.pp La.R fmt s.la;
Format.fprintf fmt "\n%s(t):" name; La.pp La.T fmt s.la);
if not(S.is_empty s.nl) then
(name Th.nl; S.pp fmt s.nl);
if not(S.is_empty s.p) then
(name Th.p; S.pp fmt s.p);
if not(S.is_empty s.cop) then
(name Th.cop; S.pp fmt s.cop);
if not(S.is_empty s.cl) then
(name Th.app; S.pp fmt s.cl);
if not(S.is_empty s.arr) then
(name Th.arr; S.pp fmt s.arr);
if not(S.is_empty s.set) then
(name Th.set; S.pp fmt s.set);
if not(S.is_empty s.bv) then
(name Th.bv; S.pp fmt s.bv)