diff --git a/src/leancheck/leancheck.ml b/src/leancheck/leancheck.ml index 5cf87f97..9e0099e6 100644 --- a/src/leancheck/leancheck.ml +++ b/src/leancheck/leancheck.ml @@ -175,6 +175,14 @@ let process_files ~max_err ~quiet (files : string list) : unit = ); () + let def ~nidx ~tyidx ~validx ~univ_params : unit = + let name = Idx.get_name idx nidx in + let _ty = Lean_elab.elab_top (Idx.get_term idx tyidx) in + let _val = Lean_elab.elab_top (Idx.get_term idx validx) in + let _univ_params = List.map (Idx.get_name idx) univ_params in + if not quiet then + Fmt.eprintf "@[<2>@{Def@}@ %s@]@." name + let after_line () = if quiet then ( if !n_lines mod 1000 = 0 then Fmt.eprintf "\rlines: %d%!" !n_lines diff --git a/src/leancheck/parse.ml b/src/leancheck/parse.ml index 30f07858..197b9e67 100644 --- a/src/leancheck/parse.ml +++ b/src/leancheck/parse.ml @@ -100,6 +100,15 @@ let parse ?(max_errors = max_int) (input : input) (cb : callback) : unit = l in CB.ind ~n_params ~nidx ~tyidx ~intros ~univ_params + | S "#DEF" :: I nidx :: I tyidx :: I validx :: tl -> + let univ_params = + List.map + (function + | I i -> i + | _ -> failwith "invalid param") + tl + in + CB.def ~nidx ~tyidx ~validx ~univ_params | _ -> incr n_errors; Fmt.eprintf "@{warn@}: unhandled line %d: %s@." !n_line line diff --git a/src/leancheck/parse_intf.ml b/src/leancheck/parse_intf.ml index 051e034e..209769a0 100644 --- a/src/leancheck/parse_intf.ml +++ b/src/leancheck/parse_intf.ml @@ -21,4 +21,7 @@ module type CALLBACK = sig intros:(int * int) list -> univ_params:int list -> unit + + val def : + nidx:int -> tyidx:int -> validx:int -> univ_params:int list -> unit end