module F = Filename
module L = List
module P = Printf
-module S = String
+(* module S = String *)
module U = NUri
module R = NReference
module T = TeX
module O = TeXOutput
module A = Anticipate
+(* module M = Meta *)
module N = Alpha
type status = {
let get_macro s l =
let rec aux = function
- | [] -> "", 0
+ | [] ->
+ if !G.log_missing then missing s l;
+ "", 0
| (r, m, a, x) :: _ when r = s && a = l -> m, x
| _ :: tl -> aux tl
in
let l = L.length ts in
let macro, x = get_macro s l in
begin match macro with
- | "" ->
- if !G.log_missing then missing s l;
- None
+ | ""
| "APPL" -> None
| _ ->
let ts1, ts2 = X.split_at x ts in
end
| _ -> None
-let proc_sort st is = function
+let proc_sort _st is = function
| C.Prop -> T.Macro "PROP" :: is
| C.Type [`Type, u] -> T.Macro "TYPE" :: T.arg (U.string_of_uri u) :: is
| C.Type [`CProp, u] -> T.Macro "CROP" :: T.arg (U.string_of_uri u) :: is
proc_sort st is s
| C.Const c ->
let s, name = K.resolve_reference c in
- T.Macro "GREF" :: T.arg (mk_gname name) :: T.free s :: is
+ let macro, _ = get_macro s 0 in
+ if macro = "" || macro = "APPL" then
+ T.Macro "GREF" :: T.arg (mk_gname name) :: T.free s :: is
+ else
+ T.Macro macro :: T.free s :: is
| C.Match (w, u, v, ts) ->
let is_w = proc_term st [] (C.Const w) in
let is_u = proc_term st [] u in
let ris = T.Macro "STEP" :: mk_inferred st t ris in
let tts = L.rev_map (proc_term st []) rts in
mk_exit st (T.rev_mk_args tts ris)
- | C.Match (w, u, v, ts) ->
+ | C.Match (_w, _u, v, ts) ->
let rts = X.rev_neg_filter (K.not_prop2 st.c) [v] ts in
let ris = T.Macro "DEST" :: mk_inferred st t ris in
let tts = L.rev_map (proc_term st []) rts in
open_out (F.concat !G.out_dir fname)
let proc_pair s ss u = function
- | None ->
+ | None ->
+ let text_u =
+ if K.not_prop1 [] u then proc_item "assumption"
+ else proc_item "axiom"
+ in
let name = X.rev_map_concat X.id "." "type" ss in
let och = open_out_tex name in
- O.out_text och (proc_item "axiom" s name u);
+ O.out_text och (text_u s name u);
close_out och
| Some t ->
let text_u, text_t =
O.out_text och (text_t s name t);
close_out och
-let proc_fun ss (r, s, i, u, t) =
+let proc_fun ss (_r, s, _i, u, t) =
proc_pair s (s :: ss) u (Some t)
-let proc_constructor ss (r, s, u) =
+let proc_constructor ss (_r, s, u) =
proc_pair s (s :: ss) u None
-let proc_type ss (r, s, u, cs) =
+let proc_type ss (_r, s, u, cs) =
proc_pair s (s :: ss) u None;
L.iter (proc_constructor ss) cs