src/HOL/TPTP/TPTP_Parser/tptp_syntax.ML
author nipkow
Tue, 17 Jun 2025 14:11:40 +0200
changeset 82733 8b537e1af2ec
parent 80910 406a85a25189
permissions -rw-r--r--
reinstated intersection of lists as inter_list_set
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
     1
(*  Title:      HOL/TPTP/TPTP_Parser/tptp_syntax.ML
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
     2
    Author:     Nik Sultana, Cambridge University Computer Laboratory
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
     3
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
     4
TPTP abstract syntax and parser-related definitions.
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
     5
*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
     6
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
     7
signature TPTP_SYNTAX =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
     8
sig
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
     9
  exception TPTP_SYNTAX of string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    10
  val debug: ('a -> unit) -> 'a -> unit
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    11
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    12
(*Note that in THF "^ [X] : ^ [Y] : f @ g" should parse
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    13
  as "(^ [X] : (^ [Y] : f)) @ g"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    14
*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    15
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    16
  datatype number_kind = Int_num | Real_num | Rat_num
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    17
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    18
  datatype status_value =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    19
      Suc | Unp | Sap | Esa | Sat | Fsa
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    20
    | Thm | Eqv | Tac | Wec | Eth | Tau
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    21
    | Wtc | Wth | Cax | Sca | Tca | Wca
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    22
    | Cup | Csp | Ecs | Csa | Cth | Ceq
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    23
    | Unc | Wcc | Ect | Fun | Uns | Wuc
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    24
    | Wct | Scc | Uca | Noc
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    25
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    26
  type name = string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    27
  type atomic_word = string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    28
  type inference_rule = atomic_word
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    29
  type file_info = name option
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    30
  type single_quoted = string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    31
  type file_name = single_quoted
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    32
  type creator_name = atomic_word
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    33
  type variable = string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    34
  type upper_word = string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    35
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    36
  datatype language = FOF | CNF | TFF | THF | FOT | TFF_with_arithmetic
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    37
  and role =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    38
     Role_Axiom | Role_Hypothesis | Role_Definition | Role_Assumption |
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    39
     Role_Lemma | Role_Theorem | Role_Conjecture | Role_Negated_Conjecture |
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    40
     Role_Plain | Role_Fi_Domain | Role_Fi_Functors | Role_Fi_Predicates |
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    41
     Role_Type | Role_Unknown
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    42
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    43
  and general_data = (*Bind of variable * formula_data*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    44
     Atomic_Word of string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    45
   | Application of string * general_term list (*general_function*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    46
   | V of upper_word (*variable*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    47
   | Number of number_kind * string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    48
   | Distinct_Object of string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    49
   | (*formula_data*) Formula_Data of language * tptp_formula (* $thf(<thf_formula>) *)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    50
   | (*formula_data*) Term_Data of tptp_term
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    51
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    52
  and interpreted_symbol =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    53
    UMinus | Sum | Difference | Product | Quotient | Quotient_E |
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    54
    Quotient_T | Quotient_F | Remainder_E | Remainder_T | Remainder_F |
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    55
    Floor | Ceiling | Truncate | Round | To_Int | To_Rat | To_Real |
47360
sultana
parents: 47357
diff changeset
    56
    (*FIXME these should be in defined_pred, but that's not being used in TPTP*)
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    57
    Less | LessEq | Greater | GreaterEq | EvalEq | Is_Int | Is_Rat |
47360
sultana
parents: 47357
diff changeset
    58
    Distinct | Apply
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    59
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    60
  and logic_symbol = Equals | NEquals | Or | And | Iff | If | Fi | Xor |
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    61
    Nor | Nand | Not | Op_Forall | Op_Exists |
47360
sultana
parents: 47357
diff changeset
    62
    (*FIXME these should be in defined_pred, but that's not being used in TPTP*)
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    63
    True | False
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    64
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    65
  and quantifier = (*interpreted binders*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    66
    Forall | Exists | Epsilon | Iota | Lambda | Dep_Prod | Dep_Sum
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    67
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    68
  and tptp_base_type =
57808
cf72aed038c8 support TFF1 in TPTP parser/interpreter
blanchet
parents: 56467
diff changeset
    69
    Type_Ind | Type_Bool | Type_Type | Type_Int | Type_Rat | Type_Real | Type_Dummy
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    70
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    71
  and symbol =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    72
      Uninterpreted of string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    73
    | Interpreted_ExtraLogic of interpreted_symbol
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    74
    | Interpreted_Logic of logic_symbol
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    75
    | TypeSymbol of tptp_base_type
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    76
    | System of string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    77
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    78
  and general_term =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    79
      General_Data of general_data (*general_data*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    80
    | General_Term of general_data * general_term (*general_data : general_term*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    81
    | General_List of general_term list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    82
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    83
  and tptp_term =
64560
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
    84
      Term_FuncG of symbol * tptp_type list (*special hack for TPTP_Interpret*) * tptp_term list
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    85
    | Term_Var of string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    86
    | Term_Conditional of tptp_formula * tptp_term * tptp_term
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    87
    | Term_Num of number_kind * string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    88
    | Term_Distinct_Object of string
53394
f26f00cbd573 updated TPTP parser to conform to version 5.4.0;
sultana
parents: 53390
diff changeset
    89
    | Term_Let of tptp_let * tptp_term
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    90
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    91
  and tptp_atom =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    92
      TFF_Typed_Atom of symbol * tptp_type option (*only TFF*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    93
    | THF_Atom_term of tptp_term   (*from here on, only THF*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    94
    | THF_Atom_conn_term of symbol
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    95
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    96
  and tptp_formula =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    97
      Pred of symbol * tptp_term list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    98
    | Fmla of symbol * tptp_formula list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
    99
    | Sequent of tptp_formula list * tptp_formula list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   100
    | Quant of quantifier * (string * tptp_type option) list * tptp_formula
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   101
    | Conditional of tptp_formula * tptp_formula * tptp_formula
53394
f26f00cbd573 updated TPTP parser to conform to version 5.4.0;
sultana
parents: 53390
diff changeset
   102
    | Let of tptp_let * tptp_formula
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   103
    | Atom of tptp_atom
47360
sultana
parents: 47357
diff changeset
   104
    | Type_fmla of tptp_type
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   105
    | THF_typing of tptp_formula * tptp_type (*only THF*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   106
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   107
  and tptp_let =
53394
f26f00cbd573 updated TPTP parser to conform to version 5.4.0;
sultana
parents: 53390
diff changeset
   108
      Let_fmla of (string * tptp_type option) list * tptp_formula
f26f00cbd573 updated TPTP parser to conform to version 5.4.0;
sultana
parents: 53390
diff changeset
   109
    | Let_term of (string * tptp_type option) list * tptp_term
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   110
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   111
  and tptp_type =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   112
      Prod_type of tptp_type * tptp_type
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   113
    | Fn_type of tptp_type * tptp_type
57808
cf72aed038c8 support TFF1 in TPTP parser/interpreter
blanchet
parents: 56467
diff changeset
   114
    | Atom_type of string * tptp_type list
cf72aed038c8 support TFF1 in TPTP parser/interpreter
blanchet
parents: 56467
diff changeset
   115
    | Var_type of string
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   116
    | Defined_type of tptp_base_type
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   117
    | Sum_type of tptp_type * tptp_type (*only THF*)
47357
15e579392a68 refactored tptp yacc to bring close to official spec;
sultana
parents: 46844
diff changeset
   118
    | Fmla_type of tptp_formula
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   119
    | Subtype of symbol * symbol (*only THF*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   120
64560
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
   121
  val Term_Func: symbol * tptp_term list -> tptp_term (*for Yacc parser*)
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
   122
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   123
  type general_list = general_term list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   124
  type parent_details = general_list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   125
  type useful_info = general_term list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   126
  type info = useful_info
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   127
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   128
  type annotation = general_term * general_term list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   129
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   130
  exception DEQUOTE of string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   131
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   132
  type position = string * int * int
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   133
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   134
  datatype tptp_line =
47360
sultana
parents: 47357
diff changeset
   135
      Annotated_Formula of position * language * string * role *
sultana
parents: 47357
diff changeset
   136
        tptp_formula * annotation option
47569
fce9d97a3258 exceptions related to interpreting tptp problems now mention the relevant position in the tptp file;
sultana
parents: 47454
diff changeset
   137
   |  Include of position * string * string list
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   138
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   139
  type tptp_problem = tptp_line list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   140
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   141
  val dequote : single_quoted -> single_quoted
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   142
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   143
  val role_to_string : role -> string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   144
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   145
  val status_to_string : status_value -> string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   146
47569
fce9d97a3258 exceptions related to interpreting tptp problems now mention the relevant position in the tptp file;
sultana
parents: 47454
diff changeset
   147
  val pos_of_line : tptp_line -> position
fce9d97a3258 exceptions related to interpreting tptp problems now mention the relevant position in the tptp file;
sultana
parents: 47454
diff changeset
   148
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   149
  (*Returns the list of all files included in a directory and its
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   150
  subdirectories. This is only used for testing the parser/interpreter against
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   151
  all THF problems.*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   152
  val get_file_list : Path.T -> Path.T list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   153
53385
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   154
  val read_status : string -> status_value
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   155
  val string_of_tptp_term : tptp_term -> string
47692
3d76c81b5ed2 improved non-interpretation of constants and numbers;
sultana
parents: 47569
diff changeset
   156
  val string_of_interpreted_symbol : interpreted_symbol -> string
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   157
  val string_of_tptp_formula : tptp_formula -> string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   158
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   159
  val latex_of_tptp_formula : tptp_formula -> string
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   160
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   161
end
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   162
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   163
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   164
structure TPTP_Syntax : TPTP_SYNTAX =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   165
struct
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   166
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   167
exception TPTP_SYNTAX of string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   168
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   169
datatype number_kind = Int_num | Real_num | Rat_num
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   170
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   171
datatype status_value =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   172
    Suc | Unp | Sap | Esa | Sat | Fsa
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   173
  | Thm | Eqv | Tac | Wec | Eth | Tau
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   174
  | Wtc | Wth | Cax | Sca | Tca | Wca
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   175
  | Cup | Csp | Ecs | Csa | Cth | Ceq
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   176
  | Unc | Wcc | Ect | Fun | Uns | Wuc
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   177
  | Wct | Scc | Uca | Noc
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   178
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   179
type name = string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   180
type atomic_word = string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   181
type inference_rule = atomic_word
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   182
type file_info = name option
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   183
type single_quoted = string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   184
type file_name = single_quoted
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   185
type creator_name = atomic_word
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   186
type variable = string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   187
type upper_word = string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   188
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   189
datatype language = FOF | CNF | TFF | THF | FOT | TFF_with_arithmetic
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   190
and role =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   191
  Role_Axiom | Role_Hypothesis | Role_Definition | Role_Assumption |
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   192
  Role_Lemma | Role_Theorem | Role_Conjecture | Role_Negated_Conjecture |
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   193
  Role_Plain | Role_Fi_Domain | Role_Fi_Functors | Role_Fi_Predicates |
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   194
  Role_Type | Role_Unknown
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   195
and general_data = (*Bind of variable * formula_data*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   196
    Atomic_Word of string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   197
  | Application of string * (general_term list)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   198
  | V of upper_word (*variable*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   199
  | Number of number_kind * string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   200
  | Distinct_Object of string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   201
  | (*formula_data*) Formula_Data of language * tptp_formula (* $thf(<thf_formula>) *)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   202
  | (*formula_data*) Term_Data of tptp_term
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   203
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   204
  and interpreted_symbol =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   205
    UMinus | Sum | Difference | Product | Quotient | Quotient_E |
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   206
    Quotient_T | Quotient_F | Remainder_E | Remainder_T | Remainder_F |
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   207
    Floor | Ceiling | Truncate | Round | To_Int | To_Rat | To_Real |
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   208
    Less | LessEq | Greater | GreaterEq | EvalEq | Is_Int | Is_Rat |
47357
15e579392a68 refactored tptp yacc to bring close to official spec;
sultana
parents: 46844
diff changeset
   209
    Distinct |
47360
sultana
parents: 47357
diff changeset
   210
    Apply
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   211
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   212
  and logic_symbol = Equals | NEquals | Or | And | Iff | If | Fi | Xor |
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   213
    Nor | Nand | Not | Op_Forall | Op_Exists |
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   214
    True | False
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   215
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   216
  and quantifier = (*interpreted binders*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   217
    Forall | Exists | Epsilon | Iota | Lambda | Dep_Prod | Dep_Sum
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   218
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   219
  and tptp_base_type =
57808
cf72aed038c8 support TFF1 in TPTP parser/interpreter
blanchet
parents: 56467
diff changeset
   220
    Type_Ind | Type_Bool | Type_Type | Type_Int | Type_Rat | Type_Real | Type_Dummy
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   221
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   222
  and symbol =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   223
      Uninterpreted of string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   224
    | Interpreted_ExtraLogic of interpreted_symbol
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   225
    | Interpreted_Logic of logic_symbol
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   226
    | TypeSymbol of tptp_base_type
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   227
    | System of string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   228
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   229
  and general_term =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   230
      General_Data of general_data (*general_data*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   231
    | General_Term of general_data * general_term (*general_data : general_term*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   232
    | General_List of general_term list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   233
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   234
  and tptp_term =
64560
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
   235
      Term_FuncG of symbol * tptp_type list (*special hack for TPTP_Interpret*) * tptp_term list
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   236
    | Term_Var of string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   237
    | Term_Conditional of tptp_formula * tptp_term * tptp_term
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   238
    | Term_Num of number_kind * string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   239
    | Term_Distinct_Object of string
53394
f26f00cbd573 updated TPTP parser to conform to version 5.4.0;
sultana
parents: 53390
diff changeset
   240
    | Term_Let of tptp_let * tptp_term
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   241
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   242
  and tptp_atom =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   243
      TFF_Typed_Atom of symbol * tptp_type option (*only TFF*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   244
    | THF_Atom_term of tptp_term   (*from here on, only THF*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   245
    | THF_Atom_conn_term of symbol
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   246
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   247
  and tptp_formula =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   248
      Pred of symbol * tptp_term list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   249
    | Fmla of symbol * tptp_formula list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   250
    | Sequent of tptp_formula list * tptp_formula list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   251
    | Quant of quantifier * (string * tptp_type option) list * tptp_formula
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   252
    | Conditional of tptp_formula * tptp_formula * tptp_formula
53394
f26f00cbd573 updated TPTP parser to conform to version 5.4.0;
sultana
parents: 53390
diff changeset
   253
    | Let of tptp_let * tptp_formula
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   254
    | Atom of tptp_atom
47360
sultana
parents: 47357
diff changeset
   255
    | Type_fmla of tptp_type
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   256
    | THF_typing of tptp_formula * tptp_type
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   257
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   258
  and tptp_let =
53394
f26f00cbd573 updated TPTP parser to conform to version 5.4.0;
sultana
parents: 53390
diff changeset
   259
      Let_fmla of (string * tptp_type option) list * tptp_formula
f26f00cbd573 updated TPTP parser to conform to version 5.4.0;
sultana
parents: 53390
diff changeset
   260
    | Let_term of (string * tptp_type option) list * tptp_term
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   261
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   262
  and tptp_type =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   263
      Prod_type of tptp_type * tptp_type
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   264
    | Fn_type of tptp_type * tptp_type
57808
cf72aed038c8 support TFF1 in TPTP parser/interpreter
blanchet
parents: 56467
diff changeset
   265
    | Atom_type of string * tptp_type list
cf72aed038c8 support TFF1 in TPTP parser/interpreter
blanchet
parents: 56467
diff changeset
   266
    | Var_type of string
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   267
    | Defined_type of tptp_base_type
47360
sultana
parents: 47357
diff changeset
   268
    | Sum_type of tptp_type * tptp_type
sultana
parents: 47357
diff changeset
   269
    | Fmla_type of tptp_formula
sultana
parents: 47357
diff changeset
   270
    | Subtype of symbol * symbol
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   271
64560
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
   272
fun Term_Func (symb, ts) = Term_FuncG (symb, [], ts)
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
   273
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   274
type general_list = general_term list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   275
type parent_details = general_list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   276
type useful_info = general_term list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   277
type info = useful_info
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   278
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   279
(*type annotation = (source * info option)*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   280
type annotation = general_term * general_term list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   281
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   282
exception DEQUOTE of string
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   283
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   284
type position = string * int * int
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   285
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   286
datatype tptp_line =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   287
    Annotated_Formula of position * language * string * role * tptp_formula * annotation option
47569
fce9d97a3258 exceptions related to interpreting tptp problems now mention the relevant position in the tptp file;
sultana
parents: 47454
diff changeset
   288
 |  Include of position * string * string list
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   289
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   290
type tptp_problem = tptp_line list
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   291
69593
3dda49e08b9d isabelle update -u control_cartouches;
wenzelm
parents: 64560
diff changeset
   292
fun debug f x = if Options.default_bool \<^system_option>\<open>ML_exception_trace\<close> then (f x; ()) else ()
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   293
47569
fce9d97a3258 exceptions related to interpreting tptp problems now mention the relevant position in the tptp file;
sultana
parents: 47454
diff changeset
   294
fun pos_of_line tptp_line =
fce9d97a3258 exceptions related to interpreting tptp problems now mention the relevant position in the tptp file;
sultana
parents: 47454
diff changeset
   295
  case tptp_line of
fce9d97a3258 exceptions related to interpreting tptp problems now mention the relevant position in the tptp file;
sultana
parents: 47454
diff changeset
   296
      Annotated_Formula (position, _, _, _, _, _) => position
fce9d97a3258 exceptions related to interpreting tptp problems now mention the relevant position in the tptp file;
sultana
parents: 47454
diff changeset
   297
   |  Include (position, _, _) => position
fce9d97a3258 exceptions related to interpreting tptp problems now mention the relevant position in the tptp file;
sultana
parents: 47454
diff changeset
   298
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   299
(*Used for debugging. Returns all files contained within a directory or its
53390
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   300
subdirectories. Follows symbolic links, filters away directories.
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   301
Files are ordered by size*)
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   302
fun get_file_list path =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   303
  let
53390
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   304
    fun get_file_list' acc paths =
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   305
      case paths of
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   306
          [] => acc
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   307
        | (f :: fs) =>
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   308
            let
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   309
              (*NOTE needed since no File.is_link and File.read_link*)
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   310
              val f_str = Path.implode f
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   311
            in
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   312
              if File.is_dir f then
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   313
                let
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   314
                  val contents =
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   315
                    File.read_dir f
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   316
                    |> map
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   317
                        (Path.explode
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   318
                        #> Path.append f)
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   319
                in
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   320
                  get_file_list' acc (fs @ contents)
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   321
                end
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   322
              else if OS.FileSys.isLink f_str then
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   323
                (*follow links -- NOTE this breaks if links are relative paths*)
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   324
                get_file_list' acc (Path.explode (OS.FileSys.readLink f_str) :: fs)
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   325
              else
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   326
                get_file_list' ((f, OS.FileSys.fileSize f_str) :: acc) fs
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   327
            end
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   328
  in
53390
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   329
    get_file_list' [] [path]
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   330
    |> sort (fn ((_, n1), (_, n2)) => Int.compare (n1, n2))
51b562922cb1 get_file_list now returns files sorted by size;
sultana
parents: 53385
diff changeset
   331
    |> map fst
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   332
  end
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   333
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   334
fun role_to_string role =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   335
  case role of
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   336
      Role_Axiom => "axiom"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   337
    | Role_Hypothesis => "hypothesis"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   338
    | Role_Definition => "definition"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   339
    | Role_Assumption => "assumption"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   340
    | Role_Lemma => "lemma"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   341
    | Role_Theorem => "theorem"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   342
    | Role_Conjecture => "conjecture"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   343
    | Role_Negated_Conjecture => "negated_conjecture"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   344
    | Role_Plain => "plain"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   345
    | Role_Fi_Domain => "fi_domain"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   346
    | Role_Fi_Functors => "fi_functors"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   347
    | Role_Fi_Predicates => "fi_predicates"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   348
    | Role_Type => "type"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   349
    | Role_Unknown => "unknown"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   350
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   351
(*accepts a string "'abc'" and returns "abc"*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   352
fun dequote str : single_quoted =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   353
  if str = "" then
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   354
    raise (DEQUOTE "empty string")
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   355
  else
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   356
    (unprefix "'" str
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   357
    |> unsuffix "'"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   358
    handle (Fail str) =>
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   359
      if str = "unprefix" then
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   360
        raise DEQUOTE ("string doesn't open with quote:" ^ str)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   361
      else if str = "unsuffix" then
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   362
        raise DEQUOTE ("string doesn't close with quote:" ^ str)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   363
      else raise Fail str)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   364
53385
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   365
exception UNRECOGNISED_STATUS of string
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   366
fun read_status status =
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   367
  case status of
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   368
      "suc" => Suc  | "unp" => Unp
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   369
    | "sap" => Sap  | "esa" => Esa
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   370
    | "sat" => Sat  | "fsa" => Fsa
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   371
    | "thm" => Thm  | "wuc" => Wuc
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   372
    | "eqv" => Eqv  | "tac" => Tac
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   373
    | "wec" => Wec  | "eth" => Eth
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   374
    | "tau" => Tau  | "wtc" => Wtc
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   375
    | "wth" => Wth  | "cax" => Cax
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   376
    | "sca" => Sca  | "tca" => Tca
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   377
    | "wca" => Wca  | "cup" => Cup
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   378
    | "csp" => Csp  | "ecs" => Ecs
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   379
    | "csa" => Csa  | "cth" => Cth
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   380
    | "ceq" => Ceq  | "unc" => Unc
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   381
    | "wcc" => Wcc  | "ect" => Ect
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   382
    | "fun" => Fun  | "uns" => Uns
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   383
    | "wct" => Wct  | "scc" => Scc
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   384
    | "uca" => Uca  | "noc" => Noc
7edd43d0c0ba reading tptp status code;
sultana
parents: 47692
diff changeset
   385
    | thing => raise (UNRECOGNISED_STATUS thing)
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   386
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   387
(* Printing parsed TPTP formulas *)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   388
(*FIXME this is not pretty-printing, just printing*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   389
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   390
fun status_to_string status_value =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   391
  case status_value of
47454
479b4d6b9562 eliminated hard tabs;
wenzelm
parents: 47426
diff changeset
   392
      Suc => "suc"  | Unp => "unp"
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   393
    | Sap => "sap"  | Esa => "esa"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   394
    | Sat => "sat"  | Fsa => "fsa"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   395
    | Thm => "thm"  | Wuc => "wuc"
47454
479b4d6b9562 eliminated hard tabs;
wenzelm
parents: 47426
diff changeset
   396
    | Eqv => "eqv"  | Tac => "tac"
479b4d6b9562 eliminated hard tabs;
wenzelm
parents: 47426
diff changeset
   397
    | Wec => "wec"  | Eth => "eth"
479b4d6b9562 eliminated hard tabs;
wenzelm
parents: 47426
diff changeset
   398
    | Tau => "tau"  | Wtc => "wtc"
479b4d6b9562 eliminated hard tabs;
wenzelm
parents: 47426
diff changeset
   399
    | Wth => "wth"  | Cax => "cax"
479b4d6b9562 eliminated hard tabs;
wenzelm
parents: 47426
diff changeset
   400
    | Sca => "sca"  | Tca => "tca"
479b4d6b9562 eliminated hard tabs;
wenzelm
parents: 47426
diff changeset
   401
    | Wca => "wca"  | Cup => "cup"
479b4d6b9562 eliminated hard tabs;
wenzelm
parents: 47426
diff changeset
   402
    | Csp => "csp"  | Ecs => "ecs"
479b4d6b9562 eliminated hard tabs;
wenzelm
parents: 47426
diff changeset
   403
    | Csa => "csa"  | Cth => "cth"
479b4d6b9562 eliminated hard tabs;
wenzelm
parents: 47426
diff changeset
   404
    | Ceq => "ceq"  | Unc => "unc"
479b4d6b9562 eliminated hard tabs;
wenzelm
parents: 47426
diff changeset
   405
    | Wcc => "wcc"  | Ect => "ect"
479b4d6b9562 eliminated hard tabs;
wenzelm
parents: 47426
diff changeset
   406
    | Fun => "fun"  | Uns => "uns"
479b4d6b9562 eliminated hard tabs;
wenzelm
parents: 47426
diff changeset
   407
    | Wct => "wct"  | Scc => "scc"
479b4d6b9562 eliminated hard tabs;
wenzelm
parents: 47426
diff changeset
   408
    | Uca => "uca"  | Noc => "noc"
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   409
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   410
fun string_of_tptp_term x =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   411
  case x of
64560
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
   412
      Term_FuncG (symbol, tptp_type_list, tptp_term_list) =>
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   413
        "(" ^ string_of_symbol symbol ^ " " ^
80910
406a85a25189 clarified signature: more explicit operations;
wenzelm
parents: 69593
diff changeset
   414
        implode_space (map string_of_tptp_type tptp_type_list
64560
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
   415
          @ map string_of_tptp_term tptp_term_list) ^ ")"
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   416
    | Term_Var str => str
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   417
    | Term_Conditional (tptp_formula, tptp_term1, tptp_term2) => "" (*FIXME*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   418
    | Term_Num (_, str) => str
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   419
    | Term_Distinct_Object str => str
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   420
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   421
and string_of_symbol (Uninterpreted str) = str
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   422
  | string_of_symbol (Interpreted_ExtraLogic interpreted_symbol) = string_of_interpreted_symbol interpreted_symbol
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   423
  | string_of_symbol (Interpreted_Logic logic_symbol) = string_of_logic_symbol logic_symbol
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   424
  | string_of_symbol (TypeSymbol tptp_base_type) = string_of_tptp_base_type tptp_base_type
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   425
  | string_of_symbol (System str) = str
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   426
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   427
and string_of_tptp_base_type Type_Ind = "$i"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   428
  | string_of_tptp_base_type Type_Bool = "$o"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   429
  | string_of_tptp_base_type Type_Type = "$tType"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   430
  | string_of_tptp_base_type Type_Int = "$int"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   431
  | string_of_tptp_base_type Type_Rat = "$rat"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   432
  | string_of_tptp_base_type Type_Real = "$real"
57808
cf72aed038c8 support TFF1 in TPTP parser/interpreter
blanchet
parents: 56467
diff changeset
   433
  | string_of_tptp_base_type Type_Dummy = "$_"
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   434
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   435
and string_of_interpreted_symbol x =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   436
  case x of
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   437
      UMinus => "$uminus"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   438
    | Sum => "$sum"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   439
    | Difference => "$difference"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   440
    | Product => "$product"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   441
    | Quotient => "$quotient"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   442
    | Quotient_E => "$quotient_e"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   443
    | Quotient_T => "$quotient_t"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   444
    | Quotient_F => "$quotient_f"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   445
    | Remainder_E => "$remainder_e"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   446
    | Remainder_T => "$remainder_t"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   447
    | Remainder_F => "$remainder_f"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   448
    | Floor => "$floor"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   449
    | Ceiling => "$ceiling"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   450
    | Truncate => "$truncate"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   451
    | Round => "$round"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   452
    | To_Int => "$to_int"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   453
    | To_Rat => "$to_rat"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   454
    | To_Real => "$to_real"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   455
    | Less => "$less"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   456
    | LessEq => "$lesseq"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   457
    | Greater => "$greater"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   458
    | GreaterEq => "$greatereq"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   459
    | EvalEq => "$evaleq"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   460
    | Is_Int => "$is_int"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   461
    | Is_Rat => "$is_rat"
47692
3d76c81b5ed2 improved non-interpretation of constants and numbers;
sultana
parents: 47569
diff changeset
   462
    | Distinct => "$distinct"
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   463
    | Apply => "@"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   464
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   465
and string_of_logic_symbol Equals = "="
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   466
  | string_of_logic_symbol NEquals = "!="
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   467
  | string_of_logic_symbol Or = "|"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   468
  | string_of_logic_symbol And = "&"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   469
  | string_of_logic_symbol Iff = "<=>"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   470
  | string_of_logic_symbol If = "=>"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   471
  | string_of_logic_symbol Fi = "<="
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   472
  | string_of_logic_symbol Xor = "<~>"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   473
  | string_of_logic_symbol Nor = "~|"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   474
  | string_of_logic_symbol Nand = "~&"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   475
  | string_of_logic_symbol Not = "~"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   476
  | string_of_logic_symbol Op_Forall = "!!"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   477
  | string_of_logic_symbol Op_Exists = "??"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   478
  | string_of_logic_symbol True = "$true"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   479
  | string_of_logic_symbol False = "$false"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   480
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   481
and string_of_quantifier Forall = "!"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   482
  | string_of_quantifier Exists  = "?"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   483
  | string_of_quantifier Epsilon  = "@+"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   484
  | string_of_quantifier Iota  = "@-"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   485
  | string_of_quantifier Lambda  = "^"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   486
  | string_of_quantifier Dep_Prod = "!>"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   487
  | string_of_quantifier Dep_Sum  = "?*"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   488
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   489
and string_of_tptp_atom (TFF_Typed_Atom (symbol, tptp_type_option)) =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   490
    (case tptp_type_option of
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   491
       NONE => string_of_symbol symbol
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   492
     | SOME tptp_type =>
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   493
         string_of_symbol symbol ^ " : " ^ string_of_tptp_type tptp_type)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   494
  | string_of_tptp_atom (THF_Atom_term tptp_term) = string_of_tptp_term tptp_term
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   495
  | string_of_tptp_atom (THF_Atom_conn_term symbol) = string_of_symbol symbol
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   496
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   497
and string_of_tptp_formula (Pred (symbol, tptp_term_list)) =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   498
      "(" ^ string_of_symbol symbol ^
80910
406a85a25189 clarified signature: more explicit operations;
wenzelm
parents: 69593
diff changeset
   499
      implode_space (map string_of_tptp_term tptp_term_list) ^ ")"
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   500
  | string_of_tptp_formula (Fmla (symbol, tptp_formula_list)) =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   501
      "(" ^
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   502
      string_of_symbol symbol ^
80910
406a85a25189 clarified signature: more explicit operations;
wenzelm
parents: 69593
diff changeset
   503
      implode_space (map string_of_tptp_formula tptp_formula_list) ^ ")"
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   504
  | string_of_tptp_formula (Sequent (tptp_formula_list1, tptp_formula_list2)) = "" (*FIXME*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   505
  | string_of_tptp_formula (Quant (quantifier, varlist, tptp_formula)) =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   506
      string_of_quantifier quantifier ^ "[" ^
47426
26c1a97c7784 standardized ML aliases;
wenzelm
parents: 47360
diff changeset
   507
      space_implode ", " (map (fn (n, ty) =>
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   508
        case ty of
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   509
          NONE => n
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   510
        | SOME ty => n ^ " : " ^ string_of_tptp_type ty) varlist) ^ "] : (" ^
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   511
      string_of_tptp_formula tptp_formula ^ ")"
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   512
  | string_of_tptp_formula (Conditional _) = "" (*FIXME*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   513
  | string_of_tptp_formula (Let _) = "" (*FIXME*)
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   514
  | string_of_tptp_formula (Atom tptp_atom) = string_of_tptp_atom tptp_atom
47360
sultana
parents: 47357
diff changeset
   515
  | string_of_tptp_formula (Type_fmla tptp_type) = string_of_tptp_type tptp_type
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   516
  | string_of_tptp_formula (THF_typing (tptp_formula, tptp_type)) =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   517
      string_of_tptp_formula tptp_formula ^ " : " ^ string_of_tptp_type tptp_type
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   518
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   519
and string_of_tptp_type (Prod_type (tptp_type1, tptp_type2)) =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   520
      string_of_tptp_type tptp_type1 ^ " * " ^ string_of_tptp_type tptp_type2
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   521
  | string_of_tptp_type (Fn_type (tptp_type1, tptp_type2)) =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   522
      string_of_tptp_type tptp_type1 ^ " > " ^ string_of_tptp_type tptp_type2
57808
cf72aed038c8 support TFF1 in TPTP parser/interpreter
blanchet
parents: 56467
diff changeset
   523
  | string_of_tptp_type (Atom_type (str, [])) = str
cf72aed038c8 support TFF1 in TPTP parser/interpreter
blanchet
parents: 56467
diff changeset
   524
  | string_of_tptp_type (Atom_type (str, tptp_types)) =
cf72aed038c8 support TFF1 in TPTP parser/interpreter
blanchet
parents: 56467
diff changeset
   525
      str ^ "(" ^ commas (map string_of_tptp_type tptp_types) ^ ")"
cf72aed038c8 support TFF1 in TPTP parser/interpreter
blanchet
parents: 56467
diff changeset
   526
  | string_of_tptp_type (Var_type str) = str
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   527
  | string_of_tptp_type (Defined_type tptp_base_type) =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   528
      string_of_tptp_base_type tptp_base_type
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   529
  | string_of_tptp_type (Sum_type (tptp_type1, tptp_type2)) = ""
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   530
  | string_of_tptp_type (Fmla_type tptp_formula) = string_of_tptp_formula tptp_formula
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   531
  | string_of_tptp_type (Subtype (symbol1, symbol2)) =
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   532
      string_of_symbol symbol1 ^ " << " ^ string_of_symbol symbol2
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   533
55594
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   534
(*FIXME formatting details haven't been fully worked out -- don't use this function for anything serious in its current form!*)
55588
3740fb5ec307 improved latex output: spacing between terms, and encoding terms in mathrm;
sultana
parents: 55587
diff changeset
   535
(*TODO Add subscripting*)
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   536
(*infix symbols, including \subset, \cup, \cap*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   537
fun latex_of_tptp_term x =
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   538
  case x of
64560
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
   539
      Term_FuncG (Interpreted_Logic Equals, [], [tptp_t1, tptp_t2]) =>
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   540
        "(" ^ latex_of_tptp_term tptp_t1 ^ " = " ^ latex_of_tptp_term tptp_t2 ^ ")"
64560
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
   541
    | Term_FuncG (Interpreted_Logic NEquals, [], [tptp_t1, tptp_t2]) =>
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   542
        "(" ^ latex_of_tptp_term tptp_t1 ^ " \\\\neq " ^ latex_of_tptp_term tptp_t2 ^ ")"
64560
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
   543
    | Term_FuncG (Interpreted_Logic Or, [], [tptp_t1, tptp_t2]) =>
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   544
        "(" ^ latex_of_tptp_term tptp_t1 ^ " \\\\vee " ^ latex_of_tptp_term tptp_t2 ^ ")"
64560
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
   545
    | Term_FuncG (Interpreted_Logic And, [], [tptp_t1, tptp_t2]) =>
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   546
        "(" ^ latex_of_tptp_term tptp_t1 ^ " \\\\wedge " ^ latex_of_tptp_term tptp_t2 ^ ")"
64560
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
   547
    | Term_FuncG (Interpreted_Logic Iff, [], [tptp_t1, tptp_t2]) =>
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   548
        "(" ^ latex_of_tptp_term tptp_t1 ^ " \\\\longleftrightarrow " ^ latex_of_tptp_term tptp_t2 ^ ")"
64560
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
   549
    | Term_FuncG (Interpreted_Logic If, [], [tptp_t1, tptp_t2]) =>
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   550
        "(" ^ latex_of_tptp_term tptp_t1 ^ " \\\\longrightarrow " ^ latex_of_tptp_term tptp_t2 ^ ")"
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   551
64560
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
   552
    | Term_FuncG (symbol, tptp_type_list, tptp_term_list) =>
55588
3740fb5ec307 improved latex output: spacing between terms, and encoding terms in mathrm;
sultana
parents: 55587
diff changeset
   553
        (*"(" ^*) latex_of_symbol symbol ^ "\\\\, " ^
64560
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
   554
        space_implode "\\\\, " (map latex_of_tptp_type tptp_type_list
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
   555
          @ map latex_of_tptp_term tptp_term_list) (*^ ")"*)
55588
3740fb5ec307 improved latex output: spacing between terms, and encoding terms in mathrm;
sultana
parents: 55587
diff changeset
   556
    | Term_Var str => "\\\\mathrm{" ^ str ^ "}"
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   557
    | Term_Conditional (tptp_formula, tptp_term1, tptp_term2) => "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   558
    | Term_Num (_, str) => str
55588
3740fb5ec307 improved latex output: spacing between terms, and encoding terms in mathrm;
sultana
parents: 55587
diff changeset
   559
    | Term_Distinct_Object str => str (*FIXME*)
55594
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   560
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   561
and latex_of_symbol (Uninterpreted str) =
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   562
    if str = "emptyset" then "\\\\emptyset"
55588
3740fb5ec307 improved latex output: spacing between terms, and encoding terms in mathrm;
sultana
parents: 55587
diff changeset
   563
    else "\\\\mathrm{" ^ str ^ "}"
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   564
  | latex_of_symbol (Interpreted_ExtraLogic interpreted_symbol) = latex_of_interpreted_symbol interpreted_symbol
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   565
  | latex_of_symbol (Interpreted_Logic logic_symbol) = latex_of_logic_symbol logic_symbol
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   566
  | latex_of_symbol (TypeSymbol tptp_base_type) = latex_of_tptp_base_type tptp_base_type
55588
3740fb5ec307 improved latex output: spacing between terms, and encoding terms in mathrm;
sultana
parents: 55587
diff changeset
   567
  | latex_of_symbol (System str) = "\\\\mathrm{" ^ str ^ "}"
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   568
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   569
and latex_of_tptp_base_type Type_Ind = "\\\\iota "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   570
  | latex_of_tptp_base_type Type_Bool = "o"
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   571
  | latex_of_tptp_base_type Type_Type = "\\\\mathcal{T} "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   572
  | latex_of_tptp_base_type Type_Int = "\\\\mathsf{int} "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   573
  | latex_of_tptp_base_type Type_Rat = "\\\\mathsf{rat} "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   574
  | latex_of_tptp_base_type Type_Real = "\\\\mathsf{real} "
57808
cf72aed038c8 support TFF1 in TPTP parser/interpreter
blanchet
parents: 56467
diff changeset
   575
  | latex_of_tptp_base_type Type_Dummy = "\\\\mathsf{\\\\_} "
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   576
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   577
and latex_of_interpreted_symbol x =
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   578
  case x of
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   579
      UMinus => "-"
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   580
    | Sum => "-"
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   581
    | Difference => "-"
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   582
    | Product => "*"
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   583
    | Quotient => "/"
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   584
    | Quotient_E => "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   585
    | Quotient_T => "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   586
    | Quotient_F => "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   587
    | Remainder_E => "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   588
    | Remainder_T => "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   589
    | Remainder_F => "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   590
    | Floor => "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   591
    | Ceiling => "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   592
    | Truncate => "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   593
    | Round => "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   594
    | To_Int => "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   595
    | To_Rat => "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   596
    | To_Real => "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   597
    | Less => "<"
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   598
    | LessEq => "\\\\leq "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   599
    | Greater => ">"
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   600
    | GreaterEq => "\\\\geq "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   601
    | EvalEq => "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   602
    | Is_Int => "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   603
    | Is_Rat => "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   604
    | Distinct => "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   605
    | Apply => "\\\\;"
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   606
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   607
and latex_of_logic_symbol Equals = "="
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   608
  | latex_of_logic_symbol NEquals = "\\\\neq "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   609
  | latex_of_logic_symbol Or = "\\\\vee "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   610
  | latex_of_logic_symbol And = "\\\\wedge "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   611
  | latex_of_logic_symbol Iff = "\\\\longleftrightarrow "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   612
  | latex_of_logic_symbol If = "\\\\longrightarrow "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   613
  | latex_of_logic_symbol Fi = "\\\\longleftarrow "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   614
  | latex_of_logic_symbol Xor = "\\\\oplus "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   615
  | latex_of_logic_symbol Nor = "\\\\not\\\\vee "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   616
  | latex_of_logic_symbol Nand = "\\\\not\\\\wedge "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   617
  | latex_of_logic_symbol Not = "\\\\neg "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   618
  | latex_of_logic_symbol Op_Forall = "\\\\forall "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   619
  | latex_of_logic_symbol Op_Exists = "\\\\exists "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   620
  | latex_of_logic_symbol True = "\\\\mathsf{true} "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   621
  | latex_of_logic_symbol False = "\\\\mathsf{false} "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   622
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   623
and latex_of_quantifier Forall = "\\\\forall "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   624
  | latex_of_quantifier Exists  = "\\\\exists "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   625
  | latex_of_quantifier Epsilon  = "\\\\varepsilon "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   626
  | latex_of_quantifier Iota  = "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   627
  | latex_of_quantifier Lambda  = "\\\\lambda "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   628
  | latex_of_quantifier Dep_Prod = "\\\\Pi "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   629
  | latex_of_quantifier Dep_Sum  = "\\\\Sigma "
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   630
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   631
and latex_of_tptp_atom (TFF_Typed_Atom (symbol, tptp_type_option)) =
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   632
    (case tptp_type_option of
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   633
       NONE => latex_of_symbol symbol
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   634
     | SOME tptp_type =>
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   635
         latex_of_symbol symbol ^ " : " ^ latex_of_tptp_type tptp_type)
55594
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   636
  | latex_of_tptp_atom (THF_Atom_term tptp_term) = latex_of_tptp_term tptp_term
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   637
  | latex_of_tptp_atom (THF_Atom_conn_term symbol) = latex_of_symbol symbol
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   638
55594
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   639
and latex_of_tptp_formula (Pred (Interpreted_Logic Equals, [tptp_t1, tptp_t2])) =
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   640
      "(" ^ latex_of_tptp_term tptp_t1 ^ " = " ^ latex_of_tptp_term tptp_t2 ^ ")"
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   641
  | latex_of_tptp_formula (Pred (Interpreted_Logic NEquals, [tptp_t1, tptp_t2])) =
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   642
      "(" ^ latex_of_tptp_term tptp_t1 ^ " \\\\neq " ^ latex_of_tptp_term tptp_t2 ^ ")"
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   643
  | latex_of_tptp_formula (Pred (Interpreted_Logic Or, [tptp_t1, tptp_t2])) =
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   644
      "(" ^ latex_of_tptp_term tptp_t1 ^ " \\\\vee " ^ latex_of_tptp_term tptp_t2 ^ ")"
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   645
  | latex_of_tptp_formula (Pred (Interpreted_Logic And, [tptp_t1, tptp_t2])) =
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   646
      "(" ^ latex_of_tptp_term tptp_t1 ^ " \\\\wedge " ^ latex_of_tptp_term tptp_t2 ^ ")"
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   647
  | latex_of_tptp_formula (Pred (Interpreted_Logic Iff, [tptp_t1, tptp_t2])) =
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   648
      "(" ^ latex_of_tptp_term tptp_t1 ^ " \\\\longleftrightarrow " ^ latex_of_tptp_term tptp_t2 ^ ")"
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   649
  | latex_of_tptp_formula (Pred (Interpreted_Logic If, [tptp_t1, tptp_t2])) =
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   650
      "(" ^ latex_of_tptp_term tptp_t1 ^ " \\\\longrightarrow " ^ latex_of_tptp_term tptp_t2 ^ ")"
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   651
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   652
  | latex_of_tptp_formula (x as (Pred (symbol, tptp_term_list))) =
55594
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   653
      latex_of_symbol symbol ^
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   654
       space_implode "\\\\, " (map latex_of_tptp_term tptp_term_list)
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   655
64560
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
   656
  | latex_of_tptp_formula (Fmla (Interpreted_ExtraLogic Apply, [Fmla (Interpreted_ExtraLogic Apply, [Atom (THF_Atom_term (Term_FuncG (Uninterpreted "union", [], []))), tptp_f1]), tptp_f2])) =
55594
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   657
      "(" ^ latex_of_tptp_formula tptp_f1 ^ " \\\\cup " ^ latex_of_tptp_formula tptp_f2 ^ ")"
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   658
64560
c48becd96398 support THF1 parsing for 'tptp_...' commands (e.g. 'tptp_isabelle') -- useful for CASC, SystemOnTPTP, ...
blanchet
parents: 57808
diff changeset
   659
  | latex_of_tptp_formula (Fmla (Interpreted_ExtraLogic Apply, [Fmla (Interpreted_ExtraLogic Apply, [Atom (THF_Atom_term (Term_FuncG (Uninterpreted "subset", [], []))), tptp_f1]), tptp_f2])) =
55594
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   660
      "(" ^ latex_of_tptp_formula tptp_f1 ^ " \\\\subset " ^ latex_of_tptp_formula tptp_f2 ^ ")"
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   661
55594
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   662
  | latex_of_tptp_formula (Fmla (Interpreted_Logic Equals, [tptp_f1, tptp_f2])) =
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   663
      "(" ^ latex_of_tptp_formula tptp_f1 ^ " = " ^ latex_of_tptp_formula tptp_f2 ^ ")"
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   664
  | latex_of_tptp_formula (Fmla (Interpreted_Logic NEquals, [tptp_f1, tptp_f2])) =
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   665
      "(" ^ latex_of_tptp_formula tptp_f1 ^ " \\\\neq " ^ latex_of_tptp_formula tptp_f2 ^ ")"
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   666
  | latex_of_tptp_formula (Fmla (Interpreted_Logic Or, [tptp_f1, tptp_f2])) =
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   667
      "(" ^ latex_of_tptp_formula tptp_f1 ^ " \\\\vee " ^ latex_of_tptp_formula tptp_f2 ^ ")"
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   668
  | latex_of_tptp_formula (Fmla (Interpreted_Logic And, [tptp_f1, tptp_f2])) =
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   669
      "(" ^ latex_of_tptp_formula tptp_f1 ^ " \\\\wedge " ^ latex_of_tptp_formula tptp_f2 ^ ")"
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   670
  | latex_of_tptp_formula (Fmla (Interpreted_Logic Iff, [tptp_f1, tptp_f2])) =
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   671
      "(" ^ latex_of_tptp_formula tptp_f1 ^ " \\\\longleftrightarrow " ^ latex_of_tptp_formula tptp_f2 ^ ")"
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   672
  | latex_of_tptp_formula (Fmla (Interpreted_Logic If, [tptp_f1, tptp_f2])) =
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   673
      "(" ^ latex_of_tptp_formula tptp_f1 ^ " \\\\longrightarrow " ^ latex_of_tptp_formula tptp_f2 ^ ")"
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   674
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   675
  | latex_of_tptp_formula (x as (Fmla (symbol, tptp_formula_list))) =
55594
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   676
      latex_of_symbol symbol ^
eb291b215c73 cleaned code used to produce a proof-graph;
sultana
parents: 55588
diff changeset
   677
        space_implode "\\\\, " (map latex_of_tptp_formula tptp_formula_list)
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   678
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   679
  | latex_of_tptp_formula (Sequent (tptp_formula_list1, tptp_formula_list2)) = "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   680
  | latex_of_tptp_formula (Quant (quantifier, varlist, tptp_formula)) =
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   681
      latex_of_quantifier quantifier ^
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   682
      space_implode ", " (map (fn (n, ty) =>
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   683
        case ty of
55588
3740fb5ec307 improved latex output: spacing between terms, and encoding terms in mathrm;
sultana
parents: 55587
diff changeset
   684
          NONE => "\\\\mathrm{" ^ n ^ "}"
3740fb5ec307 improved latex output: spacing between terms, and encoding terms in mathrm;
sultana
parents: 55587
diff changeset
   685
        | SOME ty => "\\\\mathrm{" ^ n ^ "} : " ^ latex_of_tptp_type ty) varlist) ^ ". (" ^
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   686
      latex_of_tptp_formula tptp_formula ^ ")"
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   687
  | latex_of_tptp_formula (Conditional _) = "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   688
  | latex_of_tptp_formula (Let _) = "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   689
  | latex_of_tptp_formula (Atom tptp_atom) = latex_of_tptp_atom tptp_atom
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   690
  | latex_of_tptp_formula (Type_fmla tptp_type) = latex_of_tptp_type tptp_type
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   691
  | latex_of_tptp_formula (THF_typing (tptp_formula, tptp_type)) =
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   692
      latex_of_tptp_formula tptp_formula ^ " : " ^ latex_of_tptp_type tptp_type
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   693
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   694
and latex_of_tptp_type (Prod_type (tptp_type1, tptp_type2)) =
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   695
      latex_of_tptp_type tptp_type1 ^ " \\\\times " ^ latex_of_tptp_type tptp_type2
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   696
  | latex_of_tptp_type (Fn_type (tptp_type1, tptp_type2)) =
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   697
      latex_of_tptp_type tptp_type1 ^ " \\\\to " ^ latex_of_tptp_type tptp_type2
57808
cf72aed038c8 support TFF1 in TPTP parser/interpreter
blanchet
parents: 56467
diff changeset
   698
  | latex_of_tptp_type (Atom_type (str, [])) = "\\\\mathrm{" ^ str ^ "}"
cf72aed038c8 support TFF1 in TPTP parser/interpreter
blanchet
parents: 56467
diff changeset
   699
  | latex_of_tptp_type (Atom_type (str, tptp_types)) =
cf72aed038c8 support TFF1 in TPTP parser/interpreter
blanchet
parents: 56467
diff changeset
   700
    "\\\\mathrm{" ^ str ^ "}(" ^ commas (map latex_of_tptp_type tptp_types) ^ ")"
cf72aed038c8 support TFF1 in TPTP parser/interpreter
blanchet
parents: 56467
diff changeset
   701
  | latex_of_tptp_type (Var_type str) = "\\\\mathrm{" ^ str ^ "}"
55587
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   702
  | latex_of_tptp_type (Defined_type tptp_base_type) =
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   703
      latex_of_tptp_base_type tptp_base_type
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   704
  | latex_of_tptp_type (Sum_type (tptp_type1, tptp_type2)) = ""
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   705
  | latex_of_tptp_type (Fmla_type tptp_formula) = latex_of_tptp_formula tptp_formula
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   706
  | latex_of_tptp_type (Subtype (symbol1, symbol2)) = "" (*FIXME*)
5d3db2c626e3 experimenting with improving DOT output, and embedding LaTeX code for formulas (rather than only giving the clause number);
sultana
parents: 53394
diff changeset
   707
46844
5d9aab0c609c added tptp parser;
sultana
parents:
diff changeset
   708
end