nicer numeral output for nats and ints in Nunchaku
authorblanchet
Fri, 08 Sep 2017 00:02:56 +0200
changeset 66633 ec8fceca7fb6
parent 66632 6950d3da13f8
child 66634 56456f388867
nicer numeral output for nats and ints in Nunchaku
src/HOL/Tools/Nunchaku/nunchaku_reconstruct.ML
--- a/src/HOL/Tools/Nunchaku/nunchaku_reconstruct.ML	Fri Sep 08 00:02:52 2017 +0200
+++ b/src/HOL/Tools/Nunchaku/nunchaku_reconstruct.ML	Fri Sep 08 00:02:56 2017 +0200
@@ -224,8 +224,19 @@
           | _ => same ())
         end
       | term_of _ (NMatch _) = raise Fail "unexpected match";
+
+    fun rewrite_numbers (t as @{const Suc} $ _) =
+        (case try HOLogic.dest_nat t of
+          SOME n => HOLogic.mk_number @{typ nat} n
+        | NONE => t)
+      | rewrite_numbers (@{const Abs_Integ} $ (@{const Pair (nat, nat)} $ t $ u)) =
+        HOLogic.mk_number @{typ int} (HOLogic.dest_nat t - HOLogic.dest_nat u)
+      | rewrite_numbers (t $ u) = rewrite_numbers t $ rewrite_numbers u
+      | rewrite_numbers (Abs (s, T, t)) = Abs (s, T, rewrite_numbers t)
+      | rewrite_numbers t = t;
   in
     term_of []
+    #> rewrite_numbers
   end;
 
 fun isa_typ_entry_of_nun ctxt atomss (ty, atoms) =