src/Pure/display.ML
changeset 9500 e21a76142269
parent 8908 25f2bdc02123
child 10010 f6ccb6df9cb9
equal deleted inserted replaced
9499:7e6988210488 9500:e21a76142269
    47 local
    47 local
    48 
    48 
    49 fun pretty_tag (name, args) = Pretty.strs (name :: map quote args);
    49 fun pretty_tag (name, args) = Pretty.strs (name :: map quote args);
    50 val pretty_tags = Pretty.list "[" "]" o map pretty_tag;
    50 val pretty_tags = Pretty.list "[" "]" o map pretty_tag;
    51 
    51 
    52 fun is_oracle (Thm.Oracle _) = true
       
    53   | is_oracle _ = false;
       
    54 
       
    55 fun ex_oracle (Join (der, ders)) = is_oracle der orelse exists ex_oracle ders;
       
    56 
       
    57 fun pretty_thm_aux quote th =
    52 fun pretty_thm_aux quote th =
    58   let
    53   let
    59     val {sign, hyps, prop, der, ...} = rep_thm th;
    54     val {sign, hyps, prop, der = (ora, _), ...} = rep_thm th;
    60     val xshyps = Thm.extra_shyps th;
    55     val xshyps = Thm.extra_shyps th;
    61     val (_, tags) = Thm.get_name_tags th;
    56     val (_, tags) = Thm.get_name_tags th;
    62 
    57 
    63     val prt_term = (if quote then Pretty.quote else I) o Sign.pretty_term sign;
    58     val prt_term = (if quote then Pretty.quote else I) o Sign.pretty_term sign;
    64 
    59 
    65     val hlen = length xshyps + length hyps;
    60     val hlen = length xshyps + length hyps;
    66     val ex_ora = ex_oracle der;
       
    67     val hsymbs =
    61     val hsymbs =
    68       if hlen = 0 andalso not ex_ora then []
    62       if hlen = 0 andalso not ora then []
    69       else if ! show_hyps then
    63       else if ! show_hyps then
    70         [Pretty.brk 2, Pretty.list "[" "]"
    64         [Pretty.brk 2, Pretty.list "[" "]"
    71           (map prt_term hyps @ map (Sign.pretty_sort sign) xshyps @
    65           (map prt_term hyps @ map (Sign.pretty_sort sign) xshyps @
    72             (if ex_ora then [Pretty.str "!"] else []))]
    66             (if ora then [Pretty.str "!"] else []))]
    73       else [Pretty.brk 2, Pretty.str ("[" ^ implode (replicate hlen ".") ^
    67       else [Pretty.brk 2, Pretty.str ("[" ^ implode (replicate hlen ".") ^
    74         (if ex_ora then "!" else "") ^ "]")];
    68         (if ora then "!" else "") ^ "]")];
    75     val tsymbs =
    69     val tsymbs =
    76       if null tags orelse not (! show_tags) then []
    70       if null tags orelse not (! show_tags) then []
    77       else [Pretty.brk 1, pretty_tags tags];
    71       else [Pretty.brk 1, pretty_tags tags];
    78   in Pretty.block (prt_term prop :: (hsymbs @ tsymbs)) end;
    72   in Pretty.block (prt_term prop :: (hsymbs @ tsymbs)) end;
    79 
    73